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));
}
/* ************************************************************************* */