- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 - Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
1436 lines
58 KiB
ObjectPascal
1436 lines
58 KiB
ObjectPascal
unit %UNIT_NAME%;
|
|
|
|
{----------------------------------------------------------------------------}
|
|
{ This unit was automatically generated by the RemObjects SDK after reading }
|
|
{ the RODL file associated with this project . }
|
|
{ }
|
|
{ Do not modify this unit manually, or your changes will be lost when this }
|
|
{ unit is regenerated the next time you compile the project. }
|
|
{----------------------------------------------------------------------------}
|
|
|
|
{$I Remobjects.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
// required units
|
|
// <%%% START REQUIRED_UNITS %%%>
|
|
%REQUIRED_UNIT_NAME%,
|
|
// <%%% END REQUIRED_UNITS %%%>
|
|
{vcl:} Classes, TypInfo,
|
|
{RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf;
|
|
|
|
const
|
|
{ Library ID }
|
|
LibraryUID = '%LIBRARY_UID%';
|
|
TargetNamespace = '%NAMESPACE_NAME%';
|
|
|
|
{ Service Interface ID's }
|
|
// <%%% START SERVICES %%%>
|
|
I%SERVICE_NAME%_IID : TGUID = '%SERVICE_UID%';
|
|
// <%%% END SERVICES %%%>
|
|
|
|
{ Event ID's }
|
|
// <%%% START EVENT_SINKS %%%>
|
|
EID_%EVENT_SINK_NAME% = '%EVENT_SINK_NAME%';
|
|
// <%%% END EVENT_SINKS %%%>
|
|
|
|
type
|
|
{ Forward declarations }
|
|
// <%%% START SERVICES %%%>
|
|
I%SERVICE_NAME% = interface;
|
|
// <%%% END SERVICES %%%>
|
|
// <%%% START ARRAYS %%%>
|
|
%ARRAY_NAME% = class;
|
|
// <%%% END ARRAYS %%%>
|
|
// <%%% START STRUCTS %%%>
|
|
%STRUCT_NAME% = class;
|
|
// <%%% END STRUCTS %%%>
|
|
// <%%% START EXCEPTIONS %%%>
|
|
%EXCEPTION_NAME% = class;
|
|
// <%%% END EXCEPTIONS %%%>
|
|
// <%%% START EVENT_SINKS %%%>
|
|
I%EVENT_SINK_NAME% = interface;
|
|
// <%%% END EVENT_SINKS %%%>
|
|
|
|
{ Enumerateds }
|
|
// <%%% START ENUMS %%%>
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
%ENUM_NAME% = (
|
|
// <%%% START VALUES %%%>
|
|
%VALUE_NAME%,
|
|
// <%%% END VALUES %%%>
|
|
);
|
|
|
|
// <%%% END ENUMS %%%>
|
|
// <%%% START STRUCTS %%%>
|
|
{ %STRUCT_NAME% }
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
%STRUCT_NAME% = class(%STRUCT_ANCESTOR_NAME%)
|
|
private
|
|
FDestroying: Boolean;
|
|
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
f%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
// <%%% START IF_FIELD_TYPE_COMPLEX %%%>
|
|
function Get%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END IF_FIELD_TYPE_COMPLEX %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
public
|
|
procedure Assign(iSource: TPersistent); override;
|
|
destructor Destroy; override;
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
procedure ReadComplex(ASerializer: TObject); override;
|
|
procedure WriteComplex(ASerializer: TObject); override;
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
published
|
|
// Fields must be published for the ancestor destructor to find and destroy them.
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
// <%%% START IF_FIELD_TYPE_SIMPLE %%%>
|
|
property %FIELD_NAME%:%FIELD_TYPE% read f%FIELD_NAME% write f%FIELD_NAME%;
|
|
// <%%% END IF_FIELD_TYPE_SIMPLE %%%>
|
|
// <%%% START IF_FIELD_TYPE_COMPLEX %%%>
|
|
property %FIELD_NAME%:%FIELD_TYPE% read Get%FIELD_NAME% write f%FIELD_NAME%;
|
|
// <%%% END IF_FIELD_TYPE_COMPLEX %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end;
|
|
|
|
{ %STRUCT_COLLECTION_NAME% }
|
|
%STRUCT_COLLECTION_NAME% = class(%STRUCT_ANCESTOR_COLLECTION_NAME%)
|
|
protected
|
|
constructor Create(aItemClass: TCollectionItemClass); overload;
|
|
function GetItems(aIndex: integer): %STRUCT_NAME%;
|
|
procedure SetItems(aIndex: integer; const Value: %STRUCT_NAME%);
|
|
public
|
|
constructor Create; overload;
|
|
function Add: %STRUCT_NAME%; reintroduce;
|
|
// <%%% START ARRAYS_IS_FOUND %%%>
|
|
procedure SaveToArray(anArray: %ARRAY_NAME%); overload;
|
|
procedure LoadFromArray(anArray: %ARRAY_NAME%); overload;
|
|
// <%%% END ARRAYS_IS_FOUND %%%>
|
|
property Items[Index: integer]:%STRUCT_NAME% read GetItems write SetItems; default;
|
|
end;
|
|
|
|
// <%%% END STRUCTS %%%>
|
|
// <%%% START ARRAYS %%%>
|
|
{ %ARRAY_NAME% }
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
%ARRAY_NAME%_%ARRAY_TYPE% = array of %ARRAY_TYPE%;
|
|
%ARRAY_NAME% = class(TROArray)
|
|
private
|
|
fCount: Integer;
|
|
fItems : %ARRAY_NAME%_%ARRAY_TYPE%;
|
|
protected
|
|
procedure Grow; virtual;
|
|
function GetItems(aIndex: integer): %ARRAY_TYPE%;
|
|
procedure SetItems(aIndex: integer; const Value: %ARRAY_TYPE%);
|
|
function GetCount: integer; override;
|
|
public
|
|
class function GetItemType: PTypeInfo; override;
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
class function GetItemClass: TClass; override;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
class function GetItemSize: integer; override;
|
|
function GetItemRef(aIndex: integer): pointer; override;
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
procedure SetItemRef(aIndex: integer; Ref: pointer); override;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
procedure Clear; override;
|
|
procedure Delete(aIndex: integer); override;
|
|
procedure Resize(ElementCount: integer); override;
|
|
|
|
procedure Assign(iSource:TPersistent); override;
|
|
procedure ReadComplex(ASerializer: TObject); override;
|
|
procedure WriteComplex(ASerializer: TObject); override;
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
function Add: %ARRAY_TYPE%; overload;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
function Add(const Value: %ARRAY_TYPE%):integer; overload;
|
|
|
|
property Count : integer read GetCount;
|
|
property Items[Index: integer]:%ARRAY_TYPE% read GetItems write SetItems; default;
|
|
property InnerArray: %ARRAY_NAME%_%ARRAY_TYPE% read fItems;
|
|
end;
|
|
|
|
// <%%% END ARRAYS %%%>
|
|
{ Exceptions }
|
|
// <%%% START EXCEPTIONS %%%>
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
%EXCEPTION_NAME% = class(%EXCEPTION_ANCESTOR_NAME%)
|
|
private
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
f%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
public
|
|
constructor Create(anExceptionMessage : string
|
|
// <%%% START ANCESTOR_FIELDS %%%>
|
|
; a%FIELD_NAME%: %FIELD_TYPE%
|
|
// <%%% END ANCESTOR_FIELDS %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
; a%FIELD_NAME%: %FIELD_TYPE%
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
);
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
procedure ReadException(ASerializer: TObject); override;
|
|
procedure WriteException(ASerializer: TObject); override;
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
published
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
property %FIELD_NAME%: %FIELD_TYPE% read f%FIELD_NAME% write f%FIELD_NAME%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end;
|
|
|
|
// <%%% END EXCEPTIONS %%%>
|
|
// <%%% START SERVICES %%%>
|
|
{ I%SERVICE_NAME% }
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
I%SERVICE_NAME% = interface%SERVICE_ANCESTOR_NAME%
|
|
['%SERVICE_UID%']
|
|
// <%%% START FUNCTION_OPERATIONS %%%>
|
|
function %OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
): %OPERATION_RESULT%;
|
|
// <%%% END FUNCTION_OPERATIONS %%%>
|
|
// <%%% START PROCEDURE_OPERATIONS %%%>
|
|
procedure %OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
// <%%% END PROCEDURE_OPERATIONS %%%>
|
|
end;
|
|
|
|
{ Co%SERVICE_NAME% }
|
|
Co%SERVICE_NAME% = class
|
|
class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): I%SERVICE_NAME%;
|
|
end;
|
|
|
|
{ T%SERVICE_NAME%_Proxy }
|
|
T%SERVICE_NAME%_Proxy = class(%SERVICE_PROXY_ANCESTOR_NAME%, I%SERVICE_NAME%)
|
|
protected
|
|
function __GetInterfaceName:string; override;
|
|
|
|
// <%%% START FUNCTION_OPERATIONS %%%>
|
|
function %OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
): %OPERATION_RESULT%;
|
|
// <%%% END FUNCTION_OPERATIONS %%%>
|
|
// <%%% START PROCEDURE_OPERATIONS %%%>
|
|
procedure %OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
// <%%% END PROCEDURE_OPERATIONS %%%>
|
|
end;
|
|
|
|
// <%%% END SERVICES %%%>
|
|
// <%%% START EVENT_SINKS %%%>
|
|
{ I%EVENT_SINK_NAME% }
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
I%EVENT_SINK_NAME% = interface%EVENT_SINK_ANCESTOR_NAME%
|
|
['%EVENT_SINK_UID%']
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure %OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
// <%%% END OPERATIONS %%%>
|
|
end;
|
|
|
|
{ I%EVENT_SINK_NAME%_Writer }
|
|
// <%%% START DOCUMENTATION %%%>
|
|
|
|
{ Description:
|
|
%CONTENT% }
|
|
// <%%% END DOCUMENTATION %%%>
|
|
I%EVENT_SINK_NAME%_Writer = interface(I%EVENT_SINK_WRITER_ANCESTOR_NAME%)
|
|
['%EVENT_SINK_UID%']
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure %OPERATION_NAME%(const __Sender : TGUID
|
|
// <%%% START PARAMS %%%>
|
|
; %PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
// <%%% END OPERATIONS %%%>
|
|
end;
|
|
|
|
// <%%% END EVENT_SINKS %%%>
|
|
implementation
|
|
|
|
uses
|
|
{vcl:} SysUtils,
|
|
{RemObjects:} uROEventRepository, uRORes, uROSerializer;
|
|
|
|
// <%%% START EXCEPTIONS %%%>
|
|
{ %EXCEPTION_NAME% }
|
|
constructor %EXCEPTION_NAME%.Create(anExceptionMessage : string
|
|
// <%%% START ANCESTOR_FIELDS %%%>
|
|
; a%FIELD_NAME%: %FIELD_TYPE%
|
|
// <%%% END ANCESTOR_FIELDS %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
; a%FIELD_NAME%: %FIELD_TYPE%
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
);
|
|
begin
|
|
inherited Create(anExceptionMessage
|
|
// <%%% START ANCESTOR_FIELDS %%%>
|
|
, a%FIELD_NAME%
|
|
// <%%% END ANCESTOR_FIELDS %%%>
|
|
);
|
|
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
f%FIELD_NAME% := a%FIELD_NAME%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end;
|
|
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
procedure %EXCEPTION_NAME%.ReadException(ASerializer: TObject);
|
|
var
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
begin
|
|
if TROSerializer(ASerializer).RecordStrictOrder then begin
|
|
// <%%% START IF_STRUCT_HAS_ANCESTOR %%%>
|
|
inherited;
|
|
// <%%% END IF_STRUCT_HAS_ANCESTOR %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadArray('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadStruct('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
%FIELD_NAME% := l_%FIELD_NAME%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end else begin
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadArray('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadStruct('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
%FIELD_NAME% := l_%FIELD_NAME%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
end;
|
|
end;
|
|
|
|
procedure %EXCEPTION_NAME%.WriteException(ASerializer: TObject);
|
|
var
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
begin
|
|
if TROSerializer(ASerializer).RecordStrictOrder then begin
|
|
// <%%% START IF_STRUCT_HAS_ANCESTOR %%%>
|
|
inherited;
|
|
// <%%% END IF_STRUCT_HAS_ANCESTOR %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteArray('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteStruct('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end else begin
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteArray('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteStruct('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
end;
|
|
end;
|
|
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
// <%%% END EXCEPTIONS %%%>
|
|
// <%%% START ARRAYS %%%>
|
|
{ %ARRAY_NAME% }
|
|
|
|
procedure %ARRAY_NAME%.Assign(iSource: TPersistent);
|
|
var lSource:%ARRAY_NAME%;
|
|
i:integer;
|
|
begin
|
|
if (iSource is %ARRAY_NAME%) then begin
|
|
lSource := %ARRAY_NAME%(iSource);
|
|
Clear();
|
|
Resize(lSource.Count);
|
|
for i := 0 to Count-1 do begin
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
if Assigned(lSource.Items[i]) then begin
|
|
Items[i].Assign(lSource.Items[i]);
|
|
end;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
// <%%% START IF_ARRAY_TYPE_SIMPLE %%%>
|
|
Items[i] := lSource.Items[i];
|
|
// <%%% END IF_ARRAY_TYPE_SIMPLE %%%>
|
|
end;
|
|
end
|
|
else begin
|
|
inherited Assign(iSource);
|
|
end;
|
|
end;
|
|
|
|
class function %ARRAY_NAME%.GetItemType: PTypeInfo;
|
|
begin
|
|
result := TypeInfo(%ARRAY_TYPE%);
|
|
end;
|
|
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
class function %ARRAY_NAME%.GetItemClass: TClass;
|
|
begin
|
|
result := %ARRAY_TYPE%;
|
|
end;
|
|
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
class function %ARRAY_NAME%.GetItemSize: integer;
|
|
begin
|
|
result := SizeOf(%ARRAY_TYPE%);
|
|
end;
|
|
|
|
function %ARRAY_NAME%.GetItems(aIndex: integer): %ARRAY_TYPE%;
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
result := fItems[aIndex];
|
|
end;
|
|
|
|
function %ARRAY_NAME%.GetItemRef(aIndex: integer): pointer;
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
result := fItems[aIndex];
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
// <%%% START IF_ARRAY_TYPE_SIMPLE %%%>
|
|
result := @fItems[aIndex];
|
|
// <%%% END IF_ARRAY_TYPE_SIMPLE %%%>
|
|
end;
|
|
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
procedure %ARRAY_NAME%.SetItemRef(aIndex: integer; Ref: pointer);
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
if Ref <> fItems[aIndex] then begin
|
|
if fItems[aIndex] <> nil then fItems[aIndex].Free;
|
|
fItems[aIndex] := Ref;
|
|
end;
|
|
end;
|
|
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
procedure %ARRAY_NAME%.Clear;
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
var i: integer;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
begin
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
for i := 0 to (Count-1) do fItems[i].Free();
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
SetLength(fItems, 0);
|
|
FCount := 0;
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.Delete(aIndex: integer);
|
|
var i: integer;
|
|
begin
|
|
if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]);
|
|
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
fItems[aIndex].Free();
|
|
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
if (aIndex<Count-1) then
|
|
for i := aIndex to Count-2 do fItems[i] := fItems[i+1];
|
|
|
|
SetLength(fItems, Count-1);
|
|
Dec(FCount);
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.SetItems(aIndex: integer; const Value: %ARRAY_TYPE%);
|
|
begin
|
|
if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
|
|
if fItems[aIndex] <> Value then begin
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
fItems[aIndex].Free;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
fItems[aIndex] := Value;
|
|
end;
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.Resize(ElementCount: integer);
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
var i: Integer;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
begin
|
|
if fCount = ElementCount then Exit;
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
for i := FCount -1 downto ElementCount do
|
|
FItems[i].Free;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
SetLength(fItems, ElementCount);
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
for i := FCount to ElementCount -1 do
|
|
FItems[i] := %ARRAY_TYPE%.Create;
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
FCount := ElementCount;
|
|
end;
|
|
|
|
function %ARRAY_NAME%.GetCount: integer;
|
|
begin
|
|
result := FCount;
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.Grow;
|
|
var
|
|
Delta, Capacity: Integer;
|
|
begin
|
|
Capacity := Length(fItems);
|
|
if Capacity > 64 then
|
|
Delta := Capacity div 4
|
|
else
|
|
if Capacity > 8 then
|
|
Delta := 16
|
|
else
|
|
Delta := 4;
|
|
SetLength(fItems, Capacity + Delta);
|
|
end;
|
|
|
|
// <%%% START IF_ARRAY_TYPE_COMPLEX %%%>
|
|
function %ARRAY_NAME%.Add: %ARRAY_TYPE%;
|
|
begin
|
|
result := %ARRAY_TYPE%.Create;
|
|
Add(Result);
|
|
end;
|
|
|
|
// <%%% END IF_ARRAY_TYPE_COMPLEX %%%>
|
|
function %ARRAY_NAME%.Add(const Value:%ARRAY_TYPE%): integer;
|
|
begin
|
|
Result := Count;
|
|
if Length(fItems) = Result then
|
|
Grow;
|
|
fItems[result] := Value;
|
|
Inc(fCount);
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.ReadComplex(ASerializer: TObject);
|
|
var
|
|
lval: %ARRAY_TYPE%;
|
|
i: integer;
|
|
begin
|
|
for i := 0 to Count-1 do begin
|
|
with TROSerializer(ASerializer) do
|
|
// <%%% START IF_ARRAY_BINARY_TYPE %%%>
|
|
ReadBinary(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_BINARY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_BOOLEAN_TYPE %%%>
|
|
ReadEnumerated(GetArrayElementName(GetItemType, GetItemRef(i)), TypeInfo(Boolean), lval, i);
|
|
// <%%% END IF_ARRAY_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_ARRAY_CURRENCY_TYPE %%%>
|
|
ReadDouble(GetArrayElementName(GetItemType, GetItemRef(i)), ftCurr, lval, i);
|
|
// <%%% END IF_ARRAY_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DATETIME_TYPE %%%>
|
|
ReadDateTime(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_DATETIME_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DECIMAL_TYPE %%%>
|
|
ReadDecimal(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DOUBLE_TYPE %%%>
|
|
ReadDouble(GetArrayElementName(GetItemType, GetItemRef(i)), ftDouble, lval, i);
|
|
// <%%% END IF_ARRAY_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_ARRAY_GUID_TYPE %%%>
|
|
ReadGuid(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_GUID_TYPE %%%>
|
|
// <%%% START IF_ARRAY_INT64_TYPE %%%>
|
|
ReadInt64(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_INT64_TYPE %%%>
|
|
// <%%% START IF_ARRAY_INTEGER_TYPE %%%>
|
|
ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i);
|
|
// <%%% END IF_ARRAY_INTEGER_TYPE %%%>
|
|
// <%%% START IF_ARRAY_STRING_TYPE %%%>
|
|
ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_STRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_UTF8STRING_TYPE %%%>
|
|
ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_VARIANT_TYPE %%%>
|
|
ReadVariant(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_VARIANT_TYPE %%%>
|
|
// <%%% START IF_ARRAY_WIDESTRING_TYPE %%%>
|
|
ReadWideString(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_XML_TYPE %%%>
|
|
ReadXml(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i);
|
|
// <%%% END IF_ARRAY_XML_TYPE %%%>
|
|
// <%%% START IF_ARRAY_ARRAY_TYPE %%%>
|
|
ReadArray(GetArrayElementName(GetItemType, GetItemRef(i)), %ARRAY_TYPE%, lval, i);
|
|
// <%%% END IF_ARRAY_ARRAY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_ENUM_TYPE %%%>
|
|
ReadEnumerated(GetArrayElementName(GetItemType, GetItemRef(i)), TypeInfo(%FIELD_TYPE%), lval, i);
|
|
// <%%% END IF_ARRAY_ENUM_TYPE %%%>
|
|
// <%%% START IF_ARRAY_STRUCT_TYPE %%%>
|
|
ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), %ARRAY_TYPE%, lval, i);
|
|
// <%%% END IF_ARRAY_STRUCT_TYPE %%%>
|
|
Items[i] := lval;
|
|
end;
|
|
end;
|
|
|
|
procedure %ARRAY_NAME%.WriteComplex(ASerializer: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := 0 to Count-1 do
|
|
with TROSerializer(ASerializer) do
|
|
// <%%% START IF_ARRAY_BINARY_TYPE %%%>
|
|
WriteBinary(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_BINARY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_BOOLEAN_TYPE %%%>
|
|
WriteEnumerated(GetArrayElementName(GetItemType, GetItemRef(i)), TypeInfo(Boolean), fItems[i], i);
|
|
// <%%% END IF_ARRAY_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_ARRAY_CURRENCY_TYPE %%%>
|
|
WriteDouble(GetArrayElementName(GetItemType, GetItemRef(i)), ftCurr, fItems[i], i);
|
|
// <%%% END IF_ARRAY_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DATETIME_TYPE %%%>
|
|
WriteDateTime(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_DATETIME_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DECIMAL_TYPE %%%>
|
|
WriteDecimal(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_ARRAY_DOUBLE_TYPE %%%>
|
|
WriteDouble(GetArrayElementName(GetItemType, GetItemRef(i)), ftDouble, fItems[i], i);
|
|
// <%%% END IF_ARRAY_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_ARRAY_GUID_TYPE %%%>
|
|
WriteGuid(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_GUID_TYPE %%%>
|
|
// <%%% START IF_ARRAY_INT64_TYPE %%%>
|
|
WriteInt64(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_INT64_TYPE %%%>
|
|
// <%%% START IF_ARRAY_INTEGER_TYPE %%%>
|
|
WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i);
|
|
// <%%% END IF_ARRAY_INTEGER_TYPE %%%>
|
|
// <%%% START IF_ARRAY_STRING_TYPE %%%>
|
|
WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_STRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_UTF8STRING_TYPE %%%>
|
|
WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_VARIANT_TYPE %%%>
|
|
WriteVariant(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_VARIANT_TYPE %%%>
|
|
// <%%% START IF_ARRAY_WIDESTRING_TYPE %%%>
|
|
WriteWideString(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_ARRAY_XML_TYPE %%%>
|
|
WriteXml(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_XML_TYPE %%%>
|
|
// <%%% START IF_ARRAY_ARRAY_TYPE %%%>
|
|
WriteArray(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_ARRAY_TYPE %%%>
|
|
// <%%% START IF_ARRAY_ENUM_TYPE %%%>
|
|
WriteEnumerated(GetArrayElementName(GetItemType, GetItemRef(i)), TypeInfo(%ARRAY_TYPE%), fItems[i], i);
|
|
// <%%% END IF_ARRAY_ENUM_TYPE %%%>
|
|
// <%%% START IF_ARRAY_STRUCT_TYPE %%%>
|
|
WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i);
|
|
// <%%% END IF_ARRAY_STRUCT_TYPE %%%>
|
|
end;
|
|
|
|
// <%%% END ARRAYS %%%>
|
|
// <%%% START STRUCTS %%%>
|
|
{ %STRUCT_NAME% }
|
|
|
|
procedure %STRUCT_NAME%.Assign(iSource: TPersistent);
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
var
|
|
lSource: %STRUCT_NAME%;
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
begin
|
|
inherited Assign(iSource);
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
if (iSource is %STRUCT_NAME%) then begin
|
|
lSource := %STRUCT_NAME%(iSource);
|
|
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
// <%%% START IF_FIELD_TYPE_SIMPLE %%%>
|
|
%FIELD_NAME% := lSource.%FIELD_NAME%;
|
|
// <%%% END IF_FIELD_TYPE_SIMPLE %%%>
|
|
// <%%% START IF_FIELD_TYPE_COMPLEX %%%>
|
|
// <%%% START IF_NOT_AUTO_CREATE_FIELDS %%%>
|
|
if Assigned(f%FIELD_NAME%) then
|
|
%FIELD_NAME%.Assign(lSource.%FIELD_NAME%);
|
|
// <%%% END IF_NOT_AUTO_CREATE_FIELDS %%%>
|
|
// <%%% START IF_AUTO_CREATE_FIELDS %%%>
|
|
%FIELD_NAME%.Assign(lSource.%FIELD_NAME%);
|
|
// <%%% END IF_AUTO_CREATE_FIELDS %%%>
|
|
// <%%% END IF_FIELD_TYPE_COMPLEX %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
end;
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
end;
|
|
|
|
destructor %STRUCT_NAME%.Destroy;
|
|
begin
|
|
FDestroying := True;
|
|
try
|
|
inherited Destroy;
|
|
finally
|
|
FDestroying := False;
|
|
end;
|
|
end;
|
|
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
// <%%% START IF_FIELD_TYPE_COMPLEX %%%>
|
|
function %STRUCT_NAME%.Get%FIELD_NAME%: %FIELD_TYPE%;
|
|
begin
|
|
// <%%% START IF_AUTO_CREATE_FIELDS %%%>
|
|
if not Assigned(f%FIELD_NAME%) and not FDestroying then
|
|
f%FIELD_NAME% := %FIELD_TYPE%.Create();
|
|
// <%%% END IF_AUTO_CREATE_FIELDS %%%>
|
|
Result := f%FIELD_NAME%;
|
|
end;
|
|
// <%%% END IF_FIELD_TYPE_COMPLEX %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
|
|
// <%%% START IF_HAS_FIELDS %%%>
|
|
procedure %STRUCT_NAME%.ReadComplex(ASerializer: TObject);
|
|
var
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
begin
|
|
if TROSerializer(ASerializer).RecordStrictOrder then begin
|
|
// <%%% START IF_STRUCT_HAS_ANCESTOR %%%>
|
|
inherited;
|
|
// <%%% END IF_STRUCT_HAS_ANCESTOR %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadArray('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadStruct('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
%FIELD_NAME% := l_%FIELD_NAME%;
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end else begin
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadArray('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).ReadStruct('%FIELD_NAME%', %FIELD_TYPE%, l_%FIELD_NAME%);
|
|
if %FIELD_NAME% <> l_%FIELD_NAME% then %FIELD_NAME%.Free;
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
%FIELD_NAME% := l_%FIELD_NAME%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
end;
|
|
end;
|
|
|
|
procedure %STRUCT_NAME%.WriteComplex(ASerializer: TObject);
|
|
var
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME%: %FIELD_TYPE%;
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
begin
|
|
if TROSerializer(ASerializer).RecordStrictOrder then begin
|
|
// <%%% START IF_STRUCT_HAS_ANCESTOR %%%>
|
|
inherited;
|
|
// <%%% END IF_STRUCT_HAS_ANCESTOR %%%>
|
|
// <%%% START FIELDS_NO_STRIP %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteArray('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteStruct('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
// <%%% END FIELDS_NO_STRIP %%%>
|
|
end else begin
|
|
// <%%% START ENTIRE_HIERARCHY_FIELDS %%%>
|
|
l_%FIELD_NAME% := %FIELD_NAME%;
|
|
// <%%% START IF_FIELD_BINARY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteBinary('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BINARY_TYPE %%%>
|
|
// <%%% START IF_FIELD_BOOLEAN_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(Boolean), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_BOOLEAN_TYPE %%%>
|
|
// <%%% START IF_FIELD_CURRENCY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftCurr, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_CURRENCY_TYPE %%%>
|
|
// <%%% START IF_FIELD_DATETIME_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDateTime('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DATETIME_TYPE %%%>
|
|
// <%%% START IF_FIELD_DECIMAL_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDecimal('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DECIMAL_TYPE %%%>
|
|
// <%%% START IF_FIELD_DOUBLE_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteDouble('%FIELD_NAME%', ftDouble, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_DOUBLE_TYPE %%%>
|
|
// <%%% START IF_FIELD_GUID_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteGuid('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_GUID_TYPE %%%>
|
|
// <%%% START IF_FIELD_INT64_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInt64('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INT64_TYPE %%%>
|
|
// <%%% START IF_FIELD_INTEGER_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteInteger('%FIELD_NAME%', otSLong, l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_INTEGER_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_UTF8STRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteUTF8String('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_UTF8STRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_VARIANT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteVariant('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_VARIANT_TYPE %%%>
|
|
// <%%% START IF_FIELD_WIDESTRING_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteWideString('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_WIDESTRING_TYPE %%%>
|
|
// <%%% START IF_FIELD_XML_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteXml('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_XML_TYPE %%%>
|
|
// <%%% START IF_FIELD_ARRAY_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteArray('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ARRAY_TYPE %%%>
|
|
// <%%% START IF_FIELD_ENUM_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteEnumerated('%FIELD_NAME%', TypeInfo(%FIELD_TYPE%), l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_ENUM_TYPE %%%>
|
|
// <%%% START IF_FIELD_STRUCT_TYPE %%%>
|
|
TROSerializer(ASerializer).WriteStruct('%FIELD_NAME%', l_%FIELD_NAME%);
|
|
// <%%% END IF_FIELD_STRUCT_TYPE %%%>
|
|
// <%%% END ENTIRE_HIERARCHY_FIELDS %%%>
|
|
end;
|
|
end;
|
|
|
|
// <%%% END IF_HAS_FIELDS %%%>
|
|
{ %STRUCT_COLLECTION_NAME% }
|
|
constructor %STRUCT_COLLECTION_NAME%.Create;
|
|
begin
|
|
inherited Create(%STRUCT_NAME%);
|
|
end;
|
|
|
|
constructor %STRUCT_COLLECTION_NAME%.Create(aItemClass: TCollectionItemClass);
|
|
begin
|
|
inherited Create(aItemClass);
|
|
end;
|
|
|
|
function %STRUCT_COLLECTION_NAME%.Add: %STRUCT_NAME%;
|
|
begin
|
|
result := %STRUCT_NAME%(inherited Add);
|
|
end;
|
|
|
|
function %STRUCT_COLLECTION_NAME%.GetItems(aIndex: integer): %STRUCT_NAME%;
|
|
begin
|
|
result := %STRUCT_NAME%(inherited Items[aIndex]);
|
|
end;
|
|
|
|
// <%%% START ARRAYS_IS_FOUND %%%>
|
|
procedure %STRUCT_COLLECTION_NAME%.LoadFromArray(anArray: %ARRAY_NAME%);
|
|
var
|
|
i : integer;
|
|
begin
|
|
Clear;
|
|
for i := 0 to (anArray.Count-1) do
|
|
Add.Assign(anArray[i]);
|
|
end;
|
|
|
|
procedure %STRUCT_COLLECTION_NAME%.SaveToArray(anArray: %ARRAY_NAME%);
|
|
var
|
|
i : integer;
|
|
begin
|
|
anArray.Clear;
|
|
anArray.Resize(Count);
|
|
for i := 0 to (Count-1) do begin
|
|
anArray[i] := %STRUCT_NAME%.Create;
|
|
anArray[i].Assign(Items[i]);
|
|
end;
|
|
end;
|
|
|
|
// <%%% END ARRAYS_IS_FOUND %%%>
|
|
|
|
procedure %STRUCT_COLLECTION_NAME%.SetItems(aIndex: integer; const Value: %STRUCT_NAME%);
|
|
begin
|
|
%STRUCT_NAME%(inherited Items[aIndex]).Assign(Value);
|
|
end;
|
|
|
|
// <%%% END STRUCTS %%%>
|
|
// <%%% START SERVICES %%%>
|
|
{ Co%SERVICE_NAME% }
|
|
|
|
class function Co%SERVICE_NAME%.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): I%SERVICE_NAME%;
|
|
begin
|
|
result := T%SERVICE_NAME%_Proxy.Create(aMessage, aTransportChannel);
|
|
end;
|
|
|
|
{ T%SERVICE_NAME%_Proxy }
|
|
|
|
function T%SERVICE_NAME%_Proxy.__GetInterfaceName:string;
|
|
begin
|
|
result := '%SERVICE_NAME%';
|
|
end;
|
|
|
|
// <%%% START FUNCTION_OPERATIONS %%%>
|
|
function T%SERVICE_NAME%_Proxy.%OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
): %OPERATION_RESULT%;
|
|
begin
|
|
// <%%% START OUT_PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_PARAM_TYPE_COMPLEX %%%>
|
|
%PARAM_NAME% := nil;
|
|
// <%%% END IF_PARAM_TYPE_COMPLEX %%%>
|
|
// <%%% END OUT_PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_RESULT_COMPLEX %%%>
|
|
Result := nil;
|
|
// <%%% END IF_RESULT_COMPLEX %%%>
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '%LIBRARY_NAME%', __InterfaceName, '%OPERATION_NAME%');
|
|
// <%%% START IN_PARAMS_NO_STRIP %%%>
|
|
__Message.Write('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END IN_PARAMS_NO_STRIP %%%>
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
// <%%% START OUT_PARAMS_NO_STRIP %%%>
|
|
__Message.Read('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END OUT_PARAMS_NO_STRIP %%%>
|
|
__Message.Read('Result', TypeInfo(%OPERATION_RESULT%), result, [%OPERATION_RESULT_ATTRIBUTE%]);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
// <%%% END FUNCTION_OPERATIONS %%%>
|
|
// <%%% START PROCEDURE_OPERATIONS %%%>
|
|
procedure T%SERVICE_NAME%_Proxy.%OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
begin
|
|
// <%%% START OUT_PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_PARAM_TYPE_COMPLEX %%%>
|
|
%PARAM_NAME% := nil;
|
|
// <%%% END IF_PARAM_TYPE_COMPLEX %%%>
|
|
// <%%% END OUT_PARAMS_NO_STRIP %%%>
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '%LIBRARY_NAME%', __InterfaceName, '%OPERATION_NAME%');
|
|
// <%%% START IN_PARAMS_NO_STRIP %%%>
|
|
__Message.Write('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END IN_PARAMS_NO_STRIP %%%>
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
// <%%% START OUT_PARAMS_NO_STRIP %%%>
|
|
__Message.Read('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END OUT_PARAMS_NO_STRIP %%%>
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
// <%%% END PROCEDURE_OPERATIONS %%%>
|
|
// <%%% END SERVICES %%%>
|
|
// <%%% START EVENT_SINKS %%%>
|
|
type
|
|
{ T%EVENT_SINK_NAME%_Writer }
|
|
T%EVENT_SINK_NAME%_Writer = class(T%EVENT_SINK_WRITER_ANCESTOR_NAME%, I%EVENT_SINK_NAME%_Writer)
|
|
protected
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure %OPERATION_NAME%(const __Sender : TGUID
|
|
// <%%% START PARAMS %%%>
|
|
; %PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
// <%%% END OPERATIONS %%%>
|
|
end;
|
|
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure T%EVENT_SINK_NAME%_Writer.%OPERATION_NAME%(const __Sender : TGUID
|
|
// <%%% START PARAMS %%%>
|
|
; %PARAM_FRONT_MODIFIER% %PARAM_NAME%: %PARAM_TYPE%
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
var __eventdata : Binary;
|
|
begin
|
|
__eventdata := Binary.Create;
|
|
try
|
|
__Message.InitializeEventMessage(NIL, '%LIBRARY_NAME%', EID_%EVENT_SINK_NAME%, '%OPERATION_NAME%');
|
|
// <%%% START PARAMS_NO_STRIP %%%>
|
|
__Message.Write('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END PARAMS_NO_STRIP %%%>
|
|
__Message.Finalize;
|
|
|
|
__Message.WriteToStream(__eventdata);
|
|
|
|
Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText);
|
|
finally
|
|
__eventdata.Free;
|
|
end;
|
|
end;
|
|
|
|
// <%%% END OPERATIONS %%%>
|
|
type
|
|
{$M+}
|
|
{ T%EVENT_SINK_NAME%_Invoker }
|
|
T%EVENT_SINK_NAME%_Invoker = class(T%EVENT_SINK_INVOKER_ANCESTOR_NAME%)
|
|
published
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure Invoke_%OPERATION_NAME%(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown);
|
|
// <%%% END OPERATIONS %%%>
|
|
end;
|
|
{$M-}
|
|
|
|
// <%%% START OPERATIONS %%%>
|
|
procedure T%EVENT_SINK_NAME%_Invoker.Invoke_%OPERATION_NAME%(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown);
|
|
var
|
|
// <%%% START PARAMS_NO_STRIP %%%>
|
|
%PARAM_NAME%: %PARAM_TYPE%;
|
|
// <%%% END PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_HAS_COMPLEX_TYPE %%%>
|
|
__lObjectDisposer: TROObjectDisposer;
|
|
// <%%% END IF_HAS_COMPLEX_TYPE %%%>
|
|
__%EVENT_SINK_NAME%Instance: I%EVENT_SINK_NAME%;
|
|
begin
|
|
// <%%% START PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_PARAM_TYPE_COMPLEX %%%>
|
|
%PARAM_NAME% := nil;
|
|
// <%%% END IF_PARAM_TYPE_COMPLEX %%%>
|
|
// <%%% END PARAMS_NO_STRIP %%%>
|
|
try
|
|
// <%%% START PARAMS_NO_STRIP %%%>
|
|
__Message.Read('%PARAM_NAME%', TypeInfo(%PARAM_TYPE%), %PARAM_NAME%, [%PARAM_ATTRIBUTE%]);
|
|
// <%%% END PARAMS_NO_STRIP %%%>
|
|
|
|
__%EVENT_SINK_NAME%Instance := (__Target as I%EVENT_SINK_NAME%);
|
|
__%EVENT_SINK_NAME%Instance.%OPERATION_NAME%(
|
|
// <%%% START PARAMS %%%>
|
|
%PARAM_NAME%,
|
|
// <%%% END PARAMS %%%>
|
|
);
|
|
|
|
finally
|
|
// <%%% START IF_HAS_COMPLEX_TYPE %%%>
|
|
__lObjectDisposer := TROObjectDisposer.Create(__EventReceiver);
|
|
try
|
|
// <%%% START PARAMS_NO_STRIP %%%>
|
|
// <%%% START IF_PARAM_TYPE_COMPLEX %%%>
|
|
__lObjectDisposer.Add(%PARAM_NAME%);
|
|
// <%%% END IF_PARAM_TYPE_COMPLEX %%%>
|
|
// <%%% END PARAMS_NO_STRIP %%%>
|
|
finally
|
|
__lObjectDisposer.Free();
|
|
end;
|
|
// <%%% END IF_HAS_COMPLEX_TYPE %%%>
|
|
end
|
|
end;
|
|
|
|
// <%%% END OPERATIONS %%%>
|
|
// <%%% END EVENT_SINKS %%%>
|
|
initialization
|
|
// <%%% START STRUCTS %%%>
|
|
RegisterROClass(%STRUCT_NAME%);
|
|
// <%%% END STRUCTS %%%>
|
|
// <%%% START ARRAYS %%%>
|
|
RegisterROClass(%ARRAY_NAME%);
|
|
// <%%% END ARRAYS %%%>
|
|
// <%%% START EXCEPTIONS %%%>
|
|
RegisterExceptionClass(%EXCEPTION_NAME%);
|
|
// <%%% END EXCEPTIONS %%%>
|
|
// <%%% START SERVICES %%%>
|
|
RegisterProxyClass(I%SERVICE_NAME%_IID, T%SERVICE_NAME%_Proxy);
|
|
// <%%% END SERVICES %%%>
|
|
// <%%% START EVENT_SINKS %%%>
|
|
RegisterEventWriterClass(I%EVENT_SINK_NAME%_Writer, T%EVENT_SINK_NAME%_Writer);
|
|
RegisterEventInvokerClass(EID_%EVENT_SINK_NAME%, T%EVENT_SINK_NAME%_Invoker);
|
|
// <%%% END EVENT_SINKS %%%>
|
|
|
|
finalization
|
|
// <%%% START STRUCTS %%%>
|
|
UnregisterROClass(%STRUCT_NAME%);
|
|
// <%%% END STRUCTS %%%>
|
|
// <%%% START ARRAYS %%%>
|
|
UnregisterROClass(%ARRAY_NAME%);
|
|
// <%%% END ARRAYS %%%>
|
|
// <%%% START EXCEPTIONS %%%>
|
|
UnregisterExceptionClass(%EXCEPTION_NAME%);
|
|
// <%%% END EXCEPTIONS %%%>
|
|
// <%%% START SERVICES %%%>
|
|
UnregisterProxyClass(I%SERVICE_NAME%_IID);
|
|
// <%%% END SERVICES %%%>
|
|
// <%%% START EVENT_SINKS %%%>
|
|
UnregisterEventWriterClass(I%EVENT_SINK_NAME%_Writer);
|
|
UnregisterEventInvokerClass(EID_%EVENT_SINK_NAME%);
|
|
// <%%% END EVENT_SINKS %%%>
|
|
|
|
end.
|