Merged in fix/matlab_examples_wrapper (pull request #75)
Fixing bugs in Wrap - re-creatingrelease/4.3a0
						commit
						02e4f920d0
					
				
							
								
								
									
										10
									
								
								gtsam.h
								
								
								
								
							
							
						
						
									
										10
									
								
								gtsam.h
								
								
								
								
							|  | @ -1754,6 +1754,16 @@ class Values { | |||
| 
 | ||||
|   template<T = {gtsam::Point2, gtsam::Point3, gtsam::Rot2, gtsam::Pose2, gtsam::Rot3, gtsam::Pose3, gtsam::Cal3_S2, gtsam::Cal3DS2, gtsam::Cal3Bundler, gtsam::EssentialMatrix, gtsam::imuBias::ConstantBias, Vector, Matrix}> | ||||
|   T at(size_t j); | ||||
| 
 | ||||
|   /// Fixed size versions, for n in 1..9
 | ||||
|   void insertFixed(size_t j, Vector t, size_t n); | ||||
| 
 | ||||
|   /// Fixed size versions, for n in 1..9
 | ||||
|   Vector atFixed(size_t j, size_t n); | ||||
|    | ||||
|   /// version for double
 | ||||
|   void insertDouble(size_t j, double c); | ||||
|   double atDouble(size_t j) const; | ||||
| }; | ||||
| 
 | ||||
| // Actually a FastList<Key>
 | ||||
|  |  | |||
|  | @ -112,6 +112,24 @@ namespace gtsam { | |||
|     return result; | ||||
|   } | ||||
| 
 | ||||
|   /* ************************************************************************* */ | ||||
|   Vector Values::atFixed(Key j,  size_t n) { | ||||
|     switch (n) { | ||||
|     case 1: return at<Vector1>(j); | ||||
|     case 2: return at<Vector2>(j); | ||||
|     case 3: return at<Vector3>(j); | ||||
|     case 4: return at<Vector4>(j); | ||||
|     case 5: return at<Vector5>(j); | ||||
|     case 6: return at<Vector6>(j); | ||||
|     case 7: return at<Vector7>(j); | ||||
|     case 8: return at<Vector8>(j); | ||||
|     case 9: return at<Vector9>(j); | ||||
|     default: | ||||
|       throw runtime_error( | ||||
|           "Values::at fixed size can only handle n in 1..9"); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /* ************************************************************************* */ | ||||
|   const Value& Values::at(Key j) const { | ||||
|     // Find the item
 | ||||
|  |  | |||
|  | @ -180,6 +180,13 @@ namespace gtsam { | |||
|     template<typename ValueType> | ||||
|     const ValueType& at(Key j) const; | ||||
| 
 | ||||
|     /// Special version for small fixed size vectors, for matlab/python
 | ||||
|     /// throws truntime error if n<1 || n>9
 | ||||
|     Vector atFixed(Key j, size_t n); | ||||
| 
 | ||||
|     /// version for double
 | ||||
|     double atDouble(size_t key) const { return at<double>(key);} | ||||
| 
 | ||||
|     /** Retrieve a variable by key \c j.  This version returns a reference
 | ||||
|      * to the base Value class, and needs to be casted before use. | ||||
|      * @param j Retrieve the value associated with this key | ||||
|  |  | |||
|  | @ -156,6 +156,7 @@ void Module::parseMarkup(const std::string& data) { | |||
|       >> (*(basic.namespace_p >> str_p("::")) >> basic.className_p)[assign_a(fwDec.name)] | ||||
|       >> ch_p(';')  | ||||
|       [push_back_a(forward_declarations, fwDec)]  | ||||
|       [assign_a(cls,cls0)] // also clear class to avoid partial parse
 | ||||
|       [assign_a(fwDec, fwDec0)];  | ||||
|   | ||||
|   Rule module_content_p = basic.comments_p | include_p | class_p | ||||
|  |  | |||
|  | @ -363,7 +363,7 @@ void Test_arg_EigenConstRef_24(int nargout, mxArray *out[], int nargin, const mx | |||
|   typedef boost::shared_ptr<Test> Shared; | ||||
|   checkArguments("arg_EigenConstRef",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<Test>(in[0], "ptr_Test"); | ||||
|   Matrix& value = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->arg_EigenConstRef(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -707,7 +707,7 @@ void MyTemplatePoint2_templatedMethod_57(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplatePoint2> Shared; | ||||
|   checkArguments("templatedMethodMatrix",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplatePoint2>(in[0], "ptr_MyTemplatePoint2"); | ||||
|   Matrix& t = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix t = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->templatedMethod<Matrix>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -736,7 +736,7 @@ void MyTemplatePoint2_templatedMethod_60(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplatePoint2> Shared; | ||||
|   checkArguments("templatedMethodVector",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplatePoint2>(in[0], "ptr_MyTemplatePoint2"); | ||||
|   Vector& t = *unwrap_shared_ptr< Vector >(in[1], "ptr_Vector"); | ||||
|   Vector t = unwrap< Vector >(in[1]); | ||||
|   out[0] = wrap< Vector >(obj->templatedMethod<Vector>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -795,7 +795,7 @@ void MyTemplateMatrix_accept_T_65(int nargout, mxArray *out[], int nargin, const | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("accept_T",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Matrix& value = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->accept_T(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -804,7 +804,7 @@ void MyTemplateMatrix_accept_Tptr_66(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("accept_Tptr",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->accept_Tptr(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -842,7 +842,7 @@ void MyTemplateMatrix_return_T_69(int nargout, mxArray *out[], int nargin, const | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_T",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->return_T(value)); | ||||
| } | ||||
| 
 | ||||
|  | @ -851,7 +851,7 @@ void MyTemplateMatrix_return_Tptr_70(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_Tptr",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   { | ||||
|   SharedMatrix* ret = new SharedMatrix(obj->return_Tptr(value)); | ||||
|   out[0] = wrap_shared_ptr(ret,"Matrix"); | ||||
|  | @ -863,8 +863,8 @@ void MyTemplateMatrix_return_ptrs_71(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_ptrs",nargout,nargin-1,2); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> p1 = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   boost::shared_ptr<Matrix> p2 = unwrap_shared_ptr< Matrix >(in[2], "ptr_Matrix"); | ||||
|   Matrix p1 = unwrap< Matrix >(in[1]); | ||||
|   Matrix p2 = unwrap< Matrix >(in[2]); | ||||
|   pair< SharedMatrix, SharedMatrix > pairResult = obj->return_ptrs(p1,p2); | ||||
|   { | ||||
|   SharedMatrix* ret = new SharedMatrix(pairResult.first); | ||||
|  | @ -881,7 +881,7 @@ void MyTemplateMatrix_templatedMethod_72(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("templatedMethodMatrix",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Matrix& t = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix t = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->templatedMethod<Matrix>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -910,7 +910,7 @@ void MyTemplateMatrix_templatedMethod_75(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("templatedMethodVector",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Vector& t = *unwrap_shared_ptr< Vector >(in[1], "ptr_Vector"); | ||||
|   Vector t = unwrap< Vector >(in[1]); | ||||
|   out[0] = wrap< Vector >(obj->templatedMethod<Vector>(t)); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -335,7 +335,7 @@ void Test_arg_EigenConstRef_22(int nargout, mxArray *out[], int nargin, const mx | |||
|   typedef boost::shared_ptr<Test> Shared; | ||||
|   checkArguments("arg_EigenConstRef",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<Test>(in[0], "ptr_Test"); | ||||
|   Matrix& value = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->arg_EigenConstRef(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -679,7 +679,7 @@ void MyTemplatePoint2_templatedMethod_55(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplatePoint2> Shared; | ||||
|   checkArguments("templatedMethodMatrix",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplatePoint2>(in[0], "ptr_MyTemplatePoint2"); | ||||
|   Matrix& t = unwrap< Matrix >(in[1]); | ||||
|   Matrix t = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->templatedMethod<Matrix>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -708,7 +708,7 @@ void MyTemplatePoint2_templatedMethod_58(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplatePoint2> Shared; | ||||
|   checkArguments("templatedMethodVector",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplatePoint2>(in[0], "ptr_MyTemplatePoint2"); | ||||
|   Vector& t = *unwrap_shared_ptr< Vector >(in[1], "ptr_Vector"); | ||||
|   Vector t = unwrap< Vector >(in[1]); | ||||
|   out[0] = wrap< Vector >(obj->templatedMethod<Vector>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -767,7 +767,7 @@ void MyTemplateMatrix_accept_T_63(int nargout, mxArray *out[], int nargin, const | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("accept_T",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Matrix& value = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->accept_T(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -776,7 +776,7 @@ void MyTemplateMatrix_accept_Tptr_64(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("accept_Tptr",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   obj->accept_Tptr(value); | ||||
| } | ||||
| 
 | ||||
|  | @ -814,7 +814,7 @@ void MyTemplateMatrix_return_T_67(int nargout, mxArray *out[], int nargin, const | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_T",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->return_T(value)); | ||||
| } | ||||
| 
 | ||||
|  | @ -823,7 +823,7 @@ void MyTemplateMatrix_return_Tptr_68(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_Tptr",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> value = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix value = unwrap< Matrix >(in[1]); | ||||
|   { | ||||
|   SharedMatrix* ret = new SharedMatrix(obj->return_Tptr(value)); | ||||
|   out[0] = wrap_shared_ptr(ret,"Matrix"); | ||||
|  | @ -835,8 +835,8 @@ void MyTemplateMatrix_return_ptrs_69(int nargout, mxArray *out[], int nargin, co | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("return_ptrs",nargout,nargin-1,2); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   boost::shared_ptr<Matrix> p1 = unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   boost::shared_ptr<Matrix> p2 = unwrap_shared_ptr< Matrix >(in[2], "ptr_Matrix"); | ||||
|   Matrix p1 = unwrap< Matrix >(in[1]); | ||||
|   Matrix p2 = unwrap< Matrix >(in[2]); | ||||
|   pair< SharedMatrix, SharedMatrix > pairResult = obj->return_ptrs(p1,p2); | ||||
|   { | ||||
|   SharedMatrix* ret = new SharedMatrix(pairResult.first); | ||||
|  | @ -853,7 +853,7 @@ void MyTemplateMatrix_templatedMethod_70(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("templatedMethodMatrix",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Matrix& t = *unwrap_shared_ptr< Matrix >(in[1], "ptr_Matrix"); | ||||
|   Matrix t = unwrap< Matrix >(in[1]); | ||||
|   out[0] = wrap< Matrix >(obj->templatedMethod<Matrix>(t)); | ||||
| } | ||||
| 
 | ||||
|  | @ -882,7 +882,7 @@ void MyTemplateMatrix_templatedMethod_73(int nargout, mxArray *out[], int nargin | |||
|   typedef boost::shared_ptr<MyTemplateMatrix> Shared; | ||||
|   checkArguments("templatedMethodVector",nargout,nargin-1,1); | ||||
|   Shared obj = unwrap_shared_ptr<MyTemplateMatrix>(in[0], "ptr_MyTemplateMatrix"); | ||||
|   Vector& t = *unwrap_shared_ptr< Vector >(in[1], "ptr_Vector"); | ||||
|   Vector t = unwrap< Vector >(in[1]); | ||||
|   out[0] = wrap< Vector >(obj->templatedMethod<Vector>(t)); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
|   // comments!
 | ||||
| 
 | ||||
| class VectorNotEigen; | ||||
| class ns::OtherClass; | ||||
| virtual class ns::OtherClass; | ||||
| 
 | ||||
| namespace gtsam { | ||||
| 
 | ||||
|  |  | |||
|  | @ -160,7 +160,6 @@ TEST( Class, Grammar ) { | |||
|   EXPECT_LONGS_EQUAL(ReturnType::EIGEN, rv4.type1.category); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //******************************************************************************
 | ||||
| TEST( Class, TemplateSubstition ) { | ||||
| 
 | ||||
|  | @ -171,10 +170,10 @@ TEST( Class, TemplateSubstition ) { | |||
|   Template t; | ||||
|   ClassGrammar g(cls, t); | ||||
| 
 | ||||
|   string markup( | ||||
|       string("template<T = {void, double, Matrix, Point3}> class Point2 {                \n") | ||||
|           + string(" T myMethod(const T& t) const;   \n")  | ||||
|           + string("};")); | ||||
|   string markup(string("template<T = {void, double, Matrix, Point3}>" | ||||
|       "class Point2 {" | ||||
|       " T myMethod(const T& t) const;" | ||||
|       "};")); | ||||
| 
 | ||||
|   EXPECT(parse(markup.c_str(), g, space_p).full); | ||||
| 
 | ||||
|  | @ -190,58 +189,74 @@ TEST( Class, TemplateSubstition ) { | |||
|   EXPECT(assert_equal("T", rv2.type1.name())); | ||||
|   EXPECT_LONGS_EQUAL(ReturnType::CLASS, rv2.type1.category); | ||||
| 
 | ||||
|   // Generate some expected values for qualified types
 | ||||
|   Qualified q_void("void", Qualified::VOID); | ||||
|   Qualified q_double("double", Qualified::BASIS); | ||||
|   Qualified q_Matrix("Matrix", Qualified::EIGEN); | ||||
|   Qualified q_Point3("Point3", Qualified::CLASS); | ||||
| 
 | ||||
|   EXPECT_LONGS_EQUAL(4, t.nrValues()); | ||||
|   EXPECT(t.argName()=="T"); | ||||
|   EXPECT(t[0]==Qualified("void",Qualified::VOID)); | ||||
|   EXPECT(t[1]==Qualified("double",Qualified::BASIS)); | ||||
|   EXPECT(t[2]==Qualified("Matrix",Qualified::EIGEN)); | ||||
|   EXPECT(t[3]==Qualified("Point3",Qualified::CLASS)); | ||||
|   EXPECT(t[0]==q_void); | ||||
|   EXPECT(t[1]==q_double); | ||||
|   EXPECT(t[2]==q_Matrix); | ||||
|   EXPECT(t[3]==q_Point3); | ||||
| 
 | ||||
|   vector<Class> classes = cls.expandTemplate(t.argName(), | ||||
|     t.argValues()); | ||||
|   vector<Class> classes = cls.expandTemplate(t.argName(), t.argValues()); | ||||
| 
 | ||||
|   // check the number of new classes is four
 | ||||
|   EXPECT_LONGS_EQUAL(4, classes.size()); | ||||
|    | ||||
| 
 | ||||
|   // check return types 
 | ||||
|   EXPECT(classes[0].method("myMethod").returnValue(0).type1 == Qualified("void",Qualified::VOID)); | ||||
|   EXPECT(classes[1].method("myMethod").returnValue(0).type1 == Qualified("double",Qualified::BASIS)); | ||||
|   EXPECT(classes[2].method("myMethod").returnValue(0).type1 == Qualified("Matrix",Qualified::EIGEN)); | ||||
|   EXPECT(classes[3].method("myMethod").returnValue(0).type1 == Qualified("Point3",Qualified::CLASS)); | ||||
|   EXPECT( classes[0].method("myMethod").returnValue(0).type1 == q_void); | ||||
|   EXPECT( classes[1].method("myMethod").returnValue(0).type1 == q_double); | ||||
|   EXPECT( classes[2].method("myMethod").returnValue(0).type1 == q_Matrix); | ||||
|   EXPECT( classes[3].method("myMethod").returnValue(0).type1 == q_Point3); | ||||
| 
 | ||||
|   // check the argument types
 | ||||
|   EXPECT(classes[0].method("myMethod").argumentList(0)[0].type == Qualified("void",Qualified::VOID)); | ||||
|   EXPECT(classes[1].method("myMethod").argumentList(0)[0].type == Qualified("double",Qualified::BASIS)); | ||||
|   EXPECT(classes[2].method("myMethod").argumentList(0)[0].type == Qualified("Matrix",Qualified::EIGEN)); | ||||
|   EXPECT(classes[3].method("myMethod").argumentList(0)[0].type == Qualified("Point3",Qualified::CLASS)); | ||||
|   EXPECT( classes[0].method("myMethod").argumentList(0)[0].type == q_void); | ||||
|   EXPECT( classes[1].method("myMethod").argumentList(0)[0].type == q_double); | ||||
|   EXPECT( classes[2].method("myMethod").argumentList(0)[0].type == q_Matrix); | ||||
|   EXPECT( classes[3].method("myMethod").argumentList(0)[0].type == q_Point3); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| //******************************************************************************
 | ||||
| TEST(Class, Template) { | ||||
| 
 | ||||
|   using classic::space_p; | ||||
| 
 | ||||
|     using classic::space_p; | ||||
|   // Create type grammar that will place result in cls
 | ||||
|   Class cls; | ||||
|   Template t; | ||||
|   ClassGrammar g(cls, t); | ||||
| 
 | ||||
|     // Create type grammar that will place result in cls
 | ||||
|     Class cls; | ||||
|     Template t; | ||||
|     ClassGrammar g(cls, t); | ||||
|   string markup( | ||||
|       string( | ||||
|           "template<T = {Vector, Matrix}>" | ||||
|               " virtual class PriorFactor : gtsam::NoiseModelFactor {" | ||||
|               "   PriorFactor(size_t key, const T& prior, const gtsam::noiseModel::Base* noiseModel); " | ||||
|               "   T prior() const; " | ||||
|               "  void serialize() const; " | ||||
|               "};")); | ||||
| 
 | ||||
|     string markup( | ||||
|         string("template<T = {Vector, Matrix}>" | ||||
|            " virtual class PriorFactor : gtsam::NoiseModelFactor {" | ||||
|            "   PriorFactor(size_t key, const T& prior, const gtsam::noiseModel::Base* noiseModel); " | ||||
|            "   T prior() const; " | ||||
|            "  void serialize() const; " | ||||
|            "};" )); | ||||
| 
 | ||||
|     EXPECT(parse(markup.c_str(), g, space_p).full); | ||||
|   EXPECT(parse(markup.c_str(), g, space_p).full); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| //******************************************************************************
 | ||||
| TEST( Class, Virtualness ) { | ||||
|   using classic::space_p; | ||||
|   Class cls; | ||||
|   Template t; | ||||
|   ClassGrammar g(cls, t); | ||||
|   string markup("virtual class Point3 {};"); | ||||
|   EXPECT(parse(markup.c_str(), g, space_p).full); | ||||
|   EXPECT(cls.isVirtual); | ||||
| } | ||||
| //******************************************************************************
 | ||||
| int main() { | ||||
|   TestResult tr; | ||||
|   return TestRegistry::runAllTests(tr); | ||||
| } | ||||
| /* ************************************************************************* */ | ||||
| //******************************************************************************
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue