add serialization/pijsonserialization.h for JSON de/serialization add -J flag for pip_cmg to make JSON serialization methods not finished yet, but basically workable now
45 lines
1.6 KiB
C++
45 lines
1.6 KiB
C++
/*
|
|
PIP - Platform Independent Primitives
|
|
Code model generator
|
|
Ivan Pelipenko peri4ko@yandex.ru
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "enum.h"
|
|
|
|
|
|
void makeEnumInfo(Runtime & rt, const PICodeParser::Enum * e) {
|
|
if (e->name.isEmpty()) {
|
|
rt.ts << "\n\tei = ci_ei[\"\"];\n";
|
|
} else {
|
|
rt.ts << "\n\tei = new EnumInfo();\n";
|
|
rt.ts << "\tci_ei[\"" << e->name << "\"] = ei;\n";
|
|
rt.ts << "\tei->name = \"" << e->name << "\";\n";
|
|
if (!e->meta.isEmpty()) {
|
|
auto i = e->meta.makeIterator();
|
|
while (i.next())
|
|
rt.ts << "\tei->meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n";
|
|
}
|
|
}
|
|
for (const PICodeParser::EnumeratorInfo & m: e->members) {
|
|
rt.ts << "\tei->members << PICodeInfo::EnumeratorInfo(\"" << m.name << "\", " << m.value << ");\n";
|
|
if (!m.meta.isEmpty()) {
|
|
auto i = m.meta.makeIterator();
|
|
while (i.next())
|
|
rt.ts << "\tei->members.back().meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n";
|
|
}
|
|
}
|
|
}
|