Changeset 77 for Generics


Ignore:
Timestamp:
Oct 29, 2010, 1:26:32 PM (14 years ago)
Author:
george
Message:
  • Added: Generic range type.
  • Added: Specialized TListByte type which si simply memory block.
  • Added: New functionality to TGList.
Location:
Generics/TemplateGenerics
Files:
4 added
10 edited

Legend:

Unmodified
Added
Removed
  • Generics/TemplateGenerics/Demo/Demo.lpi

    r76 r77  
    3838      </Item2>
    3939    </RequiredPackages>
    40     <Units Count="53">
     40    <Units Count="66">
    4141      <Unit0>
    4242        <Filename Value="Demo.lpr"/>
    4343        <IsPartOfProject Value="True"/>
    4444        <UnitName Value="Demo"/>
    45         <EditorIndex Value="4"/>
     45        <EditorIndex Value="8"/>
    4646        <WindowIndex Value="0"/>
    4747        <TopLine Value="1"/>
    4848        <CursorPos X="34" Y="7"/>
    49         <UsageCount Value="39"/>
     49        <UsageCount Value="50"/>
    5050        <Loaded Value="True"/>
    5151        <DefaultSyntaxHighlighter Value="Delphi"/>
     
    5959        <EditorIndex Value="0"/>
    6060        <WindowIndex Value="0"/>
    61         <TopLine Value="257"/>
    62         <CursorPos X="38" Y="10"/>
    63         <UsageCount Value="39"/>
     61        <TopLine Value="268"/>
     62        <CursorPos X="38" Y="171"/>
     63        <UsageCount Value="50"/>
    6464        <Loaded Value="True"/>
    6565        <LoadedDesigner Value="True"/>
     
    7272        <TopLine Value="1"/>
    7373        <CursorPos X="24" Y="16"/>
    74         <UsageCount Value="11"/>
     74        <UsageCount Value="10"/>
    7575      </Unit2>
    7676      <Unit3>
     
    8080        <TopLine Value="1"/>
    8181        <CursorPos X="16" Y="26"/>
    82         <UsageCount Value="11"/>
     82        <UsageCount Value="10"/>
    8383      </Unit3>
    8484      <Unit4>
     
    8888        <TopLine Value="1"/>
    8989        <CursorPos X="16" Y="21"/>
    90         <UsageCount Value="11"/>
     90        <UsageCount Value="10"/>
    9191      </Unit4>
    9292      <Unit5>
     
    9696        <TopLine Value="1"/>
    9797        <CursorPos X="16" Y="24"/>
    98         <UsageCount Value="11"/>
     98        <UsageCount Value="10"/>
    9999      </Unit5>
    100100      <Unit6>
     
    103103        <TopLine Value="1"/>
    104104        <CursorPos X="23" Y="2"/>
    105         <UsageCount Value="11"/>
     105        <UsageCount Value="10"/>
    106106        <DefaultSyntaxHighlighter Value="None"/>
    107107      </Unit6>
     
    112112        <TopLine Value="1"/>
    113113        <CursorPos X="16" Y="24"/>
    114         <UsageCount Value="11"/>
     114        <UsageCount Value="10"/>
    115115      </Unit7>
    116116      <Unit8>
     
    120120        <TopLine Value="1"/>
    121121        <CursorPos X="16" Y="24"/>
    122         <UsageCount Value="11"/>
     122        <UsageCount Value="10"/>
    123123      </Unit8>
    124124      <Unit9>
     
    128128        <TopLine Value="1"/>
    129129        <CursorPos X="16" Y="24"/>
    130         <UsageCount Value="11"/>
     130        <UsageCount Value="10"/>
    131131      </Unit9>
    132132      <Unit10>
     
    136136        <TopLine Value="1"/>
    137137        <CursorPos X="16" Y="17"/>
    138         <UsageCount Value="11"/>
     138        <UsageCount Value="10"/>
    139139      </Unit10>
    140140      <Unit11>
     
    144144        <TopLine Value="1"/>
    145145        <CursorPos X="24" Y="21"/>
    146         <UsageCount Value="11"/>
     146        <UsageCount Value="10"/>
    147147      </Unit11>
    148148      <Unit12>
     
    151151        <TopLine Value="161"/>
    152152        <CursorPos X="15" Y="187"/>
    153         <UsageCount Value="11"/>
     153        <UsageCount Value="10"/>
    154154        <DefaultSyntaxHighlighter Value="None"/>
    155155      </Unit12>
     
    159159        <TopLine Value="1"/>
    160160        <CursorPos X="3" Y="7"/>
    161         <UsageCount Value="11"/>
     161        <UsageCount Value="10"/>
    162162        <DefaultSyntaxHighlighter Value="None"/>
    163163      </Unit13>
     
    167167        <TopLine Value="1"/>
    168168        <CursorPos X="53" Y="4"/>
    169         <UsageCount Value="11"/>
     169        <UsageCount Value="10"/>
    170170        <DefaultSyntaxHighlighter Value="None"/>
    171171      </Unit14>
     
    176176        <TopLine Value="21"/>
    177177        <CursorPos X="14" Y="36"/>
    178         <UsageCount Value="10"/>
     178        <UsageCount Value="9"/>
    179179        <DefaultSyntaxHighlighter Value="Delphi"/>
    180180      </Unit15>
     
    184184        <TopLine Value="254"/>
    185185        <CursorPos X="27" Y="265"/>
    186         <UsageCount Value="10"/>
     186        <UsageCount Value="9"/>
    187187        <DefaultSyntaxHighlighter Value="Delphi"/>
    188188      </Unit16>
     
    192192        <TopLine Value="526"/>
    193193        <CursorPos X="1" Y="528"/>
    194         <UsageCount Value="10"/>
     194        <UsageCount Value="9"/>
    195195        <DefaultSyntaxHighlighter Value="Delphi"/>
    196196      </Unit17>
     
    201201        <TopLine Value="2015"/>
    202202        <CursorPos X="20" Y="2048"/>
    203         <UsageCount Value="10"/>
     203        <UsageCount Value="9"/>
    204204      </Unit18>
    205205      <Unit19>
    206206        <Filename Value="../Specialized/ListDouble.pas"/>
    207207        <UnitName Value="ListDouble"/>
    208         <EditorIndex Value="8"/>
     208        <EditorIndex Value="13"/>
    209209        <WindowIndex Value="0"/>
    210210        <TopLine Value="1"/>
    211211        <CursorPos X="12" Y="21"/>
    212         <UsageCount Value="18"/>
     212        <UsageCount Value="23"/>
    213213        <Loaded Value="True"/>
    214214      </Unit19>
     
    216216        <Filename Value="../Specialized/ListInteger.pas"/>
    217217        <UnitName Value="ListInteger"/>
    218         <EditorIndex Value="9"/>
    219         <WindowIndex Value="0"/>
    220         <TopLine Value="1"/>
    221         <CursorPos X="23" Y="21"/>
    222         <UsageCount Value="18"/>
     218        <EditorIndex Value="14"/>
     219        <WindowIndex Value="0"/>
     220        <TopLine Value="1"/>
     221        <CursorPos X="25" Y="17"/>
     222        <UsageCount Value="23"/>
    223223        <Loaded Value="True"/>
    224224      </Unit20>
     
    226226        <Filename Value="../Specialized/ListObject.pas"/>
    227227        <UnitName Value="ListObject"/>
    228         <EditorIndex Value="10"/>
     228        <EditorIndex Value="16"/>
    229229        <WindowIndex Value="0"/>
    230230        <TopLine Value="2"/>
    231231        <CursorPos X="1" Y="33"/>
    232         <UsageCount Value="18"/>
     232        <UsageCount Value="23"/>
    233233        <Loaded Value="True"/>
    234234      </Unit21>
     
    236236        <Filename Value="../Specialized/ListPointer.pas"/>
    237237        <UnitName Value="ListPointer"/>
    238         <EditorIndex Value="11"/>
     238        <EditorIndex Value="17"/>
    239239        <WindowIndex Value="0"/>
    240240        <TopLine Value="1"/>
    241241        <CursorPos X="23" Y="21"/>
    242         <UsageCount Value="18"/>
     242        <UsageCount Value="23"/>
    243243        <Loaded Value="True"/>
    244244      </Unit22>
     
    246246        <Filename Value="../Specialized/TreeString.pas"/>
    247247        <UnitName Value="TreeString"/>
    248         <EditorIndex Value="12"/>
     248        <EditorIndex Value="18"/>
    249249        <WindowIndex Value="0"/>
    250250        <TopLine Value="1"/>
    251251        <CursorPos X="23" Y="24"/>
    252         <UsageCount Value="18"/>
     252        <UsageCount Value="23"/>
    253253        <Loaded Value="True"/>
    254254      </Unit23>
     
    256256        <Filename Value="../Specialized/TreePointer.pas"/>
    257257        <UnitName Value="TreePointer"/>
    258         <EditorIndex Value="13"/>
     258        <EditorIndex Value="19"/>
    259259        <WindowIndex Value="0"/>
    260260        <TopLine Value="1"/>
    261261        <CursorPos X="23" Y="13"/>
    262         <UsageCount Value="18"/>
     262        <UsageCount Value="23"/>
    263263        <Loaded Value="True"/>
    264264      </Unit24>
     
    266266        <Filename Value="../Specialized/TreeObject.pas"/>
    267267        <UnitName Value="TreeObject"/>
    268         <EditorIndex Value="14"/>
     268        <EditorIndex Value="20"/>
    269269        <WindowIndex Value="0"/>
    270270        <TopLine Value="1"/>
    271271        <CursorPos X="23" Y="24"/>
    272         <UsageCount Value="18"/>
     272        <UsageCount Value="23"/>
    273273        <Loaded Value="True"/>
    274274      </Unit25>
     
    276276        <Filename Value="../Specialized/TreeInteger.pas"/>
    277277        <UnitName Value="TreeInteger"/>
    278         <EditorIndex Value="15"/>
     278        <EditorIndex Value="21"/>
    279279        <WindowIndex Value="0"/>
    280280        <TopLine Value="1"/>
    281281        <CursorPos X="1" Y="27"/>
    282         <UsageCount Value="18"/>
     282        <UsageCount Value="23"/>
    283283        <Loaded Value="True"/>
    284284      </Unit26>
     
    286286        <Filename Value="../Specialized/ListString.pas"/>
    287287        <UnitName Value="ListString"/>
    288         <EditorIndex Value="24"/>
     288        <EditorIndex Value="30"/>
    289289        <WindowIndex Value="0"/>
    290290        <TopLine Value="1"/>
    291291        <CursorPos X="29" Y="17"/>
    292         <UsageCount Value="18"/>
     292        <UsageCount Value="23"/>
    293293        <Loaded Value="True"/>
    294294      </Unit27>
    295295      <Unit28>
    296296        <Filename Value="../Generic/TreeImplementation.tpl"/>
    297         <EditorIndex Value="16"/>
     297        <EditorIndex Value="22"/>
    298298        <WindowIndex Value="0"/>
    299299        <TopLine Value="1"/>
    300300        <CursorPos X="1" Y="2"/>
    301         <UsageCount Value="18"/>
     301        <UsageCount Value="23"/>
    302302        <Loaded Value="True"/>
    303303        <DefaultSyntaxHighlighter Value="None"/>
     
    305305      <Unit29>
    306306        <Filename Value="../Generic/TreeInterface.tpl"/>
    307         <EditorIndex Value="23"/>
    308         <WindowIndex Value="0"/>
    309         <TopLine Value="1"/>
    310         <CursorPos X="40" Y="11"/>
    311         <UsageCount Value="18"/>
     307        <EditorIndex Value="29"/>
     308        <WindowIndex Value="0"/>
     309        <TopLine Value="1"/>
     310        <CursorPos X="20" Y="12"/>
     311        <UsageCount Value="23"/>
    312312        <Loaded Value="True"/>
    313313        <DefaultSyntaxHighlighter Value="None"/>
     
    315315      <Unit30>
    316316        <Filename Value="../Generic/ListInterface.tpl"/>
    317         <EditorIndex Value="25"/>
    318         <WindowIndex Value="0"/>
    319         <TopLine Value="22"/>
    320         <CursorPos X="14" Y="35"/>
    321         <UsageCount Value="18"/>
     317        <EditorIndex Value="31"/>
     318        <WindowIndex Value="0"/>
     319        <TopLine Value="1"/>
     320        <CursorPos X="38" Y="19"/>
     321        <UsageCount Value="23"/>
    322322        <Loaded Value="True"/>
    323323        <DefaultSyntaxHighlighter Value="None"/>
     
    325325      <Unit31>
    326326        <Filename Value="../Generic/ListImplementation.tpl"/>
    327         <EditorIndex Value="27"/>
    328         <WindowIndex Value="0"/>
    329         <TopLine Value="111"/>
    330         <CursorPos X="3" Y="113"/>
    331         <UsageCount Value="18"/>
     327        <IsVisibleTab Value="True"/>
     328        <EditorIndex Value="33"/>
     329        <WindowIndex Value="0"/>
     330        <TopLine Value="128"/>
     331        <CursorPos X="69" Y="151"/>
     332        <UsageCount Value="23"/>
    332333        <Loaded Value="True"/>
    333334        <DefaultSyntaxHighlighter Value="None"/>
     
    335336      <Unit32>
    336337        <Filename Value="../Generic/DictionaryImplementation.tpl"/>
    337         <EditorIndex Value="17"/>
     338        <EditorIndex Value="23"/>
    338339        <WindowIndex Value="0"/>
    339340        <TopLine Value="23"/>
    340341        <CursorPos X="1" Y="2"/>
    341         <UsageCount Value="18"/>
     342        <UsageCount Value="23"/>
    342343        <Loaded Value="True"/>
    343344        <DefaultSyntaxHighlighter Value="None"/>
     
    345346      <Unit33>
    346347        <Filename Value="../Generic/DictionaryInterface.tpl"/>
    347         <EditorIndex Value="21"/>
     348        <EditorIndex Value="27"/>
    348349        <WindowIndex Value="0"/>
    349350        <TopLine Value="1"/>
    350351        <CursorPos X="1" Y="9"/>
    351         <UsageCount Value="18"/>
     352        <UsageCount Value="23"/>
    352353        <Loaded Value="True"/>
    353354        <DefaultSyntaxHighlighter Value="None"/>
     
    356357        <Filename Value="../Specialized/DictionaryString.pas"/>
    357358        <UnitName Value="DictionaryString"/>
    358         <EditorIndex Value="22"/>
     359        <EditorIndex Value="28"/>
    359360        <WindowIndex Value="0"/>
    360361        <TopLine Value="1"/>
    361362        <CursorPos X="32" Y="18"/>
    362         <UsageCount Value="18"/>
     363        <UsageCount Value="23"/>
    363364        <Loaded Value="True"/>
    364365      </Unit34>
    365366      <Unit35>
    366367        <Filename Value="../Generic/StackInterface.tpl"/>
    367         <EditorIndex Value="18"/>
     368        <EditorIndex Value="24"/>
    368369        <WindowIndex Value="0"/>
    369370        <TopLine Value="1"/>
    370371        <CursorPos X="42" Y="15"/>
    371         <UsageCount Value="16"/>
     372        <UsageCount Value="21"/>
    372373        <Loaded Value="True"/>
    373374        <DefaultSyntaxHighlighter Value="None"/>
     
    376377        <Filename Value="../Specialized/StackString.pas"/>
    377378        <UnitName Value="StackString"/>
    378         <EditorIndex Value="19"/>
     379        <EditorIndex Value="25"/>
    379380        <WindowIndex Value="0"/>
    380381        <TopLine Value="1"/>
    381382        <CursorPos X="1" Y="22"/>
    382         <UsageCount Value="16"/>
     383        <UsageCount Value="21"/>
    383384        <Loaded Value="True"/>
    384385      </Unit36>
    385386      <Unit37>
    386387        <Filename Value="../Generic/StackImplementation.tpl"/>
    387         <EditorIndex Value="20"/>
     388        <EditorIndex Value="26"/>
    388389        <WindowIndex Value="0"/>
    389390        <TopLine Value="1"/>
    390391        <CursorPos X="32" Y="12"/>
    391         <UsageCount Value="16"/>
     392        <UsageCount Value="21"/>
    392393        <Loaded Value="True"/>
    393394        <DefaultSyntaxHighlighter Value="None"/>
     
    395396      <Unit38>
    396397        <Filename Value="../Generic/QueueImplementation.tpl"/>
    397         <EditorIndex Value="28"/>
     398        <EditorIndex Value="37"/>
    398399        <WindowIndex Value="0"/>
    399400        <TopLine Value="1"/>
    400401        <CursorPos X="33" Y="28"/>
    401         <UsageCount Value="16"/>
     402        <UsageCount Value="21"/>
    402403        <Loaded Value="True"/>
    403404        <DefaultSyntaxHighlighter Value="None"/>
     
    405406      <Unit39>
    406407        <Filename Value="../Generic/QueueInterface.tpl"/>
    407         <EditorIndex Value="29"/>
     408        <EditorIndex Value="38"/>
    408409        <WindowIndex Value="0"/>
    409410        <TopLine Value="1"/>
    410411        <CursorPos X="18" Y="14"/>
    411         <UsageCount Value="16"/>
     412        <UsageCount Value="21"/>
    412413        <Loaded Value="True"/>
    413414        <DefaultSyntaxHighlighter Value="None"/>
     
    418419        <TopLine Value="60"/>
    419420        <CursorPos X="10" Y="77"/>
    420         <UsageCount Value="14"/>
     421        <UsageCount Value="13"/>
    421422        <DefaultSyntaxHighlighter Value="Delphi"/>
    422423      </Unit40>
     
    426427        <TopLine Value="89"/>
    427428        <CursorPos X="62" Y="98"/>
    428         <UsageCount Value="11"/>
     429        <UsageCount Value="10"/>
    429430        <DefaultSyntaxHighlighter Value="Delphi"/>
    430431      </Unit41>
     
    432433        <Filename Value="../Specialized/ListChar.pas"/>
    433434        <UnitName Value="ListChar"/>
    434         <EditorIndex Value="26"/>
     435        <EditorIndex Value="32"/>
    435436        <WindowIndex Value="0"/>
    436437        <TopLine Value="49"/>
    437438        <CursorPos X="24" Y="60"/>
    438         <UsageCount Value="15"/>
     439        <UsageCount Value="20"/>
    439440        <Loaded Value="True"/>
    440441      </Unit42>
     
    445446        <TopLine Value="1"/>
    446447        <CursorPos X="15" Y="8"/>
    447         <UsageCount Value="11"/>
     448        <UsageCount Value="10"/>
    448449        <DefaultSyntaxHighlighter Value="Delphi"/>
    449450      </Unit43>
     
    453454        <TopLine Value="747"/>
    454455        <CursorPos X="11" Y="764"/>
    455         <UsageCount Value="11"/>
     456        <UsageCount Value="10"/>
    456457        <DefaultSyntaxHighlighter Value="Delphi"/>
    457458      </Unit44>
     
    461462        <TopLine Value="3"/>
    462463        <CursorPos X="10" Y="21"/>
    463         <UsageCount Value="10"/>
     464        <UsageCount Value="9"/>
    464465        <DefaultSyntaxHighlighter Value="Delphi"/>
    465466      </Unit45>
     
    469470        <TopLine Value="21"/>
    470471        <CursorPos X="5" Y="25"/>
    471         <UsageCount Value="10"/>
     472        <UsageCount Value="9"/>
    472473        <DefaultSyntaxHighlighter Value="Delphi"/>
    473474      </Unit46>
     
    475476        <Filename Value="StopWatch.pas"/>
    476477        <UnitName Value="StopWatch"/>
    477         <EditorIndex Value="7"/>
    478478        <WindowIndex Value="0"/>
    479479        <TopLine Value="12"/>
    480480        <CursorPos X="67" Y="25"/>
    481         <UsageCount Value="11"/>
    482         <Loaded Value="True"/>
     481        <UsageCount Value="10"/>
    483482        <DefaultSyntaxHighlighter Value="Delphi"/>
    484483      </Unit47>
    485484      <Unit48>
    486485        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    487         <EditorIndex Value="5"/>
    488         <WindowIndex Value="0"/>
    489         <TopLine Value="203"/>
    490         <CursorPos X="15" Y="216"/>
    491         <UsageCount Value="11"/>
     486        <EditorIndex Value="10"/>
     487        <WindowIndex Value="0"/>
     488        <TopLine Value="871"/>
     489        <CursorPos X="35" Y="884"/>
     490        <UsageCount Value="16"/>
    492491        <Loaded Value="True"/>
    493492      </Unit48>
    494493      <Unit49>
    495494        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/lists.inc"/>
    496         <EditorIndex Value="6"/>
     495        <EditorIndex Value="12"/>
    497496        <WindowIndex Value="0"/>
    498497        <TopLine Value="694"/>
    499498        <CursorPos X="12" Y="696"/>
    500         <UsageCount Value="11"/>
     499        <UsageCount Value="16"/>
    501500        <Loaded Value="True"/>
    502501      </Unit49>
     
    506505        <WindowIndex Value="0"/>
    507506        <TopLine Value="1"/>
    508         <CursorPos X="4" Y="12"/>
    509         <UsageCount Value="10"/>
     507        <CursorPos X="1" Y="14"/>
     508        <UsageCount Value="15"/>
    510509        <Loaded Value="True"/>
    511510        <DefaultSyntaxHighlighter Value="None"/>
     
    514513        <Filename Value="../Specialized/SetChar.pas"/>
    515514        <UnitName Value="SetChar"/>
    516         <IsVisibleTab Value="True"/>
    517515        <EditorIndex Value="3"/>
    518516        <WindowIndex Value="0"/>
    519         <TopLine Value="17"/>
    520         <CursorPos X="14" Y="39"/>
    521         <UsageCount Value="10"/>
     517        <TopLine Value="1"/>
     518        <CursorPos X="1" Y="25"/>
     519        <UsageCount Value="15"/>
    522520        <Loaded Value="True"/>
    523521      </Unit51>
     
    527525        <WindowIndex Value="0"/>
    528526        <TopLine Value="1"/>
    529         <CursorPos X="1" Y="1"/>
    530         <UsageCount Value="10"/>
     527        <CursorPos X="27" Y="15"/>
     528        <UsageCount Value="15"/>
    531529        <Loaded Value="True"/>
    532530        <DefaultSyntaxHighlighter Value="None"/>
    533531      </Unit52>
     532      <Unit53>
     533        <Filename Value="../Generic/RangeInterface.tpl"/>
     534        <EditorIndex Value="5"/>
     535        <WindowIndex Value="0"/>
     536        <TopLine Value="1"/>
     537        <CursorPos X="23" Y="10"/>
     538        <UsageCount Value="15"/>
     539        <Loaded Value="True"/>
     540        <DefaultSyntaxHighlighter Value="None"/>
     541      </Unit53>
     542      <Unit54>
     543        <Filename Value="../Specialized/RangeDateTime.pas"/>
     544        <UnitName Value="RangeDateTime"/>
     545        <EditorIndex Value="6"/>
     546        <WindowIndex Value="0"/>
     547        <TopLine Value="1"/>
     548        <CursorPos X="14" Y="15"/>
     549        <UsageCount Value="15"/>
     550        <Loaded Value="True"/>
     551      </Unit54>
     552      <Unit55>
     553        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/inc/systemh.inc"/>
     554        <EditorIndex Value="9"/>
     555        <WindowIndex Value="0"/>
     556        <TopLine Value="520"/>
     557        <CursorPos X="11" Y="533"/>
     558        <UsageCount Value="15"/>
     559        <Loaded Value="True"/>
     560      </Unit55>
     561      <Unit56>
     562        <Filename Value="../Generic/RangeImplementation.tpl"/>
     563        <EditorIndex Value="7"/>
     564        <WindowIndex Value="0"/>
     565        <TopLine Value="1"/>
     566        <CursorPos X="14" Y="18"/>
     567        <UsageCount Value="15"/>
     568        <Loaded Value="True"/>
     569        <DefaultSyntaxHighlighter Value="None"/>
     570      </Unit56>
     571      <Unit57>
     572        <Filename Value="../Specialized/ListVariant.pas"/>
     573        <UnitName Value="ListVariant"/>
     574        <EditorIndex Value="4"/>
     575        <WindowIndex Value="0"/>
     576        <TopLine Value="2"/>
     577        <CursorPos X="30" Y="8"/>
     578        <UsageCount Value="15"/>
     579        <Loaded Value="True"/>
     580      </Unit57>
     581      <Unit58>
     582        <Filename Value="../ReadMe.txt"/>
     583        <EditorIndex Value="36"/>
     584        <WindowIndex Value="0"/>
     585        <TopLine Value="1"/>
     586        <CursorPos X="24" Y="7"/>
     587        <UsageCount Value="14"/>
     588        <Loaded Value="True"/>
     589        <DefaultSyntaxHighlighter Value="None"/>
     590      </Unit58>
     591      <Unit59>
     592        <Filename Value="../Specialized/ListByte.pas"/>
     593        <UnitName Value="ListByte"/>
     594        <EditorIndex Value="15"/>
     595        <WindowIndex Value="0"/>
     596        <TopLine Value="1"/>
     597        <CursorPos X="19" Y="15"/>
     598        <UsageCount Value="14"/>
     599        <Loaded Value="True"/>
     600      </Unit59>
     601      <Unit60>
     602        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/sysutils/sysstrh.inc"/>
     603        <EditorIndex Value="34"/>
     604        <WindowIndex Value="0"/>
     605        <TopLine Value="70"/>
     606        <CursorPos X="10" Y="84"/>
     607        <UsageCount Value="10"/>
     608        <Loaded Value="True"/>
     609      </Unit60>
     610      <Unit61>
     611        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/sysutils/sysstr.inc"/>
     612        <EditorIndex Value="35"/>
     613        <WindowIndex Value="0"/>
     614        <TopLine Value="162"/>
     615        <CursorPos X="3" Y="168"/>
     616        <UsageCount Value="10"/>
     617        <Loaded Value="True"/>
     618      </Unit61>
     619      <Unit62>
     620        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/streams.inc"/>
     621        <EditorIndex Value="11"/>
     622        <WindowIndex Value="0"/>
     623        <TopLine Value="518"/>
     624        <CursorPos X="3" Y="521"/>
     625        <UsageCount Value="10"/>
     626        <Loaded Value="True"/>
     627      </Unit62>
     628      <Unit63>
     629        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/inc/generic.inc"/>
     630        <WindowIndex Value="0"/>
     631        <TopLine Value="100"/>
     632        <CursorPos X="25" Y="341"/>
     633        <UsageCount Value="10"/>
     634      </Unit63>
     635      <Unit64>
     636        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/i386/i386.inc"/>
     637        <WindowIndex Value="0"/>
     638        <TopLine Value="1536"/>
     639        <CursorPos X="11" Y="1549"/>
     640        <UsageCount Value="10"/>
     641      </Unit64>
     642      <Unit65>
     643        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/inc/sstrings.inc"/>
     644        <WindowIndex Value="0"/>
     645        <TopLine Value="291"/>
     646        <CursorPos X="3" Y="295"/>
     647        <UsageCount Value="10"/>
     648      </Unit65>
    534649    </Units>
    535     <JumpHistory Count="28" HistoryIndex="27">
     650    <JumpHistory Count="30" HistoryIndex="28">
    536651      <Position1>
    537         <Filename Value="UMainForm.pas"/>
    538         <Caret Line="34" Column="1" TopLine="21"/>
     652        <Filename Value="../Generic/RangeInterface.tpl"/>
     653        <Caret Line="7" Column="45" TopLine="1"/>
    539654      </Position1>
    540655      <Position2>
    541         <Filename Value="UMainForm.pas"/>
    542         <Caret Line="48" Column="1" TopLine="35"/>
     656        <Filename Value="../Generic/RangeInterface.tpl"/>
     657        <Caret Line="10" Column="43" TopLine="1"/>
    543658      </Position2>
    544659      <Position3>
    545         <Filename Value="UMainForm.pas"/>
    546         <Caret Line="185" Column="18" TopLine="161"/>
     660        <Filename Value="../Generic/RangeImplementation.tpl"/>
     661        <Caret Line="5" Column="21" TopLine="1"/>
    547662      </Position3>
    548663      <Position4>
    549         <Filename Value="UMainForm.pas"/>
    550         <Caret Line="199" Column="17" TopLine="175"/>
     664        <Filename Value="../Generic/ListImplementation.tpl"/>
     665        <Caret Line="113" Column="3" TopLine="111"/>
    551666      </Position4>
    552667      <Position5>
    553         <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    554         <Caret Line="261" Column="16" TopLine="251"/>
     668        <Filename Value="../Generic/ListInterface.tpl"/>
     669        <Caret Line="29" Column="30" TopLine="4"/>
    555670      </Position5>
    556671      <Position6>
    557         <Filename Value="../Generic/ListImplementation.tpl"/>
    558         <Caret Line="178" Column="9" TopLine="167"/>
     672        <Filename Value="../Generic/ListInterface.tpl"/>
     673        <Caret Line="30" Column="23" TopLine="3"/>
    559674      </Position6>
    560675      <Position7>
    561         <Filename Value="UMainForm.pas"/>
    562         <Caret Line="216" Column="12" TopLine="196"/>
     676        <Filename Value="../Generic/ListImplementation.tpl"/>
     677        <Caret Line="272" Column="11" TopLine="266"/>
    563678      </Position7>
    564679      <Position8>
    565         <Filename Value="UMainForm.pas"/>
    566         <Caret Line="191" Column="15" TopLine="187"/>
     680        <Filename Value="../Generic/ListImplementation.tpl"/>
     681        <Caret Line="280" Column="13" TopLine="277"/>
    567682      </Position8>
    568683      <Position9>
    569         <Filename Value="UMainForm.pas"/>
    570         <Caret Line="223" Column="15" TopLine="208"/>
     684        <Filename Value="../Generic/ListImplementation.tpl"/>
     685        <Caret Line="87" Column="10" TopLine="78"/>
    571686      </Position9>
    572687      <Position10>
    573         <Filename Value="UMainForm.pas"/>
    574         <Caret Line="191" Column="15" TopLine="184"/>
     688        <Filename Value="../Generic/ListInterface.tpl"/>
     689        <Caret Line="22" Column="59" TopLine="8"/>
    575690      </Position10>
    576691      <Position11>
    577         <Filename Value="../Generic/ListImplementation.tpl"/>
    578         <Caret Line="166" Column="11" TopLine="156"/>
     692        <Filename Value="../Specialized/ListByte.pas"/>
     693        <Caret Line="11" Column="23" TopLine="1"/>
    579694      </Position11>
    580695      <Position12>
    581         <Filename Value="../Generic/ListImplementation.tpl"/>
    582         <Caret Line="171" Column="12" TopLine="156"/>
     696        <Filename Value="../Specialized/ListByte.pas"/>
     697        <Caret Line="13" Column="35" TopLine="1"/>
    583698      </Position12>
    584699      <Position13>
    585700        <Filename Value="../Generic/ListImplementation.tpl"/>
    586         <Caret Line="160" Column="1" TopLine="155"/>
     701        <Caret Line="251" Column="9" TopLine="247"/>
    587702      </Position13>
    588703      <Position14>
    589704        <Filename Value="../Generic/ListImplementation.tpl"/>
    590         <Caret Line="162" Column="1" TopLine="155"/>
     705        <Caret Line="259" Column="30" TopLine="259"/>
    591706      </Position14>
    592707      <Position15>
    593708        <Filename Value="../Generic/ListImplementation.tpl"/>
    594         <Caret Line="164" Column="1" TopLine="155"/>
     709        <Caret Line="265" Column="21" TopLine="259"/>
    595710      </Position15>
    596711      <Position16>
    597         <Filename Value="../Generic/ListImplementation.tpl"/>
    598         <Caret Line="165" Column="1" TopLine="155"/>
     712        <Filename Value="../Generic/ListInterface.tpl"/>
     713        <Caret Line="33" Column="34" TopLine="28"/>
    599714      </Position16>
    600715      <Position17>
    601716        <Filename Value="../Generic/ListImplementation.tpl"/>
    602         <Caret Line="166" Column="1" TopLine="155"/>
     717        <Caret Line="4" Column="34" TopLine="1"/>
    603718      </Position17>
    604719      <Position18>
    605720        <Filename Value="../Generic/ListImplementation.tpl"/>
    606         <Caret Line="167" Column="1" TopLine="155"/>
     721        <Caret Line="202" Column="28" TopLine="194"/>
    607722      </Position18>
    608723      <Position19>
    609         <Filename Value="UMainForm.pas"/>
    610         <Caret Line="193" Column="11" TopLine="163"/>
     724        <Filename Value="../Generic/ListImplementation.tpl"/>
     725        <Caret Line="4" Column="73" TopLine="1"/>
    611726      </Position19>
    612727      <Position20>
    613728        <Filename Value="../Generic/ListImplementation.tpl"/>
    614         <Caret Line="166" Column="12" TopLine="155"/>
     729        <Caret Line="1" Column="23" TopLine="1"/>
    615730      </Position20>
    616731      <Position21>
    617         <Filename Value="Demo.lpr"/>
    618         <Caret Line="1" Column="1" TopLine="1"/>
     732        <Filename Value="../Generic/ListImplementation.tpl"/>
     733        <Caret Line="115" Column="17" TopLine="101"/>
    619734      </Position21>
    620735      <Position22>
    621         <Filename Value="Demo.lpr"/>
    622         <Caret Line="18" Column="9" TopLine="1"/>
     736        <Filename Value="../Generic/ListImplementation.tpl"/>
     737        <Caret Line="210" Column="20" TopLine="196"/>
    623738      </Position22>
    624739      <Position23>
    625         <Filename Value="../Generic/StackInterface.tpl"/>
    626         <Caret Line="14" Column="35" TopLine="1"/>
     740        <Filename Value="../Generic/ListImplementation.tpl"/>
     741        <Caret Line="5" Column="59" TopLine="1"/>
    627742      </Position23>
    628743      <Position24>
    629         <Filename Value="../Generic/StackImplementation.tpl"/>
    630         <Caret Line="12" Column="19" TopLine="1"/>
     744        <Filename Value="../Specialized/ListByte.pas"/>
     745        <Caret Line="20" Column="16" TopLine="1"/>
    631746      </Position24>
    632747      <Position25>
    633         <Filename Value="../Generic/QueueImplementation.tpl"/>
    634         <Caret Line="27" Column="1" TopLine="1"/>
     748        <Filename Value="../Generic/ListImplementation.tpl"/>
     749        <Caret Line="11" Column="18" TopLine="1"/>
    635750      </Position25>
    636751      <Position26>
    637         <Filename Value="UMainForm.pas"/>
    638         <Caret Line="250" Column="3" TopLine="225"/>
     752        <Filename Value="../Generic/ListInterface.tpl"/>
     753        <Caret Line="40" Column="37" TopLine="32"/>
    639754      </Position26>
    640755      <Position27>
    641         <Filename Value="../Specialized/SetChar.pas"/>
    642         <Caret Line="1" Column="1" TopLine="1"/>
     756        <Filename Value="../Generic/ListInterface.tpl"/>
     757        <Caret Line="51" Column="61" TopLine="26"/>
    643758      </Position27>
    644759      <Position28>
    645         <Filename Value="../Specialized/SetChar.pas"/>
    646         <Caret Line="2" Column="1" TopLine="4"/>
     760        <Filename Value="../Generic/ListImplementation.tpl"/>
     761        <Caret Line="151" Column="60" TopLine="139"/>
    647762      </Position28>
     763      <Position29>
     764        <Filename Value="../Generic/ListImplementation.tpl"/>
     765        <Caret Line="142" Column="39" TopLine="128"/>
     766      </Position29>
     767      <Position30>
     768        <Filename Value="../Generic/ListInterface.tpl"/>
     769        <Caret Line="19" Column="38" TopLine="1"/>
     770      </Position30>
    648771    </JumpHistory>
    649772  </ProjectOptions>
  • Generics/TemplateGenerics/Generic/ListImplementation.tpl

    r76 r77  
    109109end;
    110110
    111 function TGList.IndexOf(Item: TListItem): TListIndex;
    112 begin
    113   Result := 0;
     111function TGList.IndexOf(Item: TListItem; Start: TListIndex): TListIndex;
     112begin
     113  Result := Start;
    114114  while (Result < FCount) and
    115115  not CompareMem(Addr(FItems[Result]), Addr(Item), SizeOf(TListItem)) do
     
    138138    I := I + 1;
    139139  end;
     140end;
     141
     142function TGList.IndexOfList(List: TGList; Start: TListIndex): TListIndex;
     143var
     144  I: TListIndex;
     145begin
     146  if List.Count > 0 then begin
     147    Result := IndexOf(List[0], Start);
     148    if Result <> -1 then begin
     149      I := 1;
     150      while I < List.Count do begin
     151        if not CompareMem(Addr(FItems[Result + I]), Addr(List.FItems[I]), SizeOf(TListItem)) then begin
     152          Result := -1;
     153          Break;
     154        end;
     155        I := I + 1;
     156      end;
     157    end;
     158  end else Result := -1;
    140159end;
    141160
     
    200219end;
    201220
    202 (*function TGList.Equals(Obj: TObject): Boolean;
    203 var
    204   I: TListIndex;
    205 begin
    206   Result := Count = (Obj as TGList).Count;
     221function TGList.Equals(List: TGList): Boolean;
     222var
     223  I: TListIndex;
     224begin
     225  Result := Count = List.Count;
    207226  if Result then begin
    208227    I := 0;
    209228    while I < Count do begin
    210       if Items[I] <> (Obj as TGList)[I] then begin
     229      if not CompareMem(Addr(FItems[I]), Addr(List.FItems[I]), SizeOf(TListItem)) then begin
    211230        Result := False;
    212231        Break;
     
    215234    end;
    216235  end;
    217 end;*)
     236end;
    218237
    219238procedure TGList.Reverse;
     
    241260  while I <= High(Values) do begin
    242261    Add(Values[I]);
     262    I := I + 1;
     263  end;
     264end;
     265
     266procedure TGList.SetArray(Values: array of TListItem);
     267var
     268  I: TListIndex;
     269begin
     270  Clear;
     271  I := 0;
     272  while I <= High(Values) do begin
     273    Add(Values[I]);
     274    I := I + 1;
     275  end;
     276end;
     277
     278procedure TGList.InsertArray(Index: TListIndex; Values: array of TListItem);
     279var
     280  I: TListIndex;
     281begin
     282  I := 0;
     283  while I <= High(Values) do begin
     284    Insert(Index + I, Values[I]);
    243285    I := I + 1;
    244286  end;
     
    255297    if I < (Count - 1) then
    256298      Result := Result + Separator;
     299    I := I + 1;
     300  end;
     301end;
     302
     303procedure TGList.Perform(Operation: TGListOperation);
     304var
     305  I: TListIndex;
     306begin
     307  I := 0;
     308  while I < Count do begin
     309    Operation(Self, @FItems[I]);
    257310    I := I + 1;
    258311  end;
     
    309362end;
    310363
     364procedure TGList.Fill(Start, Count: TListIndex; Value: TListItem);
     365begin
     366  while Count > 0 do begin
     367    Items[Start] := Value;
     368    Count := Count - 1;
     369    Start := Start + 1;
     370  end;
     371end;
     372
    311373procedure TGList.Exchange(Index1, Index2: TListIndex);
    312374var
  • Generics/TemplateGenerics/Generic/ListInterface.tpl

    r74 r77  
     1
     2  PGListItem = ^TListItem;
     3  TGList = class;
    14
    25  TGListSortCompare = function(const Item1, Item2: TListItem): Integer of object;
    36  TGListStringConverter = function(Item: TListItem): string;
     7  TGListOperation = procedure(List: TGList; Item: PGListItem);
    48  //TGListNotification = (lnAdded, lnExtracted, lnDeleted);
    59
     
    1620    procedure SetCount(const AValue: TListIndex);
    1721    procedure QuickSort(L, R : TListIndex; Compare: TGListSortCompare);
    18     property Capacity: TListIndex read GetCapacity write SetCapacity;
    1922  public
    2023    // All items
     
    2427    procedure Sort(Compare: TGListSortCompare);
    2528    function Implode(Separator: string; Converter: TGListStringConverter): string;
     29    procedure Perform(Operation: TGListOperation);
    2630    // Many items
    2731    procedure MoveItems(CurIndex, NewIndex, Count: TListIndex);
    2832    procedure DeleteItems(Index, Count: TListIndex);
     33    procedure Fill(Start, Count: TListIndex; Value: TListItem);
    2934    // One item
    3035    function Add(Item: TListItem): TListIndex;
     
    3338    procedure Exchange(Index1, Index2: TListIndex);
    3439    function First: TListItem;
    35     function IndexOf(Item: TListItem): TListIndex;
     40    function IndexOf(Item: TListItem; Start: TListIndex = 0): TListIndex;
    3641    procedure Insert(Index: TListIndex; Item: TListItem);
    3742    function Last: TListItem;
     
    4247    procedure AddList(List: TGList);
    4348    procedure Assign(List: TGList);
    44     //function Equals(Obj: TObject): Boolean; override;
     49    function Equals(List: TGList): Boolean;
    4550    procedure InsertList(Index: TListIndex; List: TGList);
     51    function IndexOfList(List: TGList; Start: TListIndex = 0): TListIndex;
    4652    // Other
    4753    property Count: TListIndex read GetCount write SetCount;
    48     // Additional
     54    property Capacity: TListIndex read GetCapacity write SetCapacity;
     55    // Array
    4956    procedure AddArray(Values: array of TListItem);
     57    procedure SetArray(Values: array of TListItem);
     58    procedure InsertArray(Index: TListIndex; Values: array of TListItem);
    5059  end;
  • Generics/TemplateGenerics/Generic/SetImplementation.tpl

    r76 r77  
    33{ TGSet }
    44
     5function TGSet.IsIn(Item: TSetItem): Boolean;
     6begin
     7  Result := FList.IndexOf(Item) <> -1;
     8end;
    59
     10constructor TGSet.Create;
     11begin
     12  FList := TGList.Create;
     13end;
    614
     15destructor TGSet.Destroy;
     16begin
     17  FList.Free;
     18  inherited Destroy;
     19end;
  • Generics/TemplateGenerics/ReadMe.txt

    r68 r77  
    22=================
    33
     4Tutorial and informatin:
     5  http://wiki.freepascal.org/Templates
    46
    5 Information sources:
    6 
    7 * Object Pascal (Delphi) Templates
    8     http://www.dummzeuch.de/delphi/object_pascal_templates/english.html
    9 
    10 * Templates in Object Pascal
    11     http://edn.embarcadero.com/article/27603
    12 
     7Author: Chronos
     8Email: robie@centrum.cz
  • Generics/TemplateGenerics/Specialized/ListChar.pas

    r74 r77  
    2424    procedure TrimRight;
    2525  end;
     26  // System.Pos -> TListChar.IndexOfList
    2627
    2728  TString = TListChar;
  • Generics/TemplateGenerics/Specialized/ListVariant.pas

    r76 r77  
    66
    77uses
    8   Classes, SysUtils;
     8  Classes, SysUtils, Variants;
    99
    1010type
  • Generics/TemplateGenerics/Specialized/SetChar.pas

    r76 r77  
    2424{$INCLUDE '..\Generic\SetImplementation.tpl'}
    2525
    26 
    27 function TGSet.IsIn(Item: TSetItem): Boolean;
    28 begin
    29   Result := FList.IndexOf(Item) <> -1;
    30 end;
    31 
    32 constructor TGSet.Create;
    33 begin
    34   FList := TGList.Create;
    35 end;
    36 
    37 destructor TGSet.Destroy;
    38 begin
    39   FList.Free;
    40   inherited Destroy;
    41 end;
    42 
    4326end.
  • Generics/TemplateGenerics/TemplateGenerics.lpk

    r76 r77  
    1717    </CompilerOptions>
    1818    <Version Minor="1"/>
    19     <Files Count="38">
     19    <Files Count="42">
    2020      <Item1>
    2121        <Filename Value="Generic\DictionaryImplementation.tpl"/>
     
    170170        <UnitName Value="SetChar"/>
    171171      </Item38>
     172      <Item39>
     173        <Filename Value="Specialized\RangeDateTime.pas"/>
     174        <UnitName Value="RangeDateTime"/>
     175      </Item39>
     176      <Item40>
     177        <Filename Value="Generic\RangeInterface.tpl"/>
     178        <Type Value="Text"/>
     179      </Item40>
     180      <Item41>
     181        <Filename Value="Generic\RangeImplementation.tpl"/>
     182        <Type Value="Text"/>
     183      </Item41>
     184      <Item42>
     185        <Filename Value="Specialized\ListByte.pas"/>
     186        <UnitName Value="ListByte"/>
     187      </Item42>
    172188    </Files>
    173189    <Type Value="RunAndDesignTime"/>
  • Generics/TemplateGenerics/TemplateGenerics.pas

    r76 r77  
    1212  StackInteger, StackObject, StackPointer, StackString, QueueDouble,
    1313  QueueInteger, QueueObject, QueuePointer, QueueString, ListChar, ListVariant,
    14   SetInteger, SetString, SetChar, LazarusPackageIntf;
     14  SetInteger, SetString, SetChar, RangeDateTime, ListByte, LazarusPackageIntf;
    1515
    1616implementation
Note: See TracChangeset for help on using the changeset viewer.