diff --git a/libs/main/code/picodeparser.cpp b/libs/main/code/picodeparser.cpp index 1e519117..399960d5 100644 --- a/libs/main/code/picodeparser.cpp +++ b/libs/main/code/picodeparser.cpp @@ -194,12 +194,12 @@ void PICodeParser::clear() { << Macro(PIStringAscii("PIOBJECT_PARENT"), "", PIStringList() << "parent") << Macro(PIStringAscii("PIOBJECT_SUBCLASS"), "", PIStringList() << "name" << "parent") - << Macro(PIStringAscii("EVENT" ), "void name()", PIStringList() << "name") - << Macro(PIStringAscii("EVENT0"), "void name()", PIStringList() << "name") - << Macro(PIStringAscii("EVENT1"), "void name(a0 n0)", PIStringList() << "name" << "a0" << "n0") - << Macro(PIStringAscii("EVENT2"), "void name(a0 n0, a1 n1)", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1") - << Macro(PIStringAscii("EVENT3"), "void name(a0 n0, a1 n1, a2 n2)", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2") - << Macro(PIStringAscii("EVENT4"), "void name(a0 n0, a1 n1, a2 n2, a3 n3)", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2" << "a3" << "n3") + << Macro(PIStringAscii("EVENT" ), "void name();", PIStringList() << "name") + << Macro(PIStringAscii("EVENT0"), "void name();", PIStringList() << "name") + << Macro(PIStringAscii("EVENT1"), "void name(a0 n0);", PIStringList() << "name" << "a0" << "n0") + << Macro(PIStringAscii("EVENT2"), "void name(a0 n0, a1 n1);", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1") + << Macro(PIStringAscii("EVENT3"), "void name(a0 n0, a1 n1, a2 n2);", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2") + << Macro(PIStringAscii("EVENT4"), "void name(a0 n0, a1 n1, a2 n2, a3 n3);", PIStringList() << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2" << "a3" << "n3") << Macro(PIStringAscii("EVENT_HANDLER" ), "ret name()", PIStringList() << "ret" << "name") << Macro(PIStringAscii("EVENT_HANDLER0"), "ret name()", PIStringList() << "ret" << "name") @@ -219,6 +219,7 @@ void PICodeParser::clear() { bool PICodeParser::parseFileContent(PIString & fc, bool main) { + static const PIString s_ns = PIStringAscii("::"); static const PIString s_bo = PIStringAscii("{\n"); static const PIString s_bc = PIStringAscii("\n}\n"); static const PIString s_class = PIStringAscii("class"); @@ -305,7 +306,7 @@ bool PICodeParser::parseFileContent(PIString & fc, bool main) { replaceMeta(pfc); - //piCout << NewLine << "file" << cur_file << pfc; + //piCout << PICoutManipulators::NewLine << "file" << cur_file << pfc; int pl = -1; while (!pfc.isEmpty()) { pfc.trim(); @@ -313,7 +314,12 @@ bool PICodeParser::parseFileContent(PIString & fc, bool main) { if (pl == nl) break; pl = nl; if (pfc.left(9) == s_namespace) { - pfc.cutLeft(pfc.find('{') + 1); + pfc.cutLeft(9); + PIString prev_namespace = cur_namespace, ccmn; + cur_namespace += pfc.takeCWord() + s_ns; + ccmn = pfc.takeRange('{', '}'); + parseClass(0, ccmn); + cur_namespace = prev_namespace; continue; } if (pfc.left(8) == s_template) { @@ -442,7 +448,7 @@ PIString PICodeParser::parseClass(Entity * parent, PIString & fc) { int ps = -1; bool def = false; PIString prev_namespace = cur_namespace, stmp; - cur_namespace = ce->name + s_ns; + cur_namespace += ce->name + s_ns; //piCout << "parse class" << ce->name << "namespace" << cur_namespace; //piCout << "\nparse class" << ce->name << "namespace" << cur_namespace; while (!fc.isEmpty()) {