FPC UnicodeString support (+ test cases)
WideString support (+ test cases)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@556 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa 2008-09-13 15:19:20 +00:00
parent 812edb945c
commit 5a497d957a
13 changed files with 1028 additions and 123 deletions

View File

@ -20,7 +20,7 @@ interface
uses
Classes, SysUtils,
service_intf, imp_utils, base_service_intf, library_base_intf,
library_imp_utils;
library_imp_utils, wst_types;
const
sTRANSPORT_NAME = 'LIB';
@ -105,11 +105,11 @@ procedure TLIBTransport.SendAndReceive(ARequest, AResponse: TStream);
Var
wrtr : IDataStore;
buffStream : TMemoryStream;
strBuff : string;
strBuff : TBinaryString;
intfBuffer : IwstStream;
bl : LongInt;
{$IFDEF WST_DBG}
s : string;
s : TBinaryString;
i : Int64;
{$ENDIF WST_DBG}
begin
@ -118,9 +118,9 @@ begin
try
wrtr := CreateBinaryWriter(buffStream);
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
wrtr.WriteStr(Self.Format);
wrtr.WriteAnsiStr(Target);
wrtr.WriteAnsiStr(ContentType);
wrtr.WriteAnsiStr(Self.Format);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));
@ -128,7 +128,7 @@ begin
if IsConsole then
WriteLn(strBuff);
{$ENDIF WST_DBG}
wrtr.WriteStr(strBuff);
wrtr.WriteAnsiStr(strBuff);
buffStream.Position := 0;
wrtr.WriteInt32S(buffStream.Size-4);

View File

