Changeset 496


Ignore:
Timestamp:
Jan 5, 2018, 10:24:36 PM (6 years ago)
Author:
chronos
Message:
  • Modified: New native generics classes working under FPC 3.0 transformed from TemplateGenerics package.
Location:
Generics/NativeGenerics
Files:
19 added
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • Generics/NativeGenerics/Additional/UBinarySerializer.pas

    r425 r496  
    66
    77uses
    8   Classes, SysUtils, DateUtils, GenericList, GenericStream;
     8  Classes, SysUtils, DateUtils, SpecializedList, SpecializedStream;
    99
    1010type
     
    7474begin
    7575  StringLength := 0;
    76   FList.ReadBuffer(StringLength, SizeOf(StringLength));
     76  Read(StringLength, SizeOf(StringLength));
    7777  Result := ReadString(StringLength);
    7878end;
  • Generics/NativeGenerics/Demo

    • Property svn:ignore
      •  

        old new  
        33Demo.exe
        44heaptrclog.trc
         5Demo
  • Generics/NativeGenerics/Demo/Demo.lpi

    r481 r496  
    22<CONFIG>
    33  <ProjectOptions>
    4     <Version Value="9"/>
     4    <Version Value="10"/>
    55    <General>
    66      <MainUnit Value="0"/>
     
    1212      <EnableI18N LFM="False"/>
    1313    </i18n>
    14     <VersionInfo>
    15       <StringTable ProductVersion=""/>
    16     </VersionInfo>
    17     <BuildModes Count="1">
    18       <Item1 Name="default" Default="True"/>
     14    <BuildModes Count="2" Active="Debug">
     15      <Item1 Name="Debug" Default="True"/>
     16      <Item2 Name="Release">
     17        <CompilerOptions>
     18          <Version Value="11"/>
     19          <Target>
     20            <Filename Value="Demo"/>
     21          </Target>
     22          <SearchPaths>
     23            <IncludeFiles Value="$(ProjOutDir)"/>
     24            <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
     25          </SearchPaths>
     26          <Parsing>
     27            <SyntaxOptions>
     28              <SyntaxMode Value="Delphi"/>
     29              <CStyleOperator Value="False"/>
     30              <AllowLabel Value="False"/>
     31              <CPPInline Value="False"/>
     32              <CStyleMacros Value="True"/>
     33            </SyntaxOptions>
     34          </Parsing>
     35          <CodeGeneration>
     36            <SmartLinkUnit Value="True"/>
     37            <Optimizations>
     38              <OptimizationLevel Value="3"/>
     39            </Optimizations>
     40          </CodeGeneration>
     41          <Linking>
     42            <Debugging>
     43              <GenerateDebugInfo Value="False"/>
     44              <DebugInfoType Value="dsStabs"/>
     45            </Debugging>
     46            <LinkSmart Value="True"/>
     47            <Options>
     48              <Win32>
     49                <GraphicApplication Value="True"/>
     50              </Win32>
     51            </Options>
     52          </Linking>
     53          <Other>
     54            <CompilerMessages>
     55              <IgnoredMessages idx5024="True"/>
     56            </CompilerMessages>
     57          </Other>
     58        </CompilerOptions>
     59      </Item2>
    1960    </BuildModes>
    2061    <PublishOptions>
     
    3778      </Item2>
    3879    </RequiredPackages>
    39     <Units Count="83">
     80    <Units Count="104">
    4081      <Unit0>
    4182        <Filename Value="Demo.lpr"/>
    4283        <IsPartOfProject Value="True"/>
    43         <EditorIndex Value="15"/>
    44         <CursorPos Y="16"/>
     84        <EditorIndex Value="1"/>
     85        <CursorPos X="50" Y="24"/>
    4586        <UsageCount Value="233"/>
    4687        <Loaded Value="True"/>
     
    5495        <ResourceBaseClass Value="Form"/>
    5596        <IsVisibleTab Value="True"/>
    56         <EditorIndex Value="3"/>
    57         <TopLine Value="219"/>
    58         <CursorPos X="51" Y="237"/>
     97        <EditorIndex Value="4"/>
     98        <TopLine Value="481"/>
     99        <CursorPos X="55" Y="515"/>
    59100        <UsageCount Value="233"/>
    60101        <Bookmarks Count="1">
    61           <Item0 X="65" Y="277" ID="2"/>
     102          <Item0 X="65" Y="276" ID="2"/>
    62103        </Bookmarks>
    63104        <Loaded Value="True"/>
     105        <LoadedDesigner Value="True"/>
    64106        <DefaultSyntaxHighlighter Value="Delphi"/>
    65107      </Unit1>
    66108      <Unit2>
    67         <Filename Value="../Specialized/SpecializedList.pas"/>
    68         <TopLine Value="47"/>
    69         <CursorPos X="20" Y="60"/>
    70         <UsageCount Value="10"/>
    71         <DefaultSyntaxHighlighter Value="Delphi"/>
     109        <Filename Value="../Specialized/ListDouble.pas"/>
     110        <CursorPos Y="11"/>
     111        <UsageCount Value="3"/>
    72112      </Unit2>
    73113      <Unit3>
     114        <Filename Value="../Specialized/SpecializedList.pas"/>
     115        <EditorIndex Value="-1"/>
     116        <TopLine Value="7"/>
     117        <CursorPos X="15" Y="33"/>
     118        <UsageCount Value="15"/>
     119      </Unit3>
     120      <Unit4>
     121        <Filename Value="../Specialized/ListObject.pas"/>
     122        <TopLine Value="33"/>
     123        <CursorPos X="12" Y="56"/>
     124        <UsageCount Value="3"/>
     125      </Unit4>
     126      <Unit5>
     127        <Filename Value="../Specialized/ListPointer.pas"/>
     128        <CursorPos X="23" Y="21"/>
     129        <UsageCount Value="3"/>
     130      </Unit5>
     131      <Unit6>
     132        <Filename Value="../Specialized/TreeString.pas"/>
     133        <CursorPos X="23" Y="24"/>
     134        <UsageCount Value="3"/>
     135      </Unit6>
     136      <Unit7>
     137        <Filename Value="../Specialized/TreePointer.pas"/>
     138        <CursorPos X="23" Y="13"/>
     139        <UsageCount Value="3"/>
     140      </Unit7>
     141      <Unit8>
     142        <Filename Value="../Specialized/TreeObject.pas"/>
     143        <CursorPos X="23" Y="24"/>
     144        <UsageCount Value="3"/>
     145      </Unit8>
     146      <Unit9>
     147        <Filename Value="../Specialized/TreeInteger.pas"/>
     148        <CursorPos X="31" Y="13"/>
     149        <UsageCount Value="3"/>
     150      </Unit9>
     151      <Unit10>
     152        <Filename Value="../Specialized/ListString.pas"/>
     153        <CursorPos X="29" Y="17"/>
     154        <UsageCount Value="3"/>
     155      </Unit10>
     156      <Unit11>
     157        <Filename Value="../Generic/TreeImplementation.tpl"/>
     158        <CursorPos Y="4"/>
     159        <UsageCount Value="3"/>
     160        <DefaultSyntaxHighlighter Value="None"/>
     161      </Unit11>
     162      <Unit12>
     163        <Filename Value="../Generic/TreeInterface.tpl"/>
     164        <CursorPos X="21" Y="6"/>
     165        <UsageCount Value="3"/>
     166        <DefaultSyntaxHighlighter Value="None"/>
     167      </Unit12>
     168      <Unit13>
     169        <Filename Value="../Generic/ListInterface.tpl"/>
     170        <UsageCount Value="3"/>
     171        <DefaultSyntaxHighlighter Value="None"/>
     172      </Unit13>
     173      <Unit14>
    74174        <Filename Value="../Generic/ListImplementation.tpl"/>
    75175        <CursorPos X="25" Y="13"/>
     176        <UsageCount Value="4"/>
     177        <DefaultSyntaxHighlighter Value="None"/>
     178      </Unit14>
     179      <Unit15>
     180        <Filename Value="../Generic/DictionaryImplementation.tpl"/>
     181        <TopLine Value="4"/>
     182        <CursorPos X="3" Y="6"/>
     183        <UsageCount Value="3"/>
     184        <DefaultSyntaxHighlighter Value="None"/>
     185      </Unit15>
     186      <Unit16>
     187        <Filename Value="../Generic/DictionaryInterface.tpl"/>
     188        <CursorPos X="14" Y="16"/>
     189        <UsageCount Value="3"/>
     190        <DefaultSyntaxHighlighter Value="None"/>
     191      </Unit16>
     192      <Unit17>
     193        <Filename Value="../Specialized/DictionaryString.pas"/>
     194        <CursorPos X="32" Y="18"/>
     195        <UsageCount Value="3"/>
     196      </Unit17>
     197      <Unit18>
     198        <Filename Value="../Generic/StackInterface.tpl"/>
     199        <CursorPos X="20" Y="12"/>
     200        <UsageCount Value="1"/>
     201        <DefaultSyntaxHighlighter Value="None"/>
     202      </Unit18>
     203      <Unit19>
     204        <Filename Value="../Specialized/StackString.pas"/>
     205        <CursorPos Y="22"/>
     206        <UsageCount Value="1"/>
     207      </Unit19>
     208      <Unit20>
     209        <Filename Value="../Generic/StackImplementation.tpl"/>
     210        <UsageCount Value="1"/>
     211        <DefaultSyntaxHighlighter Value="None"/>
     212      </Unit20>
     213      <Unit21>
     214        <Filename Value="../Generic/QueueImplementation.tpl"/>
     215        <CursorPos Y="3"/>
     216        <UsageCount Value="1"/>
     217        <DefaultSyntaxHighlighter Value="None"/>
     218      </Unit21>
     219      <Unit22>
     220        <Filename Value="../Generic/QueueInterface.tpl"/>
     221        <CursorPos Y="3"/>
     222        <UsageCount Value="1"/>
     223        <DefaultSyntaxHighlighter Value="None"/>
     224      </Unit22>
     225      <Unit23>
     226        <Filename Value="../Specialized/ListChar.pas"/>
     227        <TopLine Value="45"/>
     228        <CursorPos X="9" Y="79"/>
     229        <UsageCount Value="10"/>
     230      </Unit23>
     231      <Unit24>
     232        <Filename Value="../Generic/SetInterface.tpl"/>
     233        <CursorPos X="21" Y="4"/>
    76234        <UsageCount Value="5"/>
    77235        <DefaultSyntaxHighlighter Value="None"/>
    78       </Unit3>
    79       <Unit4>
     236      </Unit24>
     237      <Unit25>
     238        <Filename Value="../Specialized/SetChar.pas"/>
     239        <CursorPos Y="25"/>
     240        <UsageCount Value="5"/>
     241      </Unit25>
     242      <Unit26>
     243        <Filename Value="../Generic/SetImplementation.tpl"/>
     244        <CursorPos Y="3"/>
     245        <UsageCount Value="5"/>
     246        <DefaultSyntaxHighlighter Value="None"/>
     247      </Unit26>
     248      <Unit27>
     249        <Filename Value="../Generic/RangeInterface.tpl"/>
     250        <CursorPos X="7" Y="4"/>
     251        <UsageCount Value="5"/>
     252        <DefaultSyntaxHighlighter Value="None"/>
     253      </Unit27>
     254      <Unit28>
     255        <Filename Value="../Specialized/RangeDateTime.pas"/>
     256        <CursorPos X="14" Y="15"/>
     257        <UsageCount Value="5"/>
     258      </Unit28>
     259      <Unit29>
     260        <Filename Value="../Generic/RangeImplementation.tpl"/>
     261        <CursorPos X="14" Y="18"/>
     262        <UsageCount Value="5"/>
     263        <DefaultSyntaxHighlighter Value="None"/>
     264      </Unit29>
     265      <Unit30>
     266        <Filename Value="../Specialized/ListVariant.pas"/>
     267        <TopLine Value="2"/>
     268        <CursorPos X="30" Y="8"/>
     269        <UsageCount Value="5"/>
     270      </Unit30>
     271      <Unit31>
     272        <Filename Value="ListObject.pas"/>
     273        <TopLine Value="13"/>
     274        <CursorPos X="15" Y="12"/>
     275        <UsageCount Value="7"/>
     276        <DefaultSyntaxHighlighter Value="Delphi"/>
     277      </Unit31>
     278      <Unit32>
    80279        <Filename Value="../Generic/GenericList.inc"/>
    81         <TopLine Value="359"/>
    82         <CursorPos X="62" Y="376"/>
    83         <UsageCount Value="97"/>
    84         <DefaultSyntaxHighlighter Value="Delphi"/>
    85       </Unit4>
    86       <Unit5>
     280        <EditorIndex Value="-1"/>
     281        <TopLine Value="42"/>
     282        <CursorPos X="15" Y="55"/>
     283        <UsageCount Value="107"/>
     284      </Unit32>
     285      <Unit33>
    87286        <Filename Value="../Generic/GenericDictionary.inc"/>
    88287        <TopLine Value="31"/>
    89288        <CursorPos X="44" Y="47"/>
    90         <UsageCount Value="84"/>
    91         <DefaultSyntaxHighlighter Value="Delphi"/>
    92       </Unit5>
    93       <Unit6>
     289        <UsageCount Value="93"/>
     290      </Unit33>
     291      <Unit34>
    94292        <Filename Value="../Generic/GenericObjectList.inc"/>
    95293        <CursorPos X="36" Y="48"/>
    96         <UsageCount Value="84"/>
    97         <DefaultSyntaxHighlighter Value="Delphi"/>
    98       </Unit6>
    99       <Unit7>
     294        <UsageCount Value="93"/>
     295      </Unit34>
     296      <Unit35>
    100297        <Filename Value="../Generic/GenericQueue.inc"/>
    101298        <TopLine Value="3"/>
    102299        <CursorPos Y="3"/>
    103         <UsageCount Value="84"/>
    104         <DefaultSyntaxHighlighter Value="Delphi"/>
    105       </Unit7>
    106       <Unit8>
     300        <UsageCount Value="93"/>
     301      </Unit35>
     302      <Unit36>
    107303        <Filename Value="../Generic/GenericSet.inc"/>
    108304        <TopLine Value="11"/>
    109305        <CursorPos X="42" Y="11"/>
    110         <UsageCount Value="84"/>
    111         <DefaultSyntaxHighlighter Value="Delphi"/>
    112       </Unit8>
    113       <Unit9>
     306        <UsageCount Value="93"/>
     307      </Unit36>
     308      <Unit37>
    114309        <Filename Value="../Generic/GenericStack.inc"/>
    115310        <TopLine Value="3"/>
    116311        <CursorPos Y="3"/>
    117         <UsageCount Value="84"/>
    118         <DefaultSyntaxHighlighter Value="Delphi"/>
    119       </Unit9>
    120       <Unit10>
     312        <UsageCount Value="93"/>
     313      </Unit37>
     314      <Unit38>
    121315        <Filename Value="../Generic/GenericTree.inc"/>
    122316        <CursorPos X="22" Y="30"/>
    123         <UsageCount Value="84"/>
    124         <DefaultSyntaxHighlighter Value="Delphi"/>
    125       </Unit10>
    126       <Unit11>
     317        <UsageCount Value="93"/>
     318      </Unit38>
     319      <Unit39>
    127320        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    128         <TopLine Value="6"/>
    129         <CursorPos X="56" Y="36"/>
    130         <UsageCount Value="83"/>
    131         <DefaultSyntaxHighlighter Value="Delphi"/>
    132       </Unit11>
    133       <Unit12>
     321        <EditorIndex Value="-1"/>
     322        <TopLine Value="8"/>
     323        <CursorPos X="42" Y="39"/>
     324        <UsageCount Value="92"/>
     325      </Unit39>
     326      <Unit40>
    134327        <Filename Value="../Specialized/SpecializedStack.pas"/>
    135         <TopLine Value="27"/>
    136         <CursorPos X="50" Y="59"/>
    137         <UsageCount Value="82"/>
    138         <DefaultSyntaxHighlighter Value="Delphi"/>
    139       </Unit12>
    140       <Unit13>
     328        <EditorIndex Value="-1"/>
     329        <CursorPos X="2" Y="19"/>
     330        <UsageCount Value="91"/>
     331      </Unit40>
     332      <Unit41>
    141333        <Filename Value="../Specialized/SpecializedTree.pas"/>
    142         <TopLine Value="57"/>
    143         <CursorPos X="48" Y="85"/>
    144         <UsageCount Value="82"/>
    145         <DefaultSyntaxHighlighter Value="Delphi"/>
    146       </Unit13>
    147       <Unit14>
     334        <EditorIndex Value="-1"/>
     335        <TopLine Value="19"/>
     336        <CursorPos X="2" Y="19"/>
     337        <UsageCount Value="91"/>
     338      </Unit41>
     339      <Unit42>
    148340        <Filename Value="../Generic/GenericRange.inc"/>
    149341        <CursorPos X="33" Y="14"/>
    150         <UsageCount Value="82"/>
    151         <DefaultSyntaxHighlighter Value="Delphi"/>
    152       </Unit14>
    153       <Unit15>
     342        <UsageCount Value="91"/>
     343      </Unit42>
     344      <Unit43>
    154345        <Filename Value="../Specialized/SpecializedQueue.pas"/>
    155         <TopLine Value="52"/>
    156         <CursorPos Y="81"/>
    157         <UsageCount Value="82"/>
    158         <DefaultSyntaxHighlighter Value="Delphi"/>
    159       </Unit15>
    160       <Unit16>
     346        <EditorIndex Value="-1"/>
     347        <TopLine Value="14"/>
     348        <CursorPos X="30" Y="45"/>
     349        <UsageCount Value="91"/>
     350      </Unit43>
     351      <Unit44>
    161352        <Filename Value="../Specialized/SpecializedSet.pas"/>
    162         <TopLine Value="29"/>
    163         <CursorPos Y="62"/>
    164         <UsageCount Value="82"/>
    165         <DefaultSyntaxHighlighter Value="Delphi"/>
    166       </Unit16>
    167       <Unit17>
     353        <EditorIndex Value="-1"/>
     354        <CursorPos X="2" Y="19"/>
     355        <UsageCount Value="91"/>
     356      </Unit44>
     357      <Unit45>
    168358        <Filename Value="../Specialized/SpecializedObjectList.pas"/>
    169359        <TopLine Value="9"/>
    170360        <CursorPos X="60" Y="36"/>
    171         <UsageCount Value="81"/>
    172         <DefaultSyntaxHighlighter Value="Delphi"/>
    173       </Unit17>
    174       <Unit18>
     361        <UsageCount Value="90"/>
     362      </Unit45>
     363      <Unit46>
    175364        <Filename Value="../Generic/GenericMatrix.inc"/>
    176365        <TopLine Value="9"/>
    177366        <CursorPos X="28" Y="23"/>
    178         <UsageCount Value="93"/>
    179         <DefaultSyntaxHighlighter Value="Delphi"/>
    180       </Unit18>
    181       <Unit19>
     367        <UsageCount Value="102"/>
     368      </Unit46>
     369      <Unit47>
    182370        <Filename Value="../../../../lazarus/trunk/lcl/graphics.pp"/>
    183371        <UnitName Value="Graphics"/>
    184372        <TopLine Value="2624"/>
    185373        <CursorPos X="37" Y="2636"/>
    186         <UsageCount Value="80"/>
    187         <DefaultSyntaxHighlighter Value="Delphi"/>
    188       </Unit19>
    189       <Unit20>
     374        <UsageCount Value="89"/>
     375        <DefaultSyntaxHighlighter Value="Delphi"/>
     376      </Unit47>
     377      <Unit48>
     378        <Filename Value="../../../../lazarus/trunk/lcl/interfaces/carbon/issues.xml"/>
     379        <TopLine Value="94"/>
     380        <UsageCount Value="5"/>
     381        <DefaultSyntaxHighlighter Value="XML"/>
     382      </Unit48>
     383      <Unit49>
    190384        <Filename Value="/usr/share/fpcsrc/rtl/objpas/classes/classesh.inc"/>
    191385        <TopLine Value="199"/>
    192386        <CursorPos X="14" Y="213"/>
    193         <UsageCount Value="18"/>
    194         <DefaultSyntaxHighlighter Value="Delphi"/>
    195       </Unit20>
    196       <Unit21>
     387        <UsageCount Value="27"/>
     388        <DefaultSyntaxHighlighter Value="Delphi"/>
     389      </Unit49>
     390      <Unit50>
    197391        <Filename Value="/usr/share/fpcsrc/rtl/objpas/classes/lists.inc"/>
    198392        <TopLine Value="199"/>
    199393        <CursorPos X="3" Y="201"/>
    200         <UsageCount Value="18"/>
    201         <DefaultSyntaxHighlighter Value="Delphi"/>
    202       </Unit21>
    203       <Unit22>
     394        <UsageCount Value="27"/>
     395        <DefaultSyntaxHighlighter Value="Delphi"/>
     396      </Unit50>
     397      <Unit51>
    204398        <Filename Value="../Generic/GenericListObject.inc"/>
    205         <CursorPos X="21" Y="20"/>
    206         <UsageCount Value="9"/>
    207         <DefaultSyntaxHighlighter Value="Delphi"/>
    208       </Unit22>
    209       <Unit23>
     399        <EditorIndex Value="-1"/>
     400        <TopLine Value="11"/>
     401        <CursorPos X="34" Y="24"/>
     402        <UsageCount Value="21"/>
     403      </Unit51>
     404      <Unit52>
    210405        <Filename Value="/usr/share/fpcsrc/rtl/objpas/objpas.pp"/>
    211406        <CursorPos X="27" Y="26"/>
    212         <UsageCount Value="18"/>
    213         <DefaultSyntaxHighlighter Value="Delphi"/>
    214       </Unit23>
    215       <Unit24>
     407        <UsageCount Value="27"/>
     408        <DefaultSyntaxHighlighter Value="Delphi"/>
     409      </Unit52>
     410      <Unit53>
    216411        <Filename Value="/usr/share/fpcsrc/rtl/inc/systemh.inc"/>
    217412        <TopLine Value="381"/>
    218413        <CursorPos X="3" Y="398"/>
    219         <UsageCount Value="18"/>
    220         <DefaultSyntaxHighlighter Value="Delphi"/>
    221       </Unit24>
    222       <Unit25>
     414        <UsageCount Value="27"/>
     415        <DefaultSyntaxHighlighter Value="Delphi"/>
     416      </Unit53>
     417      <Unit54>
     418        <Filename Value="/usr/share/fpcsrc/rtl/inc/varianth.inc"/>
     419        <TopLine Value="475"/>
     420        <CursorPos X="10" Y="503"/>
     421        <UsageCount Value="6"/>
     422        <DefaultSyntaxHighlighter Value="Delphi"/>
     423      </Unit54>
     424      <Unit55>
    223425        <Filename Value="../../../../lazarus/trunk/lcl/include/control.inc"/>
    224426        <TopLine Value="2270"/>
    225427        <CursorPos X="22" Y="2273"/>
    226         <UsageCount Value="9"/>
    227         <DefaultSyntaxHighlighter Value="Delphi"/>
    228       </Unit25>
    229       <Unit26>
     428        <UsageCount Value="18"/>
     429        <DefaultSyntaxHighlighter Value="Delphi"/>
     430      </Unit55>
     431      <Unit56>
    230432        <Filename Value="../Specialized/SpecializedMatrix.pas"/>
    231         <CursorPos X="25" Y="41"/>
    232         <UsageCount Value="9"/>
    233         <DefaultSyntaxHighlighter Value="Delphi"/>
    234       </Unit26>
    235       <Unit27>
     433        <EditorIndex Value="-1"/>
     434        <TopLine Value="27"/>
     435        <CursorPos X="2" Y="21"/>
     436        <UsageCount Value="19"/>
     437      </Unit56>
     438      <Unit57>
     439        <Filename Value="../ReadMe.txt"/>
     440        <EditorIndex Value="-1"/>
     441        <CursorPos X="28" Y="10"/>
     442        <UsageCount Value="10"/>
     443        <DefaultSyntaxHighlighter Value="None"/>
     444      </Unit57>
     445      <Unit58>
    236446        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/dateutil.inc"/>
    237447        <TopLine Value="38"/>
    238448        <CursorPos X="3" Y="50"/>
    239         <UsageCount Value="1"/>
    240         <DefaultSyntaxHighlighter Value="Delphi"/>
    241       </Unit27>
    242       <Unit28>
     449        <UsageCount Value="10"/>
     450        <DefaultSyntaxHighlighter Value="Delphi"/>
     451      </Unit58>
     452      <Unit59>
    243453        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    244454        <TopLine Value="649"/>
    245455        <CursorPos X="38" Y="671"/>
    246         <UsageCount Value="10"/>
    247         <DefaultSyntaxHighlighter Value="Delphi"/>
    248       </Unit28>
    249       <Unit29>
     456        <UsageCount Value="9"/>
     457        <DefaultSyntaxHighlighter Value="Delphi"/>
     458      </Unit59>
     459      <Unit60>
    250460        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>
    251461        <TopLine Value="1185"/>
    252462        <CursorPos X="22" Y="1196"/>
    253         <UsageCount Value="10"/>
    254         <DefaultSyntaxHighlighter Value="Delphi"/>
    255       </Unit29>
    256       <Unit30>
     463        <UsageCount Value="9"/>
     464        <DefaultSyntaxHighlighter Value="Delphi"/>
     465      </Unit60>
     466      <Unit61>
    257467        <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/types.pp"/>
    258468        <TopLine Value="112"/>
    259469        <CursorPos X="3" Y="124"/>
    260         <UsageCount Value="10"/>
    261         <DefaultSyntaxHighlighter Value="Delphi"/>
    262       </Unit30>
    263       <Unit31>
     470        <UsageCount Value="9"/>
     471        <DefaultSyntaxHighlighter Value="Delphi"/>
     472      </Unit61>
     473      <Unit62>
    264474        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstrh.inc"/>
    265475        <TopLine Value="71"/>
    266476        <CursorPos X="10" Y="84"/>
    267         <UsageCount Value="10"/>
    268         <DefaultSyntaxHighlighter Value="Delphi"/>
    269       </Unit31>
    270       <Unit32>
     477        <UsageCount Value="9"/>
     478        <DefaultSyntaxHighlighter Value="Delphi"/>
     479      </Unit62>
     480      <Unit63>
    271481        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstr.inc"/>
    272482        <TopLine Value="148"/>
    273483        <CursorPos X="11" Y="169"/>
    274         <UsageCount Value="10"/>
    275         <DefaultSyntaxHighlighter Value="Delphi"/>
    276       </Unit32>
    277       <Unit33>
     484        <UsageCount Value="9"/>
     485        <DefaultSyntaxHighlighter Value="Delphi"/>
     486      </Unit63>
     487      <Unit64>
    278488        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/inc/systemh.inc"/>
    279489        <TopLine Value="511"/>
    280490        <CursorPos X="11" Y="524"/>
    281         <UsageCount Value="10"/>
    282         <DefaultSyntaxHighlighter Value="Delphi"/>
    283       </Unit33>
    284       <Unit34>
     491        <UsageCount Value="9"/>
     492        <DefaultSyntaxHighlighter Value="Delphi"/>
     493      </Unit64>
     494      <Unit65>
    285495        <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/i386/i386.inc"/>
    286496        <TopLine Value="411"/>
    287497        <CursorPos X="10" Y="424"/>
    288         <UsageCount Value="10"/>
    289         <DefaultSyntaxHighlighter Value="Delphi"/>
    290       </Unit34>
    291       <Unit35>
    292         <Filename Value="../Units/GenericList.pas"/>
    293         <EditorIndex Value="6"/>
    294         <TopLine Value="71"/>
    295         <CursorPos X="3" Y="90"/>
    296         <UsageCount Value="65"/>
    297         <Loaded Value="True"/>
    298       </Unit35>
    299       <Unit36>
    300         <Filename Value="../Units/GenericMatrix.pas"/>
    301         <TopLine Value="42"/>
    302         <CursorPos X="53" Y="55"/>
    303         <UsageCount Value="41"/>
    304         <Loaded Value="True"/>
    305       </Unit36>
    306       <Unit37>
    307         <Filename Value="../Units/GenericStream.pas"/>
    308         <EditorIndex Value="9"/>
    309         <CursorPos X="36" Y="54"/>
    310         <UsageCount Value="36"/>
    311         <Loaded Value="True"/>
    312       </Unit37>
    313       <Unit38>
    314         <Filename Value="../Units/GenericQueue.pas"/>
    315         <EditorIndex Value="13"/>
    316         <CursorPos X="24" Y="28"/>
    317         <UsageCount Value="10"/>
    318         <Loaded Value="True"/>
    319       </Unit38>
    320       <Unit39>
    321         <Filename Value="../Units/GenericDictionary.pas"/>
    322         <EditorIndex Value="14"/>
    323         <TopLine Value="59"/>
    324         <CursorPos Y="96"/>
    325         <UsageCount Value="40"/>
    326         <Loaded Value="True"/>
    327       </Unit39>
    328       <Unit40>
    329         <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/sysutils/sysunih.inc"/>
    330         <TopLine Value="9"/>
    331         <CursorPos X="10" Y="22"/>
    332         <UsageCount Value="37"/>
    333         <DefaultSyntaxHighlighter Value="Delphi"/>
    334       </Unit40>
    335       <Unit41>
    336         <Filename Value="../Units/SpecializedList.pas"/>
    337         <TopLine Value="45"/>
    338         <CursorPos Y="68"/>
    339         <UsageCount Value="38"/>
    340       </Unit41>
    341       <Unit42>
    342         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/fpc/2.7.1/source/rtl/objpas/classes/classesh.inc"/>
    343         <TopLine Value="257"/>
    344         <CursorPos X="3" Y="270"/>
    345         <UsageCount Value="34"/>
    346         <DefaultSyntaxHighlighter Value="Delphi"/>
    347       </Unit42>
    348       <Unit43>
    349         <Filename Value="../Units/GenericSet.pas"/>
    350         <EditorIndex Value="11"/>
    351         <UsageCount Value="10"/>
    352         <Loaded Value="True"/>
    353       </Unit43>
    354       <Unit44>
    355         <Filename Value="../Units/GenericStack.pas"/>
    356         <EditorIndex Value="10"/>
    357         <CursorPos X="14" Y="38"/>
    358         <UsageCount Value="10"/>
    359         <Loaded Value="True"/>
    360       </Unit44>
    361       <Unit45>
    362         <Filename Value="../Units/GenericRange.pas"/>
    363         <EditorIndex Value="12"/>
    364         <CursorPos X="33" Y="35"/>
    365         <UsageCount Value="40"/>
    366         <Loaded Value="True"/>
    367       </Unit45>
    368       <Unit46>
    369         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/fpc/2.7.1/source/rtl/inc/systemh.inc"/>
    370         <TopLine Value="958"/>
    371         <CursorPos X="11" Y="971"/>
    372         <UsageCount Value="8"/>
    373         <DefaultSyntaxHighlighter Value="Delphi"/>
    374       </Unit46>
    375       <Unit47>
    376         <Filename Value="../Units/GenericTree.pas"/>
    377         <EditorIndex Value="16"/>
    378         <CursorPos X="49" Y="68"/>
    379         <UsageCount Value="40"/>
    380         <Loaded Value="True"/>
    381       </Unit47>
    382       <Unit48>
    383         <Filename Value="../Units/GenericString.pas"/>
    384         <EditorIndex Value="18"/>
    385         <CursorPos X="39" Y="62"/>
    386         <UsageCount Value="33"/>
    387         <Loaded Value="True"/>
    388       </Unit48>
    389       <Unit49>
    390         <Filename Value="../Units/GenericBitmap.pas"/>
    391         <EditorIndex Value="17"/>
    392         <TopLine Value="140"/>
    393         <CursorPos X="34" Y="36"/>
    394         <UsageCount Value="32"/>
    395         <Loaded Value="True"/>
    396       </Unit49>
    397       <Unit50>
    398         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/graphics.pp"/>
    399         <UnitName Value="Graphics"/>
    400         <TopLine Value="1151"/>
    401         <CursorPos X="22" Y="1165"/>
    402         <UsageCount Value="28"/>
    403         <DefaultSyntaxHighlighter Value="Delphi"/>
    404       </Unit50>
    405       <Unit51>
    406         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/include/rasterimage.inc"/>
    407         <TopLine Value="310"/>
    408         <CursorPos X="22" Y="314"/>
    409         <UsageCount Value="28"/>
    410         <DefaultSyntaxHighlighter Value="Delphi"/>
    411       </Unit51>
    412       <Unit52>
    413         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/include/bitmapcanvas.inc"/>
    414         <TopLine Value="53"/>
    415         <CursorPos X="3" Y="46"/>
    416         <UsageCount Value="28"/>
    417         <DefaultSyntaxHighlighter Value="Delphi"/>
    418       </Unit52>
    419       <Unit53>
    420         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/fpc/2.7.1/source/packages/fcl-image/src/fpcanvas.pp"/>
    421         <UnitName Value="FPCanvas"/>
    422         <TopLine Value="347"/>
    423         <CursorPos X="15" Y="360"/>
    424         <UsageCount Value="28"/>
    425         <DefaultSyntaxHighlighter Value="Delphi"/>
    426       </Unit53>
    427       <Unit54>
    428         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/fpc/2.7.1/source/packages/fcl-image/src/fpcanvas.inc"/>
    429         <TopLine Value="308"/>
    430         <CursorPos X="3" Y="310"/>
    431         <UsageCount Value="28"/>
    432         <DefaultSyntaxHighlighter Value="Delphi"/>
    433       </Unit54>
    434       <Unit55>
    435         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/fpc/2.7.1/source/packages/fcl-image/src/fpcdrawh.inc"/>
    436         <TopLine Value="54"/>
    437         <CursorPos X="3" Y="63"/>
    438         <UsageCount Value="28"/>
    439         <DefaultSyntaxHighlighter Value="Delphi"/>
    440       </Unit55>
    441       <Unit56>
    442         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/include/canvas.inc"/>
    443         <TopLine Value="147"/>
    444         <CursorPos X="3" Y="152"/>
    445         <UsageCount Value="28"/>
    446         <DefaultSyntaxHighlighter Value="Delphi"/>
    447       </Unit56>
    448       <Unit57>
    449         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/interfacebase.pp"/>
    450         <UnitName Value="InterfaceBase"/>
    451         <TopLine Value="153"/>
    452         <CursorPos X="15" Y="166"/>
    453         <UsageCount Value="28"/>
    454         <DefaultSyntaxHighlighter Value="Delphi"/>
    455       </Unit57>
    456       <Unit58>
    457         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/comctrls.pp"/>
    458         <UnitName Value="ComCtrls"/>
    459         <TopLine Value="2962"/>
    460         <CursorPos X="3" Y="2975"/>
    461         <UsageCount Value="27"/>
    462         <DefaultSyntaxHighlighter Value="Delphi"/>
    463       </Unit58>
    464       <Unit59>
    465         <Filename Value="../../../../../Lazarus/0.9.31_2.7.1/lcl/include/treeview.inc"/>
    466         <TopLine Value="5239"/>
    467         <CursorPos X="3" Y="5243"/>
    468         <UsageCount Value="27"/>
    469         <DefaultSyntaxHighlighter Value="Delphi"/>
    470       </Unit59>
    471       <Unit60>
    472         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/sysutils/filutilh.inc"/>
    473         <TopLine Value="62"/>
    474         <CursorPos X="3" Y="75"/>
    475         <UsageCount Value="11"/>
    476       </Unit60>
    477       <Unit61>
    478         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/inc/systemh.inc"/>
    479         <EditorIndex Value="-1"/>
    480         <TopLine Value="582"/>
    481         <CursorPos X="11" Y="595"/>
    482         <UsageCount Value="13"/>
    483       </Unit61>
    484       <Unit62>
    485         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/win/sysutils.pp"/>
    486         <TopLine Value="300"/>
    487         <CursorPos Y="302"/>
    488         <UsageCount Value="11"/>
    489       </Unit62>
    490       <Unit63>
    491         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/win/wininc/func.inc"/>
    492         <TopLine Value="169"/>
    493         <CursorPos X="15" Y="177"/>
    494         <UsageCount Value="11"/>
    495       </Unit63>
    496       <Unit64>
    497         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/inc/file.inc"/>
    498         <TopLine Value="299"/>
    499         <CursorPos X="3" Y="304"/>
    500         <UsageCount Value="11"/>
    501       </Unit64>
    502       <Unit65>
    503         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/win/sysfile.inc"/>
    504         <TopLine Value="133"/>
    505         <CursorPos X="11" Y="143"/>
    506         <UsageCount Value="11"/>
     498        <UsageCount Value="9"/>
     499        <DefaultSyntaxHighlighter Value="Delphi"/>
    507500      </Unit65>
    508501      <Unit66>
    509         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/win/sysos.inc"/>
    510         <TopLine Value="250"/>
    511         <CursorPos X="20" Y="268"/>
    512         <UsageCount Value="11"/>
     502        <Filename Value="../Specialized/SpecializedStream.pas"/>
     503        <EditorIndex Value="-1"/>
     504        <UsageCount Value="17"/>
    513505      </Unit66>
    514506      <Unit67>
    515         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/inc/text.inc"/>
    516         <TopLine Value="108"/>
    517         <CursorPos X="3" Y="110"/>
    518         <UsageCount Value="10"/>
     507        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/lclclasses.pp"/>
     508        <UnitName Value="LCLClasses"/>
     509        <TopLine Value="25"/>
     510        <CursorPos X="32" Y="40"/>
     511        <UsageCount Value="9"/>
     512        <DefaultSyntaxHighlighter Value="Delphi"/>
    519513      </Unit67>
    520514      <Unit68>
    521         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/sysutils/sysstrh.inc"/>
    522         <EditorIndex Value="-1"/>
    523         <TopLine Value="72"/>
    524         <CursorPos X="10" Y="84"/>
    525         <UsageCount Value="12"/>
     515        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/controls.pp"/>
     516        <UnitName Value="Controls"/>
     517        <CursorPos X="39" Y="11"/>
     518        <UsageCount Value="9"/>
     519        <DefaultSyntaxHighlighter Value="Delphi"/>
    526520      </Unit68>
    527521      <Unit69>
    528         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/classes/classesh.inc"/>
    529         <EditorIndex Value="-1"/>
    530         <TopLine Value="258"/>
    531         <CursorPos X="14" Y="270"/>
    532         <UsageCount Value="12"/>
     522        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpash.inc"/>
     523        <TopLine Value="179"/>
     524        <CursorPos X="23" Y="192"/>
     525        <UsageCount Value="10"/>
     526        <DefaultSyntaxHighlighter Value="Delphi"/>
    533527      </Unit69>
    534528      <Unit70>
    535         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/classes/stringl.inc"/>
    536         <EditorIndex Value="-1"/>
    537         <TopLine Value="736"/>
    538         <CursorPos X="3" Y="738"/>
    539         <UsageCount Value="12"/>
     529        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpas.inc"/>
     530        <TopLine Value="265"/>
     531        <CursorPos X="9" Y="267"/>
     532        <UsageCount Value="10"/>
     533        <DefaultSyntaxHighlighter Value="Delphi"/>
    540534      </Unit70>
    541535      <Unit71>
    542         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/classes/lists.inc"/>
    543         <EditorIndex Value="-1"/>
    544         <TopLine Value="199"/>
    545         <CursorPos X="31" Y="207"/>
    546         <UsageCount Value="12"/>
     536        <Filename Value="../Generic/GenericStream.inc"/>
     537        <EditorIndex Value="-1"/>
     538        <TopLine Value="20"/>
     539        <CursorPos X="31" Y="40"/>
     540        <UsageCount Value="15"/>
    547541      </Unit71>
    548542      <Unit72>
    549         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/objpas/sysutils/sysstr.inc"/>
    550         <EditorIndex Value="-1"/>
    551         <TopLine Value="181"/>
    552         <CursorPos X="3" Y="187"/>
    553         <UsageCount Value="12"/>
     543        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/classesh.inc"/>
     544        <EditorIndex Value="-1"/>
     545        <TopLine Value="891"/>
     546        <CursorPos X="18" Y="908"/>
     547        <UsageCount Value="13"/>
     548        <DefaultSyntaxHighlighter Value="Delphi"/>
    554549      </Unit72>
    555550      <Unit73>
    556         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/i386/i386.inc"/>
    557         <EditorIndex Value="-1"/>
    558         <TopLine Value="503"/>
    559         <CursorPos X="9" Y="503"/>
    560         <UsageCount Value="12"/>
     551        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/streams.inc"/>
     552        <EditorIndex Value="-1"/>
     553        <TopLine Value="739"/>
     554        <CursorPos X="18" Y="750"/>
     555        <UsageCount Value="13"/>
     556        <DefaultSyntaxHighlighter Value="Delphi"/>
    561557      </Unit73>
    562558      <Unit74>
    563         <Filename Value="../../../../../Lazarus/1.1_2.7.1/fpc/2.7.1/source/rtl/inc/system.inc"/>
    564         <EditorIndex Value="-1"/>
    565         <TopLine Value="277"/>
    566         <CursorPos X="14" Y="285"/>
     559        <Filename Value="../Generic/GenericListString.inc"/>
     560        <EditorIndex Value="-1"/>
     561        <TopLine Value="8"/>
     562        <CursorPos X="34" Y="21"/>
    567563        <UsageCount Value="12"/>
    568564      </Unit74>
    569565      <Unit75>
    570         <Filename Value="../ReadMe.txt"/>
    571         <EditorIndex Value="19"/>
    572         <CursorPos X="41" Y="7"/>
    573         <UsageCount Value="11"/>
    574         <Loaded Value="True"/>
    575         <DefaultSyntaxHighlighter Value="None"/>
     566        <Filename Value="../Generic/GenericBitmap.pas"/>
     567        <EditorIndex Value="-1"/>
     568        <CursorPos X="48" Y="13"/>
     569        <UsageCount Value="10"/>
    576570      </Unit75>
    577571      <Unit76>
    578         <Filename Value="../Units/GenericPoint.pas"/>
    579         <EditorIndex Value="1"/>
    580         <CursorPos X="59" Y="19"/>
    581         <UsageCount Value="10"/>
    582         <Loaded Value="True"/>
     572        <Filename Value="../Generic/GenericMatrix.pas"/>
     573        <EditorIndex Value="-1"/>
     574        <TopLine Value="68"/>
     575        <CursorPos X="65" Y="93"/>
     576        <UsageCount Value="11"/>
    583577      </Unit76>
    584578      <Unit77>
    585         <Filename Value="/usr/share/fpcsrc/3.0.0/rtl/objpas/classes/classesh.inc"/>
    586         <EditorIndex Value="4"/>
    587         <TopLine Value="229"/>
    588         <CursorPos X="14" Y="251"/>
    589         <UsageCount Value="10"/>
     579        <Filename Value="../Generic/GenericList.pas"/>
     580        <TopLine Value="366"/>
     581        <CursorPos Y="384"/>
     582        <UsageCount Value="12"/>
    590583        <Loaded Value="True"/>
    591584      </Unit77>
    592585      <Unit78>
    593         <Filename Value="/usr/share/fpcsrc/3.0.0/rtl/objpas/classes/lists.inc"/>
     586        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/classes/classesh.inc"/>
    594587        <EditorIndex Value="5"/>
    595         <TopLine Value="199"/>
    596         <CursorPos X="3" Y="207"/>
    597         <UsageCount Value="10"/>
     588        <TopLine Value="216"/>
     589        <CursorPos X="14" Y="242"/>
     590        <UsageCount Value="11"/>
    598591        <Loaded Value="True"/>
    599592      </Unit78>
    600593      <Unit79>
    601         <Filename Value="/usr/share/fpcsrc/3.0.0/rtl/inc/systemh.inc"/>
    602         <EditorIndex Value="7"/>
    603         <TopLine Value="726"/>
    604         <CursorPos X="11" Y="749"/>
    605         <UsageCount Value="10"/>
    606         <Loaded Value="True"/>
     594        <Filename Value="../Specialized/SpecializedPoint.pas"/>
     595        <EditorIndex Value="-1"/>
     596        <CursorPos X="2" Y="17"/>
     597        <UsageCount Value="10"/>
    607598      </Unit79>
    608599      <Unit80>
    609         <Filename Value="/usr/share/fpcsrc/3.0.0/rtl/x86_64/x86_64.inc"/>
    610         <EditorIndex Value="8"/>
    611         <TopLine Value="634"/>
    612         <CursorPos X="10" Y="657"/>
    613         <UsageCount Value="10"/>
    614         <Loaded Value="True"/>
     600        <Filename Value="../Specialized/SpecializedBitmap.pas"/>
     601        <EditorIndex Value="-1"/>
     602        <TopLine Value="28"/>
     603        <CursorPos X="2" Y="27"/>
     604        <UsageCount Value="10"/>
    615605      </Unit80>
    616606      <Unit81>
    617         <Filename Value="../Units/GenericRectangle.pas"/>
    618         <EditorIndex Value="2"/>
    619         <TopLine Value="17"/>
    620         <CursorPos X="27" Y="51"/>
    621         <UsageCount Value="10"/>
    622         <Loaded Value="True"/>
     607        <Filename Value="../Generic/GenericStream.pas"/>
     608        <EditorIndex Value="-1"/>
     609        <TopLine Value="33"/>
     610        <CursorPos X="43" Y="85"/>
     611        <UsageCount Value="11"/>
    623612      </Unit81>
    624613      <Unit82>
    625         <Filename Value="../Additional/UBinarySerializer.pas"/>
    626         <EditorIndex Value="20"/>
    627         <TopLine Value="55"/>
    628         <UsageCount Value="10"/>
     614        <Filename Value="../Specialized/SpecializedRectangle.pas"/>
     615        <EditorIndex Value="-1"/>
     616        <CursorPos X="59" Y="8"/>
     617        <UsageCount Value="11"/>
     618      </Unit82>
     619      <Unit83>
     620        <Filename Value="../Generic/GenericTree.pas"/>
     621        <EditorIndex Value="-1"/>
     622        <CursorPos X="3" Y="43"/>
     623        <UsageCount Value="11"/>
     624      </Unit83>
     625      <Unit84>
     626        <Filename Value="../Generic/GenericPoint.pas"/>
     627        <EditorIndex Value="-1"/>
     628        <CursorPos X="3" Y="13"/>
     629        <UsageCount Value="11"/>
     630      </Unit84>
     631      <Unit85>
     632        <Filename Value="../Generic/GenericRectangle.pas"/>
     633        <EditorIndex Value="-1"/>
     634        <TopLine Value="244"/>
     635        <CursorPos X="41" Y="296"/>
     636        <UsageCount Value="11"/>
     637      </Unit85>
     638      <Unit86>
     639        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/math.pp"/>
     640        <EditorIndex Value="-1"/>
     641        <TopLine Value="135"/>
     642        <CursorPos X="14" Y="180"/>
     643        <UsageCount Value="11"/>
     644      </Unit86>
     645      <Unit87>
     646        <Filename Value="../Generic/GenericListString.pas"/>
     647        <EditorIndex Value="-1"/>
     648        <UsageCount Value="10"/>
     649      </Unit87>
     650      <Unit88>
     651        <Filename Value="../Generic/GenericDictionary.pas"/>
     652        <EditorIndex Value="-1"/>
     653        <TopLine Value="25"/>
     654        <CursorPos X="34" Y="48"/>
     655        <UsageCount Value="10"/>
     656      </Unit88>
     657      <Unit89>
     658        <Filename Value="../Generic/GenericFileList.pas"/>
     659        <EditorIndex Value="-1"/>
     660        <CursorPos X="5"/>
     661        <UsageCount Value="11"/>
     662      </Unit89>
     663      <Unit90>
     664        <Filename Value="../Generic/GenericListAbstract.pas"/>
     665        <EditorIndex Value="-1"/>
     666        <UsageCount Value="10"/>
     667      </Unit90>
     668      <Unit91>
     669        <Filename Value="../Generic/GenericQueue.pas"/>
     670        <EditorIndex Value="-1"/>
     671        <TopLine Value="20"/>
     672        <CursorPos X="38" Y="68"/>
     673        <UsageCount Value="11"/>
     674      </Unit91>
     675      <Unit92>
     676        <Filename Value="../Generic/GenericRange.pas"/>
     677        <EditorIndex Value="-1"/>
     678        <CursorPos X="21" Y="35"/>
     679        <UsageCount Value="11"/>
     680      </Unit92>
     681      <Unit93>
     682        <Filename Value="../Generic/GenericSet.pas"/>
     683        <EditorIndex Value="-1"/>
     684        <CursorPos X="31" Y="25"/>
     685        <UsageCount Value="11"/>
     686      </Unit93>
     687      <Unit94>
     688        <Filename Value="../Generic/GenericStack.pas"/>
     689        <EditorIndex Value="-1"/>
     690        <CursorPos X="13" Y="44"/>
     691        <UsageCount Value="11"/>
     692      </Unit94>
     693      <Unit95>
     694        <Filename Value="../Generic/GenericListObject.pas"/>
     695        <EditorIndex Value="-1"/>
     696        <CursorPos Y="31"/>
     697        <UsageCount Value="10"/>
     698      </Unit95>
     699      <Unit96>
     700        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/rtlconsts.pp"/>
     701        <UnitName Value="RtlConsts"/>
     702        <EditorIndex Value="-1"/>
     703        <UsageCount Value="11"/>
     704      </Unit96>
     705      <Unit97>
     706        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/rtlconst.inc"/>
     707        <EditorIndex Value="-1"/>
     708        <TopLine Value="13"/>
     709        <UsageCount Value="11"/>
     710      </Unit97>
     711      <Unit98>
     712        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/unix/classes.pp"/>
     713        <UnitName Value="Classes"/>
     714        <EditorIndex Value="-1"/>
     715        <TopLine Value="3"/>
     716        <CursorPos X="33" Y="55"/>
     717        <UsageCount Value="11"/>
     718      </Unit98>
     719      <Unit99>
     720        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/sysutils/sysutilh.inc"/>
     721        <EditorIndex Value="-1"/>
     722        <TopLine Value="81"/>
     723        <CursorPos X="55" Y="113"/>
     724        <UsageCount Value="11"/>
     725      </Unit99>
     726      <Unit100>
     727        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/fgl.pp"/>
     728        <EditorIndex Value="2"/>
     729        <TopLine Value="628"/>
     730        <CursorPos X="52" Y="637"/>
     731        <UsageCount Value="11"/>
    629732        <Loaded Value="True"/>
    630       </Unit82>
     733      </Unit100>
     734      <Unit101>
     735        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/objpas/classes/lists.inc"/>
     736        <EditorIndex Value="6"/>
     737        <TopLine Value="122"/>
     738        <CursorPos X="3" Y="124"/>
     739        <UsageCount Value="11"/>
     740        <Loaded Value="True"/>
     741      </Unit101>
     742      <Unit102>
     743        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/inc/systemh.inc"/>
     744        <EditorIndex Value="3"/>
     745        <TopLine Value="741"/>
     746        <CursorPos X="11" Y="767"/>
     747        <UsageCount Value="11"/>
     748        <Loaded Value="True"/>
     749      </Unit102>
     750      <Unit103>
     751        <Filename Value="/usr/share/fpcsrc/3.0.2/rtl/x86_64/x86_64.inc"/>
     752        <EditorIndex Value="-1"/>
     753        <TopLine Value="623"/>
     754        <CursorPos X="10" Y="634"/>
     755        <UsageCount Value="10"/>
     756      </Unit103>
    631757    </Units>
    632     <JumpHistory Count="30" HistoryIndex="29">
     758    <JumpHistory Count="30" HistoryIndex="28">
    633759      <Position1>
    634         <Filename Value="Demo.lpr"/>
    635         <Caret Line="16"/>
     760        <Filename Value="UMainForm.pas"/>
     761        <Caret Line="717" TopLine="695"/>
    636762      </Position1>
    637763      <Position2>
    638764        <Filename Value="UMainForm.pas"/>
    639         <Caret Line="243" TopLine="219"/>
     765        <Caret Line="716" TopLine="695"/>
    640766      </Position2>
    641767      <Position3>
    642         <Filename Value="../Units/GenericDictionary.pas"/>
    643         <Caret Line="88" TopLine="59"/>
     768        <Filename Value="UMainForm.pas"/>
     769        <Caret Line="717" TopLine="695"/>
    644770      </Position3>
    645771      <Position4>
    646         <Filename Value="../Units/GenericDictionary.pas"/>
    647         <Caret Line="89" TopLine="59"/>
     772        <Filename Value="UMainForm.pas"/>
     773        <Caret Line="716" TopLine="695"/>
    648774      </Position4>
    649775      <Position5>
    650         <Filename Value="../Units/GenericDictionary.pas"/>
    651         <Caret Line="90" TopLine="59"/>
     776        <Filename Value="UMainForm.pas"/>
     777        <Caret Line="717" TopLine="695"/>
    652778      </Position5>
    653779      <Position6>
    654         <Filename Value="../Units/GenericDictionary.pas"/>
    655         <Caret Line="91" TopLine="59"/>
     780        <Filename Value="UMainForm.pas"/>
     781        <Caret Line="716" TopLine="695"/>
    656782      </Position6>
    657783      <Position7>
    658         <Filename Value="../Units/GenericDictionary.pas"/>
    659         <Caret Line="94" TopLine="59"/>
     784        <Filename Value="UMainForm.pas"/>
     785        <Caret Line="718" TopLine="695"/>
    660786      </Position7>
    661787      <Position8>
    662         <Filename Value="../Units/GenericDictionary.pas"/>
    663         <Caret Line="90" TopLine="59"/>
     788        <Filename Value="UMainForm.pas"/>
     789        <Caret Line="719" TopLine="695"/>
    664790      </Position8>
    665791      <Position9>
    666         <Filename Value="../Units/GenericDictionary.pas"/>
    667         <Caret Line="91" TopLine="59"/>
     792        <Filename Value="UMainForm.pas"/>
     793        <Caret Line="721" TopLine="695"/>
    668794      </Position9>
    669795      <Position10>
    670         <Filename Value="../Units/GenericDictionary.pas"/>
    671         <Caret Line="94" TopLine="59"/>
     796        <Filename Value="UMainForm.pas"/>
     797        <Caret Line="722" TopLine="695"/>
    672798      </Position10>
    673799      <Position11>
    674         <Filename Value="../Units/GenericDictionary.pas"/>
    675         <Caret Line="90" TopLine="59"/>
     800        <Filename Value="UMainForm.pas"/>
     801        <Caret Line="723" TopLine="695"/>
    676802      </Position11>
    677803      <Position12>
    678         <Filename Value="../Units/GenericDictionary.pas"/>
    679         <Caret Line="91" TopLine="59"/>
     804        <Filename Value="UMainForm.pas"/>
     805        <Caret Line="724" TopLine="695"/>
    680806      </Position12>
    681807      <Position13>
    682         <Filename Value="../Units/GenericDictionary.pas"/>
    683         <Caret Line="94" TopLine="59"/>
     808        <Filename Value="UMainForm.pas"/>
     809        <Caret Line="725" TopLine="695"/>
    684810      </Position13>
    685811      <Position14>
    686         <Filename Value="../Units/GenericDictionary.pas"/>
    687         <Caret Line="90" TopLine="59"/>
     812        <Filename Value="UMainForm.pas"/>
     813        <Caret Line="730" TopLine="695"/>
    688814      </Position14>
    689815      <Position15>
    690         <Filename Value="../Units/GenericDictionary.pas"/>
    691         <Caret Line="96" TopLine="59"/>
     816        <Filename Value="UMainForm.pas"/>
     817        <Caret Line="731" TopLine="695"/>
    692818      </Position15>
    693819      <Position16>
    694820        <Filename Value="UMainForm.pas"/>
    695         <Caret Line="235" Column="60" TopLine="219"/>
     821        <Caret Line="732" TopLine="695"/>
    696822      </Position16>
    697823      <Position17>
    698824        <Filename Value="UMainForm.pas"/>
    699         <Caret Line="243" TopLine="219"/>
     825        <Caret Line="731" TopLine="695"/>
    700826      </Position17>
    701827      <Position18>
    702         <Filename Value="../Units/GenericDictionary.pas"/>
    703         <Caret Line="87" TopLine="59"/>
     828        <Filename Value="UMainForm.pas"/>
     829        <Caret Line="732" TopLine="695"/>
    704830      </Position18>
    705831      <Position19>
    706         <Filename Value="../Units/GenericDictionary.pas"/>
    707         <Caret Line="89" TopLine="59"/>
     832        <Filename Value="UMainForm.pas"/>
     833        <Caret Line="731" TopLine="695"/>
    708834      </Position19>
    709835      <Position20>
    710         <Filename Value="../Units/GenericDictionary.pas"/>
    711         <Caret Line="90" TopLine="59"/>
     836        <Filename Value="UMainForm.pas"/>
     837        <Caret Line="732" TopLine="695"/>
    712838      </Position20>
    713839      <Position21>
    714         <Filename Value="../Units/GenericDictionary.pas"/>
    715         <Caret Line="91" TopLine="59"/>
     840        <Filename Value="UMainForm.pas"/>
     841        <Caret Line="731" TopLine="695"/>
    716842      </Position21>
    717843      <Position22>
    718         <Filename Value="../Units/GenericDictionary.pas"/>
    719         <Caret Line="94" TopLine="59"/>
     844        <Filename Value="UMainForm.pas"/>
     845        <Caret Line="732" TopLine="695"/>
    720846      </Position22>
    721847      <Position23>
    722         <Filename Value="../Units/GenericDictionary.pas"/>
    723         <Caret Line="90" TopLine="59"/>
     848        <Filename Value="UMainForm.pas"/>
     849        <Caret Line="533" TopLine="517"/>
    724850      </Position23>
    725851      <Position24>
    726         <Filename Value="../Units/GenericDictionary.pas"/>
    727         <Caret Line="91" TopLine="59"/>
     852        <Filename Value="UMainForm.pas"/>
     853        <Caret Line="36" Column="28"/>
    728854      </Position24>
    729855      <Position25>
    730         <Filename Value="../Units/GenericDictionary.pas"/>
    731         <Caret Line="94" TopLine="59"/>
     856        <Filename Value="UMainForm.pas"/>
     857        <Caret Line="90" Column="38" TopLine="65"/>
    732858      </Position25>
    733859      <Position26>
    734         <Filename Value="../Units/GenericDictionary.pas"/>
    735         <Caret Line="90" TopLine="59"/>
     860        <Filename Value="UMainForm.pas"/>
     861        <Caret Line="33" Column="15" TopLine="10"/>
    736862      </Position26>
    737863      <Position27>
    738         <Filename Value="../Units/GenericDictionary.pas"/>
    739         <Caret Line="91" TopLine="59"/>
     864        <Filename Value="UMainForm.pas"/>
     865        <Caret Line="412" Column="32" TopLine="383"/>
    740866      </Position27>
    741867      <Position28>
    742         <Filename Value="../Units/GenericDictionary.pas"/>
    743         <Caret Line="94" TopLine="59"/>
     868        <Filename Value="UMainForm.pas"/>
     869        <Caret Line="31" Column="15" TopLine="7"/>
    744870      </Position28>
    745871      <Position29>
    746         <Filename Value="../Units/GenericDictionary.pas"/>
    747         <Caret Line="90" TopLine="59"/>
     872        <Filename Value="UMainForm.pas"/>
     873        <Caret Line="515" Column="55" TopLine="480"/>
    748874      </Position29>
    749875      <Position30>
    750         <Filename Value="../Units/GenericDictionary.pas"/>
    751         <Caret Line="96" TopLine="59"/>
     876        <Filename Value="UMainForm.pas"/>
     877        <Caret Line="139" Column="3" TopLine="132"/>
    752878      </Position30>
    753879    </JumpHistory>
     
    766892        <SyntaxMode Value="Delphi"/>
    767893        <CStyleOperator Value="False"/>
     894        <IncludeAssertionCode Value="True"/>
    768895        <AllowLabel Value="False"/>
    769896        <CPPInline Value="False"/>
     
    778905        <StackChecks Value="True"/>
    779906      </Checks>
     907      <VerifyObjMethodCallValidity Value="True"/>
    780908    </CodeGeneration>
    781909    <Linking>
     
    790918      </Options>
    791919    </Linking>
     920    <Other>
     921      <CompilerMessages>
     922        <IgnoredMessages idx5024="True"/>
     923      </CompilerMessages>
     924      <CustomOptions Value="-dDEBUG"/>
     925    </Other>
    792926  </CompilerOptions>
    793927  <Debugging>
    794     <BreakPoints Count="1">
    795       <Item1>
    796         <Kind Value="bpkSource"/>
    797         <WatchScope Value="wpsLocal"/>
    798         <WatchKind Value="wpkWrite"/>
    799         <Source Value="UMainForm.pas"/>
    800         <Line Value="657"/>
    801       </Item1>
    802     </BreakPoints>
    803928    <Exceptions Count="3">
    804929      <Item1>
  • Generics/NativeGenerics/Demo/Demo.lpr

    r313 r496  
    88  {$ENDIF}{$ENDIF}
    99  Interfaces, // this includes the LCL widgetset
    10   Forms, SysUtils, UMainForm, NativeGenerics;
     10  Forms, SysUtils, UMainForm;
    1111
    1212{$R *.res}
    1313
     14{$IFDEF DEBUG}
    1415const
    1516  HeapTraceLogFileName = 'heaptrclog.trc';
     17  {$ENDIF}
    1618begin
     19  {$IFDEF DEBUG}
    1720  DeleteFile(ExtractFilePath(ParamStr(0)) + HeapTraceLogFileName);
    1821  SetHeapTraceOutput(ExtractFilePath(ParamStr(0)) + HeapTraceLogFileName);
     22  {$ENDIF}
    1923  Application.Initialize;
    2024  Application.CreateForm(TMainForm, MainForm);
  • Generics/NativeGenerics/Demo/UMainForm.lfm

    r326 r496  
    11object MainForm: TMainForm
    2   Left = 261
    3   Height = 520
    4   Top = 104
    5   Width = 692
    6   ActiveControl = IntegerListButton
    7   Caption = 'Template generics demo'
    8   ClientHeight = 520
    9   ClientWidth = 692
     2  Left = 619
     3  Height = 678
     4  Top = 203
     5  Width = 934
     6  ActiveControl = ButtonIntegerList
     7  Caption = 'Native generics demo'
     8  ClientHeight = 678
     9  ClientWidth = 934
    1010  OnCreate = FormCreate
    1111  OnDestroy = FormDestroy
    12   LCLVersion = '0.9.31'
    13   object IntegerListButton: TButton
     12  LCLVersion = '1.8.0.4'
     13  object ButtonIntegerList: TButton
    1414    Left = 8
    1515    Height = 25
    1616    Top = 8
    17     Width = 152
    18     Caption = 'TList<Integer>'
    19     OnClick = IntegerListButtonClick
     17    Width = 264
     18    Caption = 'TGList<Integer>'
     19    OnClick = ButtonIntegerListClick
    2020    TabOrder = 0
    2121  end
    22   object StringListButton: TButton
     22  object ButtonStringList: TButton
    2323    Left = 8
    2424    Height = 25
    2525    Top = 40
    26     Width = 152
    27     Caption = 'TStringList<string>'
    28     OnClick = StringListButtonClick
     26    Width = 264
     27    Caption = 'TGList<String>'
     28    OnClick = ButtonStringListClick
    2929    TabOrder = 1
    3030  end
    31   object DictionaryStringButton: TButton
     31  object ButtonDictionaryString: TButton
    3232    Left = 8
    3333    Height = 25
    3434    Top = 72
    35     Width = 152
    36     Caption = 'TDictionary<string,string>'
    37     OnClick = DictionaryStringButtonClick
     35    Width = 264
     36    Caption = 'TGDictionary<string>'
     37    OnClick = ButtonDictionaryStringClick
    3838    TabOrder = 2
    3939  end
    40   object QueueIntegerButton: TButton
     40  object ButtonQueueInteger: TButton
    4141    Left = 8
    4242    Height = 25
    4343    Top = 102
    44     Width = 152
    45     Caption = 'TQueue<Integer>'
    46     OnClick = QueueIntegerButtonClick
     44    Width = 264
     45    Caption = 'TGQueue<Integer>'
     46    OnClick = ButtonQueueIntegerClick
    4747    TabOrder = 3
    4848  end
    49   object CharListButton: TButton
     49  object ButtonCharList: TButton
    5050    Left = 8
    5151    Height = 25
    5252    Top = 134
    53     Width = 152
    54     Caption = 'TString<Char>'
    55     OnClick = CharListButtonClick
     53    Width = 264
     54    Caption = 'TListChar(TString)'
     55    OnClick = ButtonCharListClick
    5656    TabOrder = 4
    5757  end
     
    5959    Left = 8
    6060    Height = 24
    61     Top = 456
    62     Width = 152
     61    Top = 614
     62    Width = 264
    6363    Anchors = [akLeft, akBottom]
    64     Caption = 'TStringList<string>'
     64    Caption = 'TGList<string>'
    6565    OnClick = ButtonBenchmarkListStringClick
    6666    TabOrder = 5
    6767  end
    68   object ListObjectButton: TButton
     68  object ButtonListObject: TButton
    6969    Left = 8
    7070    Height = 25
    7171    Top = 163
    72     Width = 152
    73     Caption = 'TObjectList<Object>'
    74     OnClick = ListObjectButtonClick
     72    Width = 264
     73    Caption = 'TGListObject<TObject>'
     74    OnClick = ButtonListObjectClick
    7575    TabOrder = 6
    7676  end
     
    7878    Left = 8
    7979    Height = 25
    80     Top = 424
    81     Width = 152
     80    Top = 582
     81    Width = 264
    8282    Anchors = [akLeft, akBottom]
    83     Caption = 'TDictionary<string,string>'
     83    Caption = 'TGDictionary<string,string>'
    8484    OnClick = ButtonBenchmarkDictionaryClick
    8585    TabOrder = 7
    8686  end
    87   object MatrixIntegerButton: TButton
     87  object ButtonMatrixInteger: TButton
    8888    Left = 8
    8989    Height = 25
    9090    Top = 192
    91     Width = 152
    92     Caption = 'TMatrix<Integer>'
    93     OnClick = MatrixIntegerButtonClick
     91    Width = 264
     92    Caption = 'TGMatrix<Integer>'
     93    OnClick = ButtonMatrixIntegerClick
    9494    TabOrder = 8
    9595  end
    9696  object ListViewOutput: TListView
    97     Left = 168
    98     Height = 491
     97    Left = 280
     98    Height = 649
    9999    Top = 24
    100     Width = 518
     100    Width = 648
    101101    Anchors = [akTop, akLeft, akRight, akBottom]
    102102    Columns = <   
     
    107107      item
    108108        Caption = 'Value'
    109         Width = 321
     109        Width = 428
    110110      end>
    111111    ReadOnly = True
     
    114114  end
    115115  object LabelTestName: TLabel
    116     Left = 168
    117     Height = 14
     116    Left = 144
     117    Height = 26
    118118    Top = 8
    119     Width = 10
     119    Width = 15
    120120    Caption = '   '
    121121    ParentColor = False
    122122  end
    123123  object Label1: TLabel
    124     Left = 8
    125     Height = 14
    126     Top = 408
    127     Width = 62
     124    Left = 10
     125    Height = 26
     126    Top = 554
     127    Width = 111
    128128    Anchors = [akLeft, akBottom]
    129129    Caption = 'Benchmarks:'
     
    133133    Left = 8
    134134    Height = 24
    135     Top = 488
    136     Width = 152
     135    Top = 646
     136    Width = 264
    137137    Anchors = [akLeft, akBottom]
    138     Caption = 'TList<Pointer>'
     138    Caption = 'TGList<Pointer>'
    139139    OnClick = ButtonBenchmarkListPointerClick
    140140    TabOrder = 10
    141141  end
    142   object StreamByteButton: TButton
    143     Left = 8
     142  object ButtonStreamByte: TButton
     143    Left = 10
    144144    Height = 25
    145145    Top = 224
    146     Width = 152
    147     Caption = 'TStream<Byte>'
    148     OnClick = StreamByteButtonClick
     146    Width = 264
     147    Caption = 'TMemoryStreamByte'
     148    OnClick = ButtonStreamByteClick
    149149    TabOrder = 11
    150150  end
    151   object TreeButton: TButton
    152     Left = 8
    153     Height = 25
    154     Top = 256
    155     Width = 152
    156     Caption = 'TTree<string>'
    157     OnClick = TreeButtonClick
    158     TabOrder = 12
    159   end
    160151end
  • Generics/NativeGenerics/Demo/UMainForm.pas

    r481 r496  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    9   ComCtrls, GenericList, GenericDictionary, GenericQueue, GenericStream,
    10   DateUtils, GenericString, GenericTree;
     9  ComCtrls, DateUtils, GenericList, GenericMatrix, GenericQueue, fgl,
     10  GenericDictionary, SpecializedStream, SpecializedList;
    1111
    1212type
     
    1515
    1616  TMainForm = class(TForm)
    17     TreeButton: TButton;
    18     StreamByteButton: TButton;
     17    ButtonStreamByte: TButton;
    1918    ButtonBenchmarkDictionary: TButton;
    2019    ButtonBenchmarkListPointer: TButton;
    21     ListObjectButton: TButton;
     20    ButtonListObject: TButton;
    2221    ButtonBenchmarkListString: TButton;
    23     CharListButton: TButton;
    24     MatrixIntegerButton: TButton;
    25     QueueIntegerButton: TButton;
    26     DictionaryStringButton: TButton;
    27     IntegerListButton: TButton;
    28     StringListButton: TButton;
     22    ButtonCharList: TButton;
     23    ButtonMatrixInteger: TButton;
     24    ButtonQueueInteger: TButton;
     25    ButtonDictionaryString: TButton;
     26    ButtonIntegerList: TButton;
     27    ButtonStringList: TButton;
    2928    Label1: TLabel;
    3029    LabelTestName: TLabel;
     
    3332    procedure ButtonBenchmarkListPointerClick(Sender: TObject);
    3433    procedure ButtonBenchmarkListStringClick(Sender: TObject);
    35     procedure CharListButtonClick(Sender: TObject);
    36     procedure DictionaryStringButtonClick(Sender: TObject);
    37     procedure IntegerListButtonClick(Sender: TObject);
    38     procedure MatrixIntegerButtonClick(Sender: TObject);
    39     procedure ListObjectButtonClick(Sender: TObject);
    40     procedure QueueIntegerButtonClick(Sender: TObject);
    41     procedure StreamByteButtonClick(Sender: TObject);
    42     procedure StringListButtonClick(Sender: TObject);
     34    procedure ButtonCharListClick(Sender: TObject);
     35    procedure ButtonDictionaryStringClick(Sender: TObject);
     36    procedure ButtonIntegerListClick(Sender: TObject);
     37    procedure ButtonMatrixIntegerClick(Sender: TObject);
     38    procedure ButtonListObjectClick(Sender: TObject);
     39    procedure ButtonQueueIntegerClick(Sender: TObject);
     40    procedure ButtonStringListClick(Sender: TObject);
     41    procedure ButtonStreamByteClick(Sender: TObject);
    4342    procedure FormCreate(Sender: TObject);
    4443    procedure FormDestroy(Sender: TObject);
    45     procedure TreeButtonClick(Sender: TObject);
    46   private
    4744  public
    4845    MeasureDuration: TDateTime;
     46    Bitmap: TBitmap;
    4947    procedure UpdateButtonState(Enabled: Boolean);
    5048    procedure WriteOutput(Text1: string = ''; Text2: string = '');
     
    6563end;
    6664
    67 procedure TMainForm.IntegerListButtonClick(Sender: TObject);
     65procedure TMainForm.ButtonIntegerListClick(Sender: TObject);
    6866var
    6967  List: TGList<Integer>;
     
    7270begin
    7371  ListViewOutput.Clear;
    74   LabelTestName.Caption := 'TGList<Integer> test';
     72  LabelTestName.Caption := 'TListInteger test';
    7573  List := TGList<Integer>.Create;
    7674  List2 := TGList<Integer>.Create;
     
    8785    WriteOutput('First', IntToStr(First));
    8886    WriteOutput('Last', IntToStr(Last));
     87    WriteOutput('IndexOf(7)', IntToStr(IndexOf(7)));
    8988    MoveItems(3, 2, 3);
    9089    WriteOutput('MoveItems(3, 2, 3)', Implode(',', IntToStr));
     
    107106end;
    108107
    109 procedure TMainForm.MatrixIntegerButtonClick(Sender: TObject);
    110 //var
    111 //  Matrix: TGMatrix<Integer, Integer, Integer>;
    112 begin
    113   (*  ListViewOutput.Clear;
    114   LabelTestName.Caption := 'TGMatrix<Integer> test';
    115   Matrix := TGMatrix<Integer, Integer, Integer>.Create;
     108procedure TMainForm.ButtonMatrixIntegerClick(Sender: TObject);
     109var
     110  Matrix: TGMatrix<Integer>;
     111  I: Integer;
     112begin
     113  ListViewOutput.Clear;
     114  LabelTestName.Caption := 'TMatrixInteger test';
     115  Matrix := TGMatrix<Integer>.Create;
    116116  with Matrix do try
    117117    Count := CreateIndex(2, 2);
     
    127127  finally
    128128    Free;
    129   end; *)
    130 end;
    131 
    132 function ObjectToStr(Obj: TObject): string;
    133 begin
    134   Result := Obj.ClassName;
    135 end;
    136 
    137 procedure TMainForm.ListObjectButtonClick(Sender: TObject);
    138 var
    139   List: TGObjectList<TObject>;
    140   I: Integer;
    141 begin
    142   ListViewOutput.Clear;
    143   LabelTestName.Caption := 'TObjectList<TObject> test';
    144   List := TGObjectList<TObject>.Create;
    145   with List do try
    146     AddArray([TObject.Create, TObject.Create, TObject.Create, TObject.Create]);
    147     WriteOutput('AddArray([TObject.Create, TObject.Create, TObject.Create, TObject.Create])', Implode(',', ObjectToStr));
    148     Clear;
    149     WriteOutput('Clear', Implode(',', ObjectToStr));
    150     for I := 0 to 10 do Add(TObject.Create);
    151     WriteOutput('for I := 0 to 10 do Add(TObject.Create)', Implode(',', ObjectToStr));
    152     WriteOutput('Count', IntToStr(Count));
    153     Reverse;
    154     WriteOutput('Reverse', Implode(',', ObjectToStr));
    155     MoveItems(3, 2, 3);
    156     WriteOutput('MoveItems(3, 2, 3)', Implode(',', ObjectToStr));
    157   finally
    158     Free;
    159   end;
    160 end;
    161 
    162 procedure TMainForm.QueueIntegerButtonClick(Sender: TObject);
    163 var
    164   Queue: TGQueue<Integer>;
    165 begin
    166   ListViewOutput.Clear;
    167   LabelTestName.Caption := 'TGQueue<Integer> test';
    168   Queue := TGQueue<Integer>.Create;
    169   with Queue do try
    170     Enqueue(1);
    171     Enqueue(2);
    172     Enqueue(3);
    173     WriteOutput('Enqueue(1),Enqueue(2),Enqueue(3) ', List.Implode(',', IntToStr));
    174     Enqueue(4);
    175     WriteOutput('Enqueue(4)', List.Implode(',', IntToStr));
    176     WriteOutput('Dequeued item', IntToStr(Dequeue));
    177     WriteOutput('Dequeue', List.Implode(',', IntToStr));
    178   finally
    179     Free;
    180   end;
    181 end;
    182 
    183 procedure TMainForm.StreamByteButtonClick(Sender: TObject);
    184 var
    185   Stream: TGStream<Byte>;
     129  end;
     130end;
     131
     132procedure TMainForm.ButtonStreamByteClick(Sender: TObject);
     133var
     134  Stream: TMemoryStreamByte;
    186135  I: Integer;
    187136  ByteArray: array of Byte;
     
    189138begin
    190139  ListViewOutput.Clear;
    191   LabelTestName.Caption := 'TGStream<Byte> test';
    192   Stream := TGStream<Byte>.Create;
     140  LabelTestName.Caption := 'TStreamByte test';
     141  Stream := TMemoryStreamByte.Create;
    193142  with Stream do try
    194143    WriteOutput('Size := ', IntToStr(Stream.Size));
     
    218167end;
    219168
    220 function StringPairToStr(Pair: TGPair<String, String>): string;
     169function ObjectToStr(Obj: TObject): string;
     170begin
     171  Result := Obj.ClassName;
     172end;
     173
     174procedure TMainForm.ButtonListObjectClick(Sender: TObject);
     175var
     176  List: TGListObject<TObject>;
     177  I: Integer;
     178begin
     179  ListViewOutput.Clear;
     180  LabelTestName.Caption := 'TListObject test';
     181  List := TGListObject<TObject>.Create;
     182  with List do try
     183    AddArray([TObject.Create, TObject.Create, TObject.Create, TObject.Create]);
     184    WriteOutput('AddArray([TObject.Create, TObject.Create, TObject.Create, TObject.Create])', Implode(',', ObjectToStr));
     185    Clear;
     186    WriteOutput('Clear', Implode(',', ObjectToStr));
     187    for I := 0 to 10 do Add(TObject.Create);
     188    WriteOutput('for I := 0 to 10 do Add(TObject.Create)', Implode(',', ObjectToStr));
     189    WriteOutput('Count', IntToStr(Count));
     190    Reverse;
     191    WriteOutput('Reverse', Implode(',', ObjectToStr));
     192    MoveItems(3, 2, 3);
     193    WriteOutput('MoveItems(3, 2, 3)', Implode(',', ObjectToStr));
     194  finally
     195    Free;
     196  end;
     197end;
     198
     199procedure TMainForm.ButtonQueueIntegerClick(Sender: TObject);
     200var
     201  Queue: TGQueue<Integer>;
     202  I: Integer;
     203begin
     204  ListViewOutput.Clear;
     205  LabelTestName.Caption := 'TQueueInteger test';
     206  Queue := TGQueue<Integer>.Create;
     207  with Queue do try
     208    Enqueue(1);
     209    Enqueue(2);
     210    Enqueue(3);
     211    WriteOutput('Enqueue(1),Enqueue(2),Enqueue(3) ', List.Implode(',', IntToStr));
     212    Enqueue(4);
     213    WriteOutput('Enqueue(4)', List.Implode(',', IntToStr));
     214    WriteOutput('Dequeued item', IntToStr(Dequeue));
     215    WriteOutput('Dequeue', List.Implode(',', IntToStr));
     216  finally
     217    Free;
     218  end;
     219end;
     220
     221function StringPairToStr(Pair: TGPair<string,string>): string;
    221222begin
    222223  Result := Pair.Key + ':' + Pair.Value;
    223224end;
    224225
    225 procedure TMainForm.DictionaryStringButtonClick(Sender: TObject);
    226 //type
    227 //  TPairStringString = TGPair<string, string>;
     226procedure TMainForm.ButtonDictionaryStringClick(Sender: TObject);
    228227var
    229228  Dictionary: TGDictionary<string, string>;
    230229begin
    231230  ListViewOutput.Clear;
    232   LabelTestName.Caption := 'TGDictionary<string, string> test';
     231  LabelTestName.Caption := 'TDictionaryString test';
    233232  Dictionary := TGDictionary<string, string>.Create;
    234233  with Dictionary do try
     
    241240    Values['Key2'] := 'None';
    242241    WriteOutput('Values[Key2]', Values['Key2']);
    243     WriteOutput('Index of Key0', IntToStr(SearchKey('Key0')));
     242    WriteOutput('Values[Key0]', Values['Key0']);
    244243    WriteOutput('Keys[2]', Keys[2]);
    245244  finally
     
    253252end;
    254253
    255 procedure TMainForm.CharListButtonClick(Sender: TObject);
    256 var
    257   List: TGString<Char>;
    258   List2: TGString<Char>;
    259 begin
    260   ListViewOutput.Clear;
    261   LabelTestName.Caption := 'TGString<Char> test';
    262   List := TGString<Char>.Create;
    263   List2 := TGString<Char>.Create;
     254procedure TMainForm.ButtonCharListClick(Sender: TObject);
     255var
     256  List: TListChar;
     257  List2: TListChar;
     258begin
     259  ListViewOutput.Clear;
     260  LabelTestName.Caption := 'TListChar test';
     261  List := TListChar.Create;
     262  List2 := TListChar.Create;
    264263  with List do try
    265264    AddArray([' ', ' ', 'A', 'b', 'c', 'd', ' ']);
     
    287286procedure TMainForm.ButtonBenchmarkListStringClick(Sender: TObject);
    288287var
    289   List: TGList<String>;
     288  List: TGList<string>;
    290289  List2: TStringList;
    291290  StartTime: TDateTime;
     
    295294  SampleCount: Integer = 100000;
    296295begin
    297   LabelTestName.Caption := 'Generic specialized TGStringList<string> vs. classic non-generic TStringList benchmark';
     296  LabelTestName.Caption := 'Generic specialized TListString vs. classic non-generic TStringList benchmark';
    298297  ListViewOutput.Clear;
    299298  try
    300299    UpdateButtonState(False);
    301     List := TGList<String>.Create;
     300    List := TGList<string>.Create;
    302301    List2 := TStringList.Create;
    303302
     
    306305      List.Add(SampleText);
    307306    until (Now - StartTime) > MeasureDuration;
    308     WriteOutput('TListString.Add', IntToStr(List.Count) + ' ops');
     307    WriteOutput('TGList<String>.Add', IntToStr(List.Count) + ' ops');
    309308    List.Clear;
    310309    Application.ProcessMessages;
     
    322321      List.Insert(0, SampleText);
    323322    until (Now - StartTime) > MeasureDuration;
    324     WriteOutput('TListString.Insert', IntToStr(List.Count) + ' ops');
     323    WriteOutput('TGList<String>.Insert', IntToStr(List.Count) + ' ops');
    325324    List.Clear;
    326325    Application.ProcessMessages;
     
    342341      Inc(I);
    343342    until (Now - StartTime) > MeasureDuration;
    344     WriteOutput('TListString.Delete', IntToStr(I) + ' ops');
     343    WriteOutput('TGList<String>.Delete', IntToStr(I) + ' ops');
    345344    List.Clear;
    346345    Application.ProcessMessages;
     
    365364      Inc(I);
    366365    until (Now - StartTime) > MeasureDuration;
    367     WriteOutput('TListString.Move', IntToStr(I) + ' ops');
     366    WriteOutput('TGList<String>.Move', IntToStr(I) + ' ops');
    368367    List.Clear;
    369368    Application.ProcessMessages;
     
    388387      Inc(I);
    389388    until (Now - StartTime) > MeasureDuration;
    390     WriteOutput('TListString.Exchange', IntToStr(I) + ' ops');
     389    WriteOutput('TGList<String>.Exchange', IntToStr(I) + ' ops');
    391390    List.Clear;
    392391    Application.ProcessMessages;
     
    411410      Inc(I);
    412411    until (Now - StartTime) > MeasureDuration;
    413     WriteOutput('TListString.IndexOf', IntToStr(I) + ' ops');
     412    WriteOutput('TGList<String>.IndexOf', IntToStr(I) + ' ops');
    414413    List.Clear;
    415414    Application.ProcessMessages;
     
    434433
    435434procedure TMainForm.ButtonBenchmarkDictionaryClick(Sender: TObject);
    436 //type
    437 //  TPairStringString = TGPair<String, String>;
    438 var
    439   Dictionary: TGDictionary<string, string>;
     435var
     436  Dictionary: TGDictionary<string,string>;
    440437  Dictionary2: TStringList;
    441438  StartTime: TDateTime;
     
    443440  R: string;
    444441begin
    445   LabelTestName.Caption := 'Generic specialized TGDictionary<string,string> vs. classic non-generic TStringList benchmark';
     442  LabelTestName.Caption := 'Generic specialized TDictionaryStringString vs. classic non-generic TStringList benchmark';
    446443  ListViewOutput.Clear;
    447444  try
    448445    UpdateButtonState(False);
    449     Dictionary := TGDictionary<string, string>.Create;
     446    Dictionary := TGDictionary<string,string>.Create;
    450447    Dictionary2 := TStringList.Create;
    451448    Dictionary2.NameValueSeparator := '|';
     
    457454      I := I + 1;
    458455    until (Now - StartTime) > MeasureDuration;
    459     WriteOutput('TDictionaryStringString.Add', IntToStr(Dictionary.List.Count) + ' ops');
     456    WriteOutput('TGDictionary<string,string>.Add', IntToStr(Dictionary.Count) + ' ops');
    460457    Application.ProcessMessages;
    461458
     
    472469    StartTime := Now;
    473470    repeat
    474       R := Dictionary.Values[IntToStr(I mod Dictionary.List.Count)];
     471      R := Dictionary.Values[IntToStr(I mod Dictionary.Count)];
    475472      I := I + 1;
    476473    until (Now - StartTime) > MeasureDuration;
    477     WriteOutput('TDictionaryStringString.Values', IntToStr(I) + ' ops');
     474    WriteOutput('TGDictionary<string,string>.Values', IntToStr(I) + ' ops');
    478475    Application.ProcessMessages;
    479476
     
    490487    StartTime := Now;
    491488    repeat
    492       R := Dictionary.Keys[I mod Dictionary.List.Count];
     489      R := Dictionary.Keys[I mod Dictionary.Count];
    493490      I := I + 1;
    494491    until (Now - StartTime) > MeasureDuration;
    495     WriteOutput('TDictionaryStringString.Keys', IntToStr(I) + ' ops');
     492    WriteOutput('TGDictionary<string,string>.Keys', IntToStr(I) + ' ops');
    496493    Application.ProcessMessages;
    497494
     
    508505    StartTime := Now;
    509506    repeat
    510       R := Dictionary.List.Items[I mod Dictionary.List.Count].Value;
     507      R := Dictionary.List.Items[I mod Dictionary.Count].Value;
    511508      I := I + 1;
    512509    until (Now - StartTime) > MeasureDuration;
    513     WriteOutput('TDictionaryStringString.Items', IntToStr(I) + ' ops');
     510    WriteOutput('TGDictionary<string,string>.Items', IntToStr(I) + ' ops');
    514511    Application.ProcessMessages;
    515512
     
    534531  List: TGList<Pointer>;
    535532  List2: TFPList;
     533  List3: TFPGList<Pointer>;
     534  S: TList;
    536535  StartTime: TDateTime;
    537536  I: Integer;
     537  K: Integer;
    538538const
    539539  SampleCount: Integer = 100000;
    540540begin
    541   LabelTestName.Caption := 'Generic specialized TGObjectList<Object> vs. classic non-generic TFPList benchmark';
     541  LabelTestName.Caption := 'Generic specialized TListObject vs. classic non-generic TFPList benchmark';
    542542  ListViewOutput.Clear;
    543543  try
     
    545545    List := TGList<Pointer>.Create;
    546546    List2 := TFPList.Create;
    547 
    548     WriteOutput('TListPointer.InstanceSize', IntToStr(TGList<Pointer>.InstanceSize) + ' bytes');
     547    List3 := TFPGList<Pointer>.Create;
     548
     549    WriteOutput('TGList<Pointer>.InstanceSize', IntToStr(TGList<Pointer>.InstanceSize) + ' bytes');
    549550    WriteOutput('TFPList.InstanceSize', IntToStr(TFPList.InstanceSize) + ' bytes');
     551    WriteOutput('TFPGList<Pointer>.InstanceSize', IntToStr(TFPGList<Pointer>.InstanceSize) + ' bytes');
    550552
    551553    StartTime := Now;
     
    553555      List.Add(Pointer(1));
    554556    until (Now - StartTime) > MeasureDuration;
    555     WriteOutput('TListPointer.Add', IntToStr(List.Count) + ' ops');
     557    WriteOutput('TGList<Pointer>.Add', IntToStr(List.Count) + ' ops');
    556558    List.Clear;
    557559    Application.ProcessMessages;
     
    567569    StartTime := Now;
    568570    repeat
     571      List3.Add(Pointer(1));
     572    until (Now - StartTime) > MeasureDuration;
     573    WriteOutput('TFPGList<Pointer>.Add', IntToStr(List3.Count) + ' ops');
     574    List3.Clear;
     575    Application.ProcessMessages;
     576
     577    StartTime := Now;
     578    repeat
    569579      List.Insert(0, Pointer(1));
    570580    until (Now - StartTime) > MeasureDuration;
    571     WriteOutput('TListPointer.Insert', IntToStr(List.Count) + ' ops');
     581    WriteOutput('TGList<Pointer>.Insert', IntToStr(List.Count) + ' ops');
    572582    List.Clear;
    573583    Application.ProcessMessages;
     
    581591    Application.ProcessMessages;
    582592
     593    StartTime := Now;
     594    repeat
     595      List3.Insert(0, Pointer(1));
     596    until (Now - StartTime) > MeasureDuration;
     597    WriteOutput('TFPGList<Pointer>.Insert', IntToStr(List3.Count) + ' ops');
     598    List3.Clear;
     599    Application.ProcessMessages;
     600
    583601    for I := 0 to SampleCount - 1 do
    584602      List.Add(Pointer(1));
     
    589607      Inc(I);
    590608    until (Now - StartTime) > MeasureDuration;
    591     WriteOutput('TListPointer.Delete', IntToStr(I) + ' ops');
     609    WriteOutput('TGList<Pointer>.Delete', IntToStr(I) + ' ops');
    592610    List.Clear;
    593611    Application.ProcessMessages;
     
    605623
    606624    for I := 0 to SampleCount - 1 do
     625      List3.Add(Pointer(1));
     626    StartTime := Now;
     627    I := 0;
     628    repeat
     629      List3.Delete(0);
     630      Inc(I);
     631    until (Now - StartTime) > MeasureDuration;
     632    WriteOutput('TFPGList<Pointer>.Delete', IntToStr(I) + ' ops');
     633    Application.ProcessMessages;
     634
     635    for I := 0 to SampleCount - 1 do
    607636      List.Add(Pointer(1));
    608637    StartTime := Now;
     
    612641      Inc(I);
    613642    until (Now - StartTime) > MeasureDuration;
    614     WriteOutput('TListPointer.Move', IntToStr(I) + ' ops');
    615     List.Clear;
    616     Application.ProcessMessages;
    617 
    618     for I := 0 to SampleCount - 1 do
    619     List2.Add(Pointer(1));
     643    WriteOutput('TGList<Pointer>.Move', IntToStr(I) + ' ops');
     644    List.Clear;
     645    Application.ProcessMessages;
     646
     647    for I := 0 to SampleCount - 1 do
     648      List2.Add(Pointer(1));
    620649    StartTime := Now;
    621650    I := 0;
     
    628657
    629658    for I := 0 to SampleCount - 1 do
     659      List3.Add(Pointer(1));
     660    StartTime := Now;
     661    I := 0;
     662    repeat
     663      List3.Move(Round(SampleCount * 0.3), Round(SampleCount * 0.7));
     664      Inc(I);
     665    until (Now - StartTime) > MeasureDuration;
     666    WriteOutput('TFPGList<Pointer>.Move', IntToStr(I) + ' ops');
     667    Application.ProcessMessages;
     668
     669    for I := 0 to SampleCount - 1 do
    630670      List.Add(Pointer(1));
    631671    StartTime := Now;
     
    635675      Inc(I);
    636676    until (Now - StartTime) > MeasureDuration;
    637     WriteOutput('TListPointer.Exchange', IntToStr(I) + ' ops');
    638     List.Clear;
    639     Application.ProcessMessages;
    640 
    641     for I := 0 to SampleCount - 1 do
    642     List2.Add(Pointer(1));
     677    WriteOutput('TGList<Pointer>.Exchange', IntToStr(I) + ' ops');
     678    Application.ProcessMessages;
     679
     680    for I := 0 to SampleCount - 1 do
     681      List2.Add(Pointer(1));
    643682    StartTime := Now;
    644683    I := 0;
     
    651690
    652691    for I := 0 to SampleCount - 1 do
     692      List3.Add(Pointer(1));
     693    StartTime := Now;
     694    I := 0;
     695    repeat
     696      List3.Exchange(Round(SampleCount * 0.3), Round(SampleCount * 0.7));
     697      Inc(I);
     698    until (Now - StartTime) > MeasureDuration;
     699    WriteOutput('TFPGList<Pointer>.Exchange', IntToStr(I) + ' ops');
     700    Application.ProcessMessages;
     701
     702    for I := 0 to SampleCount - 1 do
     703      List.Add(Pointer(I));
     704    StartTime := Now;
     705    I := 0;
     706    repeat
     707      K := List.IndexOf(Pointer(I mod List.Count));
     708      Inc(I);
     709    until (Now - StartTime) > MeasureDuration;
     710    WriteOutput('TGList<Pointer>.IndexOf', IntToStr(I) + ' ops');
     711    List.Clear;
     712    Application.ProcessMessages;
     713
     714    for I := 0 to SampleCount - 1 do
     715      List2.Add(Pointer(I));
     716    StartTime := Now;
     717    I := 0;
     718    repeat
     719      K := List2.IndexOf(Pointer(I mod List2.Count));
     720      Inc(I);
     721    until (Now - StartTime) > MeasureDuration;
     722    WriteOutput('TFPList.IndexOf', IntToStr(I) + ' ops');
     723    Application.ProcessMessages;
     724
     725    for I := 0 to SampleCount - 1 do
     726      List3.Add(Pointer(I));
     727    StartTime := Now;
     728    I := 0;
     729    repeat
     730      K := List3.IndexOf(Pointer(I mod List3.Count));
     731      Inc(I);
     732    until (Now - StartTime) > MeasureDuration;
     733    WriteOutput('TFPGList<Pointer>.IndexOf', IntToStr(I) + ' ops');
     734    Application.ProcessMessages;
     735
     736    for I := 0 to SampleCount - 1 do
    653737      List.Add(Pointer(1));
    654738    StartTime := Now;
    655739    I := 0;
    656740    repeat
    657       List.IndexOf(Pointer(I mod List.Count));
    658       Inc(I);
    659     until (Now - StartTime) > MeasureDuration;
    660     WriteOutput('TListPointer.IndexOf', IntToStr(I) + ' ops');
    661     List.Clear;
    662     Application.ProcessMessages;
    663 
    664     for I := 0 to SampleCount - 1 do
    665     List2.Add(Pointer(1));
    666     StartTime := Now;
    667     I := 0;
    668     repeat
    669       List2.IndexOf(Pointer(I mod List2.Count));
    670       Inc(I);
    671     until (Now - StartTime) > MeasureDuration;
    672     WriteOutput('TFPList.IndexOf', IntToStr(I) + ' ops');
     741      List[I mod List.Count] := Pointer(1);
     742      Inc(I);
     743    until (Now - StartTime) > MeasureDuration;
     744    WriteOutput('TGList<Pointer>[I] write', IntToStr(I) + ' ops');
     745    List.Clear;
     746    Application.ProcessMessages;
     747
     748    for I := 0 to SampleCount - 1 do
     749      List2.Add(Pointer(1));
     750    StartTime := Now;
     751    I := 0;
     752    repeat
     753      List2[I mod List2.Count] := Pointer(1);
     754      Inc(I);
     755    until (Now - StartTime) > MeasureDuration;
     756    WriteOutput('TFPList[I] write', IntToStr(I) + ' ops');
     757    Application.ProcessMessages;
     758
     759    for I := 0 to SampleCount - 1 do
     760      List3.Add(Pointer(1));
     761    StartTime := Now;
     762    I := 0;
     763    repeat
     764      List3[I mod List3.Count] := Pointer(1);
     765      Inc(I);
     766    until (Now - StartTime) > MeasureDuration;
     767    WriteOutput('TFPGList<Pointer>[I] write', IntToStr(I) + ' ops');
    673768    Application.ProcessMessages;
    674769
     
    678773    I := 0;
    679774    repeat
    680       List[I mod List.Count] := Pointer(1);
    681       Inc(I);
    682     until (Now - StartTime) > MeasureDuration;
    683     WriteOutput('TListPointer[I] write', IntToStr(I) + ' ops');
    684     List.Clear;
    685     Application.ProcessMessages;
    686 
    687     for I := 0 to SampleCount - 1 do
    688     List2.Add(Pointer(1));
    689     StartTime := Now;
    690     I := 0;
    691     repeat
    692       List2[I mod List2.Count] := Pointer(1);
    693       Inc(I);
    694     until (Now - StartTime) > MeasureDuration;
    695     WriteOutput('TFPList[I] write', IntToStr(I) + ' ops');
    696     Application.ProcessMessages;
    697 
    698     for I := 0 to SampleCount - 1 do
    699       List.Add(Pointer(1));
    700     StartTime := Now;
    701     I := 0;
    702     repeat
    703775      List[I mod List.Count];
    704776      Inc(I);
    705777    until (Now - StartTime) > MeasureDuration;
    706     WriteOutput('TListPointer[I] read', IntToStr(I) + ' ops');
    707     List.Clear;
    708     Application.ProcessMessages;
    709 
    710     for I := 0 to SampleCount - 1 do
    711     List2.Add(Pointer(1));
     778    WriteOutput('TGList<Pointer>[I] read', IntToStr(I) + ' ops');
     779    List.Clear;
     780    Application.ProcessMessages;
     781
     782    for I := 0 to SampleCount - 1 do
     783      List2.Add(Pointer(1));
    712784    StartTime := Now;
    713785    I := 0;
     
    718790    WriteOutput('TFPList[I] read', IntToStr(I) + ' ops');
    719791    Application.ProcessMessages;
     792
     793    for I := 0 to SampleCount - 1 do
     794      List3.Add(Pointer(1));
     795    StartTime := Now;
     796    I := 0;
     797    repeat
     798      List3[I mod List3.Count];
     799      Inc(I);
     800    until (Now - StartTime) > MeasureDuration;
     801    WriteOutput('TFPGList<Pointer>[I] read', IntToStr(I) + ' ops');
     802    Application.ProcessMessages;
     803
    720804  finally
    721805    UpdateButtonState(True);
    722806    List.Free;
    723807    List2.Free;
     808    List3.Free;
    724809  end;
    725810end;
     
    730815end;
    731816
    732 procedure TMainForm.StringListButtonClick(Sender: TObject);
    733 var
    734   List: TGList<String>;
    735 begin
    736   ListViewOutput.Clear;
    737   WriteOutput('TGList<string> test');
    738   List := TGList<String>.Create;
     817procedure TMainForm.ButtonStringListClick(Sender: TObject);
     818var
     819  List: TGList<string>;
     820begin
     821  ListViewOutput.Clear;
     822  WriteOutput('TListString test');
     823  List := TGList<string>.Create;
    739824  with List do try
    740825    AddArray(['One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven']);
     
    761846end;
    762847
    763 procedure TMainForm.TreeButtonClick(Sender: TObject);
    764 var
    765   //Tree: TGTree<string>;
    766   //Tree2: TGTree<string>;
    767   I: Integer;
    768 begin
    769  (* ListViewOutput.Clear;
    770   LabelTestName.Caption := 'TGTree<string> test';
    771   Tree := TGTree<string>.Create;
    772   Tree2 := TGTree<string>.Create;
    773   with Tree do try
    774     Tree.TopItem.Add('test');
    775     AddArray([10, 20, 30, 40]);
    776     WriteOutput('AddArray([10, 20, 30, 40])', Implode(',', IntToStr));
    777     Clear;
    778     WriteOutput('Clear', Implode(',', IntToStr));
    779     for I := 0 to 10 do Add(I);
    780     WriteOutput('for I := 0 to 10 do Add(I)', Implode(',', IntToStr));
    781     WriteOutput('Count', IntToStr(Count));
    782     Reverse;
    783     WriteOutput('Reverse', Implode(',', IntToStr));
    784     WriteOutput('First', IntToStr(First));
    785     WriteOutput('Last', IntToStr(Last));
    786     MoveItems(3, 2, 3);
    787     WriteOutput('MoveItems(3, 2, 3)', Implode(',', IntToStr));
    788     Insert(5, 11);
    789     WriteOutput('Insert(5, 11)', Implode(',', IntToStr));
    790     DeleteItems(0, 10);
    791     WriteOutput('Delete(0, 10)', Implode(',', IntToStr));
    792     List2.SetArray([1, 0]);
    793     WriteOutput('EqualTo([6, 11])', BoolToStr(EqualTo(List2)));
    794     List2.SetArray([2, 0]);
    795     WriteOutput('EqualTo([7, 11])', BoolToStr(EqualTo(List2)));
    796     InsertCount(0, 3);
    797     WriteOutput('InsertCount(0, 3)', Implode(',', IntToStr));
    798     Fill(0, 3, 9);
    799     WriteOutput('Fill(0, 3, 9)', Implode(',', IntToStr));
    800   finally
    801     Free;
    802     Tree2.Free;
    803   end;   *)
    804 end;
    805 
    806848procedure TMainForm.UpdateButtonState(Enabled: Boolean);
    807849begin
    808850  ButtonBenchmarkDictionary.Enabled := Enabled;
    809851  ButtonBenchmarkListString.Enabled := Enabled;
    810   CharListButton.Enabled := Enabled;
    811   DictionaryStringButton.Enabled := Enabled;
    812   IntegerListButton.Enabled := Enabled;
    813   ListObjectButton.Enabled := Enabled;
    814   MatrixIntegerButton.Enabled := Enabled;
    815   QueueIntegerButton.Enabled := Enabled;
    816   StringListButton.Enabled := Enabled;
     852  ButtonCharList.Enabled := Enabled;
     853  ButtonDictionaryString.Enabled := Enabled;
     854  ButtonIntegerList.Enabled := Enabled;
     855  ButtonListObject.Enabled := Enabled;
     856  ButtonMatrixInteger.Enabled := Enabled;
     857  ButtonQueueInteger.Enabled := Enabled;
     858  ButtonStringList.Enabled := Enabled;
    817859end;
    818860
  • Generics/NativeGenerics/NativeGenerics.lpk

    r458 r496  
    1 <?xml version="1.0"?>
     1<?xml version="1.0" encoding="UTF-8"?>
    22<CONFIG>
    33  <Package Version="4">
    4     <PathDelim Value="\"/>
    54    <Name Value="NativeGenerics"/>
    6     <AddToProjectUsesSection Value="True"/>
    7     <Author Value="Chronos (robie@centrum.cz)"/>
     5    <Type Value="RunAndDesignTime"/>
    86    <CompilerOptions>
    97      <Version Value="11"/>
    10       <PathDelim Value="\"/>
    118      <SearchPaths>
    12         <OtherUnitFiles Value="Units;Additional"/>
    13         <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     9        <IncludeFiles Value="Generic"/>
     10        <OtherUnitFiles Value="Generic;Specialized;Additional"/>
     11        <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/"/>
    1412      </SearchPaths>
    15       <CodeGeneration>
    16         <Checks>
    17           <IOChecks Value="True"/>
    18           <RangeChecks Value="True"/>
    19           <OverflowChecks Value="True"/>
    20           <StackChecks Value="True"/>
    21         </Checks>
    22       </CodeGeneration>
    23       <Other>
    24         <CompilerPath Value="$(CompPath)"/>
    25       </Other>
    2613    </CompilerOptions>
    27     <Description Value="Native generics library.
    28 Require FPC 2.7.1"/>
    29     <License Value="GNU/GPLv3"/>
    30     <Version Minor="2"/>
    31     <Files Count="15">
     14    <Files Count="17">
    3215      <Item1>
    33         <Filename Value="ReadMe.txt"/>
    34         <Type Value="Text"/>
     16        <Filename Value="Generic/GenericBitmap.pas"/>
     17        <UnitName Value="GenericBitmap"/>
    3518      </Item1>
    3619      <Item2>
    37         <Filename Value="Units\GenericList.pas"/>
    38         <UnitName Value="GenericList"/>
     20        <Filename Value="Generic/GenericDictionary.pas"/>
     21        <UnitName Value="GenericDictionary"/>
    3922      </Item2>
    4023      <Item3>
    41         <Filename Value="Units\GenericTree.pas"/>
    42         <UnitName Value="GenericTree"/>
     24        <Filename Value="Generic/GenericFileList.pas"/>
     25        <Type Value="Include"/>
    4326      </Item3>
    4427      <Item4>
    45         <Filename Value="Units\GenericDictionary.pas"/>
    46         <UnitName Value="GenericDictionary"/>
     28        <Filename Value="Generic/GenericList.pas"/>
     29        <UnitName Value="GenericList"/>
    4730      </Item4>
    4831      <Item5>
    49         <Filename Value="Units\GenericQueue.pas"/>
    50         <UnitName Value="GenericQueue"/>
     32        <Filename Value="Generic/GenericMatrix.pas"/>
     33        <UnitName Value="GenericMatrix"/>
    5134      </Item5>
    5235      <Item6>
    53         <Filename Value="Units\GenericRange.pas"/>
    54         <UnitName Value="GenericRange"/>
     36        <Filename Value="Generic/GenericPoint.pas"/>
     37        <UnitName Value="GenericPoint"/>
    5538      </Item6>
    5639      <Item7>
    57         <Filename Value="Units\GenericSet.pas"/>
    58         <UnitName Value="GenericSet"/>
     40        <Filename Value="Generic/GenericQueue.pas"/>
     41        <UnitName Value="GenericQueue"/>
    5942      </Item7>
    6043      <Item8>
    61         <Filename Value="Units\GenericStack.pas"/>
    62         <UnitName Value="GenericStack"/>
     44        <Filename Value="Generic/GenericRange.pas"/>
     45        <UnitName Value="GenericRange"/>
    6346      </Item8>
    6447      <Item9>
    65         <Filename Value="Units\GenericStream.pas"/>
    66         <UnitName Value="GenericStream"/>
     48        <Filename Value="Generic/GenericRectangle.pas"/>
     49        <UnitName Value="GenericRectangle"/>
    6750      </Item9>
    6851      <Item10>
    69         <Filename Value="Units\GenericMatrix.pas"/>
    70         <UnitName Value="GenericMatrix"/>
     52        <Filename Value="Generic/GenericSet.pas"/>
     53        <UnitName Value="GenericSet"/>
    7154      </Item10>
    7255      <Item11>
    73         <Filename Value="Units\GenericString.pas"/>
    74         <UnitName Value="GenericString"/>
     56        <Filename Value="Generic/GenericStack.pas"/>
     57        <UnitName Value="GenericStack"/>
    7558      </Item11>
    7659      <Item12>
    77         <Filename Value="Units\GenericBitmap.pas"/>
    78         <UnitName Value="GenericBitmap"/>
     60        <Filename Value="Generic/GenericStream.pas"/>
     61        <UnitName Value="GenericStream"/>
    7962      </Item12>
    8063      <Item13>
    81         <Filename Value="Units\GenericRectangle.pas"/>
    82         <UnitName Value="GenericRectangle"/>
     64        <Filename Value="Generic/GenericTree.pas"/>
     65        <UnitName Value="GenericTree"/>
    8366      </Item13>
    8467      <Item14>
    85         <Filename Value="Units\GenericPoint.pas"/>
    86         <UnitName Value="GenericPoint"/>
     68        <Filename Value="Specialized/SpecializedList.pas"/>
     69        <UnitName Value="SpecializedList"/>
    8770      </Item14>
    8871      <Item15>
    89         <Filename Value="Additional\UBinarySerializer.pas"/>
     72        <Filename Value="Specialized/SpecializedRectangle.pas"/>
     73        <UnitName Value="SpecializedRectangle"/>
     74      </Item15>
     75      <Item16>
     76        <Filename Value="Specialized/SpecializedStream.pas"/>
     77        <UnitName Value="SpecializedStream"/>
     78      </Item16>
     79      <Item17>
     80        <Filename Value="Additional/UBinarySerializer.pas"/>
    9081        <UnitName Value="UBinarySerializer"/>
    91       </Item15>
     82      </Item17>
    9283    </Files>
    93     <Type Value="RunAndDesignTime"/>
    94     <RequiredPkgs Count="2">
     84    <RequiredPkgs Count="1">
    9585      <Item1>
    96         <PackageName Value="LCL"/>
     86        <PackageName Value="FCL"/>
    9787      </Item1>
    98       <Item2>
    99         <PackageName Value="FCL"/>
    100         <MinVersion Major="1" Valid="True"/>
    101       </Item2>
    10288    </RequiredPkgs>
    10389    <UsageOptions>
  • Generics/NativeGenerics/NativeGenerics.pas

    r425 r496  
    55unit NativeGenerics;
    66
     7{$warn 5023 off : no warning about unused units}
    78interface
    89
    910uses
    10   GenericList, GenericTree, GenericDictionary, GenericQueue, GenericRange,
    11   GenericSet, GenericStack, GenericStream, GenericMatrix, GenericString,
    12   GenericBitmap, GenericRectangle, GenericPoint, UBinarySerializer,
    13   LazarusPackageIntf;
     11  GenericBitmap, GenericDictionary, GenericList, GenericMatrix, GenericPoint,
     12  GenericQueue, GenericRange, GenericRectangle, GenericSet, GenericStack,
     13  GenericStream, GenericTree, SpecializedList, SpecializedRectangle,
     14  SpecializedStream, UBinarySerializer, LazarusPackageIntf;
    1415
    1516implementation
  • Generics/NativeGenerics/ReadMe.txt

    r481 r496  
    1 Native generics library
    2 =======================
     1Template generics
     2=================
    33
    44Tutorial and basic information:
    5   http://wiki.freepascal.org/Generics
     5  http://wiki.freepascal.org/Templates
    66
    7 Version: 0.2
    8 Release date: 2012-09-25
     7Version: 0.3
     8Release date: 2011-01-01
    99Author: Chronos
    1010Email: robie@centrum.cz
     
    1212
    1313Main subversion repository:
    14 http://svn.zdechov.net/svn/PascalClassLibrary/Generics/NativeGenerics
    15 
    16 
    17 Require FPC version 3.0.0 and newer
    18 
     14http://svn.zdechov.net/svn/PascalClassLibrary/Generics/TemplateGenerics
Note: See TracChangeset for help on using the changeset viewer.