ws_helper parses ( and records in procedure Register_%service%_ServiceMetadata() )

- service/port for <soap:address>
  - binding/operation for "soapAction"
  
ws_helper : better parsing of "function" operations

ws_helper supports a new switch :
  -u MODE Generate the pascal translation of the WSDL input file
       MODE value may be U for used types or A for all types


Complexe types extending with simpleContent support in the runtime and ws_helper :
   sample WSDL type
  	<xs:complexType name="MeasureType">
  		<xs:simpleContent>
  			<xs:extension base="xs:decimal">
  				<xs:attribute name="UnitSystem" type="xs:token" use="optional">
  				</xs:attribute>
  				<xs:attribute name="ZeroPoint" type="string" use="optional">
  				</xs:attribute>
  			</xs:extension>
  		</xs:simpleContent>
  	</xs:complexType> 


embedded array support :
   sample WSDL type
      <xsd:complexType name="EmbeddeArraySample">
        <xsd:sequence>
          <xsd:element name="Name" type="xsd:string"/>
          <xsd:element name="Count" type="xsd:int"/>
          <xsd:element name="ArrayItem" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:complexType>

   sample instance of "EmbeddeArraySample"
      <example>
        <Name>WST NAME</Name>
        <Count>3</Count>
        <ArrayItem>Item 0</ArrayItem>
        <ArrayItem>Item 1</ArrayItem>
        <ArrayItem>Item 2</ArrayItem>
      </example>

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@139 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-04-02 13:19:48 +00:00
parent 77d87602b6
commit 2090bf84b2
24 changed files with 973 additions and 783 deletions

View File