@ -17,10 +17,7 @@ interface
uses
Classes, SysUtils,
library_base_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
library_base_intf, wst_types;
function wstHandleRequest(
ARequestBuffer : IwstStream;
@ -42,7 +39,7 @@ function wstHandleRequest(
j,m : Integer;
begin
m := AErrorBufferLen;
j := Length(AMsg);
j := Length(AMsg) * SizeOf(Char);
if ( j > 0 ) then begin
if ( j > m ) then
j := m;
@ -54,7 +51,7 @@ function wstHandleRequest(
end;
Var
buff, trgt,ctntyp, frmt : string;
buff, trgt,ctntyp, frmt : TBinaryString;
rqst : IRequestBuffer;
rdr : IDataStoreReader;
inStream, bufStream : TMemoryStream;
@ -82,10 +79,10 @@ begin
rdr := CreateBinaryReader(bufStream);
if ( rdr.ReadInt32S() <> ( bs - 4 ) ) then
wstCheck(RET_FALSE,'Invalid buffer.');
trgt := rdr.ReadStr();
ctntyp := rdr.ReadStr();
frmt := rdr.ReadStr();
buff := rdr.ReadStr();
trgt := rdr.ReadAnsiStr();
ctntyp := rdr.ReadAnsiStr();
frmt := rdr.ReadAnsiStr();
buff := rdr.ReadAnsiStr();
rdr := nil;
bufStream.Size := 0;
bufStream.Position := 0;

View File

@ -320,8 +320,8 @@ var
procedure LoadParam(APrm : POperationParam);
begin
APrm^.Name := rdr.ReadStr();
APrm^.TypeName := rdr.ReadStr();
APrm^.Name := rdr.ReadAnsiStr();
APrm^.TypeName := rdr.ReadAnsiStr();
APrm^.Modifier := TOperationParamFlag(rdr.ReadEnum());
end;
@ -329,7 +329,7 @@ var
ii, cc : LongInt;
pp : POperationParam;
begin
AOperation^.Name := rdr.ReadStr();
AOperation^.Name := rdr.ReadAnsiStr();
AOperation^.Properties := nil;
cc := rdr.ReadInt8U();
if ( cc > 0 ) then begin
@ -349,7 +349,7 @@ var
j, k : LongInt;
po : PServiceOperation;
begin
AService^.Name := rdr.ReadStr();
AService^.Name := rdr.ReadAnsiStr();
AService^.Properties := nil;
k := rdr.ReadInt8U();
if ( k > 0 ) then begin
@ -372,14 +372,14 @@ var
begin
ARepository := nil;
rdr := CreateBinaryReader(AStream);
buf := rdr.ReadStr();
buf := rdr.ReadAnsiStr();
if ( sWST_SIGNATURE <> buf ) then
raise EMetadataException.CreateFmt('Invalid Metadata signature : "%s"',[buf]);
c := SizeOf(TServiceRepository);
ARepository := wst_GetMem(c);
try
FillChar(ARepository^,c,#0);
ARepository^.Name := rdr.ReadStr();
ARepository^.Name := rdr.ReadAnsiStr();
c := rdr.ReadInt8U();
if ( c > 0 ) then begin
ARepository^.Services := wst_GetMem( c * SizeOf(TService) );

View File

@ -346,6 +346,38 @@ begin
SetStrProp(AObject,APropInfo.PropInfo,locData);
end;
{$IFDEF WST_UNICODESTRING}
procedure UnicodeStringReader(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : UnicodeString;
begin
locData := '';
locName := APropInfo.ExternalName;
AStore.Get(APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locName,locData);
SetUnicodeStrProp(AObject,APropInfo.PropInfo,locData);
end;
{$ENDIF WST_UNICODESTRING}
procedure WideStringReader(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : WideString;
begin
locData := '';
locName := APropInfo.ExternalName;
AStore.Get(APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locName,locData);
SetWideStrProp(AObject,APropInfo.PropInfo,locData);
end;
// Qualified readers
{$IFDEF HAS_TKBOOL}
procedure BoolReaderQualifier(
@ -524,6 +556,38 @@ begin
SetStrProp(AObject,APropInfo.PropInfo,locData);
end;
{$IFDEF WST_UNICODESTRING}
procedure UnicodeStringReaderQualified(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : UnicodeString;
begin
locData := '';
locName := APropInfo.ExternalName;
AStore.Get(APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},APropInfo.NameSpace,locName,locData);
SetUnicodeStrProp(AObject,APropInfo.PropInfo,locData);
end;
{$ENDIF WST_UNICODESTRING}
procedure WideStringReaderQualified(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : WideString;
begin
locData := '';
locName := APropInfo.ExternalName;
AStore.Get(APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},APropInfo.NameSpace,locName,locData);
SetWideStrProp(AObject,APropInfo.PropInfo,locData);
end;
// Simple Writers
{$IFDEF HAS_TKBOOL}
procedure BoolWriter(
@ -687,6 +751,35 @@ begin
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
{$IFDEF WST_UNICODESTRING}
procedure UnicodeStringWriter(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : UnicodeString;
begin
locName := APropInfo.ExternalName;
locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo);
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
{$ENDIF WST_UNICODESTRING}
procedure WideStringWriter(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : WideString;
begin
locName := APropInfo.ExternalName;
locData := GetWideStrProp(AObject,APropInfo.PropInfo);
AStore.Put(locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
// Qualified writers
{$IFDEF HAS_TKBOOL}
@ -851,6 +944,35 @@ begin
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
{$IFDEF WST_UNICODESTRING}
procedure UnicodeStringWriterQualified(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : UnicodeString;
begin
locName := APropInfo.ExternalName;
locData := GetUnicodeStrProp(AObject,APropInfo.PropInfo);
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
{$ENDIF WST_UNICODESTRING}
procedure WideStringWriterQualified(
AObject : TObject;
APropInfo : TPropSerializationInfo;
AStore : IFormatterBase
);
var
locName : string;
locData : WideString;
begin
locName := APropInfo.ExternalName;
locData := GetWideStrProp(AObject,APropInfo.PropInfo);
AStore.Put(APropInfo.NameSpace,locName,APropInfo.PropInfo^.PropType{$IFDEF WST_DELPHI}^{$ENDIF},locData);
end;
type
@ -863,54 +985,68 @@ var
{$IFDEF FPC}
ReaderWriterInfoMap : array[0..1] of array[TTypeKind] of TReaderWriterInfo = (
( // Readers
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkUnknown
( Simple : {$IFDEF FPC}@{$ENDIF}IntEnumReader; Qualified : {$IFDEF FPC}@{$ENDIF}IntEnumReaderQualified ;) , //tkInteger
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkChar
( Simple : {$IFDEF FPC}@{$ENDIF}IntEnumReader; Qualified : {$IFDEF FPC}@{$ENDIF}IntEnumReaderQualified ;) , //tkEnumeration
( Simple : {$IFDEF FPC}@{$ENDIF}FloatReader; Qualified : {$IFDEF FPC}@{$ENDIF}FloatReaderQualified ;) , //tkFloat
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkSet
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkMethod
( Simple : {$IFDEF FPC}@{$ENDIF}StringReader; Qualified : {$IFDEF FPC}@{$ENDIF}StringReaderQualified ;) , //tkSString
( Simple : {$IFDEF FPC}@{$ENDIF}StringReader; Qualified : {$IFDEF FPC}@{$ENDIF}StringReaderQualified ;) , //tkLString
( Simple : {$IFDEF FPC}@{$ENDIF}StringReader; Qualified : {$IFDEF FPC}@{$ENDIF}StringReaderQualified ;) , //tkAString
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkWString
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkVariant
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkArray
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkRecord
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkInterface
( Simple : {$IFDEF FPC}@{$ENDIF}ClassReader; Qualified : {$IFDEF FPC}@{$ENDIF}ClassReaderQualified ;) , //tkClass
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkObject
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkWChar
( Simple : {$IFDEF FPC}@{$ENDIF}BoolReader; Qualified : {$IFDEF FPC}@{$ENDIF}BoolReaderQualifier ;) , //tkBool
( Simple : {$IFDEF FPC}@{$ENDIF}Int64Reader; Qualified : {$IFDEF FPC}@{$ENDIF}Int64ReaderQualified ;) , //tkInt64
( Simple : {$IFDEF FPC}@{$ENDIF}Int64Reader; Qualified : {$IFDEF FPC}@{$ENDIF}Int64ReaderQualified ;) , //tkQWord
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkDynArray
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) //tkInterfaceRaw
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkUnknown
( Simple : @IntEnumReader; Qualified : @IntEnumReaderQualified ;) , //tkInteger
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkChar
( Simple : @IntEnumReader; Qualified : @IntEnumReaderQualified ;) , //tkEnumeration
( Simple : @FloatReader; Qualified : @FloatReaderQualified ;) , //tkFloat
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkSet
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkMethod
( Simple : @StringReader; Qualified : @StringReaderQualified ;) , //tkSString
( Simple : @StringReader; Qualified : @StringReaderQualified ;) , //tkLString
( Simple : @StringReader; Qualified : @StringReaderQualified ;) , //tkAString
( Simple : @WideStringReader; Qualified : @WideStringReaderQualified ;) , //tkWString
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkVariant
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkArray
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkRecord
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkInterface
( Simple : @ClassReader; Qualified : @ClassReaderQualified ;) , //tkClass
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkObject
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkWChar
( Simple : @BoolReader; Qualified : @BoolReaderQualifier ;) , //tkBool
( Simple : @Int64Reader; Qualified : @Int64ReaderQualified ;) , //tkInt64
( Simple : @Int64Reader; Qualified : @Int64ReaderQualified ;) , //tkQWord
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkDynArray
( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkInterfaceRaw
{$IFDEF WST_TKPROCVAR}
,( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkProcVar
{$ENDIF WST_TKPROCVAR}
{$IFDEF WST_UNICODESTRING}
,( Simple : @UnicodeStringReader; Qualified : @UnicodeStringReaderQualified ;) //tkUString
,( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkUChar
{$ENDIF WST_UNICODESTRING}
),
( // Writers
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkUnknown
( Simple : {$IFDEF FPC}@{$ENDIF}IntEnumWriter; Qualified : {$IFDEF FPC}@{$ENDIF}IntEnumWriterQualified ;) , //tkInteger
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkChar
( Simple : {$IFDEF FPC}@{$ENDIF}IntEnumWriter; Qualified : {$IFDEF FPC}@{$ENDIF}IntEnumWriterQualified ;) , //tkEnumeration
( Simple : {$IFDEF FPC}@{$ENDIF}FloatWriter; Qualified : {$IFDEF FPC}@{$ENDIF}FloatWriterQualified ;) , //tkFloat
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkSet
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkMethod
( Simple : {$IFDEF FPC}@{$ENDIF}StringWriter; Qualified : {$IFDEF FPC}@{$ENDIF}StringWriterQualified ;) , //tkSString
( Simple : {$IFDEF FPC}@{$ENDIF}StringWriter; Qualified : {$IFDEF FPC}@{$ENDIF}StringWriterQualified ;) , //tkLString
( Simple : {$IFDEF FPC}@{$ENDIF}StringWriter; Qualified : {$IFDEF FPC}@{$ENDIF}StringWriterQualified ;) , //tkAString
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkWString
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkVariant
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkArray
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkRecord
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkInterface
( Simple : {$IFDEF FPC}@{$ENDIF}ClassWriter; Qualified : {$IFDEF FPC}@{$ENDIF}ClassWriterQualified ;) , //tkClass
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkObject
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkWChar
( Simple : {$IFDEF FPC}@{$ENDIF}BoolWriter; Qualified : {$IFDEF FPC}@{$ENDIF}BoolWriterQualified ;) , //tkBool
( Simple : {$IFDEF FPC}@{$ENDIF}Int64Writer; Qualified : {$IFDEF FPC}@{$ENDIF}Int64WriterQualified ;) , //tkInt64
( Simple : {$IFDEF FPC}@{$ENDIF}Int64Writer; Qualified : {$IFDEF FPC}@{$ENDIF}Int64WriterQualified ;) , //tkQWord
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) , //tkDynArray
( Simple : {$IFDEF FPC}@{$ENDIF}ErrorProc; Qualified : {$IFDEF FPC}@{$ENDIF}ErrorProc ;) //tkInterfaceRaw
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkUnknown
( Simple : @IntEnumWriter; Qualified : @IntEnumWriterQualified ;) , //tkInteger
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkChar
( Simple : @IntEnumWriter; Qualified : @IntEnumWriterQualified ;) , //tkEnumeration
( Simple : @FloatWriter; Qualified : @FloatWriterQualified ;) , //tkFloat
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkSet
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkMethod
( Simple : @StringWriter; Qualified : @StringWriterQualified ;) , //tkSString
( Simple : @StringWriter; Qualified : @StringWriterQualified ;) , //tkLString
( Simple : @StringWriter; Qualified : @StringWriterQualified ;) , //tkAString
( Simple : @WideStringWriter; Qualified : @WideStringWriterQualified ;) , //tkWString
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkVariant
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkArray
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkRecord
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkInterface
( Simple : @ClassWriter; Qualified : @ClassWriterQualified ;) , //tkClass
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkObject
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkWChar
( Simple : @BoolWriter; Qualified : @BoolWriterQualified ;) , //tkBool
( Simple : @Int64Writer; Qualified : @Int64WriterQualified ;) , //tkInt64
( Simple : @Int64Writer; Qualified : @Int64WriterQualified ;) , //tkQWord
( Simple : @ErrorProc; Qualified : @ErrorProc ;) , //tkDynArray
( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkInterfaceRaw
{$IFDEF WST_TKPROCVAR}
,( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkProcVar
{$ENDIF WST_TKPROCVAR}
{$IFDEF WST_UNICODESTRING}
,( Simple : @UnicodeStringWriter; Qualified : @UnicodeStringWriterQualified ;) //tkUString
,( Simple : @ErrorProc; Qualified : @ErrorProc ;) //tkUChar
{$ENDIF WST_UNICODESTRING}
)
);
{$ENDIF FPC}
@ -929,7 +1065,7 @@ var
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkMethod
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkWChar
( Simple : StringReader; Qualified : StringReaderQualified ;) , //tkLString
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkWString
( Simple : WideStringReader; Qualified : WideStringReaderQualified ;) , //tkWString
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkVariant
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkArray
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkRecord
@ -949,7 +1085,7 @@ var
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkMethod
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkWChar
( Simple : StringWriter; Qualified : StringWriterQualified ;) , //tkLString
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkWString
( Simple : WideStringWriter; Qualified : WideStringWriterQualified ;) , //tkWString
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkVariant
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkArray
( Simple : ErrorProc; Qualified : ErrorProc ;) , //tkRecord

View File

@ -18,7 +18,7 @@ interface
uses
Classes, SysUtils,
service_intf, imp_utils,
server_service_intf, server_service_imputils, base_service_intf;
server_service_intf, server_service_imputils, base_service_intf, wst_types;
Const
sTRANSPORT_NAME = 'SAME_PROCESS';
@ -73,7 +73,7 @@ procedure TInProcessTransport.SendAndReceive(ARequest, AResponse: TStream);
Var
bffr : IRequestBuffer;
{$IFDEF WST_DBG}
s : string;
s : TBinaryString;
i : Int64;
{$ENDIF WST_DBG}
begin

View File

@ -163,7 +163,7 @@ procedure THTTPTransport.SendAndReceive(ARequest, AResponse: TStream);
end;
var
s : string;
s : TBinaryString;
{$ENDIF}
begin
FConnection.Document.Size := 0;

View File

@ -119,13 +119,13 @@ begin
Try
wrtr := CreateBinaryWriter(buffStream);
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
wrtr.WriteStr(Self.Format);
wrtr.WriteAnsiStr(Target);
wrtr.WriteAnsiStr(ContentType);
wrtr.WriteAnsiStr(Self.Format);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));
wrtr.WriteStr(strBuff);
wrtr.WriteAnsiStr(strBuff);
buffStream.Position := 0;
wrtr.WriteInt32S(buffStream.Size-4);

View File

@ -27,6 +27,7 @@ const
function CompareNodes(const A,B : TDOMNode) : Boolean;overload;
function wstExpandLocalFileName(const AFileName : string) : string;
function DumpMemory(AMem : Pointer; const ALength : PtrInt) : ansistring;
implementation
@ -35,6 +36,17 @@ begin
Result := AFileName;
end;
function DumpMemory(AMem : Pointer; const ALength : PtrInt) : ansistring;
var
i : PtrInt;
begin
Result := '';
for i := 0 to Pred(ALength) do begin
Result := Result + '[' + IntToStr(Ord(PAnsiChar(AMem)^)) + ']';
Inc(PAnsiChar(AMem));
end;
end;
function CompareNodes(const A,B : TDOMNode) : Boolean;overload;
var
ca, cb : TDOMNode;

File diff suppressed because it is too large Load Diff

View File

@ -21,11 +21,6 @@
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="FPCUnitTestRunner"/>
</Item1>
</RequiredPackages>
<Units Count="39">
<Unit0>
<Filename Value="wst_test_suite.lpr"/>
@ -225,7 +220,7 @@
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<Version Value="8"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="wst_test_suite.exe"/>
@ -246,7 +241,6 @@
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
</Checks>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>

View File

@ -128,7 +128,7 @@
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<Version Value="8"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="wst_test_suite_gui.exe"/>
@ -143,7 +143,6 @@
<RangeChecks Value="True"/>
<OverflowChecks Value="True"/>
</Checks>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>

View File

@ -58,8 +58,8 @@ var
typeList : TList;
elt : TPasElement;
begin
FStream.WriteStr(sWST_META);
FStream.WriteStr(FSymbolTable.CurrentModule.Name);
FStream.WriteAnsiStr(sWST_META);
FStream.WriteAnsiStr(FSymbolTable.CurrentModule.Name);
k := 0;
typeList := FSymbolTable.CurrentModule.InterfaceSection.Declarations;
c := typeList.Count;
@ -77,15 +77,15 @@ procedure TMetadataGenerator.GenerateIntfMetadata(AIntf: TPasClassType);
procedure WriteParam(APrm : TPasArgument);
begin
FStream.WriteStr(APrm.Name);
FStream.WriteStr(APrm.ArgType.Name);
FStream.WriteAnsiStr(APrm.Name);
FStream.WriteAnsiStr(APrm.ArgType.Name);
FStream.WriteEnum(Ord(APrm.Access));
end;
procedure WriteResult(ARes : TPasResultElement);
begin
FStream.WriteStr(ARes.Name);
FStream.WriteStr(ARes.ResultType.Name);
FStream.WriteAnsiStr(ARes.Name);
FStream.WriteAnsiStr(ARes.ResultType.Name);
FStream.WriteEnum(Ord(argOut));
end;
@ -95,7 +95,7 @@ procedure TMetadataGenerator.GenerateIntfMetadata(AIntf: TPasClassType);
begin
argLst := AMeth.ProcType.Args;
k := argLst.Count;
FStream.WriteStr(AMeth.Name);
FStream.WriteAnsiStr(AMeth.Name);
if AMeth.InheritsFrom(TPasFunction) then begin
FStream.WriteInt8U(k + 1);
end else begin
@ -114,7 +114,7 @@ var
mbrs : TList;
elt : TPasElement;
begin
FStream.WriteStr(AIntf.Name);
FStream.WriteAnsiStr(AIntf.Name);
c := GetElementCount(AIntf.Members,TPasProcedure);
FStream.WriteInt8U(c);
mbrs := AIntf.Members;

View File

@ -1,5 +1,7 @@
{$DEFINE USE_SERIALIZE}
{$UNDEF TRemotableTypeInitializer_Initialize}
{$UNDEF WST_TKPROCVAR}
{$UNDEF WST_UNICODESTRING}
{$WARNINGS OFF}
@ -10,8 +12,14 @@
{$UNDEF WST_INTF_DOM}
//{$DEFINE USE_INLINE}
{$IF Defined(FPC_VERSION) and (FPC_VERSION = 2) }
{$IF Defined(FPC_RELEASE) and (FPC_RELEASE > 0) }
{$define FPC_211}
{$IF Defined(FPC_RELEASE) }
{$IF Defined(FPC_VERSION) and (FPC_RELEASE > 0) }
{$define FPC_211}
{$IF Defined(FPC_VERSION) and (FPC_RELEASE > 2) }
{$DEFINE WST_TKPROCVAR}
{$DEFINE WST_UNICODESTRING}
{$IFEND}
{$IFEND}
{$IFEND}
{$IFEND}
{$IF Defined(FPC_211)}