Object Pascal "record" serialization ( first commit! )

TTest_TIntfPoolItem
TTest_TSimpleItemFactory
TTest_XmlRpcFormatterExceptionBlock
TTest_SoapFormatterExceptionBlock
Record serialization test

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@243 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-08-19 00:29:43 +00:00
parent bbee29cb90
commit 11a897fc26
60 changed files with 4375 additions and 893 deletions

View File

@@ -0,0 +1,305 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<Version Value="5"/>
<General>
<Flags>
<MainUnitHasUsesSectionForAllUnits Value="False"/>
<MainUnitHasCreateFormStatements Value="False"/>
<MainUnitHasTitleStatement Value="False"/>
</Flags>
<MainUnit Value="0"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
<Language Value=""/>
<CharSet Value=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="12">
<Unit0>
<Filename Value="test_record.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="test_record"/>
<CursorPos X="31" Y="37"/>
<TopLine Value="17"/>
<EditorIndex Value="0"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\sysutils.pp"/>
<UnitName Value="sysutils"/>
<CursorPos X="10" Y="33"/>
<TopLine Value="49"/>
<EditorIndex Value="9"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="11" Y="236"/>
<TopLine Value="210"/>
<UsageCount Value="10"/>
</Unit2>
<Unit3>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\intfh.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="4"/>
<UsageCount Value="10"/>
</Unit3>
<Unit4>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="7" Y="75"/>
<TopLine Value="60"/>
<EditorIndex Value="8"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\rtti.inc"/>
<CursorPos X="3" Y="132"/>
<TopLine Value="43"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\record_rtti.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="record_rtti"/>
<CursorPos X="13" Y="28"/>
<TopLine Value="7"/>
<EditorIndex Value="1"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.inc"/>
<CursorPos X="20" Y="244"/>
<TopLine Value="222"/>
<EditorIndex Value="4"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<CursorPos X="11" Y="865"/>
<TopLine Value="845"/>
<EditorIndex Value="5"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\systhrd.inc"/>
<CursorPos X="14" Y="137"/>
<TopLine Value="137"/>
<EditorIndex Value="7"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\aliases.inc"/>
<CursorPos X="11" Y="31"/>
<TopLine Value="1"/>
<EditorIndex Value="3"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\compproc.inc"/>
<CursorPos X="32" Y="408"/>
<TopLine Value="391"/>
<EditorIndex Value="6"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit11>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="101" Column="1" TopLine="77"/>
</Position1>
<Position2>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="95" Column="1" TopLine="77"/>
</Position2>
<Position3>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="96" Column="1" TopLine="77"/>
</Position3>
<Position4>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="97" Column="1" TopLine="77"/>
</Position4>
<Position5>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="98" Column="1" TopLine="77"/>
</Position5>
<Position6>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="99" Column="1" TopLine="77"/>
</Position6>
<Position7>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="100" Column="1" TopLine="77"/>
</Position7>
<Position8>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="101" Column="1" TopLine="77"/>
</Position8>
<Position9>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="103" Column="1" TopLine="77"/>
</Position9>
<Position10>
<Filename Value="test_record.pas"/>
<Caret Line="43" Column="1" TopLine="17"/>
</Position10>
<Position11>
<Filename Value="test_record.pas"/>
<Caret Line="22" Column="1" TopLine="7"/>
</Position11>
<Position12>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="103" Column="22" TopLine="77"/>
</Position12>
<Position13>
<Filename Value="test_record.pas"/>
<Caret Line="42" Column="1" TopLine="17"/>
</Position13>
<Position14>
<Filename Value="test_record.pas"/>
<Caret Line="32" Column="50" TopLine="17"/>
</Position14>
<Position15>
<Filename Value="test_record.pas"/>
<Caret Line="31" Column="50" TopLine="17"/>
</Position15>
<Position16>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="15" Column="24" TopLine="1"/>
</Position16>
<Position17>
<Filename Value="test_record.pas"/>
<Caret Line="27" Column="29" TopLine="17"/>
</Position17>
<Position18>
<Filename Value="test_record.pas"/>
<Caret Line="42" Column="1" TopLine="17"/>
</Position18>
<Position19>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="97" Column="29" TopLine="78"/>
</Position19>
<Position20>
<Filename Value="test_record.pas"/>
<Caret Line="42" Column="1" TopLine="17"/>
</Position20>
<Position21>
<Filename Value="test_record.pas"/>
<Caret Line="33" Column="1" TopLine="17"/>
</Position21>
<Position22>
<Filename Value="test_record.pas"/>
<Caret Line="42" Column="1" TopLine="17"/>
</Position22>
<Position23>
<Filename Value="test_record.pas"/>
<Caret Line="33" Column="55" TopLine="17"/>
</Position23>
<Position24>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\rtti.inc"/>
<Caret Line="139" Column="38" TopLine="130"/>
</Position24>
<Position25>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.inc"/>
<Caret Line="244" Column="20" TopLine="222"/>
</Position25>
<Position26>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<Caret Line="739" Column="10" TopLine="651"/>
</Position26>
<Position27>
<Filename Value="..\..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<Caret Line="865" Column="11" TopLine="845"/>
</Position27>
<Position28>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="97" Column="44" TopLine="78"/>
</Position28>
<Position29>
<Filename Value="test_record.pas"/>
<Caret Line="42" Column="24" TopLine="17"/>
</Position29>
<Position30>
<Filename Value="..\record_rtti.pas"/>
<Caret Line="40" Column="73" TopLine="40"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="C:\Programmes\lazarus\wst\trunk\tests\record\"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="4">
<Item1>
<Source Value="..\..\..\samples\http_server\D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="230"/>
</Item1>
<Item2>
<Source Value="..\..\..\samples\http_server\D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="193"/>
</Item2>
<Item3>
<Source Value="..\..\..\samples\http_server\D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="198"/>
</Item3>
<Item4>
<Source Value="..\..\..\ws_helper\wsdl2pas_imp.pas"/>
<Line Value="606"/>
</Item4>
</BreakPoints>
<Watches Count="2">
<Item1>
<Expression Value="locStrFilter"/>
</Item1>
<Item2>
<Expression Value="i"/>
</Item2>
</Watches>
<Exceptions Count="2">
<Item1>
<Name Value="ECodetoolError"/>
</Item1>
<Item2>
<Name Value="EFOpenError"/>
</Item2>
</Exceptions>
</Debugging>
</CONFIG>

View File

@@ -0,0 +1,47 @@
program test_record;
{$mode objfpc}{$H+}
uses
Classes, SysUtils
,TypInfo, record_rtti;
type
TSampleRecord = record
fieldA : Integer;
fieldB : Single;
end;
procedure PrintRecType(ARecTyp : PRecordTypeData);
var
i : Integer;
f : TRecordFieldInfo;
begin
Assert(Assigned(ARecTyp));
WriteLn('');
WriteLn('Type name = ', ARecTyp^.Name);
WriteLn(' RecordSize = ', ARecTyp^.RecordSize);
WriteLn(' FieldCount = ', ARecTyp^.FieldCount);
for i := 1 to ARecTyp^.FieldCount do begin
f := ARecTyp^.Fields[i-1];
WriteLn(' Field[',i,']');
WriteLn(' Name = ',f.Name);
WriteLn(' Offset = ',f.Offset);
WriteLn(' TypeInfo = ',PtrUInt(f.TypeInfo));
if ( f.TypeInfo <> nil ) then begin
WriteLn(' TypeInfo^.Name = ',f.TypeInfo^^.Name);
end;
end;
WriteLn('');
end;
var
recTyp : PRecordTypeData;
begin
recTyp := MakeRecordTypeInfo(TypeInfo(TSampleRecord));
PrintRecType(recTyp);
FreeRecordTypeInfo(recTyp);
ReadLn;
end.