#include using namespace Upp; Vector errs; void AddError(int ln, const String& s) { errs.Add(AsString(ln) + ": " + s); } void Test(const char *path) { CppBase base; LOG("**** " << GetFileName(path)); FileIn in(path); errs.Clear(); Parser p; p.Do(in, Vector(), base, path, callback(AddError)); if(errs.GetCount()) DUMPC(errs); Qualify(base); String out; for(int i = 0; i < base.GetCount(); i++) { out << Nvl(base.GetKey(i), "") << " {\n"; const Array& ma = base[i]; for(int j = 0; j < ma.GetCount(); j++) { const CppItem& m = ma[j]; out << '\t' << CppItemKindAsString(m.kind) << ", name: " << m.name << ", qitem: " << m.qitem << ", line " << m.line << "\n"; } out << "}\n"; } // base.Dump(VppLog()); p.dobody = true; in.Seek(0); p.Do(in, Vector(), base, path, callback(AddError)); out << " {\n"; for(int i = 0; i < p.local.GetCount(); i++) { out << p.local.GetKey(i) << " " << p.local[i].type; if(p.local[i].isptr) out << " pointer"; out << ", line: " << p.local[i].line << "\n"; } out << "}"; LOG("===="); LOG(out); LOG("-------------------------------------------------------------------------------"); } CONSOLE_APP_MAIN { StdLogSetup(LOG_COUT|LOG_FILE); Test(GetDataFile("test1.in")); /* FindFile ff(GetDataFile("test1.in")); while(ff) { Test(ff.GetPath()); ff.Next(); } */ }