global function parsing now tested and working
parent
26fce2d400
commit
e7e564268d
|
@ -294,7 +294,7 @@ Module::Module(const string& interfacePath,
|
||||||
(str_p("namespace")
|
(str_p("namespace")
|
||||||
>> namespace_name_p[push_back_a(namespaces)]
|
>> namespace_name_p[push_back_a(namespaces)]
|
||||||
>> ch_p('{')
|
>> ch_p('{')
|
||||||
>> *(include_p | class_p | templateSingleInstantiation_p | namespace_def_p | comments_p)
|
>> *(include_p | class_p | templateSingleInstantiation_p | global_function_p | namespace_def_p | comments_p)
|
||||||
>> str_p("}///\\namespace") // end namespace, avoid confusion with classes // FIXME: check for absense of semicolon to disambiguate
|
>> str_p("}///\\namespace") // end namespace, avoid confusion with classes // FIXME: check for absense of semicolon to disambiguate
|
||||||
>> !namespace_name_p)
|
>> !namespace_name_p)
|
||||||
[pop_a(namespaces)];
|
[pop_a(namespaces)];
|
||||||
|
|
|
@ -14,6 +14,9 @@ class ClassB {
|
||||||
ClassB();
|
ClassB();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// check namespace handling
|
||||||
|
Vector aGlobalFunction();
|
||||||
|
|
||||||
}///\namespace ns1
|
}///\namespace ns1
|
||||||
|
|
||||||
#include <path/to/ns2.h>
|
#include <path/to/ns2.h>
|
||||||
|
@ -41,6 +44,9 @@ class ClassC {
|
||||||
ClassC();
|
ClassC();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// separate namespace global function, same name
|
||||||
|
Vector aGlobalFunction();
|
||||||
|
|
||||||
}///\namespace ns2
|
}///\namespace ns2
|
||||||
|
|
||||||
class ClassD {
|
class ClassD {
|
||||||
|
|
|
@ -88,6 +88,8 @@ TEST( wrap, parse_geometry ) {
|
||||||
strvec exp_includes; exp_includes += "folder/path/to/Test.h";
|
strvec exp_includes; exp_includes += "folder/path/to/Test.h";
|
||||||
EXPECT(assert_equal(exp_includes, module.includes));
|
EXPECT(assert_equal(exp_includes, module.includes));
|
||||||
|
|
||||||
|
LONGS_EQUAL(3, module.classes.size());
|
||||||
|
|
||||||
// check first class, Point2
|
// check first class, Point2
|
||||||
{
|
{
|
||||||
Class cls = module.classes.at(0);
|
Class cls = module.classes.at(0);
|
||||||
|
@ -133,7 +135,6 @@ TEST( wrap, parse_geometry ) {
|
||||||
|
|
||||||
// Test class is the third one
|
// Test class is the third one
|
||||||
{
|
{
|
||||||
LONGS_EQUAL(3, module.classes.size());
|
|
||||||
Class testCls = module.classes.at(2);
|
Class testCls = module.classes.at(2);
|
||||||
EXPECT_LONGS_EQUAL( 2, testCls.constructor.args_list.size());
|
EXPECT_LONGS_EQUAL( 2, testCls.constructor.args_list.size());
|
||||||
EXPECT_LONGS_EQUAL(19, testCls.methods.size());
|
EXPECT_LONGS_EQUAL(19, testCls.methods.size());
|
||||||
|
@ -149,6 +150,20 @@ TEST( wrap, parse_geometry ) {
|
||||||
EXPECT(m2.returnVals.front().category1 == ReturnValue::EIGEN);
|
EXPECT(m2.returnVals.front().category1 == ReturnValue::EIGEN);
|
||||||
EXPECT(m2.returnVals.front().category2 == ReturnValue::EIGEN);
|
EXPECT(m2.returnVals.front().category2 == ReturnValue::EIGEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// evaluate global functions
|
||||||
|
// Vector aGlobalFunction();
|
||||||
|
LONGS_EQUAL(1, module.global_functions.size());
|
||||||
|
CHECK(module.global_functions.find("aGlobalFunction") != module.global_functions.end());
|
||||||
|
{
|
||||||
|
GlobalFunction gfunc = module.global_functions.at("aGlobalFunction");
|
||||||
|
EXPECT(assert_equal("aGlobalFunction", gfunc.name));
|
||||||
|
LONGS_EQUAL(1, gfunc.returnVals.size());
|
||||||
|
EXPECT(assert_equal("Vector", gfunc.returnVals.front().type1));
|
||||||
|
EXPECT_LONGS_EQUAL(1, gfunc.argLists.size());
|
||||||
|
LONGS_EQUAL(1, gfunc.namespaces.size());
|
||||||
|
EXPECT(gfunc.namespaces.front().empty());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
@ -208,6 +223,27 @@ TEST( wrap, parse_namespaces ) {
|
||||||
strvec exp_namespaces;
|
strvec exp_namespaces;
|
||||||
EXPECT(assert_equal(exp_namespaces, cls.namespaces));
|
EXPECT(assert_equal(exp_namespaces, cls.namespaces));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// evaluate global functions
|
||||||
|
// Vector ns1::aGlobalFunction();
|
||||||
|
// Vector ns2::aGlobalFunction();
|
||||||
|
LONGS_EQUAL(1, module.global_functions.size());
|
||||||
|
CHECK(module.global_functions.find("aGlobalFunction") != module.global_functions.end());
|
||||||
|
{
|
||||||
|
GlobalFunction gfunc = module.global_functions.at("aGlobalFunction");
|
||||||
|
EXPECT(assert_equal("aGlobalFunction", gfunc.name));
|
||||||
|
LONGS_EQUAL(2, gfunc.returnVals.size());
|
||||||
|
EXPECT(assert_equal("Vector", gfunc.returnVals.front().type1));
|
||||||
|
EXPECT_LONGS_EQUAL(2, gfunc.argLists.size());
|
||||||
|
|
||||||
|
// check namespaces
|
||||||
|
LONGS_EQUAL(2, gfunc.namespaces.size());
|
||||||
|
strvec exp_namespaces1; exp_namespaces1 += "ns1";
|
||||||
|
EXPECT(assert_equal(exp_namespaces1, gfunc.namespaces.at(0)));
|
||||||
|
|
||||||
|
strvec exp_namespaces2; exp_namespaces2 += "ns2";
|
||||||
|
EXPECT(assert_equal(exp_namespaces2, gfunc.namespaces.at(1)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
Loading…
Reference in New Issue