@ -277,6 +277,8 @@ type
property Val_Currency : Currency Read FVal_Currency Write FVal_Currency;
End;
TEmbeddedArrayOfStringRemotable = class(TArrayOfStringRemotable);
{ TTestFormatterSimpleType }
TTestFormatterSimpleType= class(TTestCase)
@ -320,6 +322,7 @@ type
procedure Test_Object();
procedure Test_Object_Nil();
procedure Test_StringArray();
procedure Test_StringArray_Embedded();
procedure Test_StringArrayZeroLength();
procedure Test_BooleanArray();
@ -458,7 +461,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_U';
f.Get(TypeInfo(Byte),x,intVal_U);
x := 'intVal_S';
@ -496,7 +499,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
f.GetScopeInnerValue(TypeInfo(Byte),intVal_U);
f.EndScopeRead();
AssertEquals(VAL_1,intVal_U);
@ -515,7 +518,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
f.GetScopeInnerValue(TypeInfo(ShortInt),intVal_S);
f.EndScopeRead();
AssertEquals(VAL_2,intVal_S);
@ -552,7 +555,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_U';
f.Get(TypeInfo(Word),x,intVal_U);
x := 'intVal_S';
@ -594,7 +597,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_U';
f.Get(TypeInfo(LongWord),x,intVal_U);
x := 'intVal_S';
@ -636,7 +639,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_U';
f.Get(TypeInfo(QWord),x,intVal_U);
x := 'intVal_S';
@ -675,7 +678,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Float),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Float));
x := 'tmpVal';
f.Get(TypeInfo(Single),x,tmpVal);
f.EndScopeRead();
@ -711,7 +714,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Float),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Float));
x := 'tmpVal';
f.Get(TypeInfo(Double),x,tmpVal);
f.EndScopeRead();
@ -747,7 +750,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Float),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Float));
x := 'tmpVal';
f.Get(TypeInfo(Currency),x,tmpVal);
f.EndScopeRead();
@ -783,7 +786,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Float),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Float));
x := 'tmpVal';
f.Get(TypeInfo(Extended),x,tmpVal);
f.EndScopeRead();
@ -822,7 +825,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_1';
f.Get(TypeInfo(string),x,intVal_1);
x := 'intVal_3';
@ -864,7 +867,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_1';
f.Get(TypeInfo(Boolean),x,intVal_1);
x := 'intVal_3';
@ -906,7 +909,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'intVal_1';
f.Get(TypeInfo(TTestEnum),x,intVal_1);
x := 'intVal_3';
@ -954,7 +957,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_Int),x,a);
f.EndScopeRead();
@ -1003,7 +1006,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Float),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Float));
x := 'o1';
f.Get(TypeInfo(TClass_Float),x,a);
f.EndScopeRead();
@ -1046,7 +1049,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Enum),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Enum));
x := 'o1';
f.Get(TypeInfo(TClass_Enum),x,a);
f.EndScopeRead();
@ -1106,7 +1109,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1179,7 +1182,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1252,7 +1255,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1325,7 +1328,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1404,7 +1407,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1471,7 +1474,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'o1';
f.Get(TypeInfo(TClass_CplxSimpleContent),x,a);
x := 'ns';
@ -1521,7 +1524,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'o1';
f.Get(TypeInfo(TClass_B),x,a);
f.EndScopeRead();
@ -1567,7 +1570,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'o1';
f.Get(TypeInfo(TClass_B),x,a);
f.EndScopeRead();
@ -1614,7 +1617,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
f.EndScopeRead();
@ -1629,6 +1632,82 @@ begin
end;
end;
procedure TTestFormatter.Test_StringArray_Embedded();
const AR_LEN = 5; VAL_AR : array[0..(AR_LEN-1)] of string = ('AzErTy','QwErTy','123456','','1');
var
a : TArrayOfStringRemotable;
b : TEmbeddedArrayOfStringRemotable;
i, intVal : Integer;
f : IFormatterBase;
s : TMemoryStream;
x : string;
begin
b := nil;
a := TArrayOfStringRemotable.Create();
try
b := TEmbeddedArrayOfStringRemotable.Create();
AssertEquals(0,a.Length);
a.SetLength(0);
AssertEquals('Length 1', 0,a.Length);
a.SetLength(AR_LEN);
AssertEquals(AR_LEN,a.Length);
b.SetLength(AR_LEN);
AssertEquals(AR_LEN,b.Length);
for i := 0 to Pred(AR_LEN) do begin
a[i] := VAL_AR[i];
b[i] := VAL_AR[Pred(AR_LEN)-i];
end;
intVal := 1210;
f := CreateFormatter(TypeInfo(TClass_B));
f.BeginObject('Root',TypeInfo(TClass_B));
f.Put('a',TypeInfo(TArrayOfStringRemotable),a);
f.Put('x',TypeInfo(Integer),intVal);
f.Put('b',TypeInfo(TEmbeddedArrayOfStringRemotable),b);
f.EndScope();
s := TMemoryStream.Create();
f.SaveToStream(s); s.SaveToFile(ClassName + '.XML');
FreeAndNil(a);
FreeAndNil(b);
intVal := 0;
a := TArrayOfStringRemotable.Create();
b := TEmbeddedArrayOfStringRemotable.Create();
a.SetLength(0);
a.SetLength(0);
a.SetLength(0);
b.SetLength(0);
f := CreateFormatter(TypeInfo(TClass_B));
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
x := 'x';
f.Get(TypeInfo(Integer),x,intVal);
x := 'b';
f.Get(TypeInfo(TEmbeddedArrayOfStringRemotable),x,b);
f.EndScopeRead();
AssertEquals('IntVal', 1210,intVal);
AssertEquals('Length 2', AR_LEN,a.Length);
AssertEquals('Length 2', AR_LEN,b.Length);
for i := 0 to Pred(AR_LEN) do begin
AssertEquals(VAL_AR[i],a[i]);
AssertEquals(VAL_AR[Pred(AR_LEN)-i],b[i]);
end;
finally
b.Free();
a.Free();
s.Free();
end;
end;
procedure TTestFormatter.Test_StringArrayZeroLength();
var
a : TArrayOfStringRemotable;
@ -1652,7 +1731,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfStringRemotable),x,a);
f.EndScopeRead();
@ -1700,7 +1779,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfBooleanRemotable),x,a);
f.EndScopeRead();
@ -1750,7 +1829,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt8URemotable),x,a);
f.EndScopeRead();
@ -1800,7 +1879,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt8SRemotable),x,a);
f.EndScopeRead();
@ -1850,7 +1929,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt16SRemotable),x,a);
f.EndScopeRead();
@ -1900,7 +1979,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt16URemotable),x,a);
f.EndScopeRead();
@ -1950,7 +2029,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt32URemotable),x,a);
f.EndScopeRead();
@ -2000,7 +2079,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt32SRemotable),x,a);
f.EndScopeRead();
@ -2050,7 +2129,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt64SRemotable),x,a);
f.EndScopeRead();
@ -2100,7 +2179,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfInt64URemotable),x,a);
f.EndScopeRead();
@ -2150,7 +2229,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfFloatSingleRemotable),x,a);
f.EndScopeRead();
@ -2200,7 +2279,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfFloatDoubleRemotable),x,a);
f.EndScopeRead();
@ -2250,7 +2329,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfFloatExtendedRemotable),x,a);
f.EndScopeRead();
@ -2300,7 +2379,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_B),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_B));
x := 'a';
f.Get(TypeInfo(TArrayOfFloatCurrencyRemotable),x,a);
f.EndScopeRead();
@ -2347,7 +2426,7 @@ begin
s.Position := 0;
f.LoadFromStream(s);
x := 'Root';
f.BeginScopeRead(x,TypeInfo(TClass_Int),stObject);
f.BeginObjectRead(x,TypeInfo(TClass_Int));
x := 'a';
f.Get(TypeInfo(TComplexInt32SContentRemotable),x,a);
x := 'b';
@ -3008,6 +3087,10 @@ initialization
TClass_CplxSimpleContent.RegisterAttributeProperty('Elt_Exemple');
GetTypeRegistry().Register(sXSD_NS,TypeInfo(TClass_CplxSimpleContent),'TClass_CplxSimpleContent').RegisterExternalPropertyName('Elt_Exemple', 'published');
with GetTypeRegistry().Register(sWST_BASE_NS,TypeInfo(TEmbeddedArrayOfStringRemotable),'TEmbeddedArrayOfStringRemotable') do begin
RegisterExternalPropertyName(sARRAY_ITEM,'abc');
RegisterExternalPropertyName(sARRAY_STYLE,sEmbedded);
end;
RegisterTest(TTestArray);
RegisterTest(TTestSOAPFormatter);

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="1"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -40,9 +40,9 @@
<Filename Value="testformatter_unit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testformatter_unit"/>
<CursorPos X="27" Y="3020"/>
<TopLine Value="2992"/>
<EditorIndex Value="7"/>
<CursorPos X="30" Y="1693"/>
<TopLine Value="1662"/>
<EditorIndex Value="8"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit1>
@ -50,24 +50,28 @@
<Filename Value="..\..\server_service_soap.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="server_service_soap"/>
<CursorPos X="20" Y="205"/>
<TopLine Value="162"/>
<CursorPos X="34" Y="126"/>
<TopLine Value="109"/>
<EditorIndex Value="4"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\soap_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="10" Y="118"/>
<TopLine Value="89"/>
<CursorPos X="34" Y="145"/>
<TopLine Value="125"/>
<EditorIndex Value="5"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\..\base_binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="45" Y="1007"/>
<TopLine Value="1003"/>
<CursorPos X="14" Y="279"/>
<TopLine Value="268"/>
<EditorIndex Value="2"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
@ -76,12 +80,12 @@
<Filename Value="..\..\base_service_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="26" Y="2965"/>
<TopLine Value="665"/>
<CursorPos X="3" Y="119"/>
<TopLine Value="132"/>
<EditorIndex Value="0"/>
<UsageCount Value="200"/>
<Bookmarks Count="1">
<Item0 X="5" Y="1161" ID="1"/>
<Item0 X="5" Y="1175" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit5>
@ -89,8 +93,8 @@
<Filename Value="..\..\base_soap_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="18" Y="929"/>
<TopLine Value="942"/>
<CursorPos X="14" Y="87"/>
<TopLine Value="73"/>
<EditorIndex Value="3"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
@ -99,9 +103,11 @@
<Filename Value="..\..\binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="binary_formatter"/>
<CursorPos X="15" Y="44"/>
<TopLine Value="33"/>
<CursorPos X="22" Y="132"/>
<TopLine Value="118"/>
<EditorIndex Value="6"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\binary_streamer.pas"/>
@ -115,26 +121,26 @@
<Filename Value="..\..\server_binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="server_binary_formatter"/>
<CursorPos X="5" Y="136"/>
<TopLine Value="92"/>
<CursorPos X="22" Y="100"/>
<TopLine Value="86"/>
<EditorIndex Value="7"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="..\..\metadata_repository.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="25" Y="14"/>
<TopLine Value="712"/>
<EditorIndex Value="1"/>
<TopLine Value="701"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="D:\Lazarus\fpcsrc\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="15" Y="579"/>
<TopLine Value="565"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit11>
<Unit12>
<Filename Value="testmetadata_unit.pas"/>
@ -142,9 +148,7 @@
<UnitName Value="testmetadata_unit"/>
<CursorPos X="50" Y="118"/>
<TopLine Value="106"/>
<EditorIndex Value="8"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\ws_helper\metadata_generator.pas"/>
@ -160,21 +164,19 @@
<UnitName Value="parserdefs"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="202"/>
<Bookmarks Count="2">
<Item0 X="45" Y="1146" ID="0"/>
<Item1 X="18" Y="1133" ID="2"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="..\..\metadata_wsdl.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_wsdl"/>
<CursorPos X="25" Y="759"/>
<TopLine Value="748"/>
<EditorIndex Value="4"/>
<CursorPos X="3" Y="764"/>
<TopLine Value="775"/>
<EditorIndex Value="1"/>
<UsageCount Value="206"/>
<Loaded Value="True"/>
</Unit15>
@ -183,13 +185,13 @@
<UnitName Value="DOM"/>
<CursorPos X="15" Y="429"/>
<TopLine Value="413"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit16>
<Unit17>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="13" Y="235"/>
<TopLine Value="215"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit17>
<Unit18>
<Filename Value="..\..\server_service_intf.pas"/>
@ -197,45 +199,45 @@
<UnitName Value="server_service_intf"/>
<CursorPos X="35" Y="379"/>
<TopLine Value="397"/>
<UsageCount Value="143"/>
<UsageCount Value="153"/>
</Unit18>
<Unit19>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="23"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit19>
<Unit20>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="3" Y="316"/>
<TopLine Value="304"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit20>
<Unit21>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
<CursorPos X="3" Y="407"/>
<TopLine Value="404"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit21>
<Unit22>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
<UnitName Value="contnrs"/>
<CursorPos X="3" Y="474"/>
<TopLine Value="471"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit22>
<Unit23>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
<CursorPos X="27" Y="121"/>
<TopLine Value="104"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit23>
<Unit24>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpas.inc"/>
<CursorPos X="9" Y="166"/>
<TopLine Value="142"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit24>
<Unit25>
<Filename Value="D:\Lazarus\components\fpcunit\guitestrunner.pas"/>
@ -244,60 +246,60 @@
<UnitName Value="GuiTestRunner"/>
<CursorPos X="34" Y="32"/>
<TopLine Value="25"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\fpcunit.pp"/>
<UnitName Value="fpcunit"/>
<CursorPos X="21" Y="94"/>
<TopLine Value="83"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\DUnitCompatibleInterface.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="4"/>
<UsageCount Value="1"/>
<UsageCount Value="10"/>
</Unit27>
<Unit28>
<Filename Value="..\..\imp_utils.pas"/>
<UnitName Value="imp_utils"/>
<CursorPos X="15" Y="36"/>
<TopLine Value="22"/>
<UsageCount Value="1"/>
<UsageCount Value="10"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="3" Y="1412"/>
<TopLine Value="1407"/>
<UsageCount Value="5"/>
<CursorPos X="3" Y="51"/>
<TopLine Value="41"/>
<UsageCount Value="10"/>
</Unit29>
<Unit30>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="33" Y="192"/>
<TopLine Value="186"/>
<UsageCount Value="4"/>
<UsageCount Value="3"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\xmlread.pp"/>
<UnitName Value="XMLRead"/>
<CursorPos X="43" Y="13"/>
<TopLine Value="1"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\datih.inc"/>
<CursorPos X="10" Y="109"/>
<TopLine Value="107"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\dati.inc"/>
<CursorPos X="46" Y="130"/>
<TopLine Value="122"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit33>
<Unit34>
<Filename Value="test_parserdef.pas"/>
@ -305,152 +307,34 @@
<UnitName Value="test_parserdef"/>
<CursorPos X="93" Y="76"/>
<TopLine Value="11"/>
<EditorIndex Value="6"/>
<UsageCount Value="63"/>
<Loaded Value="True"/>
<UsageCount Value="73"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testutils.pp"/>
<UnitName Value="testutils"/>
<CursorPos X="34" Y="25"/>
<TopLine Value="1"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\testregistry.pp"/>
<UnitName Value="testregistry"/>
<CursorPos X="18" Y="17"/>
<TopLine Value="16"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit36>
<Unit37>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
<CursorPos X="26" Y="134"/>
<TopLine Value="141"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit37>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="315" Column="17" TopLine="291"/>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="587" Column="29" TopLine="571"/>
</Position1>
<Position2>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="230" Column="17" TopLine="216"/>
</Position2>
<Position3>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="198" Column="17" TopLine="185"/>
</Position3>
<Position4>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="230" Column="14" TopLine="220"/>
</Position4>
<Position5>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="360" Column="27" TopLine="353"/>
</Position5>
<Position6>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position6>
<Position7>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="54" Column="15" TopLine="39"/>
</Position7>
<Position8>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="62" Column="15" TopLine="47"/>
</Position8>
<Position9>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="108" Column="26" TopLine="93"/>
</Position9>
<Position10>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="127" Column="25" TopLine="112"/>
</Position10>
<Position11>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="198" Column="20" TopLine="192"/>
</Position11>
<Position12>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="220" Column="15" TopLine="198"/>
</Position12>
<Position13>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="264" Column="29" TopLine="252"/>
</Position13>
<Position14>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="342" Column="30" TopLine="327"/>
</Position14>
<Position15>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position15>
<Position16>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="54" Column="15" TopLine="39"/>
</Position16>
<Position17>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="62" Column="15" TopLine="47"/>
</Position17>
<Position18>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="108" Column="26" TopLine="93"/>
</Position18>
<Position19>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="127" Column="25" TopLine="112"/>
</Position19>
<Position20>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="220" Column="20" TopLine="195"/>
</Position20>
<Position21>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="326" Column="21" TopLine="303"/>
</Position21>
<Position22>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="343" Column="75" TopLine="328"/>
</Position22>
<Position23>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="383" Column="25" TopLine="364"/>
</Position23>
<Position24>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="423" Column="65" TopLine="413"/>
</Position24>
<Position25>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="85" Column="1" TopLine="71"/>
</Position25>
<Position26>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="429" Column="68" TopLine="426"/>
</Position26>
<Position27>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="85" Column="1" TopLine="71"/>
</Position27>
<Position28>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="621" Column="5" TopLine="586"/>
</Position28>
<Position29>
<Filename Value="..\..\metadata_repository.pas"/>
<Caret Line="635" Column="8" TopLine="617"/>
</Position29>
<Position30>
<Filename Value="testmetadata_unit.pas"/>
<Caret Line="118" Column="50" TopLine="106"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>