Added: support for a typed NodeValue property on typed elements with attributes
This commit is contained in:
parent
105c770a77
commit
cb781049c7
@ -62,7 +62,7 @@ type
|
||||
procedure feSchemaPropertiesChange(Sender: TObject);
|
||||
procedure btnHintsClick(Sender: TObject);
|
||||
private
|
||||
function CheckValidSchemaFile(): Boolean;
|
||||
function CheckValidSchemaFile: Boolean;
|
||||
function CheckReadOnly(const AFileName: String): Boolean;
|
||||
|
||||
procedure GetFileName(Sender: TObject; const SchemaName: String; var Path, FileName: String);
|
||||
@ -123,7 +123,7 @@ var
|
||||
begin
|
||||
plOutput.ActivePageIndex := 0;
|
||||
|
||||
if ParamCount() > 0 then
|
||||
if ParamCount > 0 then
|
||||
begin
|
||||
schemaFile := ParamStr(1);
|
||||
|
||||
@ -156,7 +156,7 @@ var
|
||||
generator: THintsDelphiXMLDataBindingGenerator;
|
||||
|
||||
begin
|
||||
if not CheckValidSchemaFile() then
|
||||
if not CheckValidSchemaFile then
|
||||
Exit;
|
||||
|
||||
hintsFile := ChangeFileExt(feSchema.Text, '.hints.xml');
|
||||
@ -164,7 +164,7 @@ begin
|
||||
hints := LoadDataBindingHints(hintsFile);
|
||||
|
||||
try
|
||||
generator := THintsDelphiXMLDataBindingGenerator.Create();
|
||||
generator := THintsDelphiXMLDataBindingGenerator.Create;
|
||||
try
|
||||
generator.Hints := hints;
|
||||
|
||||
@ -198,7 +198,7 @@ end;
|
||||
|
||||
procedure TMainForm.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close();
|
||||
Close;
|
||||
end;
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ end;
|
||||
|
||||
procedure TMainForm.feFilePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
||||
begin
|
||||
if dlgOutputFile.Execute() then
|
||||
if dlgOutputFile.Execute then
|
||||
feFile.Text := dlgOutputFile.FileName;
|
||||
end;
|
||||
|
||||
@ -229,7 +229,7 @@ end;
|
||||
|
||||
procedure TMainForm.feSchemaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
||||
begin
|
||||
if dlgSchema.Execute() then
|
||||
if dlgSchema.Execute then
|
||||
feSchema.Text := dlgSchema.FileName;
|
||||
end;
|
||||
|
||||
@ -296,7 +296,7 @@ begin
|
||||
if FileExists(fileName) then
|
||||
settings := LoadDataBindingSettings(fileName)
|
||||
else
|
||||
settings := NewDataBindingSettings();
|
||||
settings := NewDataBindingSettings;
|
||||
|
||||
settings.Output.ChildNodes.Clear;
|
||||
|
||||
@ -318,7 +318,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TMainForm.CheckValidSchemaFile(): Boolean;
|
||||
function TMainForm.CheckValidSchemaFile: Boolean;
|
||||
begin
|
||||
Result := FileExists(feSchema.Text);
|
||||
|
||||
@ -356,7 +356,7 @@ var
|
||||
hints: IXMLDataBindingHints;
|
||||
|
||||
begin
|
||||
if CheckValidSchemaFile() then
|
||||
if CheckValidSchemaFile then
|
||||
begin
|
||||
hintsFile := ChangeFileExt(feSchema.Text, '.hints.xml');
|
||||
if FileExists(hintsFile) then
|
||||
@ -366,7 +366,7 @@ begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
hints := NewDataBindingHints();
|
||||
hints := NewDataBindingHints;
|
||||
hints.OwnerDocument.SaveToFile(hintsFile);
|
||||
ShowMessage('The hints file has been generated.');
|
||||
end;
|
||||
@ -649,4 +649,3 @@ end;
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@ type
|
||||
function GetItem(Index: Integer): TXMLDataBindingSchema;
|
||||
procedure SetItem(Index: Integer; const Value: TXMLDataBindingSchema);
|
||||
public
|
||||
constructor Create();
|
||||
constructor Create;
|
||||
|
||||
property Items[Index: Integer]: TXMLDataBindingSchema read GetItem write SetItem; default;
|
||||
end;
|
||||
@ -35,7 +35,7 @@ type
|
||||
|
||||
FOnGetFileName: TGetFileNameEvent;
|
||||
protected
|
||||
procedure GenerateDataBinding(); override;
|
||||
procedure GenerateDataBinding; override;
|
||||
procedure GenerateOutputFile(ASchemaList: TXMLSchemaList; const ASourceFileName, AUnitName: String);
|
||||
function GenerateUsesClause(ASchemaList: TXMLSchemaList): String;
|
||||
|
||||
@ -48,7 +48,7 @@ type
|
||||
function GetDataTypeMapping(ADataType: IXMLTypeDef; out ATypeMapping: TTypeMapping): Boolean;
|
||||
function GetDataTypeName(AProperty: TXMLDataBindingProperty; AInterfaceName: Boolean): String;
|
||||
function TranslateDataType(ADataType: IXMLTypeDef): String;
|
||||
function CreateNewGUID(): String;
|
||||
function CreateNewGUID: String;
|
||||
|
||||
procedure WriteUnitHeader(AStream: TStreamHelper; const ASourceFileName, AFileName: String);
|
||||
procedure WriteSection(AStream: TStreamHelper; ASection: TDelphiXMLSection; ASchemaList: TXMLSchemaList);
|
||||
@ -88,7 +88,7 @@ uses
|
||||
|
||||
|
||||
{ TDelphiXMLDataBindingGenerator }
|
||||
procedure TDelphiXMLDataBindingGenerator.GenerateDataBinding();
|
||||
procedure TDelphiXMLDataBindingGenerator.GenerateDataBinding;
|
||||
var
|
||||
schemaList: TXMLSchemaList;
|
||||
schemaIndex: Integer;
|
||||
@ -96,7 +96,7 @@ var
|
||||
unitName: String;
|
||||
|
||||
begin
|
||||
schemaList := TXMLSchemaList.Create();
|
||||
schemaList := TXMLSchemaList.Create;
|
||||
try
|
||||
case OutputType of
|
||||
otSingle:
|
||||
@ -110,7 +110,7 @@ begin
|
||||
|
||||
otMultiple:
|
||||
begin
|
||||
FUnitNames := TX2OSHash.Create();
|
||||
FUnitNames := TX2OSHash.Create;
|
||||
try
|
||||
for schemaIndex := 0 to Pred(SchemaCount) do
|
||||
begin
|
||||
@ -122,7 +122,7 @@ begin
|
||||
begin
|
||||
schema := Schemas[schemaIndex];
|
||||
|
||||
schemaList.Clear();
|
||||
schemaList.Clear;
|
||||
schemaList.Add(schema);
|
||||
|
||||
unitName := FUnitNames[schema];
|
||||
@ -158,12 +158,12 @@ begin
|
||||
['UsesClause', usesClause]);
|
||||
WriteSection(unitStream, dxsForward, ASchemaList);
|
||||
|
||||
FProcessedItems := TX2OIHash.Create();
|
||||
FProcessedItems := TX2OIHash.Create;
|
||||
try
|
||||
FProcessedItems.Clear();
|
||||
FProcessedItems.Clear;
|
||||
WriteSection(unitStream, dxsInterface, ASchemaList);
|
||||
|
||||
FProcessedItems.Clear();
|
||||
FProcessedItems.Clear;
|
||||
WriteSection(unitStream, dxsClass, ASchemaList);
|
||||
finally
|
||||
FreeAndNil(FProcessedItems);
|
||||
@ -441,7 +441,7 @@ begin
|
||||
hasItem := True;
|
||||
end;
|
||||
|
||||
with TNamedFormatStringList.Create() do
|
||||
with TNamedFormatStringList.Create do
|
||||
try
|
||||
case ASection of
|
||||
dxsInterface: Add(DocumentFunctionsInterface);
|
||||
@ -451,10 +451,10 @@ begin
|
||||
AStream.Write(Format(['SourceName', interfaceItem.Name,
|
||||
'Name', interfaceItem.TranslatedName]));
|
||||
finally
|
||||
Free();
|
||||
Free;
|
||||
end;
|
||||
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -464,8 +464,8 @@ begin
|
||||
begin
|
||||
AStream.WriteLn('const');
|
||||
AStream.WriteLnFmt(' TargetNamespace = ''%s'';', [nameSpace]);
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -529,7 +529,7 @@ begin
|
||||
if ASection = dxsInterface then
|
||||
indent := ' ';
|
||||
|
||||
sourceCode := TNamedFormatStringList.Create();
|
||||
sourceCode := TNamedFormatStringList.Create;
|
||||
try
|
||||
sourceCode.Add(indent + 'function StringTo%<ItemName>:s(const AValue: WideString): %<DataType>:s;');
|
||||
|
||||
@ -640,7 +640,7 @@ begin
|
||||
if not AItem.HasDocumentation then
|
||||
exit;
|
||||
|
||||
lines := TStringList.Create();
|
||||
lines := TStringList.Create;
|
||||
try
|
||||
documentation := AItem.Documentation;
|
||||
|
||||
@ -708,12 +708,12 @@ begin
|
||||
AStream.WriteLnNamedFmt(InterfaceItemInterface,
|
||||
['Name', AItem.TranslatedName,
|
||||
'ParentName', parent]);
|
||||
AStream.WriteLn(' ' + CreateNewGUID());
|
||||
AStream.WriteLn(' ' + CreateNewGUID);
|
||||
|
||||
WriteSchemaInterfaceProperties(AStream, AItem, ASection);
|
||||
|
||||
AStream.WriteLn(' end;');
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
|
||||
dxsClass:
|
||||
@ -733,7 +733,7 @@ begin
|
||||
WriteSchemaInterfaceProperties(AStream, AItem, ASection);
|
||||
|
||||
AStream.WriteLn(' end;');
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
|
||||
dxsImplementation:
|
||||
@ -749,7 +749,7 @@ var
|
||||
hasPrototype: Boolean;
|
||||
|
||||
|
||||
procedure WritePrototype();
|
||||
procedure WritePrototype;
|
||||
begin
|
||||
if not hasPrototype then
|
||||
begin
|
||||
@ -977,7 +977,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
sourceCode := TNamedFormatStringList.Create();
|
||||
sourceCode := TNamedFormatStringList.Create;
|
||||
try
|
||||
case ASection of
|
||||
dxsInterface,
|
||||
@ -1149,7 +1149,7 @@ begin
|
||||
Exit;
|
||||
|
||||
|
||||
sourceCode := TNamedFormatStringList.Create();
|
||||
sourceCode := TNamedFormatStringList.Create;
|
||||
try
|
||||
case ASection of
|
||||
dxsInterface,
|
||||
@ -1235,7 +1235,10 @@ begin
|
||||
sourceCode.Add(PropertyImplMethodGetNil);
|
||||
|
||||
if writeTextProp then
|
||||
sourceCode.Add(PropertyImplMethodGetText);
|
||||
if AProperty.IsAttribute then
|
||||
sourceCode.Add(PropertyImplMethodGetTextAttr)
|
||||
else
|
||||
sourceCode.Add(PropertyImplMethodGetText);
|
||||
|
||||
sourceCode.Add('function TXML%<Name>:s.Get%<PropertyName>:s: %<DataType>:s;');
|
||||
|
||||
@ -1294,7 +1297,10 @@ begin
|
||||
sourceCode.Add(PropertyImplMethodSetNil);
|
||||
|
||||
if writeTextProp then
|
||||
sourceCode.Add(PropertyImplMethodSetText);
|
||||
if AProperty.IsAttribute then
|
||||
sourceCode.Add(PropertyImplMethodSetTextAttr)
|
||||
else
|
||||
sourceCode.Add(PropertyImplMethodSetText);
|
||||
|
||||
sourceCode.Add('procedure TXML%<Name>:s.Set%<PropertyName>:s(const Value: %<DataType>:s);');
|
||||
value := '%<PropertySourceName>:s';
|
||||
@ -1394,11 +1400,11 @@ begin
|
||||
if memberIndex < Pred(AItem.MemberCount) then
|
||||
AStream.WriteLn(',')
|
||||
else
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
|
||||
AStream.WriteLn(lineIndent + ');');
|
||||
AStream.WriteLn();
|
||||
AStream.WriteLn;
|
||||
end;
|
||||
|
||||
|
||||
@ -1406,6 +1412,8 @@ function TDelphiXMLDataBindingGenerator.GetDelphiNodeType(AProperty: TXMLDataBin
|
||||
begin
|
||||
if AProperty.IsAttribute then
|
||||
Result := dntAttribute
|
||||
else if AProperty.IsNodeValue then
|
||||
Result := dntNodeValue
|
||||
else
|
||||
Result := dntElement;
|
||||
end;
|
||||
@ -1417,7 +1425,7 @@ var
|
||||
conversion: String;
|
||||
|
||||
begin
|
||||
with TNamedFormatStringList.Create() do
|
||||
with TNamedFormatStringList.Create do
|
||||
try
|
||||
if not (Assigned(ADataType) and GetDataTypeMapping(ADataType, typeMapping)) then
|
||||
typeMapping.Conversion := tcNone;
|
||||
@ -1440,7 +1448,7 @@ begin
|
||||
Result := Trim(Format(['Destination', ADestination,
|
||||
'Source', ASource]));
|
||||
finally
|
||||
Free();
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1457,7 +1465,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TDelphiXMLDataBindingGenerator.CreateNewGUID(): String;
|
||||
function TDelphiXMLDataBindingGenerator.CreateNewGUID: String;
|
||||
var
|
||||
guid: TGUID;
|
||||
|
||||
@ -1489,7 +1497,7 @@ end;
|
||||
|
||||
|
||||
{ TXMLSchemaList }
|
||||
constructor TXMLSchemaList.Create();
|
||||
constructor TXMLSchemaList.Create;
|
||||
begin
|
||||
inherited Create(False);
|
||||
end;
|
||||
@ -1509,4 +1517,3 @@ end;
|
||||
end.
|
||||
|
||||
|
||||
|
||||
|
@ -5,7 +5,7 @@ type
|
||||
TDelphiXMLSection = (dxsForward, dxsInterface, dxsClass, dxsImplementation);
|
||||
TDelphiXMLMember = (dxmPropertyGet, dxmPropertySet, dxmPropertyDeclaration);
|
||||
TDelphiAccessor = (daGet, daSet);
|
||||
TDelphiNodeType = (dntElement, dntAttribute, dntCustom);
|
||||
TDelphiNodeType = (dntElement, dntAttribute, dntNodeValue, dntCustom);
|
||||
|
||||
|
||||
const
|
||||
@ -116,12 +116,24 @@ const
|
||||
'end;' + CrLf +
|
||||
'' + CrLf;
|
||||
|
||||
PropertyImplMethodGetTextAttr = 'function TXML%<Name>:s.Get%<PropertyName>:sText: WideString;' + CrLf +
|
||||
'begin' + CrLf +
|
||||
' Result := AttributeNodes[''%<PropertySourceName>:s''].Text;' + CrLf +
|
||||
'end;' + CrLf +
|
||||
'' + CrLf;
|
||||
|
||||
PropertyImplMethodSetText = 'procedure TXML%<Name>:s.Set%<PropertyName>:sText(const Value: WideString);' + CrLf +
|
||||
'begin' + CrLf +
|
||||
' ChildNodes[''%<PropertySourceName>:s''].NodeValue := Value;' + CrLf +
|
||||
'end;' + CrLf +
|
||||
'' + CrLf;
|
||||
|
||||
PropertyImplMethodSetTextAttr = 'procedure TXML%<Name>:s.Set%<PropertyName>:sText(const Value: WideString);' + CrLf +
|
||||
'begin' + CrLf +
|
||||
' AttributeNodes[''%<PropertySourceName>:s''].NodeValue := Value;' + CrLf +
|
||||
'end;' + CrLf +
|
||||
'' + CrLf;
|
||||
|
||||
|
||||
SectionComments: array[TDelphiXMLSection] of String =
|
||||
(
|
||||
@ -236,12 +248,14 @@ const
|
||||
(
|
||||
{ dntElement } ' %<Destination>:s := ChildNodes[''%<Source>:s''].NodeValue;',
|
||||
{ dntAttribute } ' %<Destination>:s := AttributeNodes[''%<Source>:s''].NodeValue;',
|
||||
{ dntNodeValue } ' %<Destination>:s := NodeValue;',
|
||||
{ dntCustom } ' %<Destination>:s := %<Source>:s;'
|
||||
),
|
||||
{ daSet }
|
||||
(
|
||||
{ dntElement } ' ChildNodes[''%<Destination>:s''].NodeValue := %<Source>:s;',
|
||||
{ dntAttribute } ' SetAttribute(''%<Destination>:s'', %<Source>:s);',
|
||||
{ dntNodeValue } ' NodeValue := %<Source>:s;',
|
||||
{ dntCustom } ' %<Destination>:s := %<Source>:s;'
|
||||
)
|
||||
);
|
||||
@ -273,6 +287,17 @@ const
|
||||
{ tcString } ' %<Destination>:s := AttributeNodes[''%<Source>:s''].Text;',
|
||||
{ tcBase64 } ' %<Destination>:s := Base64Decode(Trim(AttributeNodes[''%<Source>:s''].Text));'
|
||||
),
|
||||
{ dntNodeValue }
|
||||
(
|
||||
{ tcNone } '',
|
||||
{ tcBoolean } '',
|
||||
{ tcFloat } ' %<Destination>:s := XMLToFloat(NodeValue);',
|
||||
{ tcDateTime } ' %<Destination>:s := XMLToDateTime(NodeValue, xdtDateTime);',
|
||||
{ tcDate } ' %<Destination>:s := XMLToDateTime(NodeValue, xdtDate);',
|
||||
{ tcTime } ' %<Destination>:s := XMLToDateTime(NodeValue, xdtTime);',
|
||||
{ tcString } ' %<Destination>:s := NodeValue;',
|
||||
{ tcBase64 } ' %<Destination>:s := Base64Decode(Trim(NodeValue));'
|
||||
),
|
||||
{ dntCustom}
|
||||
(
|
||||
{ tcNone } '',
|
||||
@ -309,6 +334,17 @@ const
|
||||
{ tcString } '',
|
||||
{ tcBase64 } ' SetAttribute(''%<Destination>:s'', Base64Encode(%<Source>:s));'
|
||||
),
|
||||
{ dntNodeValue }
|
||||
(
|
||||
{ tcNone } '',
|
||||
{ tcBoolean } ' NodeValue := BoolToXML(%<Source>:s);',
|
||||
{ tcFloat } ' NodeValue := FloatToXML(%<Source>:s);',
|
||||
{ tcDateTime } ' NodeValue := DateTimeToXML(%<Source>:s, xdtDateTime);',
|
||||
{ tcDate } ' NodeValue := DateTimeToXML(%<Source>:s, xdtDate);',
|
||||
{ tcTime } ' NodeValue := DateTimeToXML(%<Source>:s, xdtTime);',
|
||||
{ tcString } '',
|
||||
{ tcBase64 } ' NodeValue := Base64Encode(%<Source>:s);'
|
||||
),
|
||||
{ dntCustom}
|
||||
(
|
||||
{ tcNone } '',
|
||||
|
@ -44,7 +44,7 @@ type
|
||||
|
||||
FOnPostProcessItem: TXMLDataBindingPostProcessItemEvent;
|
||||
|
||||
function GetSchemaCount(): Integer;
|
||||
function GetSchemaCount: Integer;
|
||||
function GetSchemas(Index: Integer): TXMLDataBindingSchema;
|
||||
protected
|
||||
function LoadSchema(const AStream: TStream; const ASchemaName: String): TXMLDataBindingSchema;
|
||||
@ -61,7 +61,8 @@ type
|
||||
function IsElementRepeating(AElement: IXMLElementDef): Boolean;
|
||||
function IsChoice(AElement: IXMLElementDef): Boolean;
|
||||
|
||||
function ProcessElement(ASchema: TXMLDataBindingSchema; AElement: IXMLElementDef): TXMLDataBindingItem;
|
||||
function ProcessElement(ASchema: TXMLDataBindingSchema; AElement: IXMLElementDef): TXMLDataBindingItem; overload;
|
||||
function ProcessElement(ASchema: TXMLDataBindingSchema; AAttribute: IXMLAttributeDef): TXMLDataBindingItem; overload;
|
||||
procedure ProcessChildElement(ASchema: TXMLDataBindingSchema; AElement: IXMLElementDef; AInterface: TXMLDataBindingInterface);
|
||||
procedure ProcessAttribute(ASchema: TXMLDataBindingSchema; AAttribute: IXMLAttributeDef; AInterface: TXMLDataBindingInterface);
|
||||
|
||||
@ -78,20 +79,20 @@ type
|
||||
procedure ResolveSchema(ASchema: TXMLDataBindingSchema);
|
||||
procedure ResolveAlias(ASchema: TXMLDataBindingSchema);
|
||||
procedure ResolveItem(ASchema: TXMLDataBindingSchema; AItem: TXMLDataBindingUnresolvedItem);
|
||||
procedure ResolveNameConflicts();
|
||||
procedure ResolveNameConflicts;
|
||||
|
||||
procedure PostProcessSchema(ASchema: TXMLDataBindingSchema);
|
||||
procedure PostProcessItem(ASchema: TXMLDataBindingSchema; AItem: TXMLDataBindingItem);
|
||||
function TranslateItemName(AItem: TXMLDataBindingItem): String; virtual;
|
||||
|
||||
procedure GenerateDataBinding(); virtual; abstract;
|
||||
procedure GenerateDataBinding; virtual; abstract;
|
||||
|
||||
property SourceFileName: String read FSourceFileName write FSourceFileName;
|
||||
property SchemaCount: Integer read GetSchemaCount;
|
||||
property Schemas[Index: Integer]: TXMLDataBindingSchema read GetSchemas;
|
||||
public
|
||||
constructor Create();
|
||||
destructor Destroy(); override;
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Execute(const AStream: TStream; const ASchemaName: String); overload;
|
||||
procedure Execute(const AFileName: String); overload;
|
||||
@ -125,9 +126,9 @@ type
|
||||
FSchemaName: String;
|
||||
FSourceFileName: String;
|
||||
|
||||
function GetItemCount(): Integer;
|
||||
function GetItemCount: Integer;
|
||||
function GetItems(Index: Integer): TXMLDataBindingItem;
|
||||
function GetIncludeCount(): Integer;
|
||||
function GetIncludeCount: Integer;
|
||||
function GetIncludes(Index: Integer): TXMLDataBindingSchema;
|
||||
function GetTargetNamespace: String;
|
||||
protected
|
||||
@ -140,7 +141,7 @@ type
|
||||
property ItemsGenerated: Boolean read FItemsGenerated write FItemsGenerated;
|
||||
public
|
||||
constructor Create(AOwner: TXMLDataBindingGenerator);
|
||||
destructor Destroy(); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
property TargetNamespace: String read GetTargetNamespace;
|
||||
|
||||
@ -165,11 +166,11 @@ type
|
||||
FSchemaItem: IXMLSchemaItem;
|
||||
FTranslatedName: String;
|
||||
|
||||
function GetDocumentation(): String;
|
||||
function GetHasDocumentation(): Boolean;
|
||||
function GetDocumentation: String;
|
||||
function GetHasDocumentation: Boolean;
|
||||
function GetIsCollection: Boolean;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; virtual; abstract;
|
||||
function GetItemType: TXMLDataBindingItemType; virtual; abstract;
|
||||
procedure SetName(const Value: String);
|
||||
|
||||
property SchemaItem: IXMLSchemaItem read FSchemaItem;
|
||||
@ -200,7 +201,7 @@ type
|
||||
function GetProperties(Index: Integer): TXMLDataBindingProperty;
|
||||
function GetPropertyCount: Integer;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
|
||||
procedure ReplaceItem(const AOldItem: TXMLDataBindingItem; const ANewItem: TXMLDataBindingItem); override;
|
||||
|
||||
@ -223,7 +224,7 @@ type
|
||||
private
|
||||
FEnumeration: TXMLDataBindingEnumeration;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
public
|
||||
constructor Create(AOwner: TXMLDataBindingGenerator; AEnumeration: TXMLDataBindingEnumeration; const AName: String);
|
||||
|
||||
@ -235,13 +236,13 @@ type
|
||||
private
|
||||
FMembers: TObjectList;
|
||||
|
||||
function GetMemberCount(): Integer;
|
||||
function GetMemberCount: Integer;
|
||||
function GetMembers(Index: Integer): TXMLDataBindingEnumerationMember;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
public
|
||||
constructor Create(AOwner: TXMLDataBindingGenerator; ASchemaItem: IXMLSchemaItem; AEnumerations: IXMLEnumerationCollection; const AName: String);
|
||||
destructor Destroy(); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
property MemberCount: Integer read GetMemberCount;
|
||||
property Members[Index: Integer]: TXMLDataBindingEnumerationMember read GetMembers;
|
||||
@ -254,18 +255,20 @@ type
|
||||
FIsOptional: Boolean;
|
||||
FIsNillable: Boolean;
|
||||
FIsRepeating: Boolean;
|
||||
FIsNodeValue: Boolean;
|
||||
FCollection: TXMLDataBindingInterface;
|
||||
protected
|
||||
function GetIsReadOnly(): Boolean; virtual; abstract;
|
||||
function GetIsReadOnly: Boolean; virtual; abstract;
|
||||
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetPropertyType(): TXMLDataBindingPropertyType; virtual; abstract;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
function GetPropertyType: TXMLDataBindingPropertyType; virtual; abstract;
|
||||
public
|
||||
property IsAttribute: Boolean read FIsAttribute write FIsAttribute;
|
||||
property IsOptional: Boolean read FIsOptional write FIsOptional;
|
||||
property IsNillable: Boolean read FIsNillable write FIsNillable;
|
||||
property IsReadOnly: Boolean read GetIsReadOnly;
|
||||
property IsRepeating: Boolean read FIsRepeating write FIsRepeating;
|
||||
property IsNodeValue: Boolean read FIsNodeValue write FIsNodeValue;
|
||||
property PropertyType: TXMLDataBindingPropertyType read GetPropertyType;
|
||||
|
||||
property Collection: TXMLDataBindingInterface read FCollection write FCollection;
|
||||
@ -276,8 +279,8 @@ type
|
||||
private
|
||||
FDataType: IXMLTypeDef;
|
||||
protected
|
||||
function GetIsReadOnly(): Boolean; override;
|
||||
function GetPropertyType(): TXMLDataBindingPropertyType; override;
|
||||
function GetIsReadOnly: Boolean; override;
|
||||
function GetPropertyType: TXMLDataBindingPropertyType; override;
|
||||
public
|
||||
constructor Create(AOwner: TXMLDataBindingGenerator; ASchemaItem: IXMLSchemaItem; const AName: String; ADataType: IXMLTypeDef);
|
||||
constructor CreateFromAlias(AOwner: TXMLDataBindingGenerator; AProperty: TXMLDataBindingItemProperty; ADataType: IXMLTypeDef);
|
||||
@ -290,8 +293,8 @@ type
|
||||
private
|
||||
FItem: TXMLDataBindingItem;
|
||||
protected
|
||||
function GetIsReadOnly(): Boolean; override;
|
||||
function GetPropertyType(): TXMLDataBindingPropertyType; override;
|
||||
function GetIsReadOnly: Boolean; override;
|
||||
function GetPropertyType: TXMLDataBindingPropertyType; override;
|
||||
|
||||
procedure ReplaceItem(const AOldItem, ANewItem: TXMLDataBindingItem); override;
|
||||
public
|
||||
@ -305,7 +308,7 @@ type
|
||||
private
|
||||
FInterfaceType: TXMLDataBindingInterfaceType;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
public
|
||||
constructor Create(AOwner: TXMLDataBindingGenerator; ASchemaItem: IXMLSchemaItem; const AName: String; AInterfaceType: TXMLDataBindingInterfaceType);
|
||||
|
||||
@ -317,7 +320,7 @@ type
|
||||
private
|
||||
FItem: TXMLDataBindingItem;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
|
||||
procedure ReplaceItem(const AOldItem, ANewItem: TXMLDataBindingItem); override;
|
||||
public
|
||||
@ -329,7 +332,7 @@ type
|
||||
private
|
||||
FDataType: IXMLTypeDef;
|
||||
protected
|
||||
function GetItemType(): TXMLDataBindingItemType; override;
|
||||
function GetItemType: TXMLDataBindingItemType; override;
|
||||
public
|
||||
property DataType: IXMLTypeDef read FDataType write FDataType;
|
||||
end;
|
||||
@ -354,7 +357,6 @@ const
|
||||
AttributeNillable = 'nillable';
|
||||
|
||||
|
||||
|
||||
function GetInterfaceType(ASchemaItem: IXMLSchemaItem): TXMLDataBindingInterfaceType;
|
||||
begin
|
||||
if Supports(ASchemaItem, IXMLComplexTypeDef) then
|
||||
@ -366,11 +368,11 @@ end;
|
||||
|
||||
|
||||
{ TXMLDataBindingGenerator }
|
||||
constructor TXMLDataBindingGenerator.Create();
|
||||
constructor TXMLDataBindingGenerator.Create;
|
||||
begin
|
||||
inherited Create();
|
||||
inherited Create;
|
||||
|
||||
FIncludePaths := TStringList.Create();
|
||||
FIncludePaths := TStringList.Create;
|
||||
FSchemas := TObjectList.Create(True);
|
||||
|
||||
with TStringList(FIncludePaths) do
|
||||
@ -381,7 +383,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
destructor TXMLDataBindingGenerator.Destroy();
|
||||
destructor TXMLDataBindingGenerator.Destroy;
|
||||
begin
|
||||
FreeAndNil(FSchemas);
|
||||
FreeAndNil(FIncludePaths);
|
||||
@ -396,7 +398,7 @@ var
|
||||
schema: TXMLDataBindingSchema;
|
||||
|
||||
begin
|
||||
FSchemas.Clear();
|
||||
FSchemas.Clear;
|
||||
schema := LoadSchema(AStream, ASchemaName);
|
||||
if Assigned(schema) then
|
||||
schema.SourceFileName := SourceFileName;
|
||||
@ -419,7 +421,7 @@ begin
|
||||
|
||||
|
||||
{ Resolve naming conflicts }
|
||||
ResolveNameConflicts();
|
||||
ResolveNameConflicts;
|
||||
|
||||
|
||||
{ Perform final post-processing (translating names, generating collections) }
|
||||
@ -428,7 +430,7 @@ begin
|
||||
|
||||
|
||||
{ Output }
|
||||
GenerateDataBinding();
|
||||
GenerateDataBinding;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -439,7 +441,7 @@ var
|
||||
fileStream: TFileStream;
|
||||
|
||||
begin
|
||||
currentDir := GetCurrentDir();
|
||||
currentDir := GetCurrentDir;
|
||||
try
|
||||
ChDir(ExtractFilePath(AFileName));
|
||||
|
||||
@ -816,6 +818,97 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingGenerator.ProcessElement(ASchema: TXMLDataBindingSchema; AAttribute: IXMLAttributeDef): TXMLDataBindingItem;
|
||||
var
|
||||
enumerationObject: TXMLDataBindingEnumeration;
|
||||
interfaceObject: TXMLDataBindingInterface;
|
||||
complexAliasItem: TXMLDataBindingComplexTypeAliasItem;
|
||||
simpleAliasItem: TXMLDataBindingSimpleTypeAliasItem;
|
||||
simpleTypeDef: IXMLSimpleTypeDef;
|
||||
|
||||
begin
|
||||
Result := nil;
|
||||
|
||||
if Assigned(AAttribute.Ref) then
|
||||
begin
|
||||
{ Find reference. If not found, mark as "resolve later". }
|
||||
Result := FindInterface(ASchema, AAttribute.Ref.Name, ifElement);
|
||||
|
||||
if not Assigned(Result) then
|
||||
begin
|
||||
Result := TXMLDataBindingUnresolvedItem.Create(Self, AAttribute, AAttribute.Ref.Name, ifElement);
|
||||
ASchema.AddItem(Result);
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
if not AAttribute.DataType.IsAnonymous then
|
||||
begin
|
||||
if AAttribute.DataType.IsComplex then
|
||||
begin
|
||||
{ Find data type. If not found, mark as "resolve later". }
|
||||
Result := FindInterface(ASchema, AAttribute.DataTypeName, ifComplexType);
|
||||
|
||||
if not Assigned(Result) then
|
||||
begin
|
||||
Result := TXMLDataBindingUnresolvedItem.Create(Self, AAttribute, AAttribute.DataTypeName, ifComplexType);
|
||||
ASchema.AddItem(Result);
|
||||
end;
|
||||
|
||||
if AAttribute.IsGlobal then
|
||||
begin
|
||||
{ The element is global, but only references a complex type. Keep track
|
||||
to properly resolve references to the element. }
|
||||
complexAliasItem := TXMLDataBindingComplexTypeAliasItem.Create(Self, AAttribute, AAttribute.Name);
|
||||
complexAliasItem.Item := Result;
|
||||
ASchema.AddItem(complexAliasItem);
|
||||
end;
|
||||
end else if Supports(AAttribute.DataType, IXMLSimpleTypeDef, simpleTypeDef) then
|
||||
begin
|
||||
if simpleTypeDef.Enumerations.Count > 0 then
|
||||
begin
|
||||
{ References enumeration. }
|
||||
Result := FindEnumeration(ASchema, AAttribute.DataTypeName);
|
||||
|
||||
if not Assigned(Result) then
|
||||
begin
|
||||
Result := TXMLDataBindingUnresolvedItem.Create(Self, AAttribute, AAttribute.DataTypeName, ifEnumeration);
|
||||
ASchema.AddItem(Result);
|
||||
end;
|
||||
end else if simpleTypeDef.IsBuiltInType and AAttribute.IsGlobal then
|
||||
begin
|
||||
{ The element is global, but only references a simple type. }
|
||||
simpleAliasItem := TXMLDataBindingSimpleTypeAliasItem.Create(Self, AAttribute, AAttribute.Name);
|
||||
simpleAliasItem.DataType := AAttribute.DataType;
|
||||
ASchema.AddItem(simpleAliasItem);
|
||||
|
||||
Result := simpleAliasItem;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
if not Assigned(Result) then
|
||||
begin
|
||||
if AAttribute.DataType.Enumerations.Count > 0 then
|
||||
begin
|
||||
{ Enumeration }
|
||||
enumerationObject := TXMLDataBindingEnumeration.Create(Self, AAttribute, AAttribute.DataType.Enumerations, AAttribute.Name);
|
||||
ASchema.AddItem(enumerationObject);
|
||||
Result := enumerationObject;
|
||||
end else if AAttribute.DataType.IsComplex then
|
||||
begin
|
||||
{ Interface }
|
||||
interfaceObject := TXMLDataBindingInterface.Create(Self, AAttribute, AAttribute.Name);
|
||||
if Assigned(AAttribute.DataType.BaseType) then
|
||||
interfaceObject.BaseName := AAttribute.DataType.BaseTypeName;
|
||||
|
||||
ASchema.AddItem(interfaceObject);
|
||||
Result := interfaceObject;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TXMLDataBindingGenerator.ProcessChildElement(ASchema: TXMLDataBindingSchema; AElement: IXMLElementDef; AInterface: TXMLDataBindingInterface);
|
||||
var
|
||||
actualElement: IXMLElementDef;
|
||||
@ -858,12 +951,19 @@ end;
|
||||
procedure TXMLDataBindingGenerator.ProcessAttribute(ASchema: TXMLDataBindingSchema; AAttribute: IXMLAttributeDef; AInterface: TXMLDataBindingInterface);
|
||||
var
|
||||
propertyItem: TXMLDataBindingProperty;
|
||||
propertyType: TXMLDataBindingItem;
|
||||
|
||||
begin
|
||||
// #ToDo2 (MvR) 10-4-2008: complex attributes (enumerations)
|
||||
propertyItem := TXMLDataBindingSimpleProperty.Create(Self, AAttribute,
|
||||
propertyType := ProcessElement(ASchema, AAttribute);
|
||||
|
||||
if Assigned(propertyType) then
|
||||
propertyItem := TXMLDataBindingItemProperty.Create(Self, AAttribute,
|
||||
AAttribute.Name,
|
||||
AAttribute.DataType);
|
||||
propertyType)
|
||||
else
|
||||
propertyItem := TXMLDataBindingSimpleProperty.Create(Self, AAttribute,
|
||||
AAttribute.Name,
|
||||
AAttribute.DataType);
|
||||
|
||||
propertyItem.IsOptional := (AAttribute.Use = UseOptional);
|
||||
propertyItem.IsAttribute := True;
|
||||
@ -1073,7 +1173,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TXMLDataBindingGenerator.ResolveNameConflicts();
|
||||
procedure TXMLDataBindingGenerator.ResolveNameConflicts;
|
||||
var
|
||||
itemNames: TX2SOHash;
|
||||
|
||||
@ -1159,9 +1259,9 @@ begin
|
||||
|
||||
|
||||
{ Find conflicts }
|
||||
itemNames.First();
|
||||
itemNames.First;
|
||||
|
||||
while itemNames.Next() do
|
||||
while itemNames.Next do
|
||||
begin
|
||||
items := TObjectList(itemNames.CurrentValue);
|
||||
|
||||
@ -1221,6 +1321,7 @@ var
|
||||
propertyIndex: Integer;
|
||||
propertyItem: TXMLDataBindingProperty;
|
||||
repeatingItems: TObjectList;
|
||||
typedSchemaItem: IXMLTypedSchemaItem;
|
||||
|
||||
begin
|
||||
{ Translate name }
|
||||
@ -1288,6 +1389,21 @@ begin
|
||||
begin
|
||||
interfaceItem := TXMLDataBindingInterface(AItem);
|
||||
|
||||
if (not Assigned(interfaceItem.BaseItem)) and
|
||||
(Length(interfaceItem.BaseName) > 0) then
|
||||
begin
|
||||
{ Assume this is a reference to a simple type }
|
||||
if Supports(interfaceItem.SchemaItem, IXMLTypedSchemaItem, typedSchemaItem) then
|
||||
begin
|
||||
propertyItem := TXMLDataBindingSimpleProperty.Create(Self, interfaceItem.SchemaItem, 'NodeValue',
|
||||
typedSchemaItem.DataType.BaseType);
|
||||
propertyItem.IsNodeValue := True;
|
||||
|
||||
interfaceItem.AddProperty(propertyItem);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
for propertyIndex := 0 to Pred(interfaceItem.PropertyCount) do
|
||||
PostProcessItem(ASchema, interfaceItem.Properties[propertyIndex]);
|
||||
end;
|
||||
@ -1308,7 +1424,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingGenerator.GetSchemaCount(): Integer;
|
||||
function TXMLDataBindingGenerator.GetSchemaCount: Integer;
|
||||
begin
|
||||
Result := FSchemas.Count;
|
||||
end;
|
||||
@ -1323,7 +1439,7 @@ end;
|
||||
{ TXMLDataBindingGeneratorItem }
|
||||
constructor TXMLDataBindingGeneratorItem.Create(AOwner: TXMLDataBindingGenerator);
|
||||
begin
|
||||
inherited Create();
|
||||
inherited Create;
|
||||
|
||||
FOwner := AOwner;
|
||||
end;
|
||||
@ -1344,7 +1460,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
destructor TXMLDataBindingSchema.Destroy();
|
||||
destructor TXMLDataBindingSchema.Destroy;
|
||||
begin
|
||||
FreeAndNil(FItems);
|
||||
FreeAndNil(FIncludes);
|
||||
@ -1403,7 +1519,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingSchema.GetIncludeCount(): Integer;
|
||||
function TXMLDataBindingSchema.GetIncludeCount: Integer;
|
||||
begin
|
||||
Result := FIncludes.Count;
|
||||
end;
|
||||
@ -1415,7 +1531,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingSchema.GetItemCount(): Integer;
|
||||
function TXMLDataBindingSchema.GetItemCount: Integer;
|
||||
begin
|
||||
Result := FItems.Count;
|
||||
end;
|
||||
@ -1427,7 +1543,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingSchema.GetTargetNamespace(): String;
|
||||
function TXMLDataBindingSchema.GetTargetNamespace: String;
|
||||
begin
|
||||
Result := '';
|
||||
if Assigned(FSchemaDef) and (not VarIsNull(FSchemaDef.TargetNamespace)) then
|
||||
@ -1446,7 +1562,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingItem.GetDocumentation(): String;
|
||||
function TXMLDataBindingItem.GetDocumentation: String;
|
||||
var
|
||||
documentationIndex: Integer;
|
||||
|
||||
@ -1462,14 +1578,14 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingItem.GetHasDocumentation(): Boolean;
|
||||
function TXMLDataBindingItem.GetHasDocumentation: Boolean;
|
||||
begin
|
||||
Result := Assigned(SchemaItem) and
|
||||
(SchemaItem.Documentation.Count > 0);
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingItem.GetIsCollection(): Boolean;
|
||||
function TXMLDataBindingItem.GetIsCollection: Boolean;
|
||||
begin
|
||||
Result := Assigned(FCollectionItem);
|
||||
end;
|
||||
@ -1544,13 +1660,13 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingInterface.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingInterface.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itInterface;
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingInterface.GetPropertyCount(): Integer;
|
||||
function TXMLDataBindingInterface.GetPropertyCount: Integer;
|
||||
begin
|
||||
Result := FProperties.Count;
|
||||
end;
|
||||
@ -1571,7 +1687,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingEnumerationMember.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingEnumerationMember.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itEnumerationMember;
|
||||
end;
|
||||
@ -1585,14 +1701,14 @@ var
|
||||
begin
|
||||
inherited Create(AOwner, ASchemaItem, AName);
|
||||
|
||||
FMembers := TObjectList.Create();
|
||||
FMembers := TObjectList.Create;
|
||||
|
||||
for memberIndex := 0 to Pred(AEnumerations.Count) do
|
||||
FMembers.Add(TXMLDataBindingEnumerationMember.Create(Owner, Self, AEnumerations.Items[memberIndex].Value));
|
||||
end;
|
||||
|
||||
|
||||
destructor TXMLDataBindingEnumeration.Destroy();
|
||||
destructor TXMLDataBindingEnumeration.Destroy;
|
||||
begin
|
||||
FreeAndNil(FMembers);
|
||||
|
||||
@ -1600,13 +1716,13 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingEnumeration.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingEnumeration.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itEnumeration;
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingEnumeration.GetMemberCount(): Integer;
|
||||
function TXMLDataBindingEnumeration.GetMemberCount: Integer;
|
||||
begin
|
||||
Result := FMembers.Count;
|
||||
end;
|
||||
@ -1619,7 +1735,7 @@ end;
|
||||
|
||||
|
||||
{ TXMLDataBindingProperty }
|
||||
function TXMLDataBindingProperty.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingProperty.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itProperty;
|
||||
end;
|
||||
@ -1645,13 +1761,13 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingSimpleProperty.GetIsReadOnly(): Boolean;
|
||||
function TXMLDataBindingSimpleProperty.GetIsReadOnly: Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingSimpleProperty.GetPropertyType(): TXMLDataBindingPropertyType;
|
||||
function TXMLDataBindingSimpleProperty.GetPropertyType: TXMLDataBindingPropertyType;
|
||||
begin
|
||||
Result := ptSimple;
|
||||
end;
|
||||
@ -1675,13 +1791,13 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingItemProperty.GetIsReadOnly(): Boolean;
|
||||
function TXMLDataBindingItemProperty.GetIsReadOnly: Boolean;
|
||||
begin
|
||||
Result := Assigned(Item) and (Item.ItemType <> itEnumeration);
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingItemProperty.GetPropertyType(): TXMLDataBindingPropertyType;
|
||||
function TXMLDataBindingItemProperty.GetPropertyType: TXMLDataBindingPropertyType;
|
||||
begin
|
||||
Result := ptItem;
|
||||
end;
|
||||
@ -1696,7 +1812,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingUnresolvedItem.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingUnresolvedItem.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itUnresolved;
|
||||
end;
|
||||
@ -1712,7 +1828,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TXMLDataBindingComplexTypeAliasItem.GetItemType(): TXMLDataBindingItemType;
|
||||
function TXMLDataBindingComplexTypeAliasItem.GetItemType: TXMLDataBindingItemType;
|
||||
begin
|
||||
Result := itComplexTypeAlias;
|
||||
end;
|
||||
@ -1728,4 +1844,3 @@ end.
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -11,12 +11,12 @@ type
|
||||
FStream: TStream;
|
||||
public
|
||||
constructor Create(AStream: TStream; AOwnership: TStreamOwnership = soReference);
|
||||
destructor Destroy(); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
function ReadString(ASize: Integer = -1): String;
|
||||
function ReadInteger(): Integer;
|
||||
function ReadDateTime(): TDateTime;
|
||||
function ReadBoolean(): Boolean;
|
||||
function ReadInteger: Integer;
|
||||
function ReadDateTime: TDateTime;
|
||||
function ReadBoolean: Boolean;
|
||||
|
||||
procedure Write(const ASource: String);
|
||||
procedure WriteLn(const ASource: String = '');
|
||||
@ -47,11 +47,11 @@ begin
|
||||
FOwnership := AOwnership;
|
||||
FStream := AStream;
|
||||
|
||||
inherited Create();
|
||||
inherited Create;
|
||||
end;
|
||||
|
||||
|
||||
destructor TStreamHelper.Destroy();
|
||||
destructor TStreamHelper.Destroy;
|
||||
begin
|
||||
if FOwnership = soOwned then
|
||||
FreeAndNil(FStream);
|
||||
@ -66,7 +66,7 @@ var
|
||||
|
||||
begin
|
||||
if ASize = -1 then
|
||||
iSize := ReadInteger()
|
||||
iSize := ReadInteger
|
||||
else
|
||||
iSize := ASize;
|
||||
|
||||
@ -75,19 +75,19 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TStreamHelper.ReadInteger(): Integer;
|
||||
function TStreamHelper.ReadInteger: Integer;
|
||||
begin
|
||||
FStream.Read(Result, SizeOf(Integer));
|
||||
end;
|
||||
|
||||
|
||||
function TStreamHelper.ReadDateTime(): TDateTime;
|
||||
function TStreamHelper.ReadDateTime: TDateTime;
|
||||
begin
|
||||
FStream.Read(Result, SizeOf(TDateTime));
|
||||
end;
|
||||
|
||||
|
||||
function TStreamHelper.ReadBoolean(): Boolean;
|
||||
function TStreamHelper.ReadBoolean: Boolean;
|
||||
begin
|
||||
FStream.Read(Result, SizeOf(Boolean));
|
||||
end;
|
||||
@ -159,4 +159,3 @@ end;
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
@ -3,6 +3,7 @@ program X2XMLDataBinding;
|
||||
{$WARN SYMBOL_PLATFORM OFF}
|
||||
|
||||
uses
|
||||
VistaManAsInvoker,
|
||||
Forms,
|
||||
MainFrm in 'Forms\MainFrm.pas' {MainForm},
|
||||
XMLDataBindingGenerator in 'Units\XMLDataBindingGenerator.pas',
|
||||
|
@ -24,43 +24,7 @@
|
||||
<Borland.Personality>Delphi.Personality</Borland.Personality>
|
||||
<Borland.ProjectType />
|
||||
<BorlandProject>
|
||||
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters>
|
||||
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1043</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
<Source>
|
||||
<Source Name="MainSource">X2XMLDataBinding.dpr</Source>
|
||||
</Source>
|
||||
</Delphi.Personality> </BorlandProject></BorlandProject>
|
||||
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters><Parameters Name="RunParams">"P:\test\XMLDataBinding\Tests\Data\04. Type with attributes.xsd"</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1043</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">X2XMLDataBinding.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
|
||||
<ItemGroup>
|
||||
|
Loading…
Reference in New Issue
Block a user