Changeset 30


Ignore:
Timestamp:
Sep 8, 2012, 9:28:39 PM (12 years ago)
Author:
chronos
Message:
  • Updated: Component versions.
  • Added: Missing forms.
Location:
trunk
Files:
12 added
32 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        33backup
        44tunneler.exe
         5heaptrclog.trc
  • trunk/Components/CoolTranslator

    • Property svn:ignore set to
      lib
  • trunk/Components/CoolTranslator/Demo/Languages/TranslatorDemo.cs.po

    r29 r30  
    1919msgstr "Ukázat MainForm.Name"
    2020
     21#: TMAINFORM.CAPTION
     22msgctxt "TMAINFORM.CAPTION"
     23msgid "Translator Demo"
     24msgstr "Ukázka Translatoru"
     25
    2126#: TMAINFORM.LABEL1.CAPTION
    2227msgid "MainForm"
     
    3540msgstr ""
    3641
    37 #: TMAINFORM.MAINFORM.CAPTION
    38 msgctxt "TMAINFORM.MAINFORM.CAPTION"
    39 msgid "Translator Demo"
    40 msgstr "Ukázka Translatoru"
    41 
    4242#: umainform.stranslatedtext
    4343msgid "Text stored in resourcestring"
  • trunk/Components/CoolTranslator/Demo/Languages/TranslatorDemo.de.po

    r29 r30  
    99#: TMAINFORM.BUTTON1.CAPTION
    1010msgid "Show MainForm.Name"
     11msgstr ""
     12
     13#: TMAINFORM.CAPTION
     14msgctxt "TMAINFORM.CAPTION"
     15msgid "Translator Demo"
    1116msgstr ""
    1217
     
    2732msgstr ""
    2833
    29 #: TMAINFORM.MAINFORM.CAPTION
    30 msgctxt "TMAINFORM.MAINFORM.CAPTION"
    31 msgid "Translator Demo"
    32 msgstr ""
    33 
    3434#: umainform.stranslatedtext
    3535msgid "Text stored in resourcestring"
  • trunk/Components/CoolTranslator/Demo/Languages/TranslatorDemo.po

    r29 r30  
    99#: TMAINFORM.BUTTON1.CAPTION
    1010msgid "Show MainForm.Name"
     11msgstr ""
     12
     13#: TMAINFORM.CAPTION
     14msgctxt "TMAINFORM.CAPTION"
     15msgid "Translator Demo"
    1116msgstr ""
    1217
     
    2732msgstr ""
    2833
    29 #: TMAINFORM.MAINFORM.CAPTION
    30 msgctxt "TMAINFORM.MAINFORM.CAPTION"
    31 msgid "Translator Demo"
    32 msgstr ""
    33 
    3434#: umainform.stranslatedtext
    3535msgid "Text stored in resourcestring"
  • trunk/Components/CoolTranslator/Demo/TranslatorDemo.lpi

    r29 r30  
    4040      </Item2>
    4141    </RequiredPackages>
    42     <Units Count="11">
     42    <Units Count="12">
    4343      <Unit0>
    4444        <Filename Value="TranslatorDemo.lpr"/>
     
    5555        <EditorIndex Value="0"/>
    5656        <WindowIndex Value="0"/>
    57         <TopLine Value="39"/>
    58         <CursorPos X="45" Y="48"/>
     57        <TopLine Value="1"/>
     58        <CursorPos X="29" Y="18"/>
    5959        <UsageCount Value="21"/>
    6060        <Loaded Value="True"/>
     
    6464        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\stdctrls.pp"/>
    6565        <UnitName Value="StdCtrls"/>
    66         <EditorIndex Value="8"/>
    6766        <WindowIndex Value="0"/>
    6867        <TopLine Value="565"/>
    6968        <CursorPos X="24" Y="577"/>
    7069        <UsageCount Value="11"/>
    71         <Loaded Value="True"/>
    7270      </Unit2>
    7371      <Unit3>
    7472        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\FPC\rtl\objpas\classes\classesh.inc"/>
    75         <EditorIndex Value="9"/>
    7673        <WindowIndex Value="0"/>
    7774        <TopLine Value="686"/>
    7875        <CursorPos X="3" Y="659"/>
    7976        <UsageCount Value="11"/>
    80         <Loaded Value="True"/>
    8177      </Unit3>
    8278      <Unit4>
    8379        <Filename Value="..\UCoolTranslator.pas"/>
    8480        <UnitName Value="UCoolTranslator"/>
    85         <EditorIndex Value="3"/>
     81        <IsVisibleTab Value="True"/>
     82        <EditorIndex Value="1"/>
    8683        <WindowIndex Value="0"/>
    8784        <TopLine Value="274"/>
    88         <CursorPos X="29" Y="279"/>
     85        <CursorPos X="1" Y="286"/>
    8986        <UsageCount Value="11"/>
    9087        <Loaded Value="True"/>
     
    9289      <Unit5>
    9390        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\include\customlistbox.inc"/>
    94         <EditorIndex Value="2"/>
    9591        <WindowIndex Value="0"/>
    9692        <TopLine Value="524"/>
    9793        <CursorPos X="1" Y="535"/>
    9894        <UsageCount Value="10"/>
    99         <Loaded Value="True"/>
    10095      </Unit5>
    10196      <Unit6>
    10297        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\interfaces\win32\win32listsl.inc"/>
    103         <EditorIndex Value="1"/>
    10498        <WindowIndex Value="0"/>
    10599        <TopLine Value="226"/>
    106100        <CursorPos X="1" Y="238"/>
    107101        <UsageCount Value="10"/>
    108         <Loaded Value="True"/>
    109102      </Unit6>
    110103      <Unit7>
    111104        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\include\winfileutil.inc"/>
    112         <EditorIndex Value="6"/>
    113105        <WindowIndex Value="0"/>
    114106        <TopLine Value="549"/>
    115107        <CursorPos X="1" Y="566"/>
    116108        <UsageCount Value="10"/>
    117         <Loaded Value="True"/>
    118109      </Unit7>
    119110      <Unit8>
    120111        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\translations.pas"/>
    121112        <UnitName Value="Translations"/>
    122         <IsVisibleTab Value="True"/>
    123         <EditorIndex Value="7"/>
    124113        <WindowIndex Value="0"/>
    125114        <TopLine Value="747"/>
    126115        <CursorPos X="54" Y="759"/>
    127116        <UsageCount Value="10"/>
    128         <Loaded Value="True"/>
    129117      </Unit8>
    130118      <Unit9>
    131119        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\include\control.inc"/>
    132         <EditorIndex Value="5"/>
    133120        <WindowIndex Value="0"/>
    134121        <TopLine Value="2702"/>
    135122        <CursorPos X="18" Y="2717"/>
    136123        <UsageCount Value="10"/>
    137         <Loaded Value="True"/>
    138124      </Unit9>
    139125      <Unit10>
    140126        <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\FPC\rtl\inc\objpash.inc"/>
    141         <EditorIndex Value="4"/>
    142127        <WindowIndex Value="0"/>
    143128        <TopLine Value="189"/>
    144129        <CursorPos X="26" Y="201"/>
    145130        <UsageCount Value="10"/>
     131      </Unit10>
     132      <Unit11>
     133        <Filename Value="..\ULanguages.pas"/>
     134        <UnitName Value="ULanguages"/>
     135        <EditorIndex Value="2"/>
     136        <WindowIndex Value="0"/>
     137        <TopLine Value="1"/>
     138        <CursorPos X="32" Y="10"/>
     139        <UsageCount Value="10"/>
    146140        <Loaded Value="True"/>
    147       </Unit10>
     141      </Unit11>
    148142    </Units>
    149143    <JumpHistory Count="30" HistoryIndex="29">
     
    253247      </Position26>
    254248      <Position27>
    255         <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\translations.pas"/>
    256         <Caret Line="759" Column="1" TopLine="747"/>
     249        <Filename Value="UMainForm.pas"/>
     250        <Caret Line="48" Column="45" TopLine="39"/>
    257251      </Position27>
    258252      <Position28>
    259         <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\translations.pas"/>
    260         <Caret Line="760" Column="1" TopLine="747"/>
     253        <Filename Value="UMainForm.pas"/>
     254        <Caret Line="59" Column="20" TopLine="39"/>
    261255      </Position28>
    262256      <Position29>
    263         <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\translations.pas"/>
    264         <Caret Line="761" Column="1" TopLine="747"/>
     257        <Filename Value="UMainForm.pas"/>
     258        <Caret Line="9" Column="29" TopLine="1"/>
    265259      </Position29>
    266260      <Position30>
    267         <Filename Value="E:\Projekty2\FreePascalManager\trunk\Instance\5\Lazarus\lcl\translations.pas"/>
    268         <Caret Line="762" Column="1" TopLine="747"/>
     261        <Filename Value="UMainForm.pas"/>
     262        <Caret Line="18" Column="29" TopLine="1"/>
    269263      </Position30>
    270264    </JumpHistory>
    271265  </ProjectOptions>
    272266  <CompilerOptions>
    273     <Version Value="9"/>
     267    <Version Value="10"/>
    274268    <PathDelim Value="\"/>
    275269    <Target>
     
    281275    </SearchPaths>
    282276    <Linking>
     277      <Debugging>
     278        <GenerateDebugInfo Value="True"/>
     279        <DebugInfoType Value="dsAuto"/>
     280      </Debugging>
    283281      <Options>
    284282        <Win32>
     
    295293  </CompilerOptions>
    296294  <Debugging>
    297     <BreakPoints Count="1">
    298       <Item1>
    299         <Source Value="..\UCoolTranslator.pas"/>
    300         <Line Value="279"/>
    301       </Item1>
    302     </BreakPoints>
    303295    <Exceptions Count="3">
    304296      <Item1>
  • trunk/Components/CoolTranslator/Demo/UMainForm.lfm

    r29 r30  
    88  ClientWidth = 466
    99  OnCreate = FormCreate
    10   LCLVersion = '0.9.30.1'
     10  LCLVersion = '0.9.31'
    1111  object ListBox1: TListBox
    1212    Left = 171
     
    6868  end
    6969  object CoolTranslator1: TCoolTranslator
     70    POFilesFolder = 'Languages'
    7071    left = 64
    7172    top = 40
  • trunk/Components/CoolTranslator/Demo/UMainForm.lrt

    r29 r30  
    1 TMAINFORM.MAINFORM.CAPTION=Translator Demo
     1TMAINFORM.CAPTION=Translator Demo
    22TMAINFORM.BUTTON1.CAPTION=Show MainForm.Name
    33TMAINFORM.LABEL1.CAPTION=MainForm
  • trunk/Components/CoolTranslator/Demo/UMainForm.pas

    r29 r30  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    9   UCoolTranslator;
     9  UCoolTranslator, ULanguages;
    1010
    1111type
  • trunk/Components/CoolTranslator/UCoolTranslator.pas

    r29 r30  
    1010
    1111type
     12  THandleStringEvent = function (AValue: string): string of object;
     13
    1214  { TComponentExcludes }
    1315
     
    3133  private
    3234    FLanguage: TLanguage;
     35    FOnAutomaticLanguage: THandleStringEvent;
    3336    FOnTranslate: TNotifyEvent;
    3437    FPOFilesFolder: string;
     
    4043    procedure ReloadFiles;
    4144    procedure SetPOFilesFolder(const AValue: string);
    42     procedure Translate;
    4345    procedure SetLanguage(const AValue: TLanguage);
    4446    procedure TranslateProperty(Component: TPersistent; PropInfo: PPropInfo);
     
    4749    ComponentExcludes: TComponentExcludesList;
    4850    Languages: TLanguageList;
     51    procedure Translate;
    4952    procedure LanguageListToStrings(Strings: TStrings);
    5053    procedure TranslateResourceStrings(PoFileName: string);
     
    6164    property Language: TLanguage read FLanguage write SetLanguage;
    6265    property OnTranslate: TNotifyEvent read FOnTranslate write FOnTranslate;
     66    property OnAutomaticLanguage: THandleStringEvent read FOnAutomaticLanguage
     67      write FOnAutomaticLanguage;
    6368  end;
    6469
     
    131136      for J := 0 to Items.Count - 1 do
    132137      with TPoFileItem(Items[J]) do
    133         Po.Add(Identifier, Original, Translation, Comments, Context,
     138        Po.Add(IdentifierLow, Original, Translation, Comments, Context,
    134139          Flags, PreviousID);
    135140    Translations.TranslateResourceStrings(Po);
     
    152157    //ShowMessage(ExtractFileDir(Application.ExeName) +
    153158    //  DirectorySeparator + 'Languages' + ' ' + '*.' + LocaleShort + '.po');
    154     FileList := FindAllFiles(ExtractFileDir(Application.ExeName) +
    155       DirectorySeparator + 'Languages', '*.' + LocaleShort + '.po');
     159    FileList := FindAllFiles(ExtractFileDir(UTF8Encode(Application.ExeName)) +
     160      DirectorySeparator + FPOFilesFolder, '*.' + LocaleShort + '.po');
    156161    for I := 0 to FileList.Count - 1 do begin
    157162      FileName := FileList[I];
     
    393398    LCLGetLanguageIDs(Lang, T);
    394399
     400  if Assigned(Language) and (Language.Code = '') and Assigned(FOnAutomaticLanguage) then begin
     401    Lang := FOnAutomaticLanguage(Lang);
     402  end;
     403
    395404  if Lang = 'en' then Lang := ''; // English files are without en code
     405
    396406  Result := Lang;
    397407end;
  • trunk/Components/TemplateGenerics

    • Property svn:ignore set to
      lib
  • trunk/Components/TemplateGenerics/Demo/Demo.lpi

    r29 r30  
    3333      <Item1>
    3434        <PackageName Value="TemplateGenerics"/>
     35        <DefaultFilename Value="../TemplateGenerics.lpk" Prefer="True"/>
    3536      </Item1>
    3637      <Item2>
     
    3839      </Item2>
    3940    </RequiredPackages>
    40     <Units Count="62">
     41    <Units Count="75">
    4142      <Unit0>
    4243        <Filename Value="Demo.lpr"/>
     
    5758        <EditorIndex Value="0"/>
    5859        <WindowIndex Value="0"/>
    59         <TopLine Value="232"/>
    60         <CursorPos X="19" Y="237"/>
     60        <TopLine Value="640"/>
     61        <CursorPos X="20" Y="653"/>
    6162        <UsageCount Value="233"/>
    6263        <Bookmarks Count="1">
    63           <Item0 X="65" Y="224" ID="2"/>
     64          <Item0 X="65" Y="275" ID="2"/>
    6465        </Bookmarks>
    6566        <Loaded Value="True"/>
     
    7374        <TopLine Value="1"/>
    7475        <CursorPos X="1" Y="11"/>
    75         <UsageCount Value="4"/>
     76        <UsageCount Value="3"/>
    7677      </Unit2>
    7778      <Unit3>
    7879        <Filename Value="../Specialized/SpecializedList.pas"/>
    7980        <UnitName Value="SpecializedList"/>
    80         <EditorIndex Value="2"/>
    81         <WindowIndex Value="0"/>
    82         <TopLine Value="3"/>
    83         <CursorPos X="43" Y="13"/>
    84         <UsageCount Value="10"/>
     81        <EditorIndex Value="3"/>
     82        <WindowIndex Value="0"/>
     83        <TopLine Value="47"/>
     84        <CursorPos X="20" Y="60"/>
     85        <UsageCount Value="15"/>
    8586        <Loaded Value="True"/>
    8687      </Unit3>
     
    9192        <TopLine Value="33"/>
    9293        <CursorPos X="12" Y="56"/>
    93         <UsageCount Value="4"/>
     94        <UsageCount Value="3"/>
    9495      </Unit4>
    9596      <Unit5>
     
    99100        <TopLine Value="1"/>
    100101        <CursorPos X="23" Y="21"/>
    101         <UsageCount Value="4"/>
     102        <UsageCount Value="3"/>
    102103      </Unit5>
    103104      <Unit6>
     
    107108        <TopLine Value="1"/>
    108109        <CursorPos X="23" Y="24"/>
    109         <UsageCount Value="4"/>
     110        <UsageCount Value="3"/>
    110111      </Unit6>
    111112      <Unit7>
     
    115116        <TopLine Value="1"/>
    116117        <CursorPos X="23" Y="13"/>
    117         <UsageCount Value="4"/>
     118        <UsageCount Value="3"/>
    118119      </Unit7>
    119120      <Unit8>
     
    123124        <TopLine Value="1"/>
    124125        <CursorPos X="23" Y="24"/>
    125         <UsageCount Value="4"/>
     126        <UsageCount Value="3"/>
    126127      </Unit8>
    127128      <Unit9>
     
    131132        <TopLine Value="1"/>
    132133        <CursorPos X="31" Y="13"/>
    133         <UsageCount Value="4"/>
     134        <UsageCount Value="3"/>
    134135      </Unit9>
    135136      <Unit10>
     
    139140        <TopLine Value="1"/>
    140141        <CursorPos X="29" Y="17"/>
    141         <UsageCount Value="4"/>
     142        <UsageCount Value="3"/>
    142143      </Unit10>
    143144      <Unit11>
     
    146147        <TopLine Value="1"/>
    147148        <CursorPos X="1" Y="4"/>
    148         <UsageCount Value="4"/>
     149        <UsageCount Value="3"/>
    149150        <DefaultSyntaxHighlighter Value="None"/>
    150151      </Unit11>
     
    154155        <TopLine Value="1"/>
    155156        <CursorPos X="21" Y="6"/>
    156         <UsageCount Value="4"/>
     157        <UsageCount Value="3"/>
    157158        <DefaultSyntaxHighlighter Value="None"/>
    158159      </Unit12>
     
    162163        <TopLine Value="1"/>
    163164        <CursorPos X="1" Y="1"/>
    164         <UsageCount Value="4"/>
     165        <UsageCount Value="3"/>
    165166        <DefaultSyntaxHighlighter Value="None"/>
    166167      </Unit13>
     
    170171        <TopLine Value="1"/>
    171172        <CursorPos X="25" Y="13"/>
    172         <UsageCount Value="5"/>
     173        <UsageCount Value="4"/>
    173174        <DefaultSyntaxHighlighter Value="None"/>
    174175      </Unit14>
     
    178179        <TopLine Value="4"/>
    179180        <CursorPos X="3" Y="6"/>
    180         <UsageCount Value="4"/>
     181        <UsageCount Value="3"/>
    181182        <DefaultSyntaxHighlighter Value="None"/>
    182183      </Unit15>
     
    186187        <TopLine Value="1"/>
    187188        <CursorPos X="14" Y="16"/>
    188         <UsageCount Value="4"/>
     189        <UsageCount Value="3"/>
    189190        <DefaultSyntaxHighlighter Value="None"/>
    190191      </Unit16>
     
    195196        <TopLine Value="1"/>
    196197        <CursorPos X="32" Y="18"/>
    197         <UsageCount Value="4"/>
     198        <UsageCount Value="3"/>
    198199      </Unit17>
    199200      <Unit18>
     
    202203        <TopLine Value="1"/>
    203204        <CursorPos X="20" Y="12"/>
    204         <UsageCount Value="2"/>
     205        <UsageCount Value="1"/>
    205206        <DefaultSyntaxHighlighter Value="None"/>
    206207      </Unit18>
     
    211212        <TopLine Value="1"/>
    212213        <CursorPos X="1" Y="22"/>
    213         <UsageCount Value="2"/>
     214        <UsageCount Value="1"/>
    214215      </Unit19>
    215216      <Unit20>
     
    218219        <TopLine Value="1"/>
    219220        <CursorPos X="1" Y="1"/>
    220         <UsageCount Value="2"/>
     221        <UsageCount Value="1"/>
    221222        <DefaultSyntaxHighlighter Value="None"/>
    222223      </Unit20>
     
    226227        <TopLine Value="1"/>
    227228        <CursorPos X="1" Y="3"/>
    228         <UsageCount Value="2"/>
     229        <UsageCount Value="1"/>
    229230        <DefaultSyntaxHighlighter Value="None"/>
    230231      </Unit21>
     
    234235        <TopLine Value="1"/>
    235236        <CursorPos X="1" Y="3"/>
    236         <UsageCount Value="2"/>
     237        <UsageCount Value="1"/>
    237238        <DefaultSyntaxHighlighter Value="None"/>
    238239      </Unit22>
     
    243244        <TopLine Value="45"/>
    244245        <CursorPos X="9" Y="79"/>
    245         <UsageCount Value="1"/>
     246        <UsageCount Value="10"/>
    246247      </Unit23>
    247248      <Unit24>
     
    250251        <TopLine Value="1"/>
    251252        <CursorPos X="21" Y="4"/>
    252         <UsageCount Value="6"/>
     253        <UsageCount Value="5"/>
    253254        <DefaultSyntaxHighlighter Value="None"/>
    254255      </Unit24>
     
    259260        <TopLine Value="1"/>
    260261        <CursorPos X="1" Y="25"/>
    261         <UsageCount Value="6"/>
     262        <UsageCount Value="5"/>
    262263      </Unit25>
    263264      <Unit26>
     
    266267        <TopLine Value="1"/>
    267268        <CursorPos X="1" Y="3"/>
    268         <UsageCount Value="6"/>
     269        <UsageCount Value="5"/>
    269270        <DefaultSyntaxHighlighter Value="None"/>
    270271      </Unit26>
     
    274275        <TopLine Value="1"/>
    275276        <CursorPos X="7" Y="4"/>
    276         <UsageCount Value="6"/>
     277        <UsageCount Value="5"/>
    277278        <DefaultSyntaxHighlighter Value="None"/>
    278279      </Unit27>
     
    283284        <TopLine Value="1"/>
    284285        <CursorPos X="14" Y="15"/>
    285         <UsageCount Value="6"/>
     286        <UsageCount Value="5"/>
    286287      </Unit28>
    287288      <Unit29>
     
    290291        <TopLine Value="1"/>
    291292        <CursorPos X="14" Y="18"/>
    292         <UsageCount Value="6"/>
     293        <UsageCount Value="5"/>
    293294        <DefaultSyntaxHighlighter Value="None"/>
    294295      </Unit29>
     
    299300        <TopLine Value="2"/>
    300301        <CursorPos X="30" Y="8"/>
    301         <UsageCount Value="6"/>
     302        <UsageCount Value="5"/>
    302303      </Unit30>
    303304      <Unit31>
     
    307308        <TopLine Value="13"/>
    308309        <CursorPos X="15" Y="12"/>
    309         <UsageCount Value="8"/>
     310        <UsageCount Value="7"/>
    310311        <DefaultSyntaxHighlighter Value="Delphi"/>
    311312      </Unit31>
    312313      <Unit32>
    313314        <Filename Value="../Generic/GenericList.inc"/>
    314         <IsVisibleTab Value="True"/>
    315         <EditorIndex Value="6"/>
    316         <WindowIndex Value="0"/>
    317         <TopLine Value="462"/>
    318         <CursorPos X="40" Y="470"/>
     315        <EditorIndex Value="4"/>
     316        <WindowIndex Value="0"/>
     317        <TopLine Value="42"/>
     318        <CursorPos X="15" Y="55"/>
    319319        <UsageCount Value="107"/>
    320320        <Loaded Value="True"/>
     
    325325        <TopLine Value="31"/>
    326326        <CursorPos X="44" Y="47"/>
    327         <UsageCount Value="94"/>
     327        <UsageCount Value="93"/>
    328328      </Unit33>
    329329      <Unit34>
     
    332332        <TopLine Value="1"/>
    333333        <CursorPos X="36" Y="48"/>
    334         <UsageCount Value="94"/>
     334        <UsageCount Value="93"/>
    335335      </Unit34>
    336336      <Unit35>
     
    339339        <TopLine Value="3"/>
    340340        <CursorPos X="1" Y="3"/>
    341         <UsageCount Value="94"/>
     341        <UsageCount Value="93"/>
    342342      </Unit35>
    343343      <Unit36>
     
    346346        <TopLine Value="11"/>
    347347        <CursorPos X="42" Y="11"/>
    348         <UsageCount Value="94"/>
     348        <UsageCount Value="93"/>
    349349      </Unit36>
    350350      <Unit37>
     
    353353        <TopLine Value="3"/>
    354354        <CursorPos X="1" Y="3"/>
    355         <UsageCount Value="94"/>
     355        <UsageCount Value="93"/>
    356356      </Unit37>
    357357      <Unit38>
     
    360360        <TopLine Value="1"/>
    361361        <CursorPos X="22" Y="30"/>
    362         <UsageCount Value="94"/>
     362        <UsageCount Value="93"/>
    363363      </Unit38>
    364364      <Unit39>
     
    368368        <TopLine Value="6"/>
    369369        <CursorPos X="56" Y="36"/>
    370         <UsageCount Value="93"/>
     370        <UsageCount Value="92"/>
    371371      </Unit39>
    372372      <Unit40>
     
    376376        <TopLine Value="27"/>
    377377        <CursorPos X="50" Y="59"/>
    378         <UsageCount Value="92"/>
     378        <UsageCount Value="91"/>
    379379      </Unit40>
    380380      <Unit41>
     
    384384        <TopLine Value="57"/>
    385385        <CursorPos X="48" Y="85"/>
    386         <UsageCount Value="92"/>
     386        <UsageCount Value="91"/>
    387387      </Unit41>
    388388      <Unit42>
     
    391391        <TopLine Value="1"/>
    392392        <CursorPos X="33" Y="14"/>
    393         <UsageCount Value="92"/>
     393        <UsageCount Value="91"/>
    394394      </Unit42>
    395395      <Unit43>
     
    399399        <TopLine Value="52"/>
    400400        <CursorPos X="1" Y="81"/>
    401         <UsageCount Value="92"/>
     401        <UsageCount Value="91"/>
    402402      </Unit43>
    403403      <Unit44>
     
    407407        <TopLine Value="29"/>
    408408        <CursorPos X="1" Y="62"/>
    409         <UsageCount Value="92"/>
     409        <UsageCount Value="91"/>
    410410      </Unit44>
    411411      <Unit45>
     
    415415        <TopLine Value="9"/>
    416416        <CursorPos X="60" Y="36"/>
    417         <UsageCount Value="91"/>
     417        <UsageCount Value="90"/>
    418418      </Unit45>
    419419      <Unit46>
    420420        <Filename Value="../Generic/GenericMatrix.inc"/>
    421         <EditorIndex Value="7"/>
    422         <WindowIndex Value="0"/>
    423         <TopLine Value="311"/>
    424         <CursorPos X="48" Y="331"/>
    425         <UsageCount Value="103"/>
    426         <Loaded Value="True"/>
     421        <WindowIndex Value="0"/>
     422        <TopLine Value="9"/>
     423        <CursorPos X="28" Y="23"/>
     424        <UsageCount Value="102"/>
    427425      </Unit46>
    428426      <Unit47>
    429         <Filename Value="../../../../../lazarus/trunk/lcl/graphics.pp"/>
     427        <Filename Value="../../../../lazarus/trunk/lcl/graphics.pp"/>
    430428        <UnitName Value="Graphics"/>
    431429        <WindowIndex Value="0"/>
    432430        <TopLine Value="2624"/>
    433431        <CursorPos X="37" Y="2636"/>
    434         <UsageCount Value="90"/>
     432        <UsageCount Value="89"/>
     433        <DefaultSyntaxHighlighter Value="Delphi"/>
    435434      </Unit47>
    436435      <Unit48>
    437         <Filename Value="../../../../../lazarus/trunk/lcl/interfaces/carbon/issues.xml"/>
     436        <Filename Value="../../../../lazarus/trunk/lcl/interfaces/carbon/issues.xml"/>
    438437        <WindowIndex Value="0"/>
    439438        <TopLine Value="94"/>
    440439        <CursorPos X="1" Y="1"/>
    441         <UsageCount Value="6"/>
     440        <UsageCount Value="5"/>
    442441        <DefaultSyntaxHighlighter Value="XML"/>
    443442      </Unit48>
     
    447446        <TopLine Value="199"/>
    448447        <CursorPos X="14" Y="213"/>
    449         <UsageCount Value="28"/>
     448        <UsageCount Value="27"/>
     449        <DefaultSyntaxHighlighter Value="Delphi"/>
    450450      </Unit49>
    451451      <Unit50>
     
    454454        <TopLine Value="199"/>
    455455        <CursorPos X="3" Y="201"/>
    456         <UsageCount Value="28"/>
     456        <UsageCount Value="27"/>
     457        <DefaultSyntaxHighlighter Value="Delphi"/>
    457458      </Unit50>
    458459      <Unit51>
    459460        <Filename Value="../Generic/GenericListObject.inc"/>
    460         <WindowIndex Value="0"/>
    461         <TopLine Value="1"/>
    462         <CursorPos X="21" Y="20"/>
    463         <UsageCount Value="19"/>
     461        <EditorIndex Value="5"/>
     462        <WindowIndex Value="0"/>
     463        <TopLine Value="11"/>
     464        <CursorPos X="34" Y="24"/>
     465        <UsageCount Value="21"/>
     466        <Loaded Value="True"/>
    464467      </Unit51>
    465468      <Unit52>
     
    469472        <TopLine Value="1"/>
    470473        <CursorPos X="27" Y="26"/>
    471         <UsageCount Value="28"/>
     474        <UsageCount Value="27"/>
     475        <DefaultSyntaxHighlighter Value="Delphi"/>
    472476      </Unit52>
    473477      <Unit53>
     
    476480        <TopLine Value="381"/>
    477481        <CursorPos X="3" Y="398"/>
    478         <UsageCount Value="28"/>
     482        <UsageCount Value="27"/>
     483        <DefaultSyntaxHighlighter Value="Delphi"/>
    479484      </Unit53>
    480485      <Unit54>
     
    483488        <TopLine Value="475"/>
    484489        <CursorPos X="10" Y="503"/>
    485         <UsageCount Value="7"/>
     490        <UsageCount Value="6"/>
     491        <DefaultSyntaxHighlighter Value="Delphi"/>
    486492      </Unit54>
    487493      <Unit55>
    488         <Filename Value="../../../../../lazarus/trunk/lcl/include/control.inc"/>
     494        <Filename Value="../../../../lazarus/trunk/lcl/include/control.inc"/>
    489495        <WindowIndex Value="0"/>
    490496        <TopLine Value="2270"/>
    491497        <CursorPos X="22" Y="2273"/>
    492         <UsageCount Value="19"/>
     498        <UsageCount Value="18"/>
     499        <DefaultSyntaxHighlighter Value="Delphi"/>
    493500      </Unit55>
    494501      <Unit56>
    495502        <Filename Value="../Specialized/SpecializedMatrix.pas"/>
    496503        <UnitName Value="SpecializedMatrix"/>
    497         <EditorIndex Value="8"/>
    498         <WindowIndex Value="0"/>
    499         <TopLine Value="31"/>
    500         <CursorPos X="38" Y="62"/>
     504        <WindowIndex Value="0"/>
     505        <TopLine Value="1"/>
     506        <CursorPos X="25" Y="41"/>
    501507        <UsageCount Value="19"/>
    502         <Loaded Value="True"/>
    503508      </Unit56>
    504509      <Unit57>
     
    507512        <TopLine Value="1"/>
    508513        <CursorPos X="28" Y="10"/>
    509         <UsageCount Value="9"/>
     514        <UsageCount Value="8"/>
    510515        <DefaultSyntaxHighlighter Value="None"/>
    511516      </Unit57>
    512517      <Unit58>
    513         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/dateutil.inc"/>
    514         <EditorIndex Value="5"/>
     518        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/dateutil.inc"/>
    515519        <WindowIndex Value="0"/>
    516520        <TopLine Value="38"/>
    517521        <CursorPos X="3" Y="50"/>
    518         <UsageCount Value="11"/>
    519         <Loaded Value="True"/>
     522        <UsageCount Value="10"/>
     523        <DefaultSyntaxHighlighter Value="Delphi"/>
    520524      </Unit58>
    521525      <Unit59>
    522         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    523         <EditorIndex Value="1"/>
     526        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    524527        <WindowIndex Value="0"/>
    525528        <TopLine Value="649"/>
    526529        <CursorPos X="38" Y="671"/>
    527         <UsageCount Value="10"/>
    528         <Loaded Value="True"/>
     530        <UsageCount Value="9"/>
     531        <DefaultSyntaxHighlighter Value="Delphi"/>
    529532      </Unit59>
    530533      <Unit60>
    531         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>
    532         <EditorIndex Value="4"/>
     534        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>
    533535        <WindowIndex Value="0"/>
    534536        <TopLine Value="1185"/>
    535537        <CursorPos X="22" Y="1196"/>
    536         <UsageCount Value="10"/>
    537         <Loaded Value="True"/>
     538        <UsageCount Value="9"/>
     539        <DefaultSyntaxHighlighter Value="Delphi"/>
    538540      </Unit60>
    539541      <Unit61>
    540         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/types.pp"/>
     542        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/types.pp"/>
    541543        <UnitName Value="types"/>
    542         <EditorIndex Value="3"/>
    543544        <WindowIndex Value="0"/>
    544545        <TopLine Value="112"/>
    545546        <CursorPos X="3" Y="124"/>
     547        <UsageCount Value="9"/>
     548        <DefaultSyntaxHighlighter Value="Delphi"/>
     549      </Unit61>
     550      <Unit62>
     551        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstrh.inc"/>
     552        <WindowIndex Value="0"/>
     553        <TopLine Value="71"/>
     554        <CursorPos X="10" Y="84"/>
     555        <UsageCount Value="9"/>
     556        <DefaultSyntaxHighlighter Value="Delphi"/>
     557      </Unit62>
     558      <Unit63>
     559        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstr.inc"/>
     560        <WindowIndex Value="0"/>
     561        <TopLine Value="148"/>
     562        <CursorPos X="11" Y="169"/>
     563        <UsageCount Value="9"/>
     564        <DefaultSyntaxHighlighter Value="Delphi"/>
     565      </Unit63>
     566      <Unit64>
     567        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/inc/systemh.inc"/>
     568        <WindowIndex Value="0"/>
     569        <TopLine Value="511"/>
     570        <CursorPos X="11" Y="524"/>
     571        <UsageCount Value="9"/>
     572        <DefaultSyntaxHighlighter Value="Delphi"/>
     573      </Unit64>
     574      <Unit65>
     575        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/i386/i386.inc"/>
     576        <WindowIndex Value="0"/>
     577        <TopLine Value="411"/>
     578        <CursorPos X="10" Y="424"/>
     579        <UsageCount Value="9"/>
     580        <DefaultSyntaxHighlighter Value="Delphi"/>
     581      </Unit65>
     582      <Unit66>
     583        <Filename Value="../Specialized/SpecializedStream.pas"/>
     584        <UnitName Value="SpecializedStream"/>
     585        <EditorIndex Value="8"/>
     586        <WindowIndex Value="0"/>
     587        <TopLine Value="106"/>
     588        <CursorPos X="48" Y="107"/>
     589        <UsageCount Value="15"/>
     590        <Loaded Value="True"/>
     591      </Unit66>
     592      <Unit67>
     593        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/lclclasses.pp"/>
     594        <UnitName Value="LCLClasses"/>
     595        <WindowIndex Value="0"/>
     596        <TopLine Value="25"/>
     597        <CursorPos X="32" Y="40"/>
     598        <UsageCount Value="9"/>
     599      </Unit67>
     600      <Unit68>
     601        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/controls.pp"/>
     602        <UnitName Value="Controls"/>
     603        <WindowIndex Value="0"/>
     604        <TopLine Value="1"/>
     605        <CursorPos X="39" Y="11"/>
     606        <UsageCount Value="9"/>
     607      </Unit68>
     608      <Unit69>
     609        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpash.inc"/>
     610        <WindowIndex Value="0"/>
     611        <TopLine Value="179"/>
     612        <CursorPos X="23" Y="192"/>
    546613        <UsageCount Value="10"/>
     614      </Unit69>
     615      <Unit70>
     616        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpas.inc"/>
     617        <WindowIndex Value="0"/>
     618        <TopLine Value="265"/>
     619        <CursorPos X="9" Y="267"/>
     620        <UsageCount Value="10"/>
     621      </Unit70>
     622      <Unit71>
     623        <Filename Value="../Generic/GenericStream.inc"/>
     624        <IsVisibleTab Value="True"/>
     625        <EditorIndex Value="7"/>
     626        <WindowIndex Value="0"/>
     627        <TopLine Value="40"/>
     628        <CursorPos X="18" Y="20"/>
     629        <UsageCount Value="15"/>
    547630        <Loaded Value="True"/>
    548       </Unit61>
     631      </Unit71>
     632      <Unit72>
     633        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/classesh.inc"/>
     634        <EditorIndex Value="1"/>
     635        <WindowIndex Value="0"/>
     636        <TopLine Value="891"/>
     637        <CursorPos X="18" Y="908"/>
     638        <UsageCount Value="13"/>
     639        <Loaded Value="True"/>
     640      </Unit72>
     641      <Unit73>
     642        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/streams.inc"/>
     643        <EditorIndex Value="2"/>
     644        <WindowIndex Value="0"/>
     645        <TopLine Value="739"/>
     646        <CursorPos X="18" Y="750"/>
     647        <UsageCount Value="13"/>
     648        <Loaded Value="True"/>
     649      </Unit73>
     650      <Unit74>
     651        <Filename Value="../Generic/GenericListString.inc"/>
     652        <EditorIndex Value="6"/>
     653        <WindowIndex Value="0"/>
     654        <TopLine Value="8"/>
     655        <CursorPos X="34" Y="21"/>
     656        <UsageCount Value="12"/>
     657        <Loaded Value="True"/>
     658      </Unit74>
    549659    </Units>
    550     <JumpHistory Count="30" HistoryIndex="27">
     660    <JumpHistory Count="30" HistoryIndex="28">
    551661      <Position1>
    552662        <Filename Value="UMainForm.pas"/>
    553         <Caret Line="42" Column="51" TopLine="20"/>
     663        <Caret Line="142" Column="1" TopLine="128"/>
    554664      </Position1>
    555665      <Position2>
    556666        <Filename Value="UMainForm.pas"/>
    557         <Caret Line="458" Column="36" TopLine="440"/>
     667        <Caret Line="143" Column="1" TopLine="128"/>
    558668      </Position2>
    559669      <Position3>
    560         <Filename Value="UMainForm.pas"/>
    561         <Caret Line="7" Column="52" TopLine="1"/>
     670        <Filename Value="../Generic/GenericList.inc"/>
     671        <Caret Line="161" Column="1" TopLine="148"/>
    562672      </Position3>
    563673      <Position4>
    564         <Filename Value="UMainForm.pas"/>
    565         <Caret Line="526" Column="1" TopLine="502"/>
     674        <Filename Value="../Specialized/SpecializedStream.pas"/>
     675        <Caret Line="93" Column="21" TopLine="80"/>
    566676      </Position4>
    567677      <Position5>
    568678        <Filename Value="UMainForm.pas"/>
    569         <Caret Line="32" Column="49" TopLine="27"/>
     679        <Caret Line="150" Column="22" TopLine="129"/>
    570680      </Position5>
    571681      <Position6>
    572         <Filename Value="UMainForm.pas"/>
    573         <Caret Line="416" Column="38" TopLine="312"/>
     682        <Filename Value="../Generic/GenericStream.inc"/>
     683        <Caret Line="22" Column="12" TopLine="9"/>
    574684      </Position6>
    575685      <Position7>
    576         <Filename Value="UMainForm.pas"/>
    577         <Caret Line="417" Column="38" TopLine="393"/>
     686        <Filename Value="../Generic/GenericStream.inc"/>
     687        <Caret Line="37" Column="18" TopLine="35"/>
    578688      </Position7>
    579689      <Position8>
    580690        <Filename Value="UMainForm.pas"/>
    581         <Caret Line="418" Column="38" TopLine="394"/>
     691        <Caret Line="157" Column="79" TopLine="132"/>
    582692      </Position8>
    583693      <Position9>
    584         <Filename Value="UMainForm.pas"/>
    585         <Caret Line="241" Column="3" TopLine="234"/>
     694        <Filename Value="../Specialized/SpecializedStream.pas"/>
     695        <Caret Line="58" Column="45" TopLine="46"/>
    586696      </Position9>
    587697      <Position10>
    588         <Filename Value="UMainForm.pas"/>
    589         <Caret Line="377" Column="1" TopLine="361"/>
     698        <Filename Value="../Specialized/SpecializedStream.pas"/>
     699        <Caret Line="119" Column="12" TopLine="100"/>
    590700      </Position10>
    591701      <Position11>
    592         <Filename Value="UMainForm.pas"/>
    593         <Caret Line="617" Column="1" TopLine="593"/>
     702        <Filename Value="../Generic/GenericList.inc"/>
     703        <Caret Line="197" Column="39" TopLine="182"/>
    594704      </Position11>
    595705      <Position12>
    596         <Filename Value="UMainForm.pas"/>
    597         <Caret Line="260" Column="25" TopLine="230"/>
     706        <Filename Value="../Specialized/SpecializedStream.pas"/>
     707        <Caret Line="119" Column="12" TopLine="100"/>
    598708      </Position12>
    599709      <Position13>
    600         <Filename Value="UMainForm.pas"/>
    601         <Caret Line="246" Column="21" TopLine="233"/>
     710        <Filename Value="../Specialized/SpecializedStream.pas"/>
     711        <Caret Line="61" Column="38" TopLine="48"/>
    602712      </Position13>
    603713      <Position14>
    604         <Filename Value="UMainForm.pas"/>
    605         <Caret Line="364" Column="25" TopLine="358"/>
     714        <Filename Value="../Specialized/SpecializedStream.pas"/>
     715        <Caret Line="130" Column="15" TopLine="117"/>
    606716      </Position14>
    607717      <Position15>
    608         <Filename Value="UMainForm.pas"/>
    609         <Caret Line="596" Column="33" TopLine="586"/>
     718        <Filename Value="../Specialized/SpecializedStream.pas"/>
     719        <Caret Line="64" Column="36" TopLine="51"/>
    610720      </Position15>
    611721      <Position16>
    612         <Filename Value="UMainForm.pas"/>
    613         <Caret Line="237" Column="19" TopLine="232"/>
     722        <Filename Value="../Specialized/SpecializedStream.pas"/>
     723        <Caret Line="58" Column="29" TopLine="45"/>
    614724      </Position16>
    615725      <Position17>
    616         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    617         <Caret Line="701" Column="36" TopLine="683"/>
     726        <Filename Value="../Specialized/SpecializedStream.pas"/>
     727        <Caret Line="78" Column="45" TopLine="78"/>
    618728      </Position17>
    619729      <Position18>
    620         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    621         <Caret Line="659" Column="27" TopLine="653"/>
     730        <Filename Value="../Specialized/SpecializedStream.pas"/>
     731        <Caret Line="64" Column="64" TopLine="48"/>
    622732      </Position18>
    623733      <Position19>
    624         <Filename Value="../Generic/GenericList.inc"/>
    625         <Caret Line="468" Column="70" TopLine="462"/>
     734        <Filename Value="../Specialized/SpecializedStream.pas"/>
     735        <Caret Line="82" Column="3" TopLine="68"/>
    626736      </Position19>
    627737      <Position20>
    628         <Filename Value="../Generic/GenericList.inc"/>
    629         <Caret Line="469" Column="1" TopLine="462"/>
     738        <Filename Value="../Generic/GenericListObject.inc"/>
     739        <Caret Line="20" Column="21" TopLine="1"/>
    630740      </Position20>
    631741      <Position21>
    632         <Filename Value="../Generic/GenericList.inc"/>
    633         <Caret Line="470" Column="1" TopLine="462"/>
     742        <Filename Value="../Generic/GenericListObject.inc"/>
     743        <Caret Line="24" Column="17" TopLine="11"/>
    634744      </Position21>
    635745      <Position22>
    636         <Filename Value="../Generic/GenericList.inc"/>
    637         <Caret Line="471" Column="1" TopLine="462"/>
     746        <Filename Value="../Generic/GenericListString.inc"/>
     747        <Caret Line="1" Column="1" TopLine="1"/>
    638748      </Position22>
    639749      <Position23>
    640         <Filename Value="../Generic/GenericList.inc"/>
    641         <Caret Line="470" Column="5" TopLine="462"/>
     750        <Filename Value="UMainForm.pas"/>
     751        <Caret Line="43" Column="15" TopLine="28"/>
    642752      </Position23>
    643753      <Position24>
    644         <Filename Value="UMainForm.pas"/>
    645         <Caret Line="237" Column="19" TopLine="232"/>
     754        <Filename Value="../Generic/GenericStream.inc"/>
     755        <Caret Line="13" Column="1" TopLine="1"/>
    646756      </Position24>
    647757      <Position25>
    648         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    649         <Caret Line="659" Column="26" TopLine="647"/>
     758        <Filename Value="../Specialized/SpecializedStream.pas"/>
     759        <Caret Line="84" Column="35" TopLine="40"/>
    650760      </Position25>
    651761      <Position26>
    652         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>
    653         <Caret Line="1193" Column="20" TopLine="1185"/>
     762        <Filename Value="../Specialized/SpecializedStream.pas"/>
     763        <Caret Line="126" Column="39" TopLine="111"/>
    654764      </Position26>
    655765      <Position27>
    656         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>
    657         <Caret Line="1196" Column="22" TopLine="1185"/>
     766        <Filename Value="../Specialized/SpecializedStream.pas"/>
     767        <Caret Line="128" Column="1" TopLine="111"/>
    658768      </Position27>
    659769      <Position28>
    660         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    661         <Caret Line="661" Column="23" TopLine="649"/>
     770        <Filename Value="../Specialized/SpecializedStream.pas"/>
     771        <Caret Line="68" Column="32" TopLine="55"/>
    662772      </Position28>
    663773      <Position29>
    664         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    665         <Caret Line="657" Column="48" TopLine="644"/>
     774        <Filename Value="../Specialized/SpecializedStream.pas"/>
     775        <Caret Line="121" Column="1" TopLine="106"/>
    666776      </Position29>
    667777      <Position30>
    668         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    669         <Caret Line="651" Column="3" TopLine="639"/>
     778        <Filename Value="../Generic/GenericList.inc"/>
     779        <Caret Line="55" Column="15" TopLine="42"/>
    670780      </Position30>
    671781    </JumpHistory>
    672782  </ProjectOptions>
    673783  <CompilerOptions>
    674     <Version Value="9"/>
     784    <Version Value="11"/>
    675785    <Target>
    676786      <Filename Value="Demo"/>
     
    699809    <Linking>
    700810      <Debugging>
    701         <GenerateDebugInfo Value="True"/>
     811        <DebugInfoType Value="dsStabs"/>
    702812        <UseHeaptrc Value="True"/>
    703813      </Debugging>
  • trunk/Components/TemplateGenerics/Demo/UMainForm.lfm

    r29 r30  
    4848  end
    4949  object ButtonCharList: TButton
    50     Left = 7
     50    Left = 8
    5151    Height = 25
    5252    Top = 134
    53     Width = 129
     53    Width = 128
    5454    Caption = 'TListChar(TString)'
    5555    OnClick = ButtonCharListClick
     
    5757  end
    5858  object ButtonBenchmarkListString: TButton
    59     Left = 10
     59    Left = 8
    6060    Height = 24
    6161    Top = 456
     
    6767  end
    6868  object ButtonListObject: TButton
    69     Left = 7
     69    Left = 8
    7070    Height = 25
    7171    Top = 163
    72     Width = 129
     72    Width = 128
    7373    Caption = 'TListObject'
    7474    OnClick = ButtonListObjectClick
     
    7676  end
    7777  object ButtonBenchmarkDictionary: TButton
    78     Left = 10
     78    Left = 8
    7979    Height = 25
    8080    Top = 424
    81     Width = 126
     81    Width = 128
    8282    Anchors = [akLeft, akBottom]
    8383    Caption = 'TDictionaryStringString'
     
    8686  end
    8787  object ButtonMatrixInteger: TButton
    88     Left = 7
     88    Left = 8
    8989    Height = 25
    9090    Top = 192
    91     Width = 129
     91    Width = 128
    9292    Caption = 'TMatrixInteger'
    9393    OnClick = ButtonMatrixIntegerClick
     
    107107      item
    108108        Caption = 'Value'
    109         Width = 316
     109        Width = 321
    110110      end>
    111111    ReadOnly = True
     
    140140    TabOrder = 10
    141141  end
     142  object ButtonStreamByte: TButton
     143    Left = 10
     144    Height = 25
     145    Top = 224
     146    Width = 128
     147    Caption = 'TMemoryStreamByte'
     148    OnClick = ButtonStreamByteClick
     149    TabOrder = 11
     150  end
    142151end
  • trunk/Components/TemplateGenerics/Demo/UMainForm.pas

    r29 r30  
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    99  ComCtrls, SpecializedList, SpecializedDictionary, SpecializedQueue,
    10   DateUtils, SpecializedMatrix;
     10  DateUtils, SpecializedMatrix, SpecializedStream;
    1111
    1212type
     
    1515
    1616  TMainForm = class(TForm)
     17    ButtonStreamByte: TButton;
    1718    ButtonBenchmarkDictionary: TButton;
    1819    ButtonBenchmarkListPointer: TButton;
     
    3839    procedure ButtonQueueIntegerClick(Sender: TObject);
    3940    procedure ButtonStringListClick(Sender: TObject);
     41    procedure ButtonStreamByteClick(Sender: TObject);
    4042    procedure FormCreate(Sender: TObject);
    4143    procedure FormDestroy(Sender: TObject);
    42   private
    4344  public
    4445    MeasureDuration: TDateTime;
     
    6566var
    6667  List: TListInteger;
     68  List2: TListInteger;
    6769  I: Integer;
    6870begin
     
    7072  LabelTestName.Caption := 'TListInteger test';
    7173  List := TListInteger.Create;
     74  List2 := TListInteger.Create;
    7275  with List do try
    7376    AddArray([10, 20, 30, 40]);
     
    8689    Insert(5, 11);
    8790    WriteOutput('Insert(5, 11)', Implode(',', IntToStr));
     91    DeleteItems(0, 10);
     92    WriteOutput('Delete(0, 10)', Implode(',', IntToStr));
     93    List2.SetArray([1, 0]);
     94    WriteOutput('EqualTo([6, 11])', BoolToStr(EqualTo(List2)));
     95    List2.SetArray([2, 0]);
     96    WriteOutput('EqualTo([7, 11])', BoolToStr(EqualTo(List2)));
     97    InsertCount(0, 3);
     98    WriteOutput('InsertCount(0, 3)', Implode(',', IntToStr));
     99    Fill(0, 3, 9);
     100    WriteOutput('Fill(0, 3, 9)', Implode(',', IntToStr));
    88101  finally
    89102    Free;
     103    List2.Free;
    90104  end;
    91105end;
     
    110124    WriteOutput('Clear', '[' + Implode('; ', ', ', IntToStr) + ']');
    111125    WriteOutput('Count [Y, X]', IntToStr(Count.Y) + ', ' + IntToStr(Count.X));
     126  finally
     127    Free;
     128  end;
     129end;
     130
     131procedure TMainForm.ButtonStreamByteClick(Sender: TObject);
     132var
     133  Stream: TMemoryStreamByte;
     134  I: Integer;
     135  ByteArray: array of Byte;
     136  ByteArrayText: string;
     137begin
     138  ListViewOutput.Clear;
     139  LabelTestName.Caption := 'TStreamByte test';
     140  Stream := TMemoryStreamByte.Create;
     141  with Stream do try
     142    WriteOutput('Size := ', IntToStr(Stream.Size));
     143    Write(1);
     144    WriteOutput('Write(1)', '');
     145    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     146    WriteArray([2, 3, 4]);
     147    WriteOutput('WriteArray([2, 3, 4])', '');
     148    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     149    Position := 1;
     150    WriteOutput('Position := 1', '');
     151    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     152    WriteOutput('Read', IntToStr(Read));
     153    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     154    ByteArray := ReadArray(2);
     155    ByteArrayText := '[';
     156    for I := 0 to Length(ByteArray) - 1 do begin
     157      ByteArrayText := ByteArrayText + IntToStr(ByteArray[I]);
     158      if I < Length(ByteArray) - 1 then ByteArrayText := ByteArrayText + ', ';
     159    end;
     160    ByteArrayText := ByteArrayText + ']';
     161    WriteOutput('ReadArray', ByteArrayText);
     162    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
    112163  finally
    113164    Free;
     
    478529var
    479530  List: TListPointer;
    480   List2: TList;
     531  List2: TFPList;
    481532  StartTime: TDateTime;
    482533  I: Integer;
     
    484535  SampleCount: Integer = 100000;
    485536begin
    486   LabelTestName.Caption := 'Generic specialized TListObject vs. classic non-generic TList benchmark';
     537  LabelTestName.Caption := 'Generic specialized TListObject vs. classic non-generic TFPList benchmark';
    487538  ListViewOutput.Clear;
    488539  try
    489540    UpdateButtonState(False);
    490541    List := TListPointer.Create;
    491     List2 := TList.Create;
    492 
    493     StartTime := Now;
    494     repeat
    495       List.Add(1);
     542    List2 := TFPList.Create;
     543
     544    WriteOutput('TListPointer.InstanceSize', IntToStr(TListPointer.InstanceSize) + ' bytes');
     545    WriteOutput('TFPList.InstanceSize', IntToStr(TFPList.InstanceSize) + ' bytes');
     546
     547    StartTime := Now;
     548    repeat
     549      List.Add(Pointer(1));
    496550    until (Now - StartTime) > MeasureDuration;
    497551    WriteOutput('TListPointer.Add', IntToStr(List.Count) + ' ops');
     
    501555    StartTime := Now;
    502556    repeat
    503       List2.Add(1);
    504     until (Now - StartTime) > MeasureDuration;
    505     WriteOutput('TList.Add', IntToStr(List2.Count) + ' ops');
     557      List2.Add(Pointer(1));
     558    until (Now - StartTime) > MeasureDuration;
     559    WriteOutput('TFPList.Add', IntToStr(List2.Count) + ' ops');
    506560    List2.Clear;
    507561    Application.ProcessMessages;
     
    509563    StartTime := Now;
    510564    repeat
    511       List.Insert(0, 1);
     565      List.Insert(0, Pointer(1));
    512566    until (Now - StartTime) > MeasureDuration;
    513567    WriteOutput('TListPointer.Insert', IntToStr(List.Count) + ' ops');
     
    517571    StartTime := Now;
    518572    repeat
    519       List2.Insert(0, 1);
    520     until (Now - StartTime) > MeasureDuration;
    521     WriteOutput('TList.Insert', IntToStr(List2.Count) + ' ops');
     573      List2.Insert(0, Pointer(1));
     574    until (Now - StartTime) > MeasureDuration;
     575    WriteOutput('TFPList.Insert', IntToStr(List2.Count) + ' ops');
    522576    List2.Clear;
    523577    Application.ProcessMessages;
    524578
    525579    for I := 0 to SampleCount - 1 do
    526       List.Add(1);
     580      List.Add(Pointer(1));
    527581    StartTime := Now;
    528582    I := 0;
     
    536590
    537591    for I := 0 to SampleCount - 1 do
    538       List2.Add(1);
     592      List2.Add(Pointer(1));
    539593    StartTime := Now;
    540594    I := 0;
     
    543597      Inc(I);
    544598    until (Now - StartTime) > MeasureDuration;
    545     WriteOutput('TList.Delete', IntToStr(I) + ' ops');
    546     Application.ProcessMessages;
    547 
    548     for I := 0 to SampleCount - 1 do
    549       List.Add(1);
     599    WriteOutput('TFPList.Delete', IntToStr(I) + ' ops');
     600    Application.ProcessMessages;
     601
     602    for I := 0 to SampleCount - 1 do
     603      List.Add(Pointer(1));
    550604    StartTime := Now;
    551605    I := 0;
     
    559613
    560614    for I := 0 to SampleCount - 1 do
    561     List2.Add(1);
     615    List2.Add(Pointer(1));
    562616    StartTime := Now;
    563617    I := 0;
     
    566620      Inc(I);
    567621    until (Now - StartTime) > MeasureDuration;
    568     WriteOutput('TList.Move', IntToStr(I) + ' ops');
    569     Application.ProcessMessages;
    570 
    571     for I := 0 to SampleCount - 1 do
    572       List.Add(1);
     622    WriteOutput('TFPList.Move', IntToStr(I) + ' ops');
     623    Application.ProcessMessages;
     624
     625    for I := 0 to SampleCount - 1 do
     626      List.Add(Pointer(1));
    573627    StartTime := Now;
    574628    I := 0;
     
    582636
    583637    for I := 0 to SampleCount - 1 do
    584     List2.Add(1);
     638    List2.Add(Pointer(1));
    585639    StartTime := Now;
    586640    I := 0;
     
    589643      Inc(I);
    590644    until (Now - StartTime) > MeasureDuration;
    591     WriteOutput('TList.Exchange', IntToStr(I) + ' ops');
    592     Application.ProcessMessages;
    593 
    594     for I := 0 to SampleCount - 1 do
    595       List.Add(1);
     645    WriteOutput('TFPList.Exchange', IntToStr(I) + ' ops');
     646    Application.ProcessMessages;
     647
     648    for I := 0 to SampleCount - 1 do
     649      List.Add(Pointer(1));
    596650    StartTime := Now;
    597651    I := 0;
     
    605659
    606660    for I := 0 to SampleCount - 1 do
    607     List2.Add(1);
     661    List2.Add(Pointer(1));
    608662    StartTime := Now;
    609663    I := 0;
     
    612666      Inc(I);
    613667    until (Now - StartTime) > MeasureDuration;
    614     WriteOutput('TList.IndexOf', IntToStr(I) + ' ops');
    615     Application.ProcessMessages;
    616 
     668    WriteOutput('TFPList.IndexOf', IntToStr(I) + ' ops');
     669    Application.ProcessMessages;
     670
     671    for I := 0 to SampleCount - 1 do
     672      List.Add(Pointer(1));
     673    StartTime := Now;
     674    I := 0;
     675    repeat
     676      List[I mod List.Count] := Pointer(1);
     677      Inc(I);
     678    until (Now - StartTime) > MeasureDuration;
     679    WriteOutput('TListPointer[I] write', IntToStr(I) + ' ops');
     680    List.Clear;
     681    Application.ProcessMessages;
     682
     683    for I := 0 to SampleCount - 1 do
     684    List2.Add(Pointer(1));
     685    StartTime := Now;
     686    I := 0;
     687    repeat
     688      List2[I mod List2.Count] := Pointer(1);
     689      Inc(I);
     690    until (Now - StartTime) > MeasureDuration;
     691    WriteOutput('TFPList[I] write', IntToStr(I) + ' ops');
     692    Application.ProcessMessages;
     693
     694    for I := 0 to SampleCount - 1 do
     695      List.Add(Pointer(1));
     696    StartTime := Now;
     697    I := 0;
     698    repeat
     699      List[I mod List.Count];
     700      Inc(I);
     701    until (Now - StartTime) > MeasureDuration;
     702    WriteOutput('TListPointer[I] read', IntToStr(I) + ' ops');
     703    List.Clear;
     704    Application.ProcessMessages;
     705
     706    for I := 0 to SampleCount - 1 do
     707    List2.Add(Pointer(1));
     708    StartTime := Now;
     709    I := 0;
     710    repeat
     711      List2[I mod List2.Count];
     712      Inc(I);
     713    until (Now - StartTime) > MeasureDuration;
     714    WriteOutput('TFPList[I] read', IntToStr(I) + ' ops');
     715    Application.ProcessMessages;
    617716  finally
    618717    UpdateButtonState(True);
     
    645744    MoveItems(2, 3, 3);
    646745    WriteOutput('Implode', Implode(',', StrToStr));
     746    InsertCount(0, 3);
     747    WriteOutput('InsertCount(0, 3)', Implode(',', StrToStr));
     748    Fill(0, 3, 'Zero');
     749    WriteOutput('Fill(0, 3, ''Zero'')', Implode(',', StrToStr));
    647750  finally
    648751    Free;
  • trunk/Components/TemplateGenerics/Generic/GenericDictionary.inc

    r29 r30  
    1111{$DEFINE TGListItem := TGPair}
    1212{$DEFINE TGList := TGDictionaryList}
    13 {$DEFINE TGListSortCompare := TDictionarySortCompare}
    14 {$DEFINE TGListToStringConverter := TDictionaryToStringConverter}
    15 {$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter}
    16 {$DEFINE TGListItemArray := TDictionaryItemArray}
     13{$DEFINE TGListSortCompare := TGDictionarySortCompare}
     14{$DEFINE TGListToStringConverter := TGDictionaryToStringConverter}
     15{$DEFINE TGListFromStringConverter := TGDictionaryFromStringConverter}
     16{$DEFINE TGListItemArray := TGDictionaryItemArray}
    1717{$DEFINE INTERFACE}
    1818{$I 'GenericList.inc'}
     
    3737{$ENDIF}
    3838
     39
     40{$IFDEF IMPLEMENTATION_USES}
     41{$I '..\Generic\GenericList.inc'}
     42{$UNDEF IMPLEMENTATION_USES}
     43{$ENDIF}
     44
     45
    3946{$IFDEF IMPLEMENTATION}
    40 
    41 {$UNDEF IMPLEMENTATION}
    42 {$DEFINE IMPLEMENTATION_USES}
    43 {$I '..\Generic\GenericList.inc'}
    4447
    4548{$DEFINE TGListIndex := TGDictionaryIndex}
    4649{$DEFINE TGListItem := TGPair}
    4750{$DEFINE TGList := TGDictionaryList}
    48 {$DEFINE TGListSortCompare := TDictionarySortCompare}
    49 {$DEFINE TGListToStringConverter := TDictionaryToStringConverter}
    50 {$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter}
    51 {$DEFINE TGListItemArray := TDictionaryItemArray}
     51{$DEFINE TGListSortCompare := TGDictionarySortCompare}
     52{$DEFINE TGListToStringConverter := TGDictionaryToStringConverter}
     53{$DEFINE TGListFromStringConverter := TGDictionaryFromStringConverter}
     54{$DEFINE TGListItemArray := TGDictionaryItemArray}
    5255{$DEFINE IMPLEMENTATION}
    5356{$I 'GenericList.inc'}
  • trunk/Components/TemplateGenerics/Generic/GenericList.inc

    r29 r30  
    11{$IFDEF INTERFACE}
     2
     3  // TGList implemented using templates
     4  // - item operations (Add, Insert, ReplaceArray, Get, Set, IndexOf,
     5  //   Extract, Delete, Exchange)
     6  // - item range operations (DeleteItems, InsertItems, ReplaceItems,
     7  //   Move, Fill)
     8  // - other TGList operations (AddList, InsertList,
     9  //   ReplaceList, GetList, IndexOfList)
     10  // - dynamic array operations (AddArray, InsertArray,
     11  //   ReplaceArray, GetArray, IndexOfArray)
     12  // - all items operations (Clear, Reverse, Sort)
    213
    314  TGList = class;
     
    1324    FItems: array of TGListItem;
    1425    FCount: TGListIndex;
     26    FUpdateCount: Integer;
     27    FOnUpdate: TNotifyEvent;
    1528    function Get(Index: TGListIndex): TGListItem;
    1629    function GetCapacity: TGListIndex;
     
    2134    procedure SetLast(AValue: TGListItem);
    2235    procedure SetFirst(AValue: TGListItem);
     36    procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
     37  protected
    2338    procedure Put(Index: TGListIndex; const AValue: TGListItem); virtual;
    2439    procedure SetCount(const AValue: TGListIndex); virtual;
    25     procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
    2640  public
     41    type
     42      PItem = ^TGListItem;
     43    function CompareMem(P1, P2: Pointer; Length: cardinal): Boolean; inline;
    2744    function Add(Item: TGListItem): TGListIndex;
    2845    procedure AddArray(Values: array of TGListItem);
    2946    procedure AddList(List: TGList);
     47    procedure AddListPart(List: TGList; ItemIndex, ItemCount: TGListIndex);
    3048    procedure Assign(Source: TGList); virtual;
     49    constructor Create; virtual;
    3150    procedure Clear; virtual;
    3251    procedure Delete(Index: TGListIndex); virtual;
     
    3857    property First: TGListItem read GetFirst write SetFirst;
    3958    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
    40     function GetArray: TGListItemArray;
     59    function GetArray(Index, ACount: TGListIndex): TGListItemArray;
     60    procedure GetList(List: TGList; Index, ACount: TGListIndex);
     61    procedure GetBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    4162    function Implode(Separator: string; Converter: TGListToStringConverter): string;
    42     function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex;
     63    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; virtual;
    4364    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
     65    function IndexOfArray(Values: array of TGListItem; Start: TGListIndex = 0): TGListIndex;
    4466    procedure Insert(Index: TGListIndex; Item: TGListItem);
    4567    procedure InsertList(Index: TGListIndex; List: TGList);
    4668    procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
     69    procedure InsertCount(Index: TGListIndex; ACount: TGListIndex);
    4770    procedure Move(CurIndex, NewIndex: TGListIndex);
    4871    procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    4972    function Remove(Item: TGListItem): TGListIndex;
    5073    procedure Reverse;
    51     procedure Replace(Index: TGListIndex; Source: TGList);
     74    procedure ReplaceArray(Index: TGListIndex; Values: array of TGListItem);
     75    procedure ReplaceList(Index: TGListIndex; Source: TGList);
     76    procedure ReplaceListPart(Index: TGListIndex; Source: TGList;
     77      SourceIndex, SourceCount: TGListIndex);
     78    procedure ReplaceBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    5279    procedure Sort(Compare: TGListSortCompare);
    53     procedure SetArray(Values: TGListItemArray);
     80    procedure SetArray(Values: array of TGListItem);
     81    procedure BeginUpdate;
     82    procedure EndUpdate;
     83    procedure Update;
    5484    property Count: TGListIndex read FCount write SetCount;
    5585    property Capacity: TGListIndex read GetCapacity write SetCapacity;
    5686    property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
    5787    property Last: TGListItem read GetLast write SetLast;
     88    property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate;
    5889  end;
    5990 
     
    73104{ TGList }
    74105
    75 procedure TGList.Replace(Index: TGListIndex; Source: TGList);
     106constructor TGList.Create;
     107begin
     108  FCount := 0;
     109end;
     110
     111procedure TGList.GetBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
     112var
     113  P: PItem;
     114  I: TGListIndex;
     115begin
     116  if (Index + Count) > FCount then
     117    raise EListError.CreateFmt(SListIndexError, [Index + Count]);
     118  P := PItem(@Buffer);
     119  I := 0;
     120  while I < Count do begin
     121    P^ := Items[Index + I];
     122    Inc(P, 1);
     123    I := I + 1;
     124  end;
     125end;
     126
     127procedure TGList.ReplaceBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
     128var
     129  P: PItem;
     130  I: TGListIndex;
     131begin
     132  if (Index + Count) > FCount then
     133    raise EListError.CreateFmt(SListIndexError, [Index + Count]);
     134  P := PItem(@Buffer);
     135  I := 0;
     136  while I < Count do begin
     137    Items[Index + I] := P^;
     138    Inc(P, 1);
     139    I := I + 1;
     140  end;
     141end;
     142
     143procedure TGList.ReplaceArray(Index: TGListIndex; Values: array of TGListItem);
     144var
     145  I: TGListIndex;
     146begin
     147  I := 0;
     148  while I < Length(Values) do begin
     149    Items[Index + I] := Values[I];
     150    I := I + 1;
     151  end;
     152  Update;
     153end;
     154
     155procedure TGList.ReplaceList(Index: TGListIndex; Source: TGList);
    76156var
    77157  I: TGListIndex;
     
    82162    I := I + 1;
    83163  end;
     164  Update;
     165end;
     166
     167procedure TGList.ReplaceListPart(Index: TGListIndex; Source: TGList;
     168  SourceIndex, SourceCount: TGListIndex);
     169var
     170  I: TGListIndex;
     171begin
     172  I := 0;
     173  while I < SourceCount do begin
     174    Items[Index + I] := Source[SourceIndex + I];
     175    I := I + 1;
     176  end;
     177  Update;
    84178end;
    85179
     
    143237end;
    144238
    145 function TGList.GetArray: TGListItemArray;
     239function TGList.GetArray(Index, ACount: TGListIndex): TGListItemArray;
    146240var
    147241  I: Integer;
    148242begin
    149   SetLength(Result, Count);
    150   I := 0;
    151   while I < Count do begin
    152     Result[I] := FItems[I];
    153     I := I + 1;
    154   end;
     243  SetLength(Result, ACount);
     244  I := 0;
     245  while I < Count do begin
     246    Result[I] := FItems[Index + I];
     247    I := I + 1;
     248  end;
     249end;
     250
     251procedure TGList.GetList(List: TGList; Index, ACount: TGListIndex);
     252begin
     253  List.Clear;
     254  List.AddListPart(Self, Index, ACount);
    155255end;
    156256
     
    194294    I := I + 1;
    195295  end;
     296  Update;
    196297end;
    197298
     
    208309end;
    209310
     311function TGList.CompareMem(P1, P2: Pointer; Length: cardinal): Boolean;
     312var
     313  I: Cardinal;
     314begin
     315  Result := True;
     316  I := 0;
     317  if (P1) <> (P2) then
     318    while Result and (I < Length) do
     319    begin
     320      Result := PByte(P1)^ = PByte(P2)^;
     321      Inc(I);
     322      Inc(pchar(P1));
     323      Inc(pchar(P2));
     324    end;
     325end;
     326
    210327function TGList.IndexOf(Item: TGListItem; Start: TGListIndex): TGListIndex;
    211328begin
    212329  Result := Start;
    213330  while (Result < FCount) and
    214   not CompareMem(Addr(FItems[Result]), Addr(Item), SizeOf(TGListItem)) do
     331//  not CompareMem(@FItems[Result], @Item, SizeOf(TGListItem)) do
     332  not (CompareByte(FItems[Result], Item, SizeOf(TGListItem)) = 0) do
    215333    Result := Result + 1;
    216334  if Result = FCount then Result := -1;
     
    219337procedure TGList.Insert(Index: TGListIndex; Item: TGListItem);
    220338begin
    221   if (Index < 0) or (Index > FCount ) then
     339  if (Index < 0) or (Index > FCount) then
    222340    raise EListError.CreateFmt(SListIndexError, [Index]);
    223   if FCount = Capacity then SetCapacityOptimized(Capacity + 1);
     341  InsertCount(Index, 1);
     342  FItems[Index] := Item;
     343  Update;
     344end;
     345
     346procedure TGList.InsertList(Index: TGListIndex; List: TGList);
     347begin
     348  if (Index < 0) or (Index > FCount) then
     349    raise EListError.CreateFmt(SListIndexError, [Index]);
     350  InsertCount(Index, List.Count);
     351  ReplaceList(Index, List);
     352end;
     353
     354procedure TGList.InsertArray(Index: TGListIndex; Values: array of TGListItem);
     355begin
     356  if (Index < 0) or (Index > FCount) then
     357    raise EListError.CreateFmt(SListIndexError, [Index]);
     358  InsertCount(Index, Length(Values));
     359  ReplaceArray(Index, Values);
     360end;
     361
     362procedure TGList.InsertCount(Index: TGListIndex; ACount: TGListIndex);
     363begin
     364  if (Index < 0) or (Index > FCount) then
     365    raise EListError.CreateFmt(SListIndexError, [Index]);
     366  Count := Count + ACount;
    224367  if Index < FCount then
    225     System.Move(FItems[Index], FItems[Index + 1], (FCount - Index) * SizeOf(TGListItem));
    226   FItems[Index] := Item;
    227   FCount := FCount + 1;
    228 end;
    229 
    230 procedure TGList.InsertList(Index: TGListIndex; List: TGList);
    231 var
    232   I: TGListIndex;
    233 begin
    234   I := 0;
    235   while (I < List.Count) do begin
    236     Insert(Index + I, List[I]);
    237     I := I + 1;
    238   end;
     368    System.Move(FItems[Index], FItems[Index + ACount], (FCount - ACount - Index) * SizeOf(TGListItem));
     369  Update;
    239370end;
    240371
     
    258389end;
    259390
     391function TGList.IndexOfArray(Values: array of TGListItem; Start: TGListIndex): TGListIndex;
     392var
     393  I: TGListIndex;
     394begin
     395  if Length(Values) > 0 then begin
     396    Result := IndexOf(Values[0], Start);
     397    if Result <> -1 then begin
     398      I := 1;
     399      while I < Length(Values) do begin
     400        if not CompareMem(Addr(FItems[Result + I]), Addr(Values[I]), SizeOf(TGListItem)) then begin
     401          Result := -1;
     402          Break;
     403        end;
     404        I := I + 1;
     405      end;
     406    end;
     407  end else Result := -1;
     408end;
     409
    260410function TGList.GetLast: TGListItem;
    261411begin
     
    308458  //Delete(CurIndex);
    309459  //Insert(NewIndex, Temp);
     460  Update;
    310461end;
    311462
     
    333484    end;
    334485  end;
     486  Update;
    335487end;
    336488
     
    339491  Result := IndexOf(Item);
    340492  if Result <> -1 then
    341     Delete(Result);
     493    Delete(Result)
     494    else raise Exception.CreateFmt(SItemNotFound, [0]);
    342495end;
    343496
     
    368521    I := I + 1;
    369522  end;
     523  Update;
    370524end;
    371525
     
    374528  if FCount > 1 then
    375529    QuickSort(0, FCount - 1, Compare);
     530  Update;
    376531end;
    377532
     
    385540    I := I + 1;
    386541  end;
    387 end;
    388 
    389 procedure TGList.SetArray(Values: TGListItemArray);
     542  Update;
     543end;
     544
     545procedure TGList.SetArray(Values: array of TGListItem);
    390546var
    391547  I: TGListIndex;
     
    399555end;
    400556
    401 procedure TGList.InsertArray(Index: TGListIndex; Values: array of TGListItem);
    402 var
    403   I: TGListIndex;
    404 begin
    405   I := 0;
    406   while I <= High(Values) do begin
    407     Insert(Index + I, Values[I]);
    408     I := I + 1;
    409   end;
     557procedure TGList.BeginUpdate;
     558begin
     559  Inc(FUpdateCount);
     560end;
     561
     562procedure TGList.EndUpdate;
     563begin
     564  Dec(FUpdateCount);
     565  Update;
     566end;
     567
     568procedure TGList.Update;
     569begin
     570  if Assigned(FOnUpdate) and (FUpdateCount = 0) then FOnUpdate(Self);
    410571end;
    411572
     
    440601  Result := FCount - 1;
    441602  FItems[Result] := Item;
     603  Update;
    442604end;
    443605
     
    445607var
    446608  I: TGListIndex;
    447 begin
    448   I := 0;
    449   while I < List.Count do begin
    450     Add(List[I]);
    451     I := I + 1;
    452   end;
     609  J: TGListIndex;
     610begin
     611  I := Count;
     612  J := 0;
     613  Count := Count + List.Count;
     614  while I < Count do begin
     615    Items[I] := List[J];
     616    I := I + 1;
     617    J := J + 1;
     618  end;
     619  Update;
     620end;
     621
     622procedure TGList.AddListPart(List: TGList; ItemIndex, ItemCount: TGListIndex);
     623var
     624  I: TGListIndex;
     625  J: TGListIndex;
     626begin
     627  I := Count;
     628  J := ItemIndex;
     629  Count := Count + ItemCount;
     630  while I < Count do begin
     631    Items[I] := List[J];
     632    I := I + 1;
     633    J := J + 1;
     634  end;
     635  Update;
    453636end;
    454637
     
    466649  System.Move(FItems[Index + 1], FItems[Index], (FCount - Index) * SizeOf(TGListItem));
    467650  SetCapacityOptimized(Capacity - 1);
     651  Update;
    468652end;
    469653
     
    477661    I := I + 1;
    478662  end;
     663  Update;
    479664end;
    480665
     
    488673    I := I + 1;
    489674  end;
     675  Update;
    490676end;
    491677
     
    501687  FItems[Index1] := FItems[Index2];
    502688  FItems[Index2] := Temp;
     689  Update;
    503690end;
    504691
  • trunk/Components/TemplateGenerics/Generic/GenericListObject.inc

    r29 r30  
    1313  // TGListObject<TListObjectIndex, TListObjectItem> = class(TGList)
    1414  TGListObject = class(TGList)
    15   private
     15  protected
    1616    procedure Put(Index: TGListIndex; const AValue: TGListItem); override;
     17    procedure SetCount(const AValue: TGListIndex); override;
    1718  public
    1819    OwnsObjects: Boolean;
     20    function AddNew(NewObject: TGListItem = nil): TGListItem;
     21    function InsertNew(Index: TGListIndex; NewObject: TGListItem = nil): TGListItem;
    1922    procedure Delete(Index: TGListObjectIndex); override;
    20     procedure Clear; override;
    2123    procedure Assign(Source: TGList); override;
    22     constructor Create;
     24    constructor Create; override;
    2325    destructor Destroy; override;
    2426  end;
     
    4951{ TGListObject }
    5052
     53function TGListObject.AddNew(NewObject: TGListItem = nil): TGListItem;
     54begin
     55  if Assigned(NewObject) then Result := NewObject
     56    else Result := TGListItem.Create;
     57  Add(Result);
     58end;
     59
     60function TGListObject.InsertNew(Index: TGListIndex;
     61  NewObject: TGListItem = nil): TGListItem;
     62begin
     63  if Assigned(NewObject) then Result := NewObject
     64    else Result := TGListItem.Create;
     65  Insert(Index, Result);
     66end;
     67
    5168procedure TGListObject.Assign(Source: TGList);
    5269begin
     
    5875procedure TGListObject.Put(Index: TGListIndex; const AValue: TGListItem);
    5976begin
    60   if OwnsObjects then FItems[Index].Free;
     77  if OwnsObjects and (FItems[Index] <> AValue) then FItems[Index].Free;
    6178  inherited Put(Index, AValue);
    6279end;
     
    6885end;
    6986
    70 procedure TGListObject.Clear;
     87procedure TGListObject.SetCount(const AValue: TGListIndex);
    7188var
    7289  I: TGListObjectIndex;
    7390begin
    7491  if OwnsObjects then begin
    75     I := 0;
    76     while I < Count do begin
     92    I := FCount - 1;
     93    while I >= AValue do begin
    7794      FItems[I].Free;
    78       I := I + 1;
     95      I := I - 1;
    7996    end;
    8097  end;
    81   inherited Clear;
     98  inherited;
    8299end;
    83100
  • trunk/Components/TemplateGenerics/Generic/GenericListString.inc

    r29 r30  
    1818    procedure Clear; override;
    1919    procedure Assign(Source: TGList); override;
    20     constructor Create;
     20    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; override;
     21    constructor Create; override;
    2122    destructor Destroy; override;
    2223  end;
     
    7172end;
    7273
     74function TGListString.IndexOf(Item: TGListItem; Start: TGListIndex): TGListIndex;
     75begin
     76  Result := Start;
     77  while (Result < Count) and
     78  (CompareStr(FItems[Result], Item) <> 0) do
     79    Result := Result + 1;
     80  if Result = FCount then Result := -1;
     81end;
     82
    7383constructor TGListString.Create;
    7484begin
  • trunk/Components/TemplateGenerics/Generic/GenericPoint.inc

    r29 r30  
    11{$IFDEF INTERFACE}
    22
    3 // TGPoint<TPointCoord, TPointType> = class
    4 TGPoint = class
    5   Coordinate: array[TGPointIndex] of TGPointType;
    6   //procedure SetArray(Items: array[TGPointIndex] of TGPointType);
     3// TGPoint<TPointType> = class
     4TGPoint = record
     5  X: TGPointType;
     6  Y: TGPointType;
     7  procedure Add(Point: TGPoint);
    78end;
    89
     
    1213{$IFDEF IMPLEMENTATION}
    1314
     15procedure TGPoint.Add(Point: TGPoint);
     16begin
     17  X := X + Point.X;
     18  Y := Y + Point.Y;
     19end;
    1420
    1521{$UNDEF IMPLEMENTATION}
  • trunk/Components/TemplateGenerics/Generic/GenericQueue.inc

    r29 r30  
    1111{$I 'GenericList.inc'}
    1212
    13   // TGQueue<TSetIndex, TSetItem> = class(TGList)
     13  // TGQueue<TQueueIndex, TQueueItem> = class(TGList)
    1414  TGQueue = class
    1515  private
    1616    FList: TGList;
     17    function GetCount: TGQueueIndex;
    1718  public
    1819    procedure Enqueue(Value: TGQueueItem);
     20    procedure EnqueueArray(Values: array of TGQueueItem);
     21    procedure EnqueueList(List: TGList);
    1922    function Dequeue: TGQueueItem;
    2023    function Peek: TGQueueItem;
     
    2225    destructor Destroy; override;
    2326    property List: TGList read FList;
     27    property Count: TGQueueIndex read GetCount;
    2428  end;
    2529
     
    5458end;
    5559
     60procedure TGQueue.EnqueueArray(Values: array of TGQueueItem);
     61begin
     62  FList.AddArray(Values);
     63end;
     64
     65procedure TGQueue.EnqueueList(List: TGList);
     66begin
     67  FList.AddList(List);
     68end;
     69
    5670function TGQueue.Peek: TGQueueItem;
    5771begin
     
    7589end;
    7690
     91function TGQueue.GetCount: TGQueueIndex;
     92begin
     93  Result := FList.Count;
     94end;
     95
    7796{$UNDEF IMPLEMENTATION}
    7897{$ENDIF}
  • trunk/Components/TemplateGenerics/Specialized/SpecializedBitmap.pas

    r29 r30  
    66
    77uses
    8   Classes, SysUtils, Graphics;
     8  Classes, SysUtils,
     9  Graphics, FPImage;
    910
    1011type
     
    2627{$I 'GenericBitmap.inc'}
    2728
     29// TBitmapTFPColor<Integer, Integer, TFPColor>
     30{$DEFINE TGBitmapIndexX := Integer}
     31{$DEFINE TGBitmapIndexY := Integer}
     32{$DEFINE TGBitmapItem := TFPColor}
     33{$DEFINE TGBitmapIndex := TBitmapTFPColorIndex}
     34{$DEFINE TGBitmapRow := TBitmapTFPColorRow}
     35{$DEFINE TGBitmapMatrix := TBitmapTFPColorMatrix}
     36{$DEFINE TGBitmap := TBitmapTFPColor}
     37{$DEFINE TGBitmapSortCompare := TBitmapTFPColorSortCompare}
     38{$DEFINE TGBitmapToStringConverter := TBitmapTFPColorToStringConverter}
     39{$DEFINE TGBitmapFromStringConverter := TBitmapTFPColorFromStringConverter}
     40{$DEFINE TGBitmapMerge := TBitmapTFPColorMerge}
     41{$DEFINE INTERFACE}
     42{$I 'GenericBitmap.inc'}
    2843
    2944implementation
     
    4762{$I 'GenericBitmap.inc'}
    4863
     64// TBitmapTFPColor<Integer, Integer, TFPColor>
     65{$DEFINE TGBitmapIndexX := Integer}
     66{$DEFINE TGBitmapIndexY := Integer}
     67{$DEFINE TGBitmapItem := TFPColor}
     68{$DEFINE TGBitmapIndex := TBitmapTFPColorIndex}
     69{$DEFINE TGBitmapRow := TBitmapTFPColorRow}
     70{$DEFINE TGBitmapMatrix := TBitmapTFPColorMatrix}
     71{$DEFINE TGBitmap := TBitmapTFPColor}
     72{$DEFINE TGBitmapSortCompare := TBitmapTFPColorSortCompare}
     73{$DEFINE TGBitmapToStringConverter := TBitmapTFPColorToStringConverter}
     74{$DEFINE TGBitmapFromStringConverter := TBitmapTFPColorFromStringConverter}
     75{$DEFINE TGBitmapMerge := TBitmapTFPColorMerge}
     76{$DEFINE IMPLEMENTATION}
     77{$I 'GenericBitmap.inc'}
     78
    4979end.
    5080
  • trunk/Components/TemplateGenerics/Specialized/SpecializedDictionary.pas

    r29 r30  
    1717{$DEFINE TGPairValue := string}
    1818{$DEFINE TGDictionary := TDictionaryStringString}
    19 {$DEFINE TGDictionaryList := TDictionaryList}
    20 {$DEFINE TGDictionarySortCompare := TDictionarySortCompareInteger}
    21 {$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger}
    22 {$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger}
    23 {$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray}
     19{$DEFINE TGDictionaryList := TDictionaryStringStringList}
     20{$DEFINE TGDictionarySortCompare := TDictionaryStringStringSortCompare}
     21{$DEFINE TGDictionaryToStringConverter := TDictionaryStringStringToStringConverter}
     22{$DEFINE TGDictionaryFromStringConverter := TDictionaryStringStringFromStringConverter}
     23{$DEFINE TGDictionaryItemArray := TDictionaryStringStringItemArray}
    2424{$DEFINE INTERFACE}
    2525{$I 'GenericDictionary.inc'}
    2626
     27// TDictionaryIntegerString<Integer, TPair<Integer, string>>
     28{$DEFINE TGDictionaryIndex := Integer}
     29{$DEFINE TGPair := TPairIntegerString}
     30{$DEFINE TGPairKey := Integer}
     31{$DEFINE TGPairValue := string}
     32{$DEFINE TGDictionary := TDictionaryIntegerString}
     33{$DEFINE TGDictionaryList := TDictionaryIntegerStringList}
     34{$DEFINE TGDictionarySortCompare := TDictionaryIntegerStringSortCompare}
     35{$DEFINE TGDictionaryToStringConverter := TDictionaryIntegerStringToStringConverter}
     36{$DEFINE TGDictionaryFromStringConverter := TDictionaryIntegerStringFromStringConverter}
     37{$DEFINE TGDictionaryItemArray := TDictionaryIntegerStringItemArray}
     38{$DEFINE INTERFACE}
     39{$I 'GenericDictionary.inc'}
     40
     41
    2742implementation
     43
     44{$DEFINE IMPLEMENTATION_USES}
     45{$I '..\Generic\GenericDictionary.inc'}
     46
    2847
    2948// TDictionaryStringString<Integer, TPair<string, string>>
     
    3352{$DEFINE TGPairValue := string}
    3453{$DEFINE TGDictionary := TDictionaryStringString}
    35 {$DEFINE TGDictionaryList := TDictionaryList}
    36 {$DEFINE TGDictionarySortCompare := TDictionarySortCompareInteger}
    37 {$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger}
    38 {$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger}
    39 {$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray}
     54{$DEFINE TGDictionaryList := TDictionaryStringStringList}
     55{$DEFINE TGDictionarySortCompare := TDictionaryStringStringSortCompare}
     56{$DEFINE TGDictionaryToStringConverter := TDictionaryStringStringToStringConverter}
     57{$DEFINE TGDictionaryFromStringConverter := TDictionaryStringStringFromStringConverter}
     58{$DEFINE TGDictionaryItemArray := TDictionaryStringStringItemArray}
    4059{$DEFINE IMPLEMENTATION}
    4160{$I 'GenericDictionary.inc'}
    4261
     62// TDictionaryIntegerString<Integer, TPair<Integer, string>>
     63{$DEFINE TGDictionaryIndex := Integer}
     64{$DEFINE TGPair := TPairIntegerString}
     65{$DEFINE TGPairKey := Integer}
     66{$DEFINE TGPairValue := string}
     67{$DEFINE TGDictionary := TDictionaryIntegerString}
     68{$DEFINE TGDictionaryList := TDictionaryIntegerStringList}
     69{$DEFINE TGDictionarySortCompare := TDictionaryIntegerStringSortCompare}
     70{$DEFINE TGDictionaryToStringConverter := TDictionaryIntegerStringToStringConverter}
     71{$DEFINE TGDictionaryFromStringConverter := TDictionaryIntegerStringFromStringConverter}
     72{$DEFINE TGDictionaryItemArray := TDictionaryIntegerStringItemArray}
     73{$DEFINE IMPLEMENTATION}
     74{$I 'GenericDictionary.inc'}
     75
     76
    4377end.
  • trunk/Components/TemplateGenerics/Specialized/SpecializedList.pas

    r29 r30  
    8080{$DEFINE TGListIndex := Integer}
    8181{$DEFINE TGListItem := Byte}
    82 {$DEFINE TGList := TListByte}
     82{$DEFINE TGList := TListByteBase}
    8383{$DEFINE TGListSortCompare := TListByteSortCompare}
    8484{$DEFINE TGListToStringConverter := TListByteToStringConverter}
     
    8787{$DEFINE INTERFACE}
    8888{$I 'GenericList.inc'}
     89
     90TListByte = class(TListByteBase)
     91  procedure WriteToStream(Stream: TStream);
     92  procedure WriteToStreamPart(Stream: TStream; ItemIndex, ItemCount: TGListIndex);
     93  procedure ReplaceStream(Stream: TStream);
     94  procedure ReplaceStreamPart(Stream: TStream; ItemIndex, ItemCount: TGListIndex);
     95  procedure AddStream(Stream: TStream);
     96  procedure AddStreamPart(Stream: TStream; ItemCount: TGListIndex);
     97  procedure WriteBuffer(var Buffer; Count: Integer);
     98  procedure ReadBuffer(var Buffer; Count: Integer);
     99end;
    89100
    90101// TListChar<Integer, Char>
     
    137148TListMethod = class(TListMethodBase)
    138149  procedure CallAll;
    139   procedure CallNotifyEvents(Sender: TObject);
    140 end;
     150end;
     151
     152// TListNotifyEventBase<Integer, TNotifyEvent>
     153{$DEFINE TGListIndex := Integer}
     154{$DEFINE TGListItem := TNotifyEvent}
     155{$DEFINE TGList := TListNotifyEventBase}
     156{$DEFINE TGListSortCompare := TListNotifyEventSortCompare}
     157{$DEFINE TGListToStringConverter := TListNotifyEventToStringConverter}
     158{$DEFINE TGListFromStringConverter := TListNotifyEventFromStringConverter}
     159{$DEFINE TGListItemArray := TListNotifyEventItemArray}
     160{$DEFINE INTERFACE}
     161{$I 'GenericList.inc'}
     162
     163// TListNotifyEvent<Integer, TNotifyEvent>
     164TListNotifyEvent = class(TListNotifyEventBase)
     165  procedure CallAll(Sender: TObject);
     166end;
     167
     168
     169TBaseEvent = procedure of object;
     170
     171// TListSimpleEventBase<Integer, TBaseEvent>
     172{$DEFINE TGListIndex := Integer}
     173{$DEFINE TGListItem := TBaseEvent}
     174{$DEFINE TGList := TListSimpleEventBase}
     175{$DEFINE TGListSortCompare := TListSimpleEventSortCompare}
     176{$DEFINE TGListToStringConverter := TListSimpleEventToStringConverter}
     177{$DEFINE TGListFromStringConverter := TListSimpleEventFromStringConverter}
     178{$DEFINE TGListItemArray := TListSimpleEventItemArray}
     179{$DEFINE INTERFACE}
     180{$I 'GenericList.inc'}
     181
     182// TListSimpleEvent<Integer, TSimpleEvent>
     183TListSimpleEvent = class(TListSimpleEventBase)
     184  procedure CallAll;
     185end;
     186
    141187
    142188function StrToStr(Value: string): string;
     
    216262{$DEFINE TGListIndex := Integer}
    217263{$DEFINE TGListItem := Byte}
    218 {$DEFINE TGList := TListByte}
     264{$DEFINE TGList := TListByteBase}
    219265{$DEFINE TGListSortCompare := TListByteSortCompare}
    220266{$DEFINE TGListToStringConverter := TListByteToStringConverter}
     
    258304{$I 'GenericList.inc'}
    259305
     306// TListNotifyEventBase<Integer, TNotifyEvent>
     307{$DEFINE TGListIndex := Integer}
     308{$DEFINE TGListItem := TNotifyEvent}
     309{$DEFINE TGList := TListNotifyEventBase}
     310{$DEFINE TGListSortCompare := TListNotifyEventSortCompare}
     311{$DEFINE TGListToStringConverter := TListNotifyEventToStringConverter}
     312{$DEFINE TGListFromStringConverter := TListNotifyEventFromStringConverter}
     313{$DEFINE TGListItemArray := TListNotifyEventItemArray}
     314{$DEFINE IMPLEMENTATION}
     315{$I 'GenericList.inc'}
     316
     317// TListSimpleEventBase<Integer, TBaseEvent>
     318{$DEFINE TGListIndex := Integer}
     319{$DEFINE TGListItem := TBaseEvent}
     320{$DEFINE TGList := TListSimpleEventBase}
     321{$DEFINE TGListSortCompare := TListSimpleEventSortCompare}
     322{$DEFINE TGListToStringConverter := TListSimpleEventToStringConverter}
     323{$DEFINE TGListFromStringConverter := TListSimpleEventFromStringConverter}
     324{$DEFINE TGListItemArray := TListSimpleEventItemArray}
     325{$DEFINE IMPLEMENTATION}
     326{$I 'GenericList.inc'}
     327
     328
    260329
    261330function StrToStr(Value: string): string;
     
    263332  Result := Value;
    264333end;
     334
     335{ TListSimpleEvent }
     336
     337procedure TListSimpleEvent.CallAll;
     338var
     339  I: TGListIndex;
     340begin
     341  I := 0;
     342  while (I < Count) do begin
     343    TBaseEvent(Items[I])();
     344    I := I + 1;
     345  end;
     346end;
     347
    265348
    266349{ TListChar }
     
    323406end;
    324407
    325 procedure TListMethod.CallNotifyEvents(Sender: TObject);
     408procedure TListNotifyEvent.CallAll(Sender: TObject);
    326409var
    327410  I: TGListIndex;
     
    334417end;
    335418
     419{ TListByte }
     420
     421procedure TListByte.WriteToStream(Stream: TStream);
     422var
     423  I: Integer;
     424begin
     425  Stream.Position := 0;
     426  I := 0;
     427  while I < Count do begin
     428    Stream.WriteByte(Items[I]);
     429    I := I + 1;
     430  end;
     431end;
     432
     433procedure TListByte.WriteToStreamPart(Stream: TStream; ItemIndex, ItemCount: Integer);
     434var
     435  I: Integer;
     436begin
     437  I := ItemIndex;
     438  while I < ItemCount do begin
     439    Stream.WriteByte(Items[I]);
     440    I := I + 1;
     441  end;
     442end;
     443
     444procedure TListByte.ReplaceStream(Stream: TStream);
     445var
     446  I: Integer;
     447begin
     448  Stream.Position := 0;
     449  I := 0;
     450  while I < Count do begin
     451    Items[I] := Stream.ReadByte;
     452    I := I + 1;
     453  end;
     454end;
     455
     456procedure TListByte.ReplaceStreamPart(Stream: TStream; ItemIndex,
     457  ItemCount: Integer);
     458var
     459  I: Integer;
     460begin
     461  I := ItemIndex;
     462  while I < ItemCount do begin
     463    Items[I] := Stream.ReadByte;
     464    I := I + 1;
     465  end;
     466end;
     467
     468procedure TListByte.AddStream(Stream: TStream);
     469var
     470  I: Integer;
     471begin
     472  Stream.Position := 0;
     473  I := Count;
     474  Count := Count + Stream.Size;
     475  while I < Count do begin
     476    Items[I] := Stream.ReadByte;
     477    I := I + 1;
     478  end;
     479end;
     480
     481procedure TListByte.AddStreamPart(Stream: TStream; ItemCount: Integer);
     482var
     483  I: Integer;
     484begin
     485  I := Count;
     486  Count := Count + ItemCount;
     487  while I < Count do begin
     488    Items[I] := Stream.ReadByte;
     489    I := I + 1;
     490  end;
     491end;
     492
     493procedure TListByte.WriteBuffer(var Buffer; Count: Integer);
     494begin
     495
     496end;
     497
     498procedure TListByte.ReadBuffer(var Buffer; Count: Integer);
     499begin
     500
     501end;
     502
    336503end.
  • trunk/Components/TemplateGenerics/Specialized/SpecializedMatrix.pas

    r29 r30  
    11unit SpecializedMatrix;
    22
    3 {$mode objfpc}{$H+}
     3{$mode Delphi}{$H+}
    44
    55interface
  • trunk/Components/TemplateGenerics/Specialized/SpecializedPoint.pas

    r29 r30  
    11unit SpecializedPoint;
    22
    3 {$mode objfpc}{$H+}
     3{$mode Delphi}{$H+}
    44
    55interface
     
    1111
    1212type
    13   TPoint2DIndex = (piX, piY);
    14 
    15 // TPoint2D<TPoint2DIndex, Integer>
    16 {$DEFINE TGPointIndex := TPoint2DIndex}
     13// TPoint<Integer>
    1714{$DEFINE TGPointType := Integer}
    18 {$DEFINE TGPoint := TPoint2D}
     15{$DEFINE TGPoint := TPoint}
    1916{$DEFINE INTERFACE}
    2017{$I 'GenericPoint.inc'}
     18
     19// TSmallPoint<SmallInt>
     20{$DEFINE TGPointType := SmallInt}
     21{$DEFINE TGPoint := TSmallPoint}
     22{$DEFINE INTERFACE}
     23{$I 'GenericPoint.inc'}
     24
     25// TPointSingle<Single>
     26{$DEFINE TGPointType := Single}
     27{$DEFINE TGPoint := TPointSingle}
     28{$DEFINE INTERFACE}
     29{$I 'GenericPoint.inc'}
     30
     31// TPointDouble<Double>
     32{$DEFINE TGPointType := Double}
     33{$DEFINE TGPoint := TPointDouble}
     34{$DEFINE INTERFACE}
     35{$I 'GenericPoint.inc'}
     36
    2137implementation
    2238
    23 // TPoint2D<TPoint2DIndex, Integer>
    24 {$DEFINE TGPointIndex := T2DPointIndex}
     39// TPoint<Integer>
    2540{$DEFINE TGPointType := Integer}
    26 {$DEFINE TGPoint := TPoint2D}
     41{$DEFINE TGPoint := TPoint}
    2742{$DEFINE IMPLEMENTATION}
    2843{$I 'GenericPoint.inc'}
    2944
     45// TSmallPoint<SmallInt>
     46{$DEFINE TGPointType := SmallInt}
     47{$DEFINE TGPoint := TSmallPoint}
     48{$DEFINE IMPLEMENTATION}
     49{$I 'GenericPoint.inc'}
     50
     51// TPointSingle<Single>
     52{$DEFINE TGPointType := Single}
     53{$DEFINE TGPoint := TPointSingle}
     54{$DEFINE IMPLEMENTATION}
     55{$I 'GenericPoint.inc'}
     56
     57// TPointDouble<Double>
     58{$DEFINE TGPointType := Double}
     59{$DEFINE TGPoint := TPointDouble}
     60{$DEFINE IMPLEMENTATION}
     61{$I 'GenericPoint.inc'}
    3062end.
    3163
  • trunk/Components/TemplateGenerics/TemplateGenerics.lpk

    r29 r30  
    11<?xml version="1.0"?>
    22<CONFIG>
    3   <Package Version="3">
     3  <Package Version="4">
    44    <PathDelim Value="\"/>
    55    <Name Value="TemplateGenerics"/>
    6     <Author Value="Chronos"/>
     6    <AddToProjectUsesSection Value="True"/>
     7    <Author Value="Chronos (robie@centrum.cz)"/>
    78    <CompilerOptions>
    8       <Version Value="10"/>
     9      <Version Value="11"/>
    910      <PathDelim Value="\"/>
    1011      <SearchPaths>
    1112        <IncludeFiles Value="Generic"/>
    12         <OtherUnitFiles Value="Specialized;Generic"/>
     13        <OtherUnitFiles Value="Specialized;Generic;Additional"/>
    1314        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
    1415      </SearchPaths>
     16      <CodeGeneration>
     17        <Optimizations>
     18          <VariablesInRegisters Value="True"/>
     19          <OptimizationLevel Value="3"/>
     20        </Optimizations>
     21      </CodeGeneration>
    1522      <Other>
     23        <CompilerMessages>
     24          <UseMsgFile Value="True"/>
     25        </CompilerMessages>
    1626        <CompilerPath Value="$(CompPath)"/>
    1727      </Other>
    1828    </CompilerOptions>
    1929    <Description Value="Generic classes implemented as templates."/>
    20     <Version Minor="3"/>
    21     <Files Count="22">
     30    <Version Minor="4"/>
     31    <Files Count="27">
    2232      <Item1>
    2333        <Filename Value="ReadMe.txt"/>
     
    6676      <Item12>
    6777        <Filename Value="Generic\GenericBitmap.inc"/>
     78        <UnitName Value="GenericBitmap"/>
    6879      </Item12>
    6980      <Item13>
     
    7283      </Item13>
    7384      <Item14>
     85        <Filename Value="Generic\GenericStream.inc"/>
     86        <UnitName Value="GenericStream"/>
     87      </Item14>
     88      <Item15>
     89        <Filename Value="Generic\GenericRectangle.inc"/>
     90        <UnitName Value="GenericRectangle"/>
     91      </Item15>
     92      <Item16>
    7493        <Filename Value="Specialized\SpecializedList.pas"/>
    7594        <UnitName Value="SpecializedList"/>
    76       </Item14>
    77       <Item15>
     95      </Item16>
     96      <Item17>
    7897        <Filename Value="Specialized\SpecializedDictionary.pas"/>
    7998        <UnitName Value="SpecializedDictionary"/>
    80       </Item15>
    81       <Item16>
     99      </Item17>
     100      <Item18>
    82101        <Filename Value="Specialized\SpecializedStack.pas"/>
    83102        <UnitName Value="SpecializedStack"/>
    84       </Item16>
    85       <Item17>
     103      </Item18>
     104      <Item19>
    86105        <Filename Value="Specialized\SpecializedTree.pas"/>
    87106        <UnitName Value="SpecializedTree"/>
    88       </Item17>
    89       <Item18>
     107      </Item19>
     108      <Item20>
    90109        <Filename Value="Specialized\SpecializedQueue.pas"/>
    91110        <UnitName Value="SpecializedQueue"/>
    92       </Item18>
    93       <Item19>
     111      </Item20>
     112      <Item21>
    94113        <Filename Value="Specialized\SpecializedSet.pas"/>
    95114        <UnitName Value="SpecializedSet"/>
    96       </Item19>
    97       <Item20>
     115      </Item21>
     116      <Item22>
    98117        <Filename Value="Specialized\SpecializedPoint.pas"/>
    99118        <UnitName Value="SpecializedPoint"/>
    100       </Item20>
    101       <Item21>
     119      </Item22>
     120      <Item23>
    102121        <Filename Value="Specialized\SpecializedMatrix.pas"/>
    103122        <UnitName Value="SpecializedMatrix"/>
    104       </Item21>
    105       <Item22>
     123      </Item23>
     124      <Item24>
    106125        <Filename Value="Specialized\SpecializedBitmap.pas"/>
    107126        <UnitName Value="SpecializedBitmap"/>
    108       </Item22>
     127      </Item24>
     128      <Item25>
     129        <Filename Value="Specialized\SpecializedStream.pas"/>
     130        <UnitName Value="SpecializedStream"/>
     131      </Item25>
     132      <Item26>
     133        <Filename Value="Specialized\SpecializedRectangle.pas"/>
     134        <UnitName Value="SpecializedRectangle"/>
     135      </Item26>
     136      <Item27>
     137        <Filename Value="Additional\UBinarySerializer.pas"/>
     138        <UnitName Value="UBinarySerializer"/>
     139      </Item27>
    109140    </Files>
    110141    <Type Value="RunAndDesignTime"/>
    111142    <RequiredPkgs Count="2">
    112143      <Item1>
    113         <PackageName Value="LCL"/>
     144        <PackageName Value="LCLBase"/>
    114145      </Item1>
    115146      <Item2>
     
    119150    </RequiredPkgs>
    120151    <UsageOptions>
    121       <IncludePath Value="Generic"/>
    122152      <UnitPath Value="$(PkgOutDir)"/>
    123153    </UsageOptions>
     
    125155      <Version Value="2"/>
    126156    </PublishOptions>
     157    <CustomOptions Items="ExternHelp" Version="2">
     158      <_ExternHelp Items="Count"/>
     159    </CustomOptions>
    127160  </Package>
    128161</CONFIG>
  • trunk/Components/TemplateGenerics/TemplateGenerics.pas

    r29 r30  
    33 }
    44
    5 unit TemplateGenerics; 
     5unit TemplateGenerics;
    66
    77interface
     
    1010  SpecializedList, SpecializedDictionary, SpecializedStack, SpecializedTree,
    1111  SpecializedQueue, SpecializedSet, SpecializedPoint, SpecializedMatrix,
    12   SpecializedBitmap, LazarusPackageIntf;
     12  SpecializedBitmap, SpecializedStream, SpecializedRectangle,
     13  UBinarySerializer, LazarusPackageIntf;
    1314
    1415implementation
    1516
    16 procedure Register; 
     17procedure Register;
    1718begin
    18 end; 
     19end;
    1920
    2021initialization
    21   RegisterPackage('TemplateGenerics', @Register); 
     22  RegisterPackage('TemplateGenerics', @Register);
    2223end.
  • trunk/Forms/UDebugForm.lrt

    r28 r30  
    1 TDEBUGFORM.DEBUGFORM.CAPTION=Debug
    2 TDEBUGFORM.LISTVIEW1.COLUMNS[0].CAPTION=Player
    3 TDEBUGFORM.LISTVIEW1.COLUMNS[1].CAPTION=Frame size
    4 TDEBUGFORM.LISTVIEW1.COLUMNS[2].CAPTION=Bullets
     1TFORM1.CAPTION=Form1
  • trunk/Languages/tunneler.cs.po

    r28 r30  
    1010"Content-Transfer-Encoding: 8bit\n"
    1111
    12 #: TDEBUGFORM.DEBUGFORM.CAPTION
     12#: tdebugform.debugform.caption
    1313msgid "Debug"
    1414msgstr ""
    1515
    16 #: TDEBUGFORM.LISTVIEW1.COLUMNS[0].CAPTION
     16#: tdebugform.listview1.columns[0].caption
    1717msgctxt "TDEBUGFORM.LISTVIEW1.COLUMNS[0].CAPTION"
    1818msgid "Player"
    1919msgstr ""
    2020
    21 #: TDEBUGFORM.LISTVIEW1.COLUMNS[1].CAPTION
     21#: tdebugform.listview1.columns[1].caption
    2222msgid "Frame size"
    2323msgstr ""
    2424
    25 #: TDEBUGFORM.LISTVIEW1.COLUMNS[2].CAPTION
     25#: tdebugform.listview1.columns[2].caption
    2626msgid "Bullets"
    2727msgstr ""
    2828
    29 #: TGAMERESULTSFORM.GAMERESULTSFORM.CAPTION
     29#: tform1.caption
     30msgid "Form1"
     31msgstr ""
     32
     33#: tgameresultform.caption
     34msgid "Game result"
     35msgstr ""
     36
     37#: tgameresultsform.gameresultsform.caption
    3038msgid "Final results"
    3139msgstr ""
    3240
    33 #: TMAINFORM.AABOUT.CAPTION
     41#: tmainform.aabout.caption
    3442msgid "About"
    3543msgstr "O aplikaci"
    3644
    37 #: TMAINFORM.AEXIT.CAPTION
     45#: tmainform.aexit.caption
    3846msgid "Exit"
    3947msgstr "Odejít"
    4048
    41 #: TMAINFORM.AFULLSCREEN.CAPTION
     49#: tmainform.afullscreen.caption
    4250msgid "Fullscreen mode"
    4351msgstr "Reşim celé obrazovky"
    4452
    45 #: TMAINFORM.ANEWGAME.CAPTION
     53#: tmainform.anewgame.caption
    4654msgctxt "TMAINFORM.ANEWGAME.CAPTION"
    4755msgid "New game"
    4856msgstr "Nová hra"
    4957
    50 #: TMAINFORM.ASHOWMAP.CAPTION
     58#: tmainform.ashowmap.caption
    5159msgid "Show map"
    5260msgstr "Ukázat mapu"
    5361
    54 #: TMAINFORM.ASHOWRAWIMAGEDESC.CAPTION
     62#: tmainform.ashowrawimagedesc.caption
    5563msgid "Show RawImage Description"
    5664msgstr "Ukázat popis RawImage"
    5765
    58 #: TMAINFORM.CAPTION
     66#: tmainform.caption
    5967msgid "Tunneler"
    6068msgstr "Tunneler"
    6169
    62 #: TMAINFORM.MENUITEM1.CAPTION
     70#: tmainform.menuitem1.caption
    6371msgid "Game"
    6472msgstr "Hra"
    6573
    66 #: TMAINFORM.MENUITEM4.CAPTION
     74#: tmainform.menuitem4.caption
    6775msgid "View"
    6876msgstr "Zobrazení"
    6977
    70 #: TMAPFORM.CAPTION
     78#: tmapform.caption
    7179msgid "Map"
    7280msgstr "Mapa"
    7381
    74 #: TNEWGAMEFORM.BUTTONCANCEL.CAPTION
     82#: tnewgameform.buttoncancel.caption
    7583msgid "Cancel"
    7684msgstr "Zrušit"
    7785
    78 #: TNEWGAMEFORM.BUTTONSTART.CAPTION
     86#: tnewgameform.buttonstart.caption
    7987msgid "Start"
    8088msgstr "Začít"
    8189
    82 #: TNEWGAMEFORM.CAPTION
     90#: tnewgameform.caption
    8391msgctxt "TNEWGAMEFORM.CAPTION"
    8492msgid "New game"
    8593msgstr "Nová hra"
    8694
    87 #: TNEWGAMEFORM.LABEL1.CAPTION
     95#: tnewgameform.label1.caption
    8896msgid "Players:"
    8997msgstr "Hráči:"
    9098
    91 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[0].CAPTION
     99#: tnewgameform.listview1.columns[0].caption
    92100msgid "Name"
    93101msgstr "Jméno"
    94102
    95 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[1].CAPTION
     103#: tnewgameform.listview1.columns[1].caption
    96104msgid "Color"
    97105msgstr "Barva"
    98106
    99 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[2].CAPTION
     107#: tnewgameform.listview1.columns[2].caption
    100108msgid "Controls"
    101109msgstr "Ovládání"
  • trunk/Languages/tunneler.po

    r28 r30  
    22msgstr "Content-Type: text/plain; charset=UTF-8"
    33
    4 #: TDEBUGFORM.DEBUGFORM.CAPTION
     4#: tdebugform.debugform.caption
    55msgid "Debug"
    66msgstr ""
    77
    8 #: TDEBUGFORM.LISTVIEW1.COLUMNS[0].CAPTION
     8#: tdebugform.listview1.columns[0].caption
    99msgctxt "TDEBUGFORM.LISTVIEW1.COLUMNS[0].CAPTION"
    1010msgid "Player"
    1111msgstr ""
    1212
    13 #: TDEBUGFORM.LISTVIEW1.COLUMNS[1].CAPTION
     13#: tdebugform.listview1.columns[1].caption
    1414msgid "Frame size"
    1515msgstr ""
    1616
    17 #: TDEBUGFORM.LISTVIEW1.COLUMNS[2].CAPTION
     17#: tdebugform.listview1.columns[2].caption
    1818msgid "Bullets"
    1919msgstr ""
    2020
    21 #: TGAMERESULTSFORM.GAMERESULTSFORM.CAPTION
     21#: tform1.caption
     22msgid "Form1"
     23msgstr ""
     24
     25#: tgameresultform.caption
     26msgid "Game result"
     27msgstr ""
     28
     29#: tgameresultsform.gameresultsform.caption
    2230msgid "Final results"
    2331msgstr ""
    2432
    25 #: TMAINFORM.AABOUT.CAPTION
     33#: tmainform.aabout.caption
    2634msgid "About"
    2735msgstr ""
    2836
    29 #: TMAINFORM.AEXIT.CAPTION
     37#: tmainform.aexit.caption
    3038msgid "Exit"
    3139msgstr ""
    3240
    33 #: TMAINFORM.AFULLSCREEN.CAPTION
     41#: tmainform.afullscreen.caption
    3442msgid "Fullscreen mode"
    3543msgstr ""
    3644
    37 #: TMAINFORM.ANEWGAME.CAPTION
     45#: tmainform.anewgame.caption
    3846msgctxt "TMAINFORM.ANEWGAME.CAPTION"
    3947msgid "New game"
    4048msgstr ""
    4149
    42 #: TMAINFORM.ASHOWMAP.CAPTION
     50#: tmainform.ashowmap.caption
    4351msgid "Show map"
    4452msgstr ""
    4553
    46 #: TMAINFORM.ASHOWRAWIMAGEDESC.CAPTION
     54#: tmainform.ashowrawimagedesc.caption
    4755msgid "Show RawImage Description"
    4856msgstr ""
    4957
    50 #: TMAINFORM.CAPTION
     58#: tmainform.caption
    5159msgid "Tunneler"
    5260msgstr ""
    5361
    54 #: TMAINFORM.MENUITEM1.CAPTION
     62#: tmainform.menuitem1.caption
    5563msgid "Game"
    5664msgstr ""
    5765
    58 #: TMAINFORM.MENUITEM4.CAPTION
     66#: tmainform.menuitem4.caption
    5967msgid "View"
    6068msgstr ""
    6169
    62 #: TMAPFORM.CAPTION
     70#: tmapform.caption
    6371msgid "Map"
    6472msgstr ""
    6573
    66 #: TNEWGAMEFORM.BUTTONCANCEL.CAPTION
     74#: tnewgameform.buttoncancel.caption
    6775msgid "Cancel"
    6876msgstr ""
    6977
    70 #: TNEWGAMEFORM.BUTTONSTART.CAPTION
     78#: tnewgameform.buttonstart.caption
    7179msgid "Start"
    7280msgstr ""
    7381
    74 #: TNEWGAMEFORM.CAPTION
     82#: tnewgameform.caption
    7583msgctxt "TNEWGAMEFORM.CAPTION"
    7684msgid "New game"
    7785msgstr ""
    7886
    79 #: TNEWGAMEFORM.LABEL1.CAPTION
     87#: tnewgameform.label1.caption
    8088msgid "Players:"
    8189msgstr ""
    8290
    83 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[0].CAPTION
     91#: tnewgameform.listview1.columns[0].caption
    8492msgid "Name"
    8593msgstr ""
    8694
    87 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[1].CAPTION
     95#: tnewgameform.listview1.columns[1].caption
    8896msgid "Color"
    8997msgstr ""
    9098
    91 #: TNEWGAMEFORM.LISTVIEW1.COLUMNS[2].CAPTION
     99#: tnewgameform.listview1.columns[2].caption
    92100msgid "Controls"
    93101msgstr ""
  • trunk/tunneler.lpi

    r28 r30  
    2121      <Item2 Name="Release">
    2222        <CompilerOptions>
    23           <Version Value="9"/>
     23          <Version Value="11"/>
    2424          <Target>
    2525            <Filename Value="tunneler"/>
     
    4242          <Linking>
    4343            <Debugging>
     44              <GenerateDebugInfo Value="False"/>
    4445              <UseLineInfoUnit Value="False"/>
    4546            </Debugging>
     
    7475      <Item1>
    7576        <PackageName Value="CoolTranslator"/>
     77        <DefaultFilename Value="Components/CoolTranslator/CoolTranslator.lpk" Prefer="True"/>
    7678      </Item1>
    7779      <Item2>
    7880        <PackageName Value="TemplateGenerics"/>
     81        <DefaultFilename Value="Components/TemplateGenerics/TemplateGenerics.lpk" Prefer="True"/>
    7982      </Item2>
    8083      <Item3>
     
    8285      </Item3>
    8386    </RequiredPackages>
    84     <Units Count="83">
     87    <Units Count="86">
    8588      <Unit0>
    8689        <Filename Value="tunneler.lpr"/>
    8790        <IsPartOfProject Value="True"/>
    8891        <UnitName Value="tunneler"/>
    89         <EditorIndex Value="8"/>
    9092        <WindowIndex Value="0"/>
    9193        <TopLine Value="1"/>
    9294        <CursorPos X="27" Y="5"/>
    9395        <UsageCount Value="139"/>
    94         <Loaded Value="True"/>
    9596      </Unit0>
    9697      <Unit1>
     
    108109        <IsPartOfProject Value="True"/>
    109110        <UnitName Value="UCore"/>
    110         <IsVisibleTab Value="True"/>
    111111        <EditorIndex Value="0"/>
    112112        <WindowIndex Value="0"/>
    113         <TopLine Value="1467"/>
    114         <CursorPos X="13" Y="1480"/>
     113        <TopLine Value="306"/>
     114        <CursorPos X="12" Y="325"/>
    115115        <UsageCount Value="139"/>
    116116        <Loaded Value="True"/>
     
    179179      <Unit11>
    180180        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    181         <EditorIndex Value="4"/>
     181        <EditorIndex Value="6"/>
    182182        <WindowIndex Value="0"/>
    183183        <TopLine Value="121"/>
    184         <CursorPos X="57" Y="141"/>
     184        <CursorPos X="10" Y="129"/>
    185185        <UsageCount Value="55"/>
    186186        <Loaded Value="True"/>
     
    366366      <Unit36>
    367367        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericBitmap.inc"/>
    368         <EditorIndex Value="3"/>
     368        <EditorIndex Value="5"/>
    369369        <WindowIndex Value="0"/>
    370370        <TopLine Value="11"/>
     
    376376        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedBitmap.pas"/>
    377377        <UnitName Value="SpecializedBitmap"/>
    378         <EditorIndex Value="2"/>
     378        <EditorIndex Value="3"/>
    379379        <WindowIndex Value="0"/>
    380380        <TopLine Value="7"/>
     
    566566        <ResourceBaseClass Value="Form"/>
    567567        <UnitName Value="UNewGameForm"/>
    568         <EditorIndex Value="11"/>
    569568        <WindowIndex Value="0"/>
    570569        <TopLine Value="44"/>
    571570        <CursorPos X="23" Y="65"/>
    572571        <UsageCount Value="67"/>
    573         <Loaded Value="True"/>
    574572        <LoadedDesigner Value="True"/>
    575573      </Unit61>
     
    581579        <ResourceBaseClass Value="Form"/>
    582580        <UnitName Value="UMainForm"/>
    583         <EditorIndex Value="9"/>
    584         <WindowIndex Value="0"/>
    585         <TopLine Value="119"/>
    586         <CursorPos X="1" Y="133"/>
     581        <EditorIndex Value="1"/>
     582        <WindowIndex Value="0"/>
     583        <TopLine Value="57"/>
     584        <CursorPos X="27" Y="74"/>
    587585        <UsageCount Value="67"/>
    588586        <Loaded Value="True"/>
     
    688686      <Unit75>
    689687        <Filename Value="/usr/lib64/lazarus/lcl/include/customform.inc"/>
    690         <EditorIndex Value="10"/>
    691688        <WindowIndex Value="0"/>
    692689        <TopLine Value="2095"/>
    693690        <CursorPos X="11" Y="2110"/>
    694691        <UsageCount Value="13"/>
    695         <Loaded Value="True"/>
    696692      </Unit75>
    697693      <Unit76>
     
    715711        <ResourceBaseClass Value="Form"/>
    716712        <UnitName Value="UDebugForm"/>
    717         <EditorIndex Value="7"/>
    718713        <WindowIndex Value="0"/>
    719714        <TopLine Value="4"/>
    720715        <CursorPos X="15" Y="18"/>
    721716        <UsageCount Value="27"/>
    722         <Loaded Value="True"/>
    723717        <LoadedDesigner Value="True"/>
    724718      </Unit78>
    725719      <Unit79>
    726720        <Filename Value="Forms/UGameResultsForm.pas"/>
    727         <IsPartOfProject Value="True"/>
    728721        <HasResources Value="True"/>
    729722        <UnitName Value="UGameResultsForm"/>
     723        <WindowIndex Value="0"/>
     724        <TopLine Value="1"/>
     725        <CursorPos X="34" Y="11"/>
    730726        <UsageCount Value="27"/>
    731727      </Unit79>
    732728      <Unit80>
    733729        <Filename Value="/usr/share/fpcsrc/rtl/inc/objpash.inc"/>
    734         <EditorIndex Value="5"/>
    735730        <WindowIndex Value="0"/>
    736731        <TopLine Value="171"/>
    737732        <CursorPos X="23" Y="185"/>
    738733        <UsageCount Value="13"/>
    739         <Loaded Value="True"/>
    740734      </Unit80>
    741735      <Unit81>
    742736        <Filename Value="/usr/share/fpcsrc/rtl/inc/objpas.inc"/>
    743         <EditorIndex Value="6"/>
    744737        <WindowIndex Value="0"/>
    745738        <TopLine Value="149"/>
    746739        <CursorPos X="9" Y="154"/>
    747740        <UsageCount Value="13"/>
    748         <Loaded Value="True"/>
    749741      </Unit81>
    750742      <Unit82>
    751743        <Filename Value="/usr/lib64/lazarus/lcl/stringhashlist.pas"/>
    752744        <UnitName Value="StringHashList"/>
    753         <EditorIndex Value="1"/>
    754745        <WindowIndex Value="0"/>
    755746        <TopLine Value="37"/>
    756747        <CursorPos X="14" Y="51"/>
    757748        <UsageCount Value="10"/>
     749      </Unit82>
     750      <Unit83>
     751        <Filename Value="Components/CoolTranslator/UCoolTranslator.pas"/>
     752        <UnitName Value="UCoolTranslator"/>
     753        <EditorIndex Value="7"/>
     754        <WindowIndex Value="0"/>
     755        <TopLine Value="116"/>
     756        <CursorPos X="100" Y="141"/>
     757        <UsageCount Value="10"/>
    758758        <Loaded Value="True"/>
    759       </Unit82>
     759      </Unit83>
     760      <Unit84>
     761        <Filename Value="Forms/UDebugForm.pas"/>
     762        <ComponentName Value="DebugForm"/>
     763        <ResourceBaseClass Value="Form"/>
     764        <UnitName Value="UDebugForm"/>
     765        <IsVisibleTab Value="True"/>
     766        <EditorIndex Value="2"/>
     767        <WindowIndex Value="0"/>
     768        <TopLine Value="1"/>
     769        <CursorPos X="80" Y="14"/>
     770        <UsageCount Value="20"/>
     771        <Loaded Value="True"/>
     772        <LoadedDesigner Value="True"/>
     773      </Unit84>
     774      <Unit85>
     775        <Filename Value="Forms/UGameResultForm.pas"/>
     776        <IsPartOfProject Value="True"/>
     777        <ComponentName Value="GameResultForm"/>
     778        <ResourceBaseClass Value="Form"/>
     779        <UnitName Value="UGameResultForm"/>
     780        <EditorIndex Value="4"/>
     781        <WindowIndex Value="0"/>
     782        <TopLine Value="1"/>
     783        <CursorPos X="21" Y="26"/>
     784        <UsageCount Value="20"/>
     785        <Loaded Value="True"/>
     786        <LoadedDesigner Value="True"/>
     787      </Unit85>
    760788    </Units>
    761     <JumpHistory Count="30" HistoryIndex="29">
     789    <JumpHistory Count="26" HistoryIndex="25">
    762790      <Position1>
    763791        <Filename Value="UCore.pas"/>
     
    825853      </Position16>
    826854      <Position17>
    827         <Filename Value="Forms/UDebugForm.pas"/>
    828         <Caret Line="7" Column="46" TopLine="1"/>
     855        <Filename Value="UCore.pas"/>
     856        <Caret Line="1591" Column="7" TopLine="1582"/>
    829857      </Position17>
    830858      <Position18>
    831         <Filename Value="Forms/UDebugForm.pas"/>
    832         <Caret Line="43" Column="37" TopLine="19"/>
     859        <Filename Value="UCore.pas"/>
     860        <Caret Line="1593" Column="9" TopLine="1582"/>
    833861      </Position18>
    834862      <Position19>
    835         <Filename Value="Forms/UDebugForm.pas"/>
    836         <Caret Line="39" Column="35" TopLine="22"/>
     863        <Filename Value="UCore.pas"/>
     864        <Caret Line="1536" Column="26" TopLine="1533"/>
    837865      </Position19>
    838866      <Position20>
    839         <Filename Value="Forms/UDebugForm.pas"/>
    840         <Caret Line="40" Column="22" TopLine="27"/>
     867        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
     868        <Caret Line="150" Column="17" TopLine="137"/>
    841869      </Position20>
    842870      <Position21>
    843         <Filename Value="Forms/UDebugForm.pas"/>
    844         <Caret Line="49" Column="45" TopLine="28"/>
     871        <Filename Value="UCore.pas"/>
     872        <Caret Line="1591" Column="9" TopLine="1582"/>
    845873      </Position21>
    846874      <Position22>
    847         <Filename Value="Forms/UMainForm.pas"/>
    848         <Caret Line="74" Column="38" TopLine="63"/>
     875        <Filename Value="Components/CoolTranslator/UCoolTranslator.pas"/>
     876        <Caret Line="1" Column="1" TopLine="1"/>
    849877      </Position22>
    850878      <Position23>
    851         <Filename Value="tunneler.lpr"/>
    852         <Caret Line="12" Column="30" TopLine="7"/>
     879        <Filename Value="UCore.pas"/>
     880        <Caret Line="1480" Column="13" TopLine="1467"/>
    853881      </Position23>
    854882      <Position24>
    855         <Filename Value="tunneler.lpr"/>
    856         <Caret Line="35" Column="43" TopLine="10"/>
     883        <Filename Value="Forms/UMainForm.pas"/>
     884        <Caret Line="133" Column="1" TopLine="119"/>
    857885      </Position24>
    858886      <Position25>
    859         <Filename Value="tunneler.lpr"/>
    860         <Caret Line="11" Column="71" TopLine="11"/>
     887        <Filename Value="Forms/UDebugForm.pas"/>
     888        <Caret Line="12" Column="35" TopLine="1"/>
    861889      </Position25>
    862890      <Position26>
    863         <Filename Value="UCore.pas"/>
    864         <Caret Line="1591" Column="7" TopLine="1582"/>
     891        <Filename Value="Forms/UDebugForm.pas"/>
     892        <Caret Line="1" Column="1" TopLine="1"/>
    865893      </Position26>
    866       <Position27>
    867         <Filename Value="UCore.pas"/>
    868         <Caret Line="1593" Column="9" TopLine="1582"/>
    869       </Position27>
    870       <Position28>
    871         <Filename Value="UCore.pas"/>
    872         <Caret Line="1536" Column="26" TopLine="1533"/>
    873       </Position28>
    874       <Position29>
    875         <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    876         <Caret Line="150" Column="17" TopLine="137"/>
    877       </Position29>
    878       <Position30>
    879         <Filename Value="UCore.pas"/>
    880         <Caret Line="1591" Column="9" TopLine="1582"/>
    881       </Position30>
    882894    </JumpHistory>
    883895  </ProjectOptions>
    884896  <CompilerOptions>
    885     <Version Value="9"/>
     897    <Version Value="11"/>
    886898    <Target>
    887899      <Filename Value="tunneler"/>
     
    934946    </Exceptions>
    935947  </Debugging>
     948  <EditorMacros Count="0"/>
    936949</CONFIG>
  • trunk/tunneler.lpr

    r28 r30  
    1111  Forms, UCore, TemplateGenerics, CoolTranslator, UPlatform, FileUtil, SysUtils,
    1212  UApplicationInfo, URectangle, UPersistentForm, URegistry, UThreading,
    13 UNewGameForm, UMainForm, UMapForm, UDebugForm, UGameResultsForm
     13UNewGameForm, UMainForm, UMapForm, UDebugForm, UGameResultForm
    1414  { you can add units after this };
    1515
     
    3535  Application.CreateForm(TDebugForm, DebugForm);
    3636  {$ENDIF}
     37  Application.CreateForm(TGameResultForm, GameResultForm);
    3738  Application.Run;
    3839end.
Note: See TracChangeset for help on using the changeset viewer.