unit DelphiXMLDataBindingResources; interface type TDelphiXMLSection = (dxsForward, dxsInterface, dxsClass, dxsImplementation); TDelphiXMLMember = (dxmPropertyGet, dxmPropertySet, dxmPropertyDeclaration); const CrLf = #13#10; UnitHeader = '{' + CrLf + ' X2Software XML Data Binding Wizard' + CrLf + ' Generated from: %:s' + CrLf + '}' + CrLf + 'unit %:s;' + CrLf + '' + CrLf; UnitInterface = 'interface' + CrLf + 'uses' + CrLf + ' Classes,' + CrLf + ' XMLDoc,' + CrLf + ' XMLIntf;' + CrLf + '' + CrLf + 'type' + CrLf; UnitImplementation = 'implementation' + CrLf + '' + CrLf; UnitFooter = '' + CrLf + 'end.' + CrLf; DocumentBinding = 'GetDocBinding(''%:s'', TXML%:s, TargetNamespace) as IXML%:s'; DocumentFunctionsInterface = ' function Get%:s(ADocument: IXMLDocument): IXML%:s;' + CrLf + ' function Load%:s(const AFileName: String): IXML%:s;' + CrLf + ' function Load%:sFromStream(AStream: TStream): IXML%:s;' + CrLf + ' function New%:s: IXML%:s;' + CrLf; DocumentFunctionsImplementation = 'function Get%:s(ADocument: IXMLDocument): IXML%:s;' + CrLf + 'begin' + CrLf + ' Result := ADocument.' + DocumentBinding + CrLf + 'end;' + CrLf + '' + CrLf + 'function Load%:s(const AFileName: String): IXML%:s;' + CrLf + 'begin' + CrLf + ' Result := LoadXMLDocument(AFileName).' + DocumentBinding + CrLf + 'end;' + CrLf + '' + CrLf + 'function Load%:sFromStream(AStream: TStream): IXML%:s;' + CrLf + 'var' + CrLf + ' doc: IXMLDocument;' + CrLf + '' + CrLf + 'begin' + CrLf + ' doc := NewXMLDocument;' + CrLf + ' doc.LoadFromStream(AStream);' + CrLf + ' Result := Get%:s(doc);' + CrLf + 'end;' + CrLf + '' + CrLf + 'function New%:s: IXML%:s;' + CrLf + 'begin' + CrLf + ' Result := NewXMLDocument.' + DocumentBinding + CrLf + 'end;' + CrLf + '' + CrLf; PropertyIntfMethodGetOptional = ' function GetHas%:s: Boolean;'; PropertyIntfMethodGetText = ' function Get%:sText: WideString;'; PropertyIntfMethodGet = ' function Get%:s: %:s;'; PropertyIntfMethodSetText = ' procedure Set%:sText(const Value: WideString);'; PropertyIntfMethodSet = ' procedure Set%:s(const Value: %:s);'; PropertyInterfaceOptional = ' property Has%:s: Boolean read GetHas%:s;'; PropertyInterfaceTextReadOnly = ' property %:sText: WideString read Get%:sText;'; PropertyInterfaceReadOnly = ' property %:s: %:s read Get%:s;'; PropertyInterfaceText = ' property %:sText: WideString read Get%:sText write Set%:sText;'; PropertyInterface = ' property %:s: %:s read Get%:s write Set%:s;'; PropertyImplMethodGetOptional = 'function TXML%:s.GetHas%:s: Boolean;' + CrLf + 'begin' + CrLf + ' Result := Assigned(ChildNodes.FindNode(''%:s''));' + CrLf + 'end;' + CrLf + '' + CrLf; PropertyImplMethodGetText = 'function TXML%:s.Get%:sText: WideString;' + CrLf + 'begin' + CrLf + ' Result := ChildNodes[''%:s''].NodeValue;' + CrLf + 'end;' + CrLf + '' + CrLf; PropertyImplMethodSetText = 'procedure TXML%:s.Set%:sText(const Value: WideString);' + CrLf + 'begin' + CrLf + ' ChildNodes[''%:s''].NodeValue := Value;' + CrLf + 'end;' + CrLf + '' + CrLf; SectionComments: array[TDelphiXMLSection] of String = ( ' { Forward declarations for %:s }', ' { Interfaces for %:s }', ' { Classes for %:s }', '{ Implementation for %:s }' ); PrefixInterface = 'IXML'; PrefixClass = 'TXML'; InterfaceItemForward = ' IXML%:s = interface;'; InterfaceItemInterface = ' IXML%:s = interface(%:s)'; InterfaceItemClass = ' TXML%:s = class(%:s, IXML%:s)'; CollectionInterface = 'IXMLNodeCollection'; CollectionClass = 'TXMLNodeCollection'; ItemInterface = 'IXMLNode'; ItemClass = 'TXMLNode'; // #ToDo1 (MvR) 9-3-2008: document / node / etc // #ToDo1 (MvR) 9-3-2008: WideString etc ? ReservedWords: array[0..111] of String = ( 'absolute', 'abstract', 'and', 'array', 'as', 'asm', 'assembler', 'automated', 'begin', 'case', 'cdecl', 'class', 'const', 'constructor', 'contains', 'default', 'deprecated', 'destructor', 'dispid', 'dispinterface', 'div', 'do', 'downto', 'dynamic', 'else', 'end', 'except', 'export', 'exports', 'external', 'far', 'file', 'final', 'finalization', 'finally', 'for', 'forward', 'function', 'goto', 'if', 'implementation', 'implements', 'in', 'index', 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', 'library', 'local', 'message', 'mod', 'name', 'near', 'nil', 'nodefault', 'not', 'object', 'of', 'or', 'out', 'overload', 'override', 'package', 'packed', 'pascal', 'platform', 'private', 'procedure', 'program', 'property', 'protected', 'public', 'published', 'raise', 'read', 'readonly', 'record', 'register', 'reintroduce', 'repeat', 'requires', 'resident', 'resourcestring', 'safecall', 'sealed', 'set', 'shl', 'shr', 'static', 'stdcall', 'stored', 'string', 'then', 'threadvar', 'to', 'try', 'type', 'unit', 'unsafe', 'until', 'uses', 'var', 'varargs', 'virtual', 'while', 'with', 'write', 'writeonly', 'xor' ); type TTypeConversion = (tcNone, tcBoolean, tcFloat, tcDateTime); TTypeConversions = set of TTypeConversion; TTypeMapping = record SchemaName: String; DelphiName: String; Conversion: TTypeConversion; end; const SimpleTypeMapping: array[0..9] of TTypeMapping = ( (SchemaName: 'int'; DelphiName: 'Integer'; Conversion: tcNone), (SchemaName: 'integer'; DelphiName: 'Integer'; Conversion: tcNone), (SchemaName: 'short'; DelphiName: 'Smallint'; Conversion: tcNone), (SchemaName: 'date'; DelphiName: 'TDateTime'; Conversion: tcDateTime), (SchemaName: 'time'; DelphiName: 'TDateTime'; Conversion: tcDateTime), (SchemaName: 'dateTime'; DelphiName: 'TDateTime'; Conversion: tcDateTime), (SchemaName: 'float'; DelphiName: 'Double'; Conversion: tcFloat), (SchemaName: 'double'; DelphiName: 'Double'; Conversion: tcFloat), (SchemaName: 'boolean'; DelphiName: 'Boolean'; Conversion: tcBoolean), (SchemaName: 'string'; DelphiName: 'WideString'; Conversion: tcNone) ); TypeConversionNone = ' %:s := %:s;'; TypeConversionVariables: array[TTypeConversion] of String = ( { tcNone } '', { tcBoolean } '', { tcFloat } '', { tcDateTime } '' ); TypeConversionToNative: array[TTypeConversion] of String = ( { tcNone } TypeConversionNone, { tcBoolean } TypeConversionNone, { tcFloat } TypeConversionNone, { tcDateTime } TypeConversionNone ); TypeConversionToXML: array[TTypeConversion] of String = ( { tcNone } TypeConversionNone, { tcBoolean } ' %:s := LowerCase(BoolToStr(%:s, True));', { tcFloat } TypeConversionNone, { tcDateTime } TypeConversionNone ); implementation end.