|
@@ -59,6 +59,7 @@ Type
|
|
private
|
|
private
|
|
FTypeParentClass: string;
|
|
FTypeParentClass: string;
|
|
procedure GenerateClassTypes(aData: TSchemaData);
|
|
procedure GenerateClassTypes(aData: TSchemaData);
|
|
|
|
+ procedure GeneratePascalArrayTypes(aData: TSchemaData);
|
|
procedure GenerateStringTypes(aData: TSchemaData);
|
|
procedure GenerateStringTypes(aData: TSchemaData);
|
|
procedure WriteDtoConstructor(aType: TPascalTypeData); virtual;
|
|
procedure WriteDtoConstructor(aType: TPascalTypeData); virtual;
|
|
procedure WriteDtoField(aType: TPascalTypeData; aProperty: TPascalPropertyData); virtual;
|
|
procedure WriteDtoField(aType: TPascalTypeData; aProperty: TPascalPropertyData); virtual;
|
|
@@ -313,9 +314,10 @@ end;
|
|
procedure TTypeCodeGenerator.GenerateStringTypes(aData : TSchemaData);
|
|
procedure TTypeCodeGenerator.GenerateStringTypes(aData : TSchemaData);
|
|
|
|
|
|
var
|
|
var
|
|
- I: integer;
|
|
|
|
|
|
+ I,lCount: integer;
|
|
lType,lArray : TPascalTypeData;
|
|
lType,lArray : TPascalTypeData;
|
|
begin
|
|
begin
|
|
|
|
+ lCount:=0;
|
|
for I := 0 to aData.TypeCount-1 do
|
|
for I := 0 to aData.TypeCount-1 do
|
|
begin
|
|
begin
|
|
lType:=aData.Types[I];
|
|
lType:=aData.Types[I];
|
|
@@ -323,11 +325,17 @@ begin
|
|
begin
|
|
begin
|
|
DoLog('Generating string type %s', [lType.PascalName]);
|
|
DoLog('Generating string type %s', [lType.PascalName]);
|
|
WriteStringType(lType);
|
|
WriteStringType(lType);
|
|
|
|
+ inc(lCount);
|
|
lArray:=aData.FindSchemaTypeData('['+lType.SchemaName+']');
|
|
lArray:=aData.FindSchemaTypeData('['+lType.SchemaName+']');
|
|
if lArray<>Nil then
|
|
if lArray<>Nil then
|
|
- WriteStringArrayType(lArray);
|
|
|
|
|
|
+ begin
|
|
|
|
+ WriteStringArrayType(lArray);
|
|
|
|
+ inc(lCount);
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
+ if lCount>0 then
|
|
|
|
+ AddLn('');
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TTypeCodeGenerator.GenerateClassTypes(aData : TSchemaData);
|
|
procedure TTypeCodeGenerator.GenerateClassTypes(aData : TSchemaData);
|
|
@@ -335,11 +343,15 @@ procedure TTypeCodeGenerator.GenerateClassTypes(aData : TSchemaData);
|
|
var
|
|
var
|
|
I: integer;
|
|
I: integer;
|
|
lArray : TPascalTypeData;
|
|
lArray : TPascalTypeData;
|
|
|
|
+ lName : string;
|
|
begin
|
|
begin
|
|
for I := 0 to aData.TypeCount-1 do
|
|
for I := 0 to aData.TypeCount-1 do
|
|
if aData.Types[I].PascalType in [ptSchemaStruct,ptAnonStruct] then
|
|
if aData.Types[I].PascalType in [ptSchemaStruct,ptAnonStruct] then
|
|
begin
|
|
begin
|
|
DoLog('Generating DTO class type %s', [aData.Types[I].PascalName]);
|
|
DoLog('Generating DTO class type %s', [aData.Types[I].PascalName]);
|
|
|
|
+ lName:=aData.Types[I].PascalName;
|
|
|
|
+ if lName='Tapi_Message' then
|
|
|
|
+ Writeln('ag');
|
|
WriteDtoType(aData.Types[I]);
|
|
WriteDtoType(aData.Types[I]);
|
|
lArray:=aData.FindSchemaTypeData('['+aData.Types[I].SchemaName+']');
|
|
lArray:=aData.FindSchemaTypeData('['+aData.Types[I].SchemaName+']');
|
|
if lArray<>Nil then
|
|
if lArray<>Nil then
|
|
@@ -347,6 +359,35 @@ begin
|
|
end
|
|
end
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTypeCodeGenerator.GeneratePascalArrayTypes(aData : TSchemaData);
|
|
|
|
+
|
|
|
|
+// Generate a definition of an array of a standard pascal type.
|
|
|
|
+
|
|
|
|
+var
|
|
|
|
+ I, lCount: integer;
|
|
|
|
+ lType : TPascalTypeData;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ lCount := 0;
|
|
|
|
+ for I := 0 to aData.TypeCount-1 do
|
|
|
|
+ begin
|
|
|
|
+ lType:=aData.Types[I];
|
|
|
|
+ // It is an array
|
|
|
|
+ if (lType.PascalType=ptArray) then
|
|
|
|
+ begin
|
|
|
|
+ // the element type is a standard type
|
|
|
|
+ if (lType.ElementTypeData.Schema=Nil) then
|
|
|
|
+ begin
|
|
|
|
+ DoLog('Generating array type %s', [lType.PascalName]);
|
|
|
|
+ WriteDtoArrayType(lType);
|
|
|
|
+ inc(lCount);
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+ if lCount>0 then
|
|
|
|
+ AddLn('');
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTypeCodeGenerator.Execute(aData: TSchemaData);
|
|
procedure TTypeCodeGenerator.Execute(aData: TSchemaData);
|
|
|
|
|
|
var
|
|
var
|
|
@@ -371,6 +412,7 @@ begin
|
|
Addln('');
|
|
Addln('');
|
|
indent;
|
|
indent;
|
|
GenerateStringTypes(aData);
|
|
GenerateStringTypes(aData);
|
|
|
|
+ GeneratePascalArrayTypes(aData);
|
|
GenerateClassTypes(aData);
|
|
GenerateClassTypes(aData);
|
|
undent;
|
|
undent;
|
|
Addln('implementation');
|
|
Addln('implementation');
|
|
@@ -576,6 +618,7 @@ begin
|
|
ptFloat32,
|
|
ptFloat32,
|
|
ptFloat64,
|
|
ptFloat64,
|
|
ptJSON,
|
|
ptJSON,
|
|
|
|
+ ptAnonStruct,
|
|
ptSchemaStruct:
|
|
ptSchemaStruct:
|
|
begin
|
|
begin
|
|
if lNilCheck then
|
|
if lNilCheck then
|