PICodeParser predefined PIP macros
This commit is contained in:
@@ -190,6 +190,31 @@ void PICodeParser::clear() {
|
|||||||
piForeachC (PIString & d, defs)
|
piForeachC (PIString & d, defs)
|
||||||
defines << Define(d, "");
|
defines << Define(d, "");
|
||||||
defines << Define(PIStringAscii("PICODE"), "") << custom_defines;
|
defines << Define(PIStringAscii("PICODE"), "") << custom_defines;
|
||||||
|
macros << Macro(PIStringAscii("PIOBJECT"), "", PIStringList() << "name")
|
||||||
|
<< 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_HANDLER" ), "ret name()", PIStringList() << "ret" << "name")
|
||||||
|
<< Macro(PIStringAscii("EVENT_HANDLER0"), "ret name()", PIStringList() << "ret" << "name")
|
||||||
|
<< Macro(PIStringAscii("EVENT_HANDLER1"), "ret name(a0 n0)", PIStringList() << "ret" << "name" << "a0" << "n0")
|
||||||
|
<< Macro(PIStringAscii("EVENT_HANDLER2"), "ret name(a0 n0, a1 n1)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1")
|
||||||
|
<< Macro(PIStringAscii("EVENT_HANDLER3"), "ret name(a0 n0, a1 n1, a2 n2)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2")
|
||||||
|
<< Macro(PIStringAscii("EVENT_HANDLER4"), "ret name(a0 n0, a1 n1, a2 n2, a3 n3)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2" << "a3" << "n3")
|
||||||
|
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER" ), "virtual ret name()", PIStringList() << "ret" << "name")
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER0"), "virtual ret name()", PIStringList() << "ret" << "name")
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER1"), "virtual ret name(a0 n0)", PIStringList() << "ret" << "name" << "a0" << "n0")
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER2"), "virtual ret name(a0 n0, a1 n1)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1")
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER3"), "virtual ret name(a0 n0, a1 n1, a2 n2)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2")
|
||||||
|
<< Macro(PIStringAscii("EVENT_VHANDLER4"), "virtual ret name(a0 n0, a1 n1, a2 n2, a3 n3)", PIStringList() << "ret" << "name" << "a0" << "n0" << "a1" << "n1" << "a2" << "n2" << "a3" << "n3")
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1052,10 +1077,10 @@ PIString PICodeParser::procMacros(PIString fc) {
|
|||||||
|
|
||||||
|
|
||||||
bool PICodeParser::parseDirective(PIString d) {
|
bool PICodeParser::parseDirective(PIString d) {
|
||||||
static const PIString s_include = PIStringAscii("include");
|
static const PIString s_include = PIStringAscii("include");
|
||||||
static const PIString s_define = PIStringAscii("define");
|
static const PIString s_define = PIStringAscii("define");
|
||||||
static const PIString s_undef = PIStringAscii("undef");
|
static const PIString s_undef = PIStringAscii("undef");
|
||||||
static const PIString s_PIMETA = PIStringAscii("PIMETA");
|
static const PIString s_PIMETA = PIStringAscii("PIMETA");
|
||||||
if (d.isEmpty()) return true;
|
if (d.isEmpty()) return true;
|
||||||
PIString dname = d.takeCWord();
|
PIString dname = d.takeCWord();
|
||||||
//piCout << "parseDirective" << d;
|
//piCout << "parseDirective" << d;
|
||||||
@@ -1074,9 +1099,19 @@ bool PICodeParser::parseDirective(PIString d) {
|
|||||||
if (mname == s_PIMETA) return true;
|
if (mname == s_PIMETA) return true;
|
||||||
if (d.left(1) == PIChar('(')) { // macro
|
if (d.left(1) == PIChar('(')) { // macro
|
||||||
PIStringList args = d.takeRange('(', ')').split(',').trim();
|
PIStringList args = d.takeRange('(', ')').split(',').trim();
|
||||||
|
for (int i = 0; i < macros.size_s(); ++i)
|
||||||
|
if (macros[i].name == mname) {
|
||||||
|
macros.remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
macros << Macro(mname, d.trim(), args);
|
macros << Macro(mname, d.trim(), args);
|
||||||
} else { // define
|
} else { // define
|
||||||
d.trim();
|
d.trim();
|
||||||
|
for (int i = 0; i < defines.size_s(); ++i)
|
||||||
|
if (defines[i].first == mname) {
|
||||||
|
defines.remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
defines << Define(mname, d);
|
defines << Define(mname, d);
|
||||||
evaluator.setVariable(mname, complexd_1);
|
evaluator.setVariable(mname, complexd_1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user