| 11 |
11 |
if(p.IsNumber())
|
| 12 |
12 |
p.ReadNumber();
|
| 13 |
13 |
p.Char(')');
|
| 14 |
|
rr << "SqlId " << id << "(\"" << id << "\");\n";
|
|
14 |
rr << "SqlId " << id << "(\"" << id << "\");";
|
| 15 |
15 |
return id;
|
| 16 |
16 |
}
|
| 17 |
17 |
|
| ... | ... | |
| 20 |
20 |
String s = LoadFile(fn);
|
| 21 |
21 |
CParser p(s);
|
| 22 |
22 |
String r, rr;
|
|
23 |
int line;
|
| 23 |
24 |
while(!p.IsEof())
|
| 24 |
25 |
try {
|
|
26 |
line = p.GetLine();
|
| 25 |
27 |
if(p.Id("TABLE") || p.Id("TABLE_") || p.Id("TYPE") || p.Id("TYPE_"))
|
| 26 |
|
r << "struct S_" << ReadId(p, rr) << " {\n";
|
|
28 |
r << "struct S_" << ReadId(p, rr) << " {";
|
| 27 |
29 |
else
|
| 28 |
30 |
if(p.Id("END_TABLE") || p.Id("END_TYPE"))
|
| 29 |
|
r << "};\n";
|
|
31 |
r << "};";
|
| 30 |
32 |
else
|
| 31 |
33 |
if(p.Id("LONGRAW") || p.Id("LONGRAW_") || p.Id("BLOB") || p.Id("BLOB_") ||
|
| 32 |
34 |
p.Id("STRING_") || p.Id("STRING") || p.Id("CLOB") || p.Id("CLOB_"))
|
| 33 |
|
r << "\tString " << ReadId(p, rr) << ";\n";
|
|
35 |
r << "\tString " << ReadId(p, rr) << ";";
|
| 34 |
36 |
else
|
| 35 |
37 |
if(p.Id("INT") || p.Id("INT_") || p.Id("SERIAL") || p.Id("ISERIAL"))
|
| 36 |
|
r << "\tint " << ReadId(p, rr) << ";\n";
|
|
38 |
r << "\tint " << ReadId(p, rr) << ";";
|
| 37 |
39 |
else
|
| 38 |
40 |
if(p.Id("DOUBLE") || p.Id("DOUBLE_"))
|
| 39 |
|
r << "\tdouble " << ReadId(p, rr) << ";\n";
|
|
41 |
r << "\tdouble " << ReadId(p, rr) << ";";
|
| 40 |
42 |
else
|
| 41 |
43 |
if(p.Id("TIME") || p.Id("TIME_"))
|
| 42 |
|
r << "\tTime " << ReadId(p, rr) << ";\n";
|
|
44 |
r << "\tTime " << ReadId(p, rr) << ";";
|
| 43 |
45 |
else
|
| 44 |
46 |
if(p.Id("DATE") || p.Id("DATE_"))
|
| 45 |
|
r << "\tDate " << ReadId(p, rr) << ";\n";
|
|
47 |
r << "\tDate " << ReadId(p, rr) << ";";
|
| 46 |
48 |
else
|
| 47 |
49 |
if(p.Id("BIT") || p.Id("BIT_") || p.Id("BOOL") || p.Id("BOOL_"))
|
| 48 |
|
r << "\tbool " << ReadId(p, rr) << ";\n";
|
|
50 |
r << "\tbool " << ReadId(p, rr) << ";";
|
| 49 |
51 |
else
|
| 50 |
52 |
if(p.Id("INT_ARRAY") || p.Id("INT_ARRAY_"))
|
| 51 |
|
r << "\tint " << ReadId(p, rr) << "[1];\n";
|
|
53 |
r << "\tint " << ReadId(p, rr) << "[1];";
|
| 52 |
54 |
else
|
| 53 |
55 |
if(p.Id("DOUBLE_ARRAY") || p.Id("DOUBLE_ARRAY_"))
|
| 54 |
|
r << "\tdouble " << ReadId(p, rr) << "[1];\n";
|
|
56 |
r << "\tdouble " << ReadId(p, rr) << "[1];";
|
| 55 |
57 |
else
|
| 56 |
58 |
if(p.Id("TIME_ARRAY") || p.Id("TIME_ARRAY_"))
|
| 57 |
|
r << "\tTime " << ReadId(p, rr) << "[1];\n";
|
|
59 |
r << "\tTime " << ReadId(p, rr) << "[1];";
|
| 58 |
60 |
else
|
| 59 |
61 |
if(p.Id("DATE_ARRAY") || p.Id("DATE_ARRAY_"))
|
| 60 |
|
r << "\tDate " << ReadId(p, rr) << "[1];\n";
|
|
62 |
r << "\tDate " << ReadId(p, rr) << "[1];";
|
| 61 |
63 |
else
|
| 62 |
64 |
if(p.Id("BOOL_ARRAY") || p.Id("BOOL_ARRAY_") || p.Id("BIT_ARRAY") || p.Id("BIT_ARRAY_"))
|
| 63 |
|
r << "\tbool " << ReadId(p, rr) << "[1];\n";
|
|
65 |
r << "\tbool " << ReadId(p, rr) << "[1];";
|
| 64 |
66 |
else
|
| 65 |
67 |
if(p.Id("SEQUENCE") || p.Id("SEQUENCE_"))
|
| 66 |
68 |
ReadId(p, rr);
|
| 67 |
69 |
else
|
| 68 |
70 |
p.SkipTerm();
|
|
71 |
line = p.GetLine() - line;
|
|
72 |
for(int i = 0; i < line; ++i) {
|
|
73 |
r << '\n';
|
|
74 |
rr << '\n';
|
|
75 |
}
|
| 69 |
76 |
}
|
| 70 |
77 |
catch(CParser::Error)
|
| 71 |
78 |
{}
|
| 72 |
|
r << "\n" << rr;
|
| 73 |
|
StringStream ss(r);
|
|
79 |
StringStream ss(r), sr(rr);
|
| 74 |
80 |
CppBase& base = CodeBase();
|
|
81 |
Parse(sr, IgnoreList(), base, fn, CNULL);
|
| 75 |
82 |
Parse(ss, IgnoreList(), base, fn, CNULL);
|
| 76 |
83 |
}
|