diff --git a/src_main/code/picodeparser.cpp b/src_main/code/picodeparser.cpp index 8c9da2f5..a18c0855 100755 --- a/src_main/code/picodeparser.cpp +++ b/src_main/code/picodeparser.cpp @@ -163,7 +163,7 @@ bool PICodeParser::parseFileInternal(const PIString & file, bool follow_includes } //piCout << "add" << file; proc_files << f.path(); - PIString fc = f.readAll(); + PIString fc = PIString::fromUTF8(f.readAll()); piCout << "parsing" << f.path() << "..."; bool is_main = isMainFile(fc); if (is_main) main_file = f.path(); @@ -201,6 +201,7 @@ bool PICodeParser::parseFileContent(PIString & fc, bool main) { fc.replaceAll("\r\n", "\n"); fc.replaceAll("\r", "\n"); for (int i = 0; i < fc.size_s() - 1; ++i) { + if (fc[i].unicode16Code() >= 255) continue; if (i > 0) pc = c; c = fc[i].toAscii(); if (c == '"' && !mlc && pc != '\'') { @@ -226,7 +227,7 @@ bool PICodeParser::parseFileContent(PIString & fc, bool main) { if (fc.mid(i, 2) == "*/" && mlc) {mlc = false; fc.cutMid(mls, i - mls + 2); i = mls - 1; continue;} if (fc.mid(i, 2) == "//" && !mlc) {ole = fc.find('\n', i); fc.cutMid(i, ole < 0 ? -1 : ole - i); --i; continue;} } - //piCout << fc; + //PICout(PICoutManipulators::DefaultControls) << fc; pfc = procMacros(fc); replaceMeta(pfc); diff --git a/utils/code_model_generator/main.cpp b/utils/code_model_generator/main.cpp index 916fdda4..39038ff4 100755 --- a/utils/code_model_generator/main.cpp +++ b/utils/code_model_generator/main.cpp @@ -88,7 +88,7 @@ void makeClassInfo(PIFile & f, const PICodeParser::Entity * e) { f << "\tci->has_name = " << (e->has_name ? "true" : "false") << ";\n"; if (!e->meta.isEmpty()) { for (PICodeParser::MetaMap::const_iterator i = e->meta.begin(); i != e->meta.end(); ++i) - f << "\tci->meta[\"" << i.key() << "\"] = \"" << i.value() << "\";\n"; + f << "\tci->meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n"; } f << "\t(*classesInfo)[ci->name] = ci;\n"; if (e->parent_scope) { @@ -117,7 +117,7 @@ void makeClassInfo(PIFile & f, const PICodeParser::Entity * e) { f << ");\n"; if (!m.meta.isEmpty()) { for (PICodeParser::MetaMap::const_iterator i = m.meta.begin(); i != m.meta.end(); ++i) - f << "\tti.meta[\"" << i.key() << "\"] = \"" << i.value() << "\";\n"; + f << "\tti.meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n"; } f << "\tci->variables << ti;\n"; } @@ -156,7 +156,7 @@ void makeClassInfo(PIFile & f, const PICodeParser::Entity * e) { } if (!m.meta.isEmpty()) { for (PICodeParser::MetaMap::const_iterator i = m.meta.begin(); i != m.meta.end(); ++i) - f << "\tfi->meta[\"" << i.key() << "\"] = \"" << i.value() << "\";\n"; + f << "\tfi->meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n"; } } } @@ -171,14 +171,14 @@ void makeEnumInfo(PIFile & f, const PICodeParser::Enum * e) { f << "\tei->name = \"" << e->name << "\";\n"; if (!e->meta.isEmpty()) { for (PICodeParser::MetaMap::const_iterator i = e->meta.begin(); i != e->meta.end(); ++i) - f << "\tei->meta[\"" << i.key() << "\"] = \"" << i.value() << "\";\n"; + f << "\tei->meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n"; } } piForeachC (PICodeParser::EnumeratorInfo & m, e->members) { f << "\tei->members << PICodeInfo::EnumeratorInfo(\"" << m.name << "\", " << m.value << ");\n"; if (!m.meta.isEmpty()) { for (PICodeParser::MetaMap::const_iterator i = m.meta.begin(); i != m.meta.end(); ++i) - f << "\tei->members.back().meta[\"" << i.key() << "\"] = \"" << i.value() << "\";\n"; + f << "\tei->members.back().meta[\"" << i.key() << "\"] = PIString::fromUTF8(\"" << i.value() << "\");\n"; } } }