Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Source/CodeGen2/Templates/template.intf.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- 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
2007-09-10 14:06:19 +00:00

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.