ultimatepp/uppsrc/ide/Browser/Iml.cpp
cxl db81120405 ide: Assist++ support for .iml files #580
git-svn-id: svn://ultimatepp.org/upp/trunk@6590 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2013-11-20 19:46:16 +00:00

56 lines
1.3 KiB
C++

#include "Browser.h"
#define LDUMP(x) // DDUMP(x)
void ScanImlFile(const char *fn)
{
String s = LoadFile(fn);
CParser p(s);
String iml, i_ml;
try {
p.PassId("PREMULTIPLIED");
for(;;) {
if(p.Id("IMAGE_ID")) {
p.Char('(');
String id = p.ReadId();
i_ml << "I_" << id << ",\n";
iml << "static Image " << id << "();\n";
p.Char(')');
}
else
if(p.Id("IMAGE_META")) {
p.Char('(');
p.ReadString();
p.Char(',');
p.ReadString();
p.Char(')');
}
else
break;
}
}
catch(CParser::Error) {}
String r;
r << "struct " << GetFileTitle(fn) << "Img {\n";
if(iml.GetCount())
r << "enum {" << i_ml << "};\n" << iml;
r <<
"static Iml& Iml();"
"static int Find(const UPP::String& s);"
"static int Find(const char *s);"
"static int GetCount();"
"static String GetId(int i);"
"static Image Get(int i);"
"static Image Get(const char *s);"
"static Image Get(const UPP::String& s);"
"static void Set(int i, const UPP::Image& m);"
"static void Set(const char *s, const UPP::Image& m);"
"static void Reset();"
"};\n";
LDUMP(r);
StringStream ss(r);
CppBase& base = CodeBase();
Parse(ss, IgnoreList(), base, fn, CNULL);
}