diff --git a/.cproject b/.cproject index e85ec02ec..51ed912d7 100644 --- a/.cproject +++ b/.cproject @@ -311,14 +311,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -345,6 +337,7 @@ make + tests/testBayesTree.run true false @@ -352,6 +345,7 @@ make + testBinaryBayesNet.run true false @@ -399,6 +393,7 @@ make + testSymbolicBayesNet.run true false @@ -406,6 +401,7 @@ make + tests/testSymbolicFactor.run true false @@ -413,6 +409,7 @@ make + testSymbolicFactorGraph.run true false @@ -428,11 +425,20 @@ make + tests/testBayesTree true false true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -459,7 +465,6 @@ make - testGraph.run true false @@ -531,7 +536,6 @@ make - testInference.run true false @@ -539,7 +543,6 @@ make - testGaussianFactor.run true false @@ -547,7 +550,6 @@ make - testJunctionTree.run true false @@ -555,7 +557,6 @@ make - testSymbolicBayesNet.run true false @@ -563,7 +564,6 @@ make - testSymbolicFactorGraph.run true false @@ -633,22 +633,6 @@ false true - - make - -j2 - all - true - true - true - - - make - -j2 - clean - true - true - true - make -j2 @@ -665,6 +649,22 @@ true true + + make + -j2 + all + true + true + true + + + make + -j2 + clean + true + true + true + make -j2 @@ -689,18 +689,26 @@ true true - + make - -j2 VERBOSE=1 - check.nonlinear + -j2 + all true - false + true true - + make - -j5 - timing.nonlinear + -j2 + check + true + true + true + + + make + -j2 + clean true true true @@ -753,26 +761,26 @@ true true - + make - -j2 - all + -j2 VERBOSE=1 + check.nonlinear + true + false + true + + + make + -j5 + timing.nonlinear true true true - + make - -j2 - check - true - true - true - - - make - -j2 - clean + -j5 + nonlinear.testValues.run true true true @@ -1123,6 +1131,7 @@ make + testErrors.run true false @@ -1602,7 +1611,6 @@ make - testSimulated2DOriented.run true false @@ -1642,7 +1650,6 @@ make - testSimulated2D.run true false @@ -1650,7 +1657,6 @@ make - testSimulated3D.run true false @@ -1914,7 +1920,6 @@ make - tests/testGaussianISAM2 true false @@ -1936,6 +1941,77 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + cmake + .. + true + false + true + + + make + -j5 + gtsam-shared + true + true + true + + + make + -j5 + gtsam-static + true + true + true + + + make + -j5 + timing + true + true + true + + + make + -j5 + examples + true + true + true + make -j2 @@ -2032,23 +2108,7 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - + make -j2 check @@ -2056,7 +2116,23 @@ true true - + + make + -j2 + clean + true + true + true + + + make + -j2 + install + true + true + true + + make -j2 all @@ -2064,46 +2140,13 @@ true true - + cmake .. - true false true - - make - -j5 - gtsam-shared - true - true - true - - - make - -j5 - gtsam-static - true - true - true - - - make - -j5 - timing - true - true - true - - - make - -j5 - examples - true - true - true - make -j5 @@ -2144,46 +2187,6 @@ true true - - make - -j2 - check - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - install - true - true - true - - - make - -j2 - all - true - true - true - - - cmake - .. - - true - false - true - diff --git a/gtsam/nonlinear/Values.h b/gtsam/nonlinear/Values.h index b8807646c..5a8005db4 100644 --- a/gtsam/nonlinear/Values.h +++ b/gtsam/nonlinear/Values.h @@ -189,6 +189,24 @@ namespace gtsam { /** Copy constructor duplicates all keys and values */ Values(const Values& other); + /** Constructor from a Filtered view copies out all values */ + template + Values(const Filtered& view) { + BOOST_FOREACH(const typename Filtered::KeyValuePair& key_value, view) { + Key key = key_value.key; + insert(key, key_value.value); + } + } + + /** Constructor from Const Filtered view */ + template + Values(const ConstFiltered& view) { + BOOST_FOREACH(const typename ConstFiltered::KeyValuePair& key_value, view) { + Key key = key_value.key; + insert(key, key_value.value); + } + } + /// @name Testable /// @{ diff --git a/gtsam/nonlinear/tests/testValues.cpp b/gtsam/nonlinear/tests/testValues.cpp index c37759552..064e22e58 100644 --- a/gtsam/nonlinear/tests/testValues.cpp +++ b/gtsam/nonlinear/tests/testValues.cpp @@ -288,23 +288,38 @@ TEST(Values, filter) { } ++ i; } - LONGS_EQUAL(2, i); + EXPECT_LONGS_EQUAL(2, i); + + // construct a values with the view + Values actualSubValues1(filtered); + Values expectedSubValues1; + expectedSubValues1.insert(2, pose2); + expectedSubValues1.insert(3, pose3); + EXPECT(assert_equal(expectedSubValues1, actualSubValues1)); // Filter by type i = 0; - BOOST_FOREACH(const Values::Filtered::KeyValuePair& key_value, values.filter()) { + Values::Filtered pose_filtered = values.filter(); + BOOST_FOREACH(const Values::Filtered::KeyValuePair& key_value, pose_filtered) { if(i == 0) { - LONGS_EQUAL(1, key_value.key); + EXPECT_LONGS_EQUAL(1, key_value.key); EXPECT(assert_equal(pose1, key_value.value)); } else if(i == 1) { - LONGS_EQUAL(3, key_value.key); + EXPECT_LONGS_EQUAL(3, key_value.key); EXPECT(assert_equal(pose3, key_value.value)); } else { EXPECT(false); } ++ i; } - LONGS_EQUAL(2, i); + EXPECT_LONGS_EQUAL(2, i); + + // construct a values with the view + Values actualSubValues2(pose_filtered); + Values expectedSubValues2; + expectedSubValues2.insert(1, pose1); + expectedSubValues2.insert(3, pose3); + EXPECT(assert_equal(expectedSubValues2, actualSubValues2)); } /* ************************************************************************* */