From c7e3cdf5c8d99bf2e1101a16fe2d34ac5d1a6e60 Mon Sep 17 00:00:00 2001 From: inoussa Date: Mon, 9 Nov 2009 09:48:35 +0000 Subject: [PATCH] Better Array generation Define "float" as "Single" git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@997 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/ws_helper/pascal_parser_intf.pas | 4 ++-- wst/trunk/ws_helper/xsd_generator.pas | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/wst/trunk/ws_helper/pascal_parser_intf.pas b/wst/trunk/ws_helper/pascal_parser_intf.pas index 2f6c79b46..7472982a7 100644 --- a/wst/trunk/ws_helper/pascal_parser_intf.pas +++ b/wst/trunk/ws_helper/pascal_parser_intf.pas @@ -226,7 +226,7 @@ const ('Longint', 'TComplexInt32SContentRemotable', 'int'), ('Int64', 'TComplexInt64SContentRemotable', 'long'), ('Qword', 'TComplexInt64UContentRemotable', 'unsignedLong'), - ('Single', 'TComplexFloatSingleContentRemotable', 'single'), + ('Single', 'TComplexFloatSingleContentRemotable', 'float'), ('Double', 'TComplexFloatDoubleContentRemotable', 'double'), ('Extended', 'TComplexFloatExtendedContentRemotable', 'decimal') ); @@ -451,7 +451,7 @@ begin AddAlias('token','string',Result); AddAlias('anyURI','string',Result); AddAlias('ID','string',Result); - AddAlias('float','Single',Result); + //AddAlias('float','Single',Result); AddAlias('nonNegativeInteger','LongWord',Result); AddAlias('positiveInteger','nonNegativeInteger',Result); {$IFNDEF WST_HAS_TDURATIONREMOTABLE} diff --git a/wst/trunk/ws_helper/xsd_generator.pas b/wst/trunk/ws_helper/xsd_generator.pas index ae4e0cc95..c6622f3f8 100644 --- a/wst/trunk/ws_helper/xsd_generator.pas +++ b/wst/trunk/ws_helper/xsd_generator.pas @@ -891,7 +891,7 @@ var p : TPasProperty; s : string; propNode : TDOMElement; - propTypItm, propItmUltimeType : TPasType; + propTypItm, propItmUltimeType, arrayItemType : TPasType; prop_ns_shortName : string; isEmbeddedArray : Boolean; typeHelper : IXsdSpecialTypeHelper; @@ -919,16 +919,27 @@ var ( AContainer.GetArrayStyle(TPasArrayType(propItmUltimeType)) = asEmbeded ); if isEmbeddedArray then begin s := AContainer.GetExternalName(TPasArrayType(propItmUltimeType).ElType); - prop_ns_shortName := GetNameSpaceShortName(GetTypeNameSpace(AContainer,TPasArrayType(propItmUltimeType).ElType),ADocument,GetOwner().GetPreferedShortNames()); + arrayItemType := TPasArrayType(propItmUltimeType).ElType; + prop_ns_shortName := GetNameSpaceShortName(GetTypeNameSpace(AContainer,arrayItemType),ADocument,GetOwner().GetPreferedShortNames()); + propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,s])); + if arrayItemType.InheritsFrom(TPasNativeSpecialSimpleType) then begin + if GetRegistry().FindHelper(arrayItemType,typeHelper) then + typeHelper.HandleTypeUsage(propNode,defSchemaNode); + end; end else begin s := AContainer.GetExternalName(propTypItm); prop_ns_shortName := GetNameSpaceShortName(GetTypeNameSpace(AContainer,propTypItm),ADocument,GetOwner().GetPreferedShortNames()); + propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,s])); + if propTypItm.InheritsFrom(TPasNativeSpecialSimpleType) then begin + if GetRegistry().FindHelper(propTypItm,typeHelper) then + typeHelper.HandleTypeUsage(propNode,defSchemaNode); + end; end; - propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,s])); + {propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,s])); if propTypItm.InheritsFrom(TPasNativeSpecialSimpleType) then begin if GetRegistry().FindHelper(propTypItm,typeHelper) then typeHelper.HandleTypeUsage(propNode,defSchemaNode); - end; + end; } if ( Length(p.DefaultValue) > 0 ) then propNode.SetAttribute(s_default,p.DefaultValue); if AContainer.IsAttributeProperty(p) then begin