Small variations on parser to try to debug problem
parent
16ad77cb53
commit
47fcb17ead
|
@ -200,13 +200,28 @@ Module::Module(const string& interfacePath,
|
||||||
|
|
||||||
Rule namespace_ret_p = namespace_name_p[push_back_a(namespaces_return)] >> str_p("::");
|
Rule namespace_ret_p = namespace_name_p[push_back_a(namespaces_return)] >> str_p("::");
|
||||||
|
|
||||||
Rule returnType1_p =
|
// Rule returnType1_p =
|
||||||
(basisType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::BASIS)]) |
|
// (basisType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::BASIS)]) |
|
||||||
((*namespace_ret_p)[assign_a(retVal.namespaces1, namespaces_return)][clear_a(namespaces_return)]
|
// ((*namespace_ret_p)[assign_a(retVal.namespaces1, namespaces_return)][clear_a(namespaces_return)]
|
||||||
>> (className_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::CLASS)]) >>
|
// >> (className_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::CLASS)]) >>
|
||||||
!ch_p('*')[assign_a(retVal.isPtr1,true)]) |
|
// !ch_p('*')[assign_a(retVal.isPtr1,true)]) |
|
||||||
|
// (eigenType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::EIGEN)])
|
||||||
|
// | str_p("void")[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::VOID)]; // FIXME: allows for void in a pair
|
||||||
|
|
||||||
|
// Rule returnType1_p =
|
||||||
|
// (eigenType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::EIGEN)]) |
|
||||||
|
// (basisType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::BASIS)]) |
|
||||||
|
// ((*namespace_ret_p)[assign_a(retVal.namespaces1, namespaces_return)][clear_a(namespaces_return)]
|
||||||
|
// >> (className_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::CLASS)]) >>
|
||||||
|
// !ch_p('*')[assign_a(retVal.isPtr1,true)]);
|
||||||
|
|
||||||
|
// Original
|
||||||
|
Rule returnType1_p =
|
||||||
|
(basisType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::BASIS)]) |
|
||||||
|
((*namespace_ret_p)[assign_a(retVal.namespaces1, namespaces_return)][clear_a(namespaces_return)]
|
||||||
|
>> (className_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::CLASS)]) >>
|
||||||
|
!ch_p('*')[assign_a(retVal.isPtr1,true)]) |
|
||||||
(eigenType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::EIGEN)]);
|
(eigenType_p[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::EIGEN)]);
|
||||||
// | str_p("void")[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::VOID)];
|
|
||||||
|
|
||||||
Rule returnType2_p =
|
Rule returnType2_p =
|
||||||
(basisType_p[assign_a(retVal.type2)][assign_a(retVal.category2, ReturnValue::BASIS)]) |
|
(basisType_p[assign_a(retVal.type2)][assign_a(retVal.category2, ReturnValue::BASIS)]) |
|
||||||
|
@ -221,7 +236,8 @@ Module::Module(const string& interfacePath,
|
||||||
|
|
||||||
Rule void_p = str_p("void")[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::VOID)];
|
Rule void_p = str_p("void")[assign_a(retVal.type1)][assign_a(retVal.category1, ReturnValue::VOID)];
|
||||||
|
|
||||||
Rule returnType_p = void_p | returnType1_p | pair_p;
|
Rule returnType_p = void_p | returnType1_p | pair_p; // original
|
||||||
|
// Rule returnType_p = returnType1_p | pair_p;
|
||||||
|
|
||||||
Rule methodName_p = lexeme_d[lower_p >> *(alnum_p | '_')];
|
Rule methodName_p = lexeme_d[lower_p >> *(alnum_p | '_')];
|
||||||
|
|
||||||
|
|
|
@ -21,23 +21,23 @@ namespace wrap {
|
||||||
struct ReturnValue {
|
struct ReturnValue {
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CLASS = 0,
|
CLASS = 1,
|
||||||
EIGEN = 1,
|
EIGEN = 2,
|
||||||
BASIS = 2,
|
BASIS = 3,
|
||||||
VOID = 3
|
VOID = 4,
|
||||||
|
DUMMY_CATEGORY = 5
|
||||||
} return_category;
|
} return_category;
|
||||||
|
|
||||||
ReturnValue(bool enable_verbosity = true)
|
ReturnValue(bool enable_verbosity = true)
|
||||||
: verbose(enable_verbosity), isPtr1(false), isPtr2(false),
|
: verbose(enable_verbosity), isPtr1(false), isPtr2(false),
|
||||||
isPair(false), category1(CLASS), category2(CLASS)
|
isPair(false), category1(DUMMY_CATEGORY), category2(DUMMY_CATEGORY)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool verbose;
|
bool verbose;
|
||||||
std::string type1, type2;
|
|
||||||
bool isPtr1, isPtr2, isPair;
|
bool isPtr1, isPtr2, isPair;
|
||||||
std::vector<std::string> namespaces1, namespaces2;
|
|
||||||
|
|
||||||
return_category category1, category2;
|
return_category category1, category2;
|
||||||
|
std::string type1, type2;
|
||||||
|
std::vector<std::string> namespaces1, namespaces2;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
arg1, arg2, pair
|
arg1, arg2, pair
|
||||||
|
|
|
@ -87,6 +87,13 @@ TEST( wrap, parse_geometry ) {
|
||||||
|
|
||||||
LONGS_EQUAL(3, module.classes.size());
|
LONGS_EQUAL(3, module.classes.size());
|
||||||
|
|
||||||
|
// Key for ReturnValue::return_category
|
||||||
|
// CLASS = 1,
|
||||||
|
// EIGEN = 2,
|
||||||
|
// BASIS = 3,
|
||||||
|
// VOID = 4,
|
||||||
|
// DUMMY = 5
|
||||||
|
|
||||||
{
|
{
|
||||||
// check first class
|
// check first class
|
||||||
// class Point2 {
|
// class Point2 {
|
||||||
|
@ -112,7 +119,7 @@ TEST( wrap, parse_geometry ) {
|
||||||
Method m1 = cls.methods.find("returnChar")->second;
|
Method m1 = cls.methods.find("returnChar")->second;
|
||||||
LONGS_EQUAL(1, m1.returnVals.size());
|
LONGS_EQUAL(1, m1.returnVals.size());
|
||||||
EXPECT(assert_equal("char", m1.returnVals.front().type1));
|
EXPECT(assert_equal("char", m1.returnVals.front().type1));
|
||||||
EXPECT_LONGS_EQUAL(ReturnValue::BASIS, m1.returnVals.front().category1); // FAIL: gets 0 instead of 2
|
EXPECT_LONGS_EQUAL(ReturnValue::BASIS, m1.returnVals.front().category1); // FAIL: gets 1 instead of 3
|
||||||
EXPECT(!m1.returnVals.front().isPair);
|
EXPECT(!m1.returnVals.front().isPair);
|
||||||
EXPECT(assert_equal("returnChar", m1.name));
|
EXPECT(assert_equal("returnChar", m1.name));
|
||||||
LONGS_EQUAL(1, m1.argLists.size());
|
LONGS_EQUAL(1, m1.argLists.size());
|
||||||
|
@ -126,7 +133,7 @@ TEST( wrap, parse_geometry ) {
|
||||||
Method m1 = cls.methods.find("vectorConfusion")->second;
|
Method m1 = cls.methods.find("vectorConfusion")->second;
|
||||||
LONGS_EQUAL(1, m1.returnVals.size());
|
LONGS_EQUAL(1, m1.returnVals.size());
|
||||||
EXPECT(assert_equal("VectorNotEigen", m1.returnVals.front().type1));
|
EXPECT(assert_equal("VectorNotEigen", m1.returnVals.front().type1));
|
||||||
EXPECT_LONGS_EQUAL(ReturnValue::CLASS, m1.returnVals.front().category1); // FAIL: gets 1 instead of 0
|
EXPECT_LONGS_EQUAL(ReturnValue::CLASS, m1.returnVals.front().category1); // FAIL: gets 0 instead of 1
|
||||||
EXPECT(!m1.returnVals.front().isPair);
|
EXPECT(!m1.returnVals.front().isPair);
|
||||||
EXPECT(assert_equal("vectorConfusion", m1.name));
|
EXPECT(assert_equal("vectorConfusion", m1.name));
|
||||||
LONGS_EQUAL(1, m1.argLists.size());
|
LONGS_EQUAL(1, m1.argLists.size());
|
||||||
|
@ -163,7 +170,7 @@ TEST( wrap, parse_geometry ) {
|
||||||
Method m1 = cls.methods.find("norm")->second;
|
Method m1 = cls.methods.find("norm")->second;
|
||||||
LONGS_EQUAL(1, m1.returnVals.size());
|
LONGS_EQUAL(1, m1.returnVals.size());
|
||||||
EXPECT(assert_equal("double", m1.returnVals.front().type1));
|
EXPECT(assert_equal("double", m1.returnVals.front().type1));
|
||||||
EXPECT_LONGS_EQUAL(ReturnValue::BASIS, m1.returnVals.front().category1); // FAIL: gets 0 instead of 2 - defaulting to CLASS
|
EXPECT_LONGS_EQUAL(ReturnValue::BASIS, m1.returnVals.front().category1); // FAIL: gets 1 instead of 3
|
||||||
EXPECT(assert_equal("norm", m1.name));
|
EXPECT(assert_equal("norm", m1.name));
|
||||||
LONGS_EQUAL(1, m1.argLists.size());
|
LONGS_EQUAL(1, m1.argLists.size());
|
||||||
EXPECT_LONGS_EQUAL(0, m1.argLists.front().size());
|
EXPECT_LONGS_EQUAL(0, m1.argLists.front().size());
|
||||||
|
@ -183,9 +190,9 @@ TEST( wrap, parse_geometry ) {
|
||||||
Method m2 = testCls.methods.find("return_pair")->second;
|
Method m2 = testCls.methods.find("return_pair")->second;
|
||||||
LONGS_EQUAL(1, m2.returnVals.size());
|
LONGS_EQUAL(1, m2.returnVals.size());
|
||||||
EXPECT(m2.returnVals.front().isPair);
|
EXPECT(m2.returnVals.front().isPair);
|
||||||
EXPECT_LONGS_EQUAL(ReturnValue::EIGEN, m2.returnVals.front().category1); // FIXME: gets different large numbers - latest: 6152961
|
EXPECT_LONGS_EQUAL(ReturnValue::EIGEN, m2.returnVals.front().category1); // FAIL: gets 1 instead of 2
|
||||||
EXPECT(assert_equal("Vector", m2.returnVals.front().type1));
|
EXPECT(assert_equal("Vector", m2.returnVals.front().type1));
|
||||||
EXPECT_LONGS_EQUAL(ReturnValue::EIGEN, m2.returnVals.front().category2); // FIXME: see above
|
EXPECT_LONGS_EQUAL(ReturnValue::EIGEN, m2.returnVals.front().category2); // FAIL: gets 6201089 instead of 2
|
||||||
EXPECT(assert_equal("Matrix", m2.returnVals.front().type2));
|
EXPECT(assert_equal("Matrix", m2.returnVals.front().type2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue