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) 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.