Skip to content

Commit 3c119c2

Browse files
committed
Fixed pascal code generation (fpc < 3.3)
1 parent 1444312 commit 3c119c2

File tree

4 files changed

+32
-28
lines changed

4 files changed

+32
-28
lines changed

extern/cloop/src/cloop/Action.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,13 @@ void IfThenElseAction::generate(const ActionParametersBlock& apb, unsigned ident
7777
void CallAction::generate(const ActionParametersBlock& apb, unsigned ident)
7878
{
7979
identify(apb, ident);
80-
fprintf(apb.out, "%s(", name.c_str());
80+
fprintf(apb.out, "%s(", (apb.language == LANGUAGE_PASCAL ? PascalGenerator::escapeName(name) : name).c_str());
8181
for (auto itr = parameters.begin(); itr != parameters.end(); ++itr)
8282
{
83-
fprintf(apb.out, "%s%s", itr == parameters.begin() ? "" : ", ", itr->c_str());
83+
string parname = *itr;
84+
if (apb.language == LANGUAGE_PASCAL)
85+
parname = PascalGenerator::escapeName(parname);
86+
fprintf(apb.out, "%s%s", itr == parameters.begin() ? "" : ", ", parname.c_str());
8487
}
8588
fprintf(apb.out, ");\n");
8689
}

extern/cloop/src/cloop/Generator.cpp

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,7 @@ void PascalGenerator::generate()
10191019
++i)
10201020
{
10211021
Interface* interface = *i;
1022-
fprintf(out, "\t%s = class;\n", escapeName(interface->name, true).c_str());
1022+
fprintf(out, "\t%s = class;\n", escapeIfaceName(interface->name).c_str());
10231023
}
10241024

10251025
fprintf(out, "\n");
@@ -1077,9 +1077,9 @@ void PascalGenerator::generate()
10771077
!method->returnTypeRef.isPointer;
10781078

10791079
fprintf(out, "\t%s_%sPtr = %s(this: %s",
1080-
escapeName(interface->name, true).c_str(), escapeName(method->name).c_str(),
1080+
escapeIfaceName(interface->name).c_str(), escapeName(method->name).c_str(),
10811081
(isProcedure ? "procedure" : "function"),
1082-
escapeName(interface->name, true).c_str());
1082+
escapeIfaceName(interface->name).c_str());
10831083

10841084
for (vector<Parameter*>::iterator k = method->parameters.begin();
10851085
k != method->parameters.end();
@@ -1123,15 +1123,15 @@ void PascalGenerator::generate()
11231123
Method* method = *j;
11241124

11251125
fprintf(out, "\t\t%s: %s_%sPtr;\n", escapeName(method->name).c_str(),
1126-
escapeName(interface->name, true).c_str(), escapeName(method->name).c_str());
1126+
escapeIfaceName(interface->name).c_str(), escapeName(method->name).c_str());
11271127
}
11281128

11291129
fprintf(out, "\tend;\n\n");
11301130

1131-
fprintf(out, "\t%s = class", escapeName(interface->name, true).c_str());
1131+
fprintf(out, "\t%s = class", escapeIfaceName(interface->name).c_str());
11321132

11331133
if (interface->super)
1134-
fprintf(out, "(%s)", escapeName(interface->super->name, true).c_str());
1134+
fprintf(out, "(%s)", escapeIfaceName(interface->super->name).c_str());
11351135

11361136
fprintf(out, "\n");
11371137

@@ -1196,7 +1196,7 @@ void PascalGenerator::generate()
11961196
fprintf(out, "\tend;\n\n");
11971197

11981198
fprintf(out, "\t%sImpl = class(%s)\n",
1199-
escapeName(interface->name, true).c_str(), escapeName(interface->name, true).c_str());
1199+
escapeIfaceName(interface->name).c_str(), escapeIfaceName(interface->name).c_str());
12001200
fprintf(out, "\t\tconstructor create;\n\n");
12011201

12021202
deque<Method*> methods;
@@ -1262,7 +1262,7 @@ void PascalGenerator::generate()
12621262

12631263
fprintf(out, "%s %s.%s(",
12641264
(isProcedure ? "procedure" : "function"),
1265-
escapeName(interface->name, true).c_str(),
1265+
escapeIfaceName(interface->name).c_str(),
12661266
escapeName(method->name).c_str());
12671267

12681268
for (vector<Parameter*>::iterator k = method->parameters.begin();
@@ -1360,9 +1360,9 @@ void PascalGenerator::generate()
13601360

13611361
fprintf(out, "%s %sImpl_%sDispatcher(this: %s",
13621362
(isProcedure ? "procedure" : "function"),
1363-
escapeName(interface->name, true).c_str(),
1363+
escapeIfaceName(interface->name).c_str(),
13641364
escapeName(method->name).c_str(),
1365-
escapeName(interface->name, true).c_str());
1365+
escapeIfaceName(interface->name).c_str());
13661366

13671367
for (vector<Parameter*>::iterator k = method->parameters.begin();
13681368
k != method->parameters.end();
@@ -1390,7 +1390,7 @@ void PascalGenerator::generate()
13901390
if (!isProcedure)
13911391
fprintf(out, "Result := ");
13921392

1393-
fprintf(out, "%sImpl(this).%s(", escapeName(interface->name, true).c_str(),
1393+
fprintf(out, "%sImpl(this).%s(", escapeIfaceName(interface->name).c_str(),
13941394
escapeName(method->name).c_str());
13951395

13961396
for (vector<Parameter*>::iterator k = method->parameters.begin();
@@ -1428,7 +1428,7 @@ void PascalGenerator::generate()
14281428
{
14291429
fprintf(out, "%s %sImpl.%s(",
14301430
(isProcedure ? "procedure" : "function"),
1431-
escapeName(interface->name, true).c_str(),
1431+
escapeIfaceName(interface->name).c_str(),
14321432
escapeName(method->name).c_str());
14331433

14341434
for (vector<Parameter*>::iterator k = method->parameters.begin();
@@ -1455,11 +1455,11 @@ void PascalGenerator::generate()
14551455

14561456
fprintf(out, "var\n");
14571457
fprintf(out, "\t%sImpl_vTable: %sVTable;\n\n",
1458-
escapeName(interface->name, true).c_str(), escapeName(interface->name).c_str());
1458+
escapeIfaceName(interface->name).c_str(), escapeName(interface->name).c_str());
14591459

1460-
fprintf(out, "constructor %sImpl.create;\n", escapeName(interface->name, true).c_str());
1460+
fprintf(out, "constructor %sImpl.create;\n", escapeIfaceName(interface->name).c_str());
14611461
fprintf(out, "begin\n");
1462-
fprintf(out, "\tvTable := %sImpl_vTable;\n", escapeName(interface->name, true).c_str());
1462+
fprintf(out, "\tvTable := %sImpl_vTable;\n", escapeIfaceName(interface->name).c_str());
14631463
fprintf(out, "end;\n\n");
14641464
}
14651465

@@ -1479,18 +1479,18 @@ void PascalGenerator::generate()
14791479
methods.insert(methods.begin(), p->methods.begin(), p->methods.end());
14801480

14811481
fprintf(out, "\t%sImpl_vTable := %sVTable.create;\n",
1482-
escapeName(interface->name, true).c_str(), escapeName(interface->name).c_str());
1482+
escapeIfaceName(interface->name).c_str(), escapeName(interface->name).c_str());
14831483
fprintf(out, "\t%sImpl_vTable.version := %d;\n",
1484-
escapeName(interface->name, true).c_str(), interface->version);
1484+
escapeIfaceName(interface->name).c_str(), interface->version);
14851485

14861486
for (deque<Method*>::iterator j = methods.begin(); j != methods.end(); ++j)
14871487
{
14881488
Method* method = *j;
14891489

14901490
fprintf(out, "\t%sImpl_vTable.%s := @%sImpl_%sDispatcher;\n",
1491-
escapeName(interface->name, true).c_str(),
1491+
escapeIfaceName(interface->name).c_str(),
14921492
escapeName(method->name).c_str(),
1493-
escapeName(interface->name, true).c_str(),
1493+
escapeIfaceName(interface->name).c_str(),
14941494
escapeName(method->name).c_str());
14951495
}
14961496

@@ -1504,7 +1504,7 @@ void PascalGenerator::generate()
15041504
++i)
15051505
{
15061506
Interface* interface = *i;
1507-
fprintf(out, "\t%sImpl_vTable.destroy;\n", escapeName(interface->name, true).c_str());
1507+
fprintf(out, "\t%sImpl_vTable.destroy;\n", escapeIfaceName(interface->name).c_str());
15081508
}
15091509

15101510
fprintf(out, "\n");
@@ -1577,7 +1577,7 @@ string PascalGenerator::convertType(const TypeRef& typeRef)
15771577
return name;
15781578
}
15791579

1580-
string PascalGenerator::escapeName(string name, bool interfaceName)
1580+
string PascalGenerator::escapeName(string name)
15811581
{
15821582
//// TODO: Create a table of keywords.
15831583

@@ -1592,9 +1592,6 @@ string PascalGenerator::escapeName(string name, bool interfaceName)
15921592
name += "_";
15931593
}
15941594

1595-
if (interfaceName)
1596-
name = prefix + name;
1597-
15981595
return name;
15991596
}
16001597

extern/cloop/src/cloop/Generator.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,15 @@ class PascalGenerator : public FileGenerator
127127

128128
public:
129129
virtual void generate();
130+
static std::string escapeName(std::string name);
130131

131132
private:
132133
std::string convertParameter(const Parameter& parameter);
133134
std::string convertType(const TypeRef& typeRef);
134-
std::string escapeName(std::string name, bool interfaceName = false);
135+
std::string escapeIfaceName(std::string name)
136+
{
137+
return prefix + name;
138+
}
135139

136140
void insertFile(const std::string& filename);
137141

src/include/gen/Firebird.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10016,7 +10016,7 @@ procedure IProfilerSession.afterRecordSourceGetRecord(statementId: Int64; reques
1001610016
procedure IProfilerSession.defineStatement2(status: IStatus; statementId: Int64; parentStatementId: Int64; type_: PAnsiChar; schemaName: PAnsiChar; packageName: PAnsiChar; routineName: PAnsiChar; sqlText: PAnsiChar);
1001710017
begin
1001810018
if (vTable.version < 4) then begin
10019-
deprecatedDefineStatement(status, statementId, parentStatementId, type, packageName, routineName, sqlText);
10019+
deprecatedDefineStatement(status, statementId, parentStatementId, type_, packageName, routineName, sqlText);
1002010020
end
1002110021
else begin
1002210022
ProfilerSessionVTable(vTable).defineStatement2(Self, status, statementId, parentStatementId, type_, schemaName, packageName, routineName, sqlText);

0 commit comments

Comments
 (0)