Changeset 90


Ignore:
Timestamp:
Sep 7, 2012, 6:45:53 AM (12 years ago)
Author:
chronos
Message:
  • Upraveno: Aktualizace balíčku TemplateGenerics na novější verzi. Se starou nešel projekt správně přeložit.
Location:
trunk
Files:
5 added
1 deleted
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/User/UModuleUser.pas

    r89 r90  
    1313
    1414  TModuleUser = class(TModule)
     15  public
    1516    constructor Create(Owner: TComponent); override;
    1617    destructor Destroy; override;
  • trunk/Packages/ModularSystem

    • Property svn:ignore set to
      lib
  • trunk/Packages/TemplateGenerics/Demo

    • Property svn:ignore set to
      heaptrclog.trc
  • trunk/Packages/TemplateGenerics/Demo/Demo.lpi

    r84 r90  
    3333      <Item1>
    3434        <PackageName Value="TemplateGenerics"/>
     35        <DefaultFilename Value="../TemplateGenerics.lpk" Prefer="True"/>
    3536      </Item1>
    3637      <Item2>
     
    3839      </Item2>
    3940    </RequiredPackages>
    40     <Units Count="66">
     41    <Units Count="75">
    4142      <Unit0>
    4243        <Filename Value="Demo.lpr"/>
     
    5758        <EditorIndex Value="0"/>
    5859        <WindowIndex Value="0"/>
    59         <TopLine Value="71"/>
    60         <CursorPos X="22" Y="90"/>
     60        <TopLine Value="640"/>
     61        <CursorPos X="20" Y="653"/>
    6162        <UsageCount Value="233"/>
    6263        <Bookmarks Count="1">
    63           <Item0 X="65" Y="233" ID="2"/>
     64          <Item0 X="65" Y="275" ID="2"/>
    6465        </Bookmarks>
    6566        <Loaded Value="True"/>
     
    7374        <TopLine Value="1"/>
    7475        <CursorPos X="1" Y="11"/>
    75         <UsageCount Value="4"/>
     76        <UsageCount Value="3"/>
    7677      </Unit2>
    7778      <Unit3>
    7879        <Filename Value="../Specialized/SpecializedList.pas"/>
    7980        <UnitName Value="SpecializedList"/>
    80         <EditorIndex Value="1"/>
     81        <EditorIndex Value="3"/>
    8182        <WindowIndex Value="0"/>
    8283        <TopLine Value="47"/>
    8384        <CursorPos X="20" Y="60"/>
    84         <UsageCount Value="10"/>
     85        <UsageCount Value="15"/>
    8586        <Loaded Value="True"/>
    8687      </Unit3>
     
    9192        <TopLine Value="33"/>
    9293        <CursorPos X="12" Y="56"/>
    93         <UsageCount Value="4"/>
     94        <UsageCount Value="3"/>
    9495      </Unit4>
    9596      <Unit5>
     
    99100        <TopLine Value="1"/>
    100101        <CursorPos X="23" Y="21"/>
    101         <UsageCount Value="4"/>
     102        <UsageCount Value="3"/>
    102103      </Unit5>
    103104      <Unit6>
     
    107108        <TopLine Value="1"/>
    108109        <CursorPos X="23" Y="24"/>
    109         <UsageCount Value="4"/>
     110        <UsageCount Value="3"/>
    110111      </Unit6>
    111112      <Unit7>
     
    115116        <TopLine Value="1"/>
    116117        <CursorPos X="23" Y="13"/>
    117         <UsageCount Value="4"/>
     118        <UsageCount Value="3"/>
    118119      </Unit7>
    119120      <Unit8>
     
    123124        <TopLine Value="1"/>
    124125        <CursorPos X="23" Y="24"/>
    125         <UsageCount Value="4"/>
     126        <UsageCount Value="3"/>
    126127      </Unit8>
    127128      <Unit9>
     
    131132        <TopLine Value="1"/>
    132133        <CursorPos X="31" Y="13"/>
    133         <UsageCount Value="4"/>
     134        <UsageCount Value="3"/>
    134135      </Unit9>
    135136      <Unit10>
     
    139140        <TopLine Value="1"/>
    140141        <CursorPos X="29" Y="17"/>
    141         <UsageCount Value="4"/>
     142        <UsageCount Value="3"/>
    142143      </Unit10>
    143144      <Unit11>
     
    146147        <TopLine Value="1"/>
    147148        <CursorPos X="1" Y="4"/>
    148         <UsageCount Value="4"/>
     149        <UsageCount Value="3"/>
    149150        <DefaultSyntaxHighlighter Value="None"/>
    150151      </Unit11>
     
    154155        <TopLine Value="1"/>
    155156        <CursorPos X="21" Y="6"/>
    156         <UsageCount Value="4"/>
     157        <UsageCount Value="3"/>
    157158        <DefaultSyntaxHighlighter Value="None"/>
    158159      </Unit12>
     
    162163        <TopLine Value="1"/>
    163164        <CursorPos X="1" Y="1"/>
    164         <UsageCount Value="4"/>
     165        <UsageCount Value="3"/>
    165166        <DefaultSyntaxHighlighter Value="None"/>
    166167      </Unit13>
     
    170171        <TopLine Value="1"/>
    171172        <CursorPos X="25" Y="13"/>
    172         <UsageCount Value="5"/>
     173        <UsageCount Value="4"/>
    173174        <DefaultSyntaxHighlighter Value="None"/>
    174175      </Unit14>
     
    178179        <TopLine Value="4"/>
    179180        <CursorPos X="3" Y="6"/>
    180         <UsageCount Value="4"/>
     181        <UsageCount Value="3"/>
    181182        <DefaultSyntaxHighlighter Value="None"/>
    182183      </Unit15>
     
    186187        <TopLine Value="1"/>
    187188        <CursorPos X="14" Y="16"/>
    188         <UsageCount Value="4"/>
     189        <UsageCount Value="3"/>
    189190        <DefaultSyntaxHighlighter Value="None"/>
    190191      </Unit16>
     
    195196        <TopLine Value="1"/>
    196197        <CursorPos X="32" Y="18"/>
    197         <UsageCount Value="4"/>
     198        <UsageCount Value="3"/>
    198199      </Unit17>
    199200      <Unit18>
     
    202203        <TopLine Value="1"/>
    203204        <CursorPos X="20" Y="12"/>
    204         <UsageCount Value="2"/>
     205        <UsageCount Value="1"/>
    205206        <DefaultSyntaxHighlighter Value="None"/>
    206207      </Unit18>
     
    211212        <TopLine Value="1"/>
    212213        <CursorPos X="1" Y="22"/>
    213         <UsageCount Value="2"/>
     214        <UsageCount Value="1"/>
    214215      </Unit19>
    215216      <Unit20>
     
    218219        <TopLine Value="1"/>
    219220        <CursorPos X="1" Y="1"/>
    220         <UsageCount Value="2"/>
     221        <UsageCount Value="1"/>
    221222        <DefaultSyntaxHighlighter Value="None"/>
    222223      </Unit20>
     
    226227        <TopLine Value="1"/>
    227228        <CursorPos X="1" Y="3"/>
    228         <UsageCount Value="2"/>
     229        <UsageCount Value="1"/>
    229230        <DefaultSyntaxHighlighter Value="None"/>
    230231      </Unit21>
     
    234235        <TopLine Value="1"/>
    235236        <CursorPos X="1" Y="3"/>
    236         <UsageCount Value="2"/>
     237        <UsageCount Value="1"/>
    237238        <DefaultSyntaxHighlighter Value="None"/>
    238239      </Unit22>
     
    243244        <TopLine Value="45"/>
    244245        <CursorPos X="9" Y="79"/>
    245         <UsageCount Value="1"/>
     246        <UsageCount Value="10"/>
    246247      </Unit23>
    247248      <Unit24>
     
    250251        <TopLine Value="1"/>
    251252        <CursorPos X="21" Y="4"/>
    252         <UsageCount Value="6"/>
     253        <UsageCount Value="5"/>
    253254        <DefaultSyntaxHighlighter Value="None"/>
    254255      </Unit24>
     
    259260        <TopLine Value="1"/>
    260261        <CursorPos X="1" Y="25"/>
    261         <UsageCount Value="6"/>
     262        <UsageCount Value="5"/>
    262263      </Unit25>
    263264      <Unit26>
     
    266267        <TopLine Value="1"/>
    267268        <CursorPos X="1" Y="3"/>
    268         <UsageCount Value="6"/>
     269        <UsageCount Value="5"/>
    269270        <DefaultSyntaxHighlighter Value="None"/>
    270271      </Unit26>
     
    274275        <TopLine Value="1"/>
    275276        <CursorPos X="7" Y="4"/>
    276         <UsageCount Value="6"/>
     277        <UsageCount Value="5"/>
    277278        <DefaultSyntaxHighlighter Value="None"/>
    278279      </Unit27>
     
    283284        <TopLine Value="1"/>
    284285        <CursorPos X="14" Y="15"/>
    285         <UsageCount Value="6"/>
     286        <UsageCount Value="5"/>
    286287      </Unit28>
    287288      <Unit29>
     
    290291        <TopLine Value="1"/>
    291292        <CursorPos X="14" Y="18"/>
    292         <UsageCount Value="6"/>
     293        <UsageCount Value="5"/>
    293294        <DefaultSyntaxHighlighter Value="None"/>
    294295      </Unit29>
     
    299300        <TopLine Value="2"/>
    300301        <CursorPos X="30" Y="8"/>
    301         <UsageCount Value="6"/>
     302        <UsageCount Value="5"/>
    302303      </Unit30>
    303304      <Unit31>
     
    307308        <TopLine Value="13"/>
    308309        <CursorPos X="15" Y="12"/>
    309         <UsageCount Value="8"/>
     310        <UsageCount Value="7"/>
    310311        <DefaultSyntaxHighlighter Value="Delphi"/>
    311312      </Unit31>
    312313      <Unit32>
    313314        <Filename Value="../Generic/GenericList.inc"/>
    314         <IsVisibleTab Value="True"/>
    315         <EditorIndex Value="2"/>
    316         <WindowIndex Value="0"/>
    317         <TopLine Value="359"/>
    318         <CursorPos X="62" Y="376"/>
     315        <EditorIndex Value="4"/>
     316        <WindowIndex Value="0"/>
     317        <TopLine Value="42"/>
     318        <CursorPos X="15" Y="55"/>
    319319        <UsageCount Value="107"/>
    320320        <Loaded Value="True"/>
     
    325325        <TopLine Value="31"/>
    326326        <CursorPos X="44" Y="47"/>
    327         <UsageCount Value="94"/>
     327        <UsageCount Value="93"/>
    328328      </Unit33>
    329329      <Unit34>
     
    332332        <TopLine Value="1"/>
    333333        <CursorPos X="36" Y="48"/>
    334         <UsageCount Value="94"/>
     334        <UsageCount Value="93"/>
    335335      </Unit34>
    336336      <Unit35>
     
    339339        <TopLine Value="3"/>
    340340        <CursorPos X="1" Y="3"/>
    341         <UsageCount Value="94"/>
     341        <UsageCount Value="93"/>
    342342      </Unit35>
    343343      <Unit36>
     
    346346        <TopLine Value="11"/>
    347347        <CursorPos X="42" Y="11"/>
    348         <UsageCount Value="94"/>
     348        <UsageCount Value="93"/>
    349349      </Unit36>
    350350      <Unit37>
     
    353353        <TopLine Value="3"/>
    354354        <CursorPos X="1" Y="3"/>
    355         <UsageCount Value="94"/>
     355        <UsageCount Value="93"/>
    356356      </Unit37>
    357357      <Unit38>
     
    360360        <TopLine Value="1"/>
    361361        <CursorPos X="22" Y="30"/>
    362         <UsageCount Value="94"/>
     362        <UsageCount Value="93"/>
    363363      </Unit38>
    364364      <Unit39>
     
    368368        <TopLine Value="6"/>
    369369        <CursorPos X="56" Y="36"/>
    370         <UsageCount Value="93"/>
     370        <UsageCount Value="92"/>
    371371      </Unit39>
    372372      <Unit40>
     
    376376        <TopLine Value="27"/>
    377377        <CursorPos X="50" Y="59"/>
    378         <UsageCount Value="92"/>
     378        <UsageCount Value="91"/>
    379379      </Unit40>
    380380      <Unit41>
     
    384384        <TopLine Value="57"/>
    385385        <CursorPos X="48" Y="85"/>
    386         <UsageCount Value="92"/>
     386        <UsageCount Value="91"/>
    387387      </Unit41>
    388388      <Unit42>
     
    391391        <TopLine Value="1"/>
    392392        <CursorPos X="33" Y="14"/>
    393         <UsageCount Value="92"/>
     393        <UsageCount Value="91"/>
    394394      </Unit42>
    395395      <Unit43>
     
    399399        <TopLine Value="52"/>
    400400        <CursorPos X="1" Y="81"/>
    401         <UsageCount Value="92"/>
     401        <UsageCount Value="91"/>
    402402      </Unit43>
    403403      <Unit44>
     
    407407        <TopLine Value="29"/>
    408408        <CursorPos X="1" Y="62"/>
    409         <UsageCount Value="92"/>
     409        <UsageCount Value="91"/>
    410410      </Unit44>
    411411      <Unit45>
     
    415415        <TopLine Value="9"/>
    416416        <CursorPos X="60" Y="36"/>
    417         <UsageCount Value="91"/>
     417        <UsageCount Value="90"/>
    418418      </Unit45>
    419419      <Unit46>
    420420        <Filename Value="../Generic/GenericMatrix.inc"/>
    421         <EditorIndex Value="3"/>
    422421        <WindowIndex Value="0"/>
    423422        <TopLine Value="9"/>
    424423        <CursorPos X="28" Y="23"/>
    425         <UsageCount Value="103"/>
    426         <Loaded Value="True"/>
     424        <UsageCount Value="102"/>
    427425      </Unit46>
    428426      <Unit47>
     
    432430        <TopLine Value="2624"/>
    433431        <CursorPos X="37" Y="2636"/>
    434         <UsageCount Value="90"/>
     432        <UsageCount Value="89"/>
    435433        <DefaultSyntaxHighlighter Value="Delphi"/>
    436434      </Unit47>
     
    440438        <TopLine Value="94"/>
    441439        <CursorPos X="1" Y="1"/>
    442         <UsageCount Value="6"/>
     440        <UsageCount Value="5"/>
    443441        <DefaultSyntaxHighlighter Value="XML"/>
    444442      </Unit48>
     
    448446        <TopLine Value="199"/>
    449447        <CursorPos X="14" Y="213"/>
    450         <UsageCount Value="28"/>
     448        <UsageCount Value="27"/>
    451449        <DefaultSyntaxHighlighter Value="Delphi"/>
    452450      </Unit49>
     
    456454        <TopLine Value="199"/>
    457455        <CursorPos X="3" Y="201"/>
    458         <UsageCount Value="28"/>
     456        <UsageCount Value="27"/>
    459457        <DefaultSyntaxHighlighter Value="Delphi"/>
    460458      </Unit50>
    461459      <Unit51>
    462460        <Filename Value="../Generic/GenericListObject.inc"/>
    463         <WindowIndex Value="0"/>
    464         <TopLine Value="1"/>
    465         <CursorPos X="21" Y="20"/>
    466         <UsageCount Value="19"/>
     461        <EditorIndex Value="5"/>
     462        <WindowIndex Value="0"/>
     463        <TopLine Value="11"/>
     464        <CursorPos X="34" Y="24"/>
     465        <UsageCount Value="21"/>
     466        <Loaded Value="True"/>
    467467      </Unit51>
    468468      <Unit52>
     
    472472        <TopLine Value="1"/>
    473473        <CursorPos X="27" Y="26"/>
    474         <UsageCount Value="28"/>
     474        <UsageCount Value="27"/>
    475475        <DefaultSyntaxHighlighter Value="Delphi"/>
    476476      </Unit52>
     
    480480        <TopLine Value="381"/>
    481481        <CursorPos X="3" Y="398"/>
    482         <UsageCount Value="28"/>
     482        <UsageCount Value="27"/>
    483483        <DefaultSyntaxHighlighter Value="Delphi"/>
    484484      </Unit53>
     
    488488        <TopLine Value="475"/>
    489489        <CursorPos X="10" Y="503"/>
    490         <UsageCount Value="7"/>
     490        <UsageCount Value="6"/>
    491491        <DefaultSyntaxHighlighter Value="Delphi"/>
    492492      </Unit54>
     
    496496        <TopLine Value="2270"/>
    497497        <CursorPos X="22" Y="2273"/>
    498         <UsageCount Value="19"/>
     498        <UsageCount Value="18"/>
    499499        <DefaultSyntaxHighlighter Value="Delphi"/>
    500500      </Unit55>
     
    502502        <Filename Value="../Specialized/SpecializedMatrix.pas"/>
    503503        <UnitName Value="SpecializedMatrix"/>
    504         <EditorIndex Value="4"/>
    505504        <WindowIndex Value="0"/>
    506505        <TopLine Value="1"/>
    507506        <CursorPos X="25" Y="41"/>
    508507        <UsageCount Value="19"/>
    509         <Loaded Value="True"/>
    510508      </Unit56>
    511509      <Unit57>
     
    514512        <TopLine Value="1"/>
    515513        <CursorPos X="28" Y="10"/>
    516         <UsageCount Value="9"/>
     514        <UsageCount Value="8"/>
    517515        <DefaultSyntaxHighlighter Value="None"/>
    518516      </Unit57>
     
    522520        <TopLine Value="38"/>
    523521        <CursorPos X="3" Y="50"/>
    524         <UsageCount Value="11"/>
     522        <UsageCount Value="10"/>
    525523        <DefaultSyntaxHighlighter Value="Delphi"/>
    526524      </Unit58>
     
    530528        <TopLine Value="649"/>
    531529        <CursorPos X="38" Y="671"/>
    532         <UsageCount Value="10"/>
     530        <UsageCount Value="9"/>
    533531        <DefaultSyntaxHighlighter Value="Delphi"/>
    534532      </Unit59>
     
    538536        <TopLine Value="1185"/>
    539537        <CursorPos X="22" Y="1196"/>
    540         <UsageCount Value="10"/>
     538        <UsageCount Value="9"/>
    541539        <DefaultSyntaxHighlighter Value="Delphi"/>
    542540      </Unit60>
     
    547545        <TopLine Value="112"/>
    548546        <CursorPos X="3" Y="124"/>
    549         <UsageCount Value="10"/>
     547        <UsageCount Value="9"/>
    550548        <DefaultSyntaxHighlighter Value="Delphi"/>
    551549      </Unit61>
     
    555553        <TopLine Value="71"/>
    556554        <CursorPos X="10" Y="84"/>
    557         <UsageCount Value="10"/>
     555        <UsageCount Value="9"/>
     556        <DefaultSyntaxHighlighter Value="Delphi"/>
    558557      </Unit62>
    559558      <Unit63>
     
    562561        <TopLine Value="148"/>
    563562        <CursorPos X="11" Y="169"/>
    564         <UsageCount Value="10"/>
     563        <UsageCount Value="9"/>
     564        <DefaultSyntaxHighlighter Value="Delphi"/>
    565565      </Unit63>
    566566      <Unit64>
     
    569569        <TopLine Value="511"/>
    570570        <CursorPos X="11" Y="524"/>
    571         <UsageCount Value="10"/>
     571        <UsageCount Value="9"/>
     572        <DefaultSyntaxHighlighter Value="Delphi"/>
    572573      </Unit64>
    573574      <Unit65>
     
    576577        <TopLine Value="411"/>
    577578        <CursorPos X="10" Y="424"/>
     579        <UsageCount Value="9"/>
     580        <DefaultSyntaxHighlighter Value="Delphi"/>
     581      </Unit65>
     582      <Unit66>
     583        <Filename Value="../Specialized/SpecializedStream.pas"/>
     584        <UnitName Value="SpecializedStream"/>
     585        <EditorIndex Value="8"/>
     586        <WindowIndex Value="0"/>
     587        <TopLine Value="106"/>
     588        <CursorPos X="48" Y="107"/>
     589        <UsageCount Value="15"/>
     590        <Loaded Value="True"/>
     591      </Unit66>
     592      <Unit67>
     593        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/lclclasses.pp"/>
     594        <UnitName Value="LCLClasses"/>
     595        <WindowIndex Value="0"/>
     596        <TopLine Value="25"/>
     597        <CursorPos X="32" Y="40"/>
     598        <UsageCount Value="9"/>
     599      </Unit67>
     600      <Unit68>
     601        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/lcl/controls.pp"/>
     602        <UnitName Value="Controls"/>
     603        <WindowIndex Value="0"/>
     604        <TopLine Value="1"/>
     605        <CursorPos X="39" Y="11"/>
     606        <UsageCount Value="9"/>
     607      </Unit68>
     608      <Unit69>
     609        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpash.inc"/>
     610        <WindowIndex Value="0"/>
     611        <TopLine Value="179"/>
     612        <CursorPos X="23" Y="192"/>
    578613        <UsageCount Value="10"/>
    579       </Unit65>
     614      </Unit69>
     615      <Unit70>
     616        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/inc/objpas.inc"/>
     617        <WindowIndex Value="0"/>
     618        <TopLine Value="265"/>
     619        <CursorPos X="9" Y="267"/>
     620        <UsageCount Value="10"/>
     621      </Unit70>
     622      <Unit71>
     623        <Filename Value="../Generic/GenericStream.inc"/>
     624        <IsVisibleTab Value="True"/>
     625        <EditorIndex Value="7"/>
     626        <WindowIndex Value="0"/>
     627        <TopLine Value="40"/>
     628        <CursorPos X="18" Y="20"/>
     629        <UsageCount Value="15"/>
     630        <Loaded Value="True"/>
     631      </Unit71>
     632      <Unit72>
     633        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/classesh.inc"/>
     634        <EditorIndex Value="1"/>
     635        <WindowIndex Value="0"/>
     636        <TopLine Value="891"/>
     637        <CursorPos X="18" Y="908"/>
     638        <UsageCount Value="13"/>
     639        <Loaded Value="True"/>
     640      </Unit72>
     641      <Unit73>
     642        <Filename Value="../../../../../Lazarus/0.9.31_2.6.0/fpc/2.6.0/source/rtl/objpas/classes/streams.inc"/>
     643        <EditorIndex Value="2"/>
     644        <WindowIndex Value="0"/>
     645        <TopLine Value="739"/>
     646        <CursorPos X="18" Y="750"/>
     647        <UsageCount Value="13"/>
     648        <Loaded Value="True"/>
     649      </Unit73>
     650      <Unit74>
     651        <Filename Value="../Generic/GenericListString.inc"/>
     652        <EditorIndex Value="6"/>
     653        <WindowIndex Value="0"/>
     654        <TopLine Value="8"/>
     655        <CursorPos X="34" Y="21"/>
     656        <UsageCount Value="12"/>
     657        <Loaded Value="True"/>
     658      </Unit74>
    580659    </Units>
    581     <JumpHistory Count="30" HistoryIndex="27">
     660    <JumpHistory Count="30" HistoryIndex="28">
    582661      <Position1>
    583         <Filename Value="../Generic/GenericList.inc"/>
    584         <Caret Line="468" Column="70" TopLine="462"/>
     662        <Filename Value="UMainForm.pas"/>
     663        <Caret Line="142" Column="1" TopLine="128"/>
    585664      </Position1>
    586665      <Position2>
    587         <Filename Value="../Generic/GenericList.inc"/>
    588         <Caret Line="469" Column="1" TopLine="462"/>
     666        <Filename Value="UMainForm.pas"/>
     667        <Caret Line="143" Column="1" TopLine="128"/>
    589668      </Position2>
    590669      <Position3>
    591670        <Filename Value="../Generic/GenericList.inc"/>
    592         <Caret Line="470" Column="1" TopLine="462"/>
     671        <Caret Line="161" Column="1" TopLine="148"/>
    593672      </Position3>
    594673      <Position4>
    595         <Filename Value="../Generic/GenericList.inc"/>
    596         <Caret Line="471" Column="1" TopLine="462"/>
     674        <Filename Value="../Specialized/SpecializedStream.pas"/>
     675        <Caret Line="93" Column="21" TopLine="80"/>
    597676      </Position4>
    598677      <Position5>
    599         <Filename Value="../Generic/GenericList.inc"/>
    600         <Caret Line="470" Column="5" TopLine="462"/>
     678        <Filename Value="UMainForm.pas"/>
     679        <Caret Line="150" Column="22" TopLine="129"/>
    601680      </Position5>
    602681      <Position6>
    603         <Filename Value="UMainForm.pas"/>
    604         <Caret Line="237" Column="19" TopLine="232"/>
     682        <Filename Value="../Generic/GenericStream.inc"/>
     683        <Caret Line="22" Column="12" TopLine="9"/>
    605684      </Position6>
    606685      <Position7>
    607         <Filename Value="UMainForm.pas"/>
    608         <Caret Line="237" Column="19" TopLine="232"/>
     686        <Filename Value="../Generic/GenericStream.inc"/>
     687        <Caret Line="37" Column="18" TopLine="35"/>
    609688      </Position7>
    610689      <Position8>
    611690        <Filename Value="UMainForm.pas"/>
    612         <Caret Line="495" Column="26" TopLine="482"/>
     691        <Caret Line="157" Column="79" TopLine="132"/>
    613692      </Position8>
    614693      <Position9>
    615         <Filename Value="UMainForm.pas"/>
    616         <Caret Line="503" Column="9" TopLine="490"/>
     694        <Filename Value="../Specialized/SpecializedStream.pas"/>
     695        <Caret Line="58" Column="45" TopLine="46"/>
    617696      </Position9>
    618697      <Position10>
    619         <Filename Value="UMainForm.pas"/>
    620         <Caret Line="480" Column="3" TopLine="467"/>
     698        <Filename Value="../Specialized/SpecializedStream.pas"/>
     699        <Caret Line="119" Column="12" TopLine="100"/>
    621700      </Position10>
    622701      <Position11>
    623         <Filename Value="UMainForm.pas"/>
    624         <Caret Line="511" Column="32" TopLine="498"/>
     702        <Filename Value="../Generic/GenericList.inc"/>
     703        <Caret Line="197" Column="39" TopLine="182"/>
    625704      </Position11>
    626705      <Position12>
    627         <Filename Value="UMainForm.pas"/>
    628         <Caret Line="519" Column="33" TopLine="506"/>
     706        <Filename Value="../Specialized/SpecializedStream.pas"/>
     707        <Caret Line="119" Column="12" TopLine="100"/>
    629708      </Position12>
    630709      <Position13>
    631         <Filename Value="UMainForm.pas"/>
    632         <Caret Line="526" Column="26" TopLine="513"/>
     710        <Filename Value="../Specialized/SpecializedStream.pas"/>
     711        <Caret Line="61" Column="38" TopLine="48"/>
    633712      </Position13>
    634713      <Position14>
    635         <Filename Value="UMainForm.pas"/>
    636         <Caret Line="538" Column="27" TopLine="525"/>
     714        <Filename Value="../Specialized/SpecializedStream.pas"/>
     715        <Caret Line="130" Column="15" TopLine="117"/>
    637716      </Position14>
    638717      <Position15>
    639         <Filename Value="UMainForm.pas"/>
    640         <Caret Line="549" Column="26" TopLine="536"/>
     718        <Filename Value="../Specialized/SpecializedStream.pas"/>
     719        <Caret Line="64" Column="36" TopLine="51"/>
    641720      </Position15>
    642721      <Position16>
    643         <Filename Value="UMainForm.pas"/>
    644         <Caret Line="561" Column="25" TopLine="548"/>
     722        <Filename Value="../Specialized/SpecializedStream.pas"/>
     723        <Caret Line="58" Column="29" TopLine="45"/>
    645724      </Position16>
    646725      <Position17>
    647         <Filename Value="UMainForm.pas"/>
    648         <Caret Line="572" Column="16" TopLine="559"/>
     726        <Filename Value="../Specialized/SpecializedStream.pas"/>
     727        <Caret Line="78" Column="45" TopLine="78"/>
    649728      </Position17>
    650729      <Position18>
    651         <Filename Value="UMainForm.pas"/>
    652         <Caret Line="584" Column="25" TopLine="571"/>
     730        <Filename Value="../Specialized/SpecializedStream.pas"/>
     731        <Caret Line="64" Column="64" TopLine="48"/>
    653732      </Position18>
    654733      <Position19>
    655         <Filename Value="UMainForm.pas"/>
    656         <Caret Line="595" Column="26" TopLine="582"/>
     734        <Filename Value="../Specialized/SpecializedStream.pas"/>
     735        <Caret Line="82" Column="3" TopLine="68"/>
    657736      </Position19>
    658737      <Position20>
    659         <Filename Value="../Generic/GenericList.inc"/>
    660         <Caret Line="214" Column="12" TopLine="201"/>
     738        <Filename Value="../Generic/GenericListObject.inc"/>
     739        <Caret Line="20" Column="21" TopLine="1"/>
    661740      </Position20>
    662741      <Position21>
    663         <Filename Value="../Generic/GenericList.inc"/>
    664         <Caret Line="231" Column="16" TopLine="218"/>
     742        <Filename Value="../Generic/GenericListObject.inc"/>
     743        <Caret Line="24" Column="17" TopLine="11"/>
    665744      </Position21>
    666745      <Position22>
    667         <Filename Value="UMainForm.pas"/>
    668         <Caret Line="634" Column="11" TopLine="614"/>
     746        <Filename Value="../Generic/GenericListString.inc"/>
     747        <Caret Line="1" Column="1" TopLine="1"/>
    669748      </Position22>
    670749      <Position23>
    671750        <Filename Value="UMainForm.pas"/>
    672         <Caret Line="628" Column="39" TopLine="624"/>
     751        <Caret Line="43" Column="15" TopLine="28"/>
    673752      </Position23>
    674753      <Position24>
    675         <Filename Value="UMainForm.pas"/>
    676         <Caret Line="91" Column="5" TopLine="77"/>
     754        <Filename Value="../Generic/GenericStream.inc"/>
     755        <Caret Line="13" Column="1" TopLine="1"/>
    677756      </Position24>
    678757      <Position25>
    679         <Filename Value="UMainForm.pas"/>
    680         <Caret Line="92" Column="61" TopLine="77"/>
     758        <Filename Value="../Specialized/SpecializedStream.pas"/>
     759        <Caret Line="84" Column="35" TopLine="40"/>
    681760      </Position25>
    682761      <Position26>
    683         <Filename Value="UMainForm.pas"/>
    684         <Caret Line="91" Column="52" TopLine="74"/>
     762        <Filename Value="../Specialized/SpecializedStream.pas"/>
     763        <Caret Line="126" Column="39" TopLine="111"/>
    685764      </Position26>
    686765      <Position27>
    687         <Filename Value="../Generic/GenericList.inc"/>
    688         <Caret Line="3" Column="69" TopLine="1"/>
     766        <Filename Value="../Specialized/SpecializedStream.pas"/>
     767        <Caret Line="128" Column="1" TopLine="111"/>
    689768      </Position27>
    690769      <Position28>
    691         <Filename Value="../Generic/GenericList.inc"/>
    692         <Caret Line="27" Column="24" TopLine="7"/>
     770        <Filename Value="../Specialized/SpecializedStream.pas"/>
     771        <Caret Line="68" Column="32" TopLine="55"/>
    693772      </Position28>
    694773      <Position29>
    695         <Filename Value="../Generic/GenericList.inc"/>
    696         <Caret Line="217" Column="27" TopLine="209"/>
     774        <Filename Value="../Specialized/SpecializedStream.pas"/>
     775        <Caret Line="121" Column="1" TopLine="106"/>
    697776      </Position29>
    698777      <Position30>
    699778        <Filename Value="../Generic/GenericList.inc"/>
    700         <Caret Line="237" Column="18" TopLine="223"/>
     779        <Caret Line="55" Column="15" TopLine="42"/>
    701780      </Position30>
    702781    </JumpHistory>
    703782  </ProjectOptions>
    704783  <CompilerOptions>
    705     <Version Value="10"/>
     784    <Version Value="11"/>
    706785    <Target>
    707786      <Filename Value="Demo"/>
     
    730809    <Linking>
    731810      <Debugging>
    732         <GenerateDebugInfo Value="True"/>
     811        <DebugInfoType Value="dsStabs"/>
    733812        <UseHeaptrc Value="True"/>
    734813      </Debugging>
  • trunk/Packages/TemplateGenerics/Demo/UMainForm.lfm

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

    r84 r90  
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    99  ComCtrls, SpecializedList, SpecializedDictionary, SpecializedQueue,
    10   DateUtils, SpecializedMatrix;
     10  DateUtils, SpecializedMatrix, SpecializedStream;
    1111
    1212type
     
    1515
    1616  TMainForm = class(TForm)
     17    ButtonStreamByte: TButton;
    1718    ButtonBenchmarkDictionary: TButton;
    1819    ButtonBenchmarkListPointer: TButton;
     
    3839    procedure ButtonQueueIntegerClick(Sender: TObject);
    3940    procedure ButtonStringListClick(Sender: TObject);
     41    procedure ButtonStreamByteClick(Sender: TObject);
    4042    procedure FormCreate(Sender: TObject);
    4143    procedure FormDestroy(Sender: TObject);
    42   private
    4344  public
    4445    MeasureDuration: TDateTime;
     
    9495    List2.SetArray([2, 0]);
    9596    WriteOutput('EqualTo([7, 11])', BoolToStr(EqualTo(List2)));
     97    InsertCount(0, 3);
     98    WriteOutput('InsertCount(0, 3)', Implode(',', IntToStr));
     99    Fill(0, 3, 9);
     100    WriteOutput('Fill(0, 3, 9)', Implode(',', IntToStr));
    96101  finally
    97102    Free;
     
    119124    WriteOutput('Clear', '[' + Implode('; ', ', ', IntToStr) + ']');
    120125    WriteOutput('Count [Y, X]', IntToStr(Count.Y) + ', ' + IntToStr(Count.X));
     126  finally
     127    Free;
     128  end;
     129end;
     130
     131procedure TMainForm.ButtonStreamByteClick(Sender: TObject);
     132var
     133  Stream: TMemoryStreamByte;
     134  I: Integer;
     135  ByteArray: array of Byte;
     136  ByteArrayText: string;
     137begin
     138  ListViewOutput.Clear;
     139  LabelTestName.Caption := 'TStreamByte test';
     140  Stream := TMemoryStreamByte.Create;
     141  with Stream do try
     142    WriteOutput('Size := ', IntToStr(Stream.Size));
     143    Write(1);
     144    WriteOutput('Write(1)', '');
     145    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     146    WriteArray([2, 3, 4]);
     147    WriteOutput('WriteArray([2, 3, 4])', '');
     148    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     149    Position := 1;
     150    WriteOutput('Position := 1', '');
     151    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     152    WriteOutput('Read', IntToStr(Read));
     153    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
     154    ByteArray := ReadArray(2);
     155    ByteArrayText := '[';
     156    for I := 0 to Length(ByteArray) - 1 do begin
     157      ByteArrayText := ByteArrayText + IntToStr(ByteArray[I]);
     158      if I < Length(ByteArray) - 1 then ByteArrayText := ByteArrayText + ', ';
     159    end;
     160    ByteArrayText := ByteArrayText + ']';
     161    WriteOutput('ReadArray', ByteArrayText);
     162    WriteOutput('Size, Position', IntToStr(Stream.Size) + ', ' + IntToStr(Stream.Position));
    121163  finally
    122164    Free;
     
    702744    MoveItems(2, 3, 3);
    703745    WriteOutput('Implode', Implode(',', StrToStr));
     746    InsertCount(0, 3);
     747    WriteOutput('InsertCount(0, 3)', Implode(',', StrToStr));
     748    Fill(0, 3, 'Zero');
     749    WriteOutput('Fill(0, 3, ''Zero'')', Implode(',', StrToStr));
    704750  finally
    705751    Free;
  • trunk/Packages/TemplateGenerics/Generic/GenericList.inc

    r84 r90  
    11{$IFDEF INTERFACE}
     2
     3  // TGList implemented using templates
     4  // - item operations (Add, Insert, ReplaceArray, Get, Set, IndexOf,
     5  //   Extract, Delete, Exchange)
     6  // - item range operations (DeleteItems, InsertItems, ReplaceItems,
     7  //   Move, Fill)
     8  // - other TGList operations (AddList, InsertList,
     9  //   ReplaceList, GetList, IndexOfList)
     10  // - dynamic array operations (AddArray, InsertArray,
     11  //   ReplaceArray, GetArray, IndexOfArray)
     12  // - all items operations (Clear, Reverse, Sort)
    213
    314  TGList = class;
     
    1324    FItems: array of TGListItem;
    1425    FCount: TGListIndex;
     26    FUpdateCount: Integer;
     27    FOnUpdate: TNotifyEvent;
    1528    function Get(Index: TGListIndex): TGListItem;
    1629    function GetCapacity: TGListIndex;
     
    2134    procedure SetLast(AValue: TGListItem);
    2235    procedure SetFirst(AValue: TGListItem);
     36    procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
     37  protected
    2338    procedure Put(Index: TGListIndex; const AValue: TGListItem); virtual;
    2439    procedure SetCount(const AValue: TGListIndex); virtual;
    25     procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
    2640  public
     41    type
     42      PItem = ^TGListItem;
    2743    function CompareMem(P1, P2: Pointer; Length: cardinal): Boolean; inline;
    2844    function Add(Item: TGListItem): TGListIndex;
     
    4157    property First: TGListItem read GetFirst write SetFirst;
    4258    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
    43     function GetArray: TGListItemArray;
     59    function GetArray(Index, ACount: TGListIndex): TGListItemArray;
     60    procedure GetList(List: TGList; Index, ACount: TGListIndex);
     61    procedure GetBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    4462    function Implode(Separator: string; Converter: TGListToStringConverter): string;
    4563    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; virtual;
    4664    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
     65    function IndexOfArray(Values: array of TGListItem; Start: TGListIndex = 0): TGListIndex;
    4766    procedure Insert(Index: TGListIndex; Item: TGListItem);
    4867    procedure InsertList(Index: TGListIndex; List: TGList);
    4968    procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
     69    procedure InsertCount(Index: TGListIndex; ACount: TGListIndex);
    5070    procedure Move(CurIndex, NewIndex: TGListIndex);
    5171    procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    5272    function Remove(Item: TGListItem): TGListIndex;
    5373    procedure Reverse;
     74    procedure ReplaceArray(Index: TGListIndex; Values: array of TGListItem);
    5475    procedure ReplaceList(Index: TGListIndex; Source: TGList);
    5576    procedure ReplaceListPart(Index: TGListIndex; Source: TGList;
    5677      SourceIndex, SourceCount: TGListIndex);
     78    procedure ReplaceBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    5779    procedure Sort(Compare: TGListSortCompare);
    5880    procedure SetArray(Values: array of TGListItem);
     81    procedure BeginUpdate;
     82    procedure EndUpdate;
     83    procedure Update;
    5984    property Count: TGListIndex read FCount write SetCount;
    6085    property Capacity: TGListIndex read GetCapacity write SetCapacity;
    6186    property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
    6287    property Last: TGListItem read GetLast write SetLast;
     88    property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate;
    6389  end;
    6490 
     
    83109end;
    84110
     111procedure TGList.GetBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
     112var
     113  P: PItem;
     114  I: TGListIndex;
     115begin
     116  if (Index + Count) > FCount then
     117    raise EListError.CreateFmt(SListIndexError, [Index + Count]);
     118  P := PItem(@Buffer);
     119  I := 0;
     120  while I < Count do begin
     121    P^ := Items[Index + I];
     122    Inc(P, 1);
     123    I := I + 1;
     124  end;
     125end;
     126
     127procedure TGList.ReplaceBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
     128var
     129  P: PItem;
     130  I: TGListIndex;
     131begin
     132  if (Index + Count) > FCount then
     133    raise EListError.CreateFmt(SListIndexError, [Index + Count]);
     134  P := PItem(@Buffer);
     135  I := 0;
     136  while I < Count do begin
     137    Items[Index + I] := P^;
     138    Inc(P, 1);
     139    I := I + 1;
     140  end;
     141end;
     142
     143procedure TGList.ReplaceArray(Index: TGListIndex; Values: array of TGListItem);
     144var
     145  I: TGListIndex;
     146begin
     147  I := 0;
     148  while I < Length(Values) do begin
     149    Items[Index + I] := Values[I];
     150    I := I + 1;
     151  end;
     152  Update;
     153end;
     154
    85155procedure TGList.ReplaceList(Index: TGListIndex; Source: TGList);
    86156var
     
    92162    I := I + 1;
    93163  end;
     164  Update;
    94165end;
    95166
     
    104175    I := I + 1;
    105176  end;
     177  Update;
    106178end;
    107179
     
    165237end;
    166238
    167 function TGList.GetArray: TGListItemArray;
     239function TGList.GetArray(Index, ACount: TGListIndex): TGListItemArray;
    168240var
    169241  I: Integer;
    170242begin
    171   SetLength(Result, Count);
    172   I := 0;
    173   while I < Count do begin
    174     Result[I] := FItems[I];
    175     I := I + 1;
    176   end;
     243  SetLength(Result, ACount);
     244  I := 0;
     245  while I < Count do begin
     246    Result[I] := FItems[Index + I];
     247    I := I + 1;
     248  end;
     249end;
     250
     251procedure TGList.GetList(List: TGList; Index, ACount: TGListIndex);
     252begin
     253  List.Clear;
     254  List.AddListPart(Self, Index, ACount);
    177255end;
    178256
     
    216294    I := I + 1;
    217295  end;
     296  Update;
    218297end;
    219298
     
    250329  Result := Start;
    251330  while (Result < FCount) and
    252   not CompareMem(@FItems[Result], @Item, SizeOf(TGListItem)) do
    253 //  not (CompareByte(FItems[Result], Item, SizeOf(TGListItem)) = 0) do
     331//  not CompareMem(@FItems[Result], @Item, SizeOf(TGListItem)) do
     332  not (CompareByte(FItems[Result], Item, SizeOf(TGListItem)) = 0) do
    254333    Result := Result + 1;
    255334  if Result = FCount then Result := -1;
     
    258337procedure TGList.Insert(Index: TGListIndex; Item: TGListItem);
    259338begin
    260   if (Index < 0) or (Index > FCount ) then
     339  if (Index < 0) or (Index > FCount) then
    261340    raise EListError.CreateFmt(SListIndexError, [Index]);
    262   if FCount = Capacity then SetCapacityOptimized(Capacity + 1);
     341  InsertCount(Index, 1);
     342  FItems[Index] := Item;
     343  Update;
     344end;
     345
     346procedure TGList.InsertList(Index: TGListIndex; List: TGList);
     347begin
     348  if (Index < 0) or (Index > FCount) then
     349    raise EListError.CreateFmt(SListIndexError, [Index]);
     350  InsertCount(Index, List.Count);
     351  ReplaceList(Index, List);
     352end;
     353
     354procedure TGList.InsertArray(Index: TGListIndex; Values: array of TGListItem);
     355begin
     356  if (Index < 0) or (Index > FCount) then
     357    raise EListError.CreateFmt(SListIndexError, [Index]);
     358  InsertCount(Index, Length(Values));
     359  ReplaceArray(Index, Values);
     360end;
     361
     362procedure TGList.InsertCount(Index: TGListIndex; ACount: TGListIndex);
     363begin
     364  if (Index < 0) or (Index > FCount) then
     365    raise EListError.CreateFmt(SListIndexError, [Index]);
     366  Count := Count + ACount;
    263367  if Index < FCount then
    264     System.Move(FItems[Index], FItems[Index + 1], (FCount - Index) * SizeOf(TGListItem));
    265   FItems[Index] := Item;
    266   FCount := FCount + 1;
    267 end;
    268 
    269 procedure TGList.InsertList(Index: TGListIndex; List: TGList);
    270 var
    271   I: TGListIndex;
    272 begin
    273   I := 0;
    274   while (I < List.Count) do begin
    275     Insert(Index + I, List[I]);
    276     I := I + 1;
    277   end;
     368    System.Move(FItems[Index], FItems[Index + ACount], (FCount - ACount - Index) * SizeOf(TGListItem));
     369  Update;
    278370end;
    279371
     
    297389end;
    298390
     391function TGList.IndexOfArray(Values: array of TGListItem; Start: TGListIndex): TGListIndex;
     392var
     393  I: TGListIndex;
     394begin
     395  if Length(Values) > 0 then begin
     396    Result := IndexOf(Values[0], Start);
     397    if Result <> -1 then begin
     398      I := 1;
     399      while I < Length(Values) do begin
     400        if not CompareMem(Addr(FItems[Result + I]), Addr(Values[I]), SizeOf(TGListItem)) then begin
     401          Result := -1;
     402          Break;
     403        end;
     404        I := I + 1;
     405      end;
     406    end;
     407  end else Result := -1;
     408end;
     409
    299410function TGList.GetLast: TGListItem;
    300411begin
     
    347458  //Delete(CurIndex);
    348459  //Insert(NewIndex, Temp);
     460  Update;
    349461end;
    350462
     
    372484    end;
    373485  end;
     486  Update;
    374487end;
    375488
     
    378491  Result := IndexOf(Item);
    379492  if Result <> -1 then
    380     Delete(Result);
     493    Delete(Result)
     494    else raise Exception.CreateFmt(SItemNotFound, [0]);
    381495end;
    382496
     
    407521    I := I + 1;
    408522  end;
     523  Update;
    409524end;
    410525
     
    413528  if FCount > 1 then
    414529    QuickSort(0, FCount - 1, Compare);
     530  Update;
    415531end;
    416532
     
    424540    I := I + 1;
    425541  end;
     542  Update;
    426543end;
    427544
     
    438555end;
    439556
    440 procedure TGList.InsertArray(Index: TGListIndex; Values: array of TGListItem);
    441 var
    442   I: TGListIndex;
    443 begin
    444   I := 0;
    445   while I <= High(Values) do begin
    446     Insert(Index + I, Values[I]);
    447     I := I + 1;
    448   end;
     557procedure TGList.BeginUpdate;
     558begin
     559  Inc(FUpdateCount);
     560end;
     561
     562procedure TGList.EndUpdate;
     563begin
     564  Dec(FUpdateCount);
     565  Update;
     566end;
     567
     568procedure TGList.Update;
     569begin
     570  if Assigned(FOnUpdate) and (FUpdateCount = 0) then FOnUpdate(Self);
    449571end;
    450572
     
    479601  Result := FCount - 1;
    480602  FItems[Result] := Item;
     603  Update;
    481604end;
    482605
     
    494617    J := J + 1;
    495618  end;
     619  Update;
    496620end;
    497621
     
    509633    J := J + 1;
    510634  end;
     635  Update;
    511636end;
    512637
     
    524649  System.Move(FItems[Index + 1], FItems[Index], (FCount - Index) * SizeOf(TGListItem));
    525650  SetCapacityOptimized(Capacity - 1);
     651  Update;
    526652end;
    527653
     
    535661    I := I + 1;
    536662  end;
     663  Update;
    537664end;
    538665
     
    546673    I := I + 1;
    547674  end;
     675  Update;
    548676end;
    549677
     
    559687  FItems[Index1] := FItems[Index2];
    560688  FItems[Index2] := Temp;
     689  Update;
    561690end;
    562691
  • trunk/Packages/TemplateGenerics/Generic/GenericListObject.inc

    r84 r90  
    1313  // TGListObject<TListObjectIndex, TListObjectItem> = class(TGList)
    1414  TGListObject = class(TGList)
    15   private
     15  protected
    1616    procedure Put(Index: TGListIndex; const AValue: TGListItem); override;
     17    procedure SetCount(const AValue: TGListIndex); override;
    1718  public
    1819    OwnsObjects: Boolean;
     
    2021    function InsertNew(Index: TGListIndex; NewObject: TGListItem = nil): TGListItem;
    2122    procedure Delete(Index: TGListObjectIndex); override;
    22     procedure Clear; override;
    2323    procedure Assign(Source: TGList); override;
    24     constructor Create;
     24    constructor Create; override;
    2525    destructor Destroy; override;
    2626  end;
     
    7575procedure TGListObject.Put(Index: TGListIndex; const AValue: TGListItem);
    7676begin
    77   if OwnsObjects then FItems[Index].Free;
     77  if OwnsObjects and (FItems[Index] <> AValue) then FItems[Index].Free;
    7878  inherited Put(Index, AValue);
    7979end;
     
    8585end;
    8686
    87 procedure TGListObject.Clear;
     87procedure TGListObject.SetCount(const AValue: TGListIndex);
    8888var
    8989  I: TGListObjectIndex;
    9090begin
    9191  if OwnsObjects then begin
    92     I := 0;
    93     while I < Count do begin
     92    I := FCount - 1;
     93    while I >= AValue do begin
    9494      FItems[I].Free;
    95       I := I + 1;
     95      I := I - 1;
    9696    end;
    9797  end;
    98   inherited Clear;
     98  inherited;
    9999end;
    100100
  • trunk/Packages/TemplateGenerics/Generic/GenericListString.inc

    r84 r90  
    1919    procedure Assign(Source: TGList); override;
    2020    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; override;
    21     constructor Create;
     21    constructor Create; override;
    2222    destructor Destroy; override;
    2323  end;
  • trunk/Packages/TemplateGenerics/Generic/GenericPoint.inc

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

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

    r84 r90  
    11{$IFDEF INTERFACE}
    22
    3 TGStreamDataEvent = procedure (Item: TGStreamItem) of object;
     3TGStreamItemArray = array of TGStreamItem;
    44
    5 // TGStream<TStreamItem> = class
     5// TGStream<TGStreamIndex, TGStreamItem> = class
    66TGStream = class
    7   FOnData: TGStreamDataEvent;
    8   procedure Write(Item: TStreamItem);
    9   property OnData: TGStreamDataEvent read FOnData write FOnData;
     7  procedure SetSize(AValue: TGStreamIndex);
     8  function GetSize: TGStreamIndex;
     9  procedure SetPosition(AValue: TGStreamIndex);
     10  function GetPosition: TGStreamIndex;
     11public
     12  procedure Assign(Source: TGStream); virtual;
     13  procedure Write(Item: TGStreamItem); virtual; abstract;
     14  procedure WriteArray(Item: array of TGStreamItem); virtual; abstract;
     15  procedure WriteStream(Stream: TGStream; Count: TGStreamIndex); virtual; abstract;
     16  function Read: TGStreamItem; virtual; abstract;
     17  function ReadArray(Count: TGStreamIndex): TGStreamItemArray; virtual; abstract;
     18  function ReadStream(Stream: TGStream; Count: TGStreamIndex): TGStreamIndex; virtual; abstract;
     19  function Insert(Count: TGStreamIndex): TGStreamIndex; virtual; abstract;
     20  function Remove(Count: TGStreamIndex): TGStreamIndex; virtual; abstract;
     21  function Seek(Offset: TGStreamIndex; Origin: TSeekOrigin = soCurrent):
     22    TGStreamIndex; virtual; abstract;
     23  constructor Create; virtual;
     24  property Position: TGStreamIndex read GetPosition write SetPosition;
     25  property Size: TGStreamIndex read GetSize write SetSize;
    1026end;
    1127
     
    1531{$IFDEF IMPLEMENTATION}
    1632
    17 procedure TGStream.Write(Item: TGStreamItem);
     33procedure TGStream.Assign(Source: TGStream);
    1834begin
    19   if Assigned(FOnData) then
    20     FOnData(Item);
    2135end;
    2236
     37procedure TGStream.SetPosition(AValue: TGStreamIndex);
     38begin
     39  Seek(AValue, soBegin);
     40end;
     41
     42function TGStream.GetPosition: TGStreamIndex;
     43begin
     44  Result := Seek(0, soCurrent);
     45end;
     46
     47procedure TGStream.SetSize(AValue: TGStreamIndex);
     48var
     49  StreamSize: TGStreamIndex;
     50  OldPosition: TGStreamIndex;
     51begin
     52  OldPosition := Seek(0, soCurrent);
     53  StreamSize := Size;
     54  if AValue > StreamSize then begin
     55    Seek(StreamSize, soBegin);
     56    Insert(AValue - StreamSize);
     57  end else
     58  if AValue < StreamSize then begin
     59    Seek(AValue, soBegin);
     60    Remove(StreamSize - AValue);
     61  end;
     62  Position := OldPosition;
     63end;
     64
     65function TGStream.GetSize: TGStreamIndex;
     66var
     67  OldPosition: Integer;
     68begin
     69  OldPosition := Position;
     70  Result := Seek(0, soEnd);
     71  Position := OldPosition;
     72end;
     73
     74constructor TGStream.Create;
     75begin
     76  inherited;
     77end;
    2378
    2479{$UNDEF IMPLEMENTATION}
  • trunk/Packages/TemplateGenerics/Specialized/SpecializedList.pas

    r84 r90  
    9595  procedure AddStream(Stream: TStream);
    9696  procedure AddStreamPart(Stream: TStream; ItemCount: TGListIndex);
     97  procedure WriteBuffer(var Buffer; Count: Integer);
     98  procedure ReadBuffer(var Buffer; Count: Integer);
    9799end;
    98100
     
    146148TListMethod = class(TListMethodBase)
    147149  procedure CallAll;
    148   procedure CallNotifyEvents(Sender: TObject);
    149 end;
     150end;
     151
     152// TListNotifyEventBase<Integer, TNotifyEvent>
     153{$DEFINE TGListIndex := Integer}
     154{$DEFINE TGListItem := TNotifyEvent}
     155{$DEFINE TGList := TListNotifyEventBase}
     156{$DEFINE TGListSortCompare := TListNotifyEventSortCompare}
     157{$DEFINE TGListToStringConverter := TListNotifyEventToStringConverter}
     158{$DEFINE TGListFromStringConverter := TListNotifyEventFromStringConverter}
     159{$DEFINE TGListItemArray := TListNotifyEventItemArray}
     160{$DEFINE INTERFACE}
     161{$I 'GenericList.inc'}
     162
     163// TListNotifyEvent<Integer, TNotifyEvent>
     164TListNotifyEvent = class(TListNotifyEventBase)
     165  procedure CallAll(Sender: TObject);
     166end;
     167
     168
     169TBaseEvent = procedure of object;
     170
     171// TListSimpleEventBase<Integer, TBaseEvent>
     172{$DEFINE TGListIndex := Integer}
     173{$DEFINE TGListItem := TBaseEvent}
     174{$DEFINE TGList := TListSimpleEventBase}
     175{$DEFINE TGListSortCompare := TListSimpleEventSortCompare}
     176{$DEFINE TGListToStringConverter := TListSimpleEventToStringConverter}
     177{$DEFINE TGListFromStringConverter := TListSimpleEventFromStringConverter}
     178{$DEFINE TGListItemArray := TListSimpleEventItemArray}
     179{$DEFINE INTERFACE}
     180{$I 'GenericList.inc'}
     181
     182// TListSimpleEvent<Integer, TSimpleEvent>
     183TListSimpleEvent = class(TListSimpleEventBase)
     184  procedure CallAll;
     185end;
     186
    150187
    151188function StrToStr(Value: string): string;
     
    267304{$I 'GenericList.inc'}
    268305
     306// TListNotifyEventBase<Integer, TNotifyEvent>
     307{$DEFINE TGListIndex := Integer}
     308{$DEFINE TGListItem := TNotifyEvent}
     309{$DEFINE TGList := TListNotifyEventBase}
     310{$DEFINE TGListSortCompare := TListNotifyEventSortCompare}
     311{$DEFINE TGListToStringConverter := TListNotifyEventToStringConverter}
     312{$DEFINE TGListFromStringConverter := TListNotifyEventFromStringConverter}
     313{$DEFINE TGListItemArray := TListNotifyEventItemArray}
     314{$DEFINE IMPLEMENTATION}
     315{$I 'GenericList.inc'}
     316
     317// TListSimpleEventBase<Integer, TBaseEvent>
     318{$DEFINE TGListIndex := Integer}
     319{$DEFINE TGListItem := TBaseEvent}
     320{$DEFINE TGList := TListSimpleEventBase}
     321{$DEFINE TGListSortCompare := TListSimpleEventSortCompare}
     322{$DEFINE TGListToStringConverter := TListSimpleEventToStringConverter}
     323{$DEFINE TGListFromStringConverter := TListSimpleEventFromStringConverter}
     324{$DEFINE TGListItemArray := TListSimpleEventItemArray}
     325{$DEFINE IMPLEMENTATION}
     326{$I 'GenericList.inc'}
     327
     328
    269329
    270330function StrToStr(Value: string): string;
     
    272332  Result := Value;
    273333end;
     334
     335{ TListSimpleEvent }
     336
     337procedure TListSimpleEvent.CallAll;
     338var
     339  I: TGListIndex;
     340begin
     341  I := 0;
     342  while (I < Count) do begin
     343    TBaseEvent(Items[I])();
     344    I := I + 1;
     345  end;
     346end;
     347
    274348
    275349{ TListChar }
     
    332406end;
    333407
    334 procedure TListMethod.CallNotifyEvents(Sender: TObject);
     408procedure TListNotifyEvent.CallAll(Sender: TObject);
    335409var
    336410  I: TGListIndex;
     
    417491end;
    418492
     493procedure TListByte.WriteBuffer(var Buffer; Count: Integer);
     494begin
     495
     496end;
     497
     498procedure TListByte.ReadBuffer(var Buffer; Count: Integer);
     499begin
     500
     501end;
     502
    419503end.
  • trunk/Packages/TemplateGenerics/Specialized/SpecializedPoint.pas

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

    r84 r90  
    11<?xml version="1.0"?>
    22<CONFIG>
    3   <Package Version="3">
     3  <Package Version="4">
    44    <PathDelim Value="\"/>
    55    <Name Value="TemplateGenerics"/>
     6    <AddToProjectUsesSection Value="True"/>
    67    <Author Value="Chronos (robie@centrum.cz)"/>
    78    <CompilerOptions>
    8       <Version Value="10"/>
     9      <Version Value="11"/>
    910      <PathDelim Value="\"/>
    1011      <SearchPaths>
    1112        <IncludeFiles Value="Generic"/>
    12         <OtherUnitFiles Value="Specialized;Generic"/>
     13        <OtherUnitFiles Value="Specialized;Generic;Additional"/>
    1314        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
    1415      </SearchPaths>
     
    2728    </CompilerOptions>
    2829    <Description Value="Generic classes implemented as templates."/>
    29     <Version Minor="3"/>
    30     <Files Count="23">
     30    <Version Minor="4"/>
     31    <Files Count="27">
    3132      <Item1>
    3233        <Filename Value="ReadMe.txt"/>
     
    8687      </Item14>
    8788      <Item15>
     89        <Filename Value="Generic\GenericRectangle.inc"/>
     90        <UnitName Value="GenericRectangle"/>
     91      </Item15>
     92      <Item16>
    8893        <Filename Value="Specialized\SpecializedList.pas"/>
    8994        <UnitName Value="SpecializedList"/>
    90       </Item15>
    91       <Item16>
     95      </Item16>
     96      <Item17>
    9297        <Filename Value="Specialized\SpecializedDictionary.pas"/>
    9398        <UnitName Value="SpecializedDictionary"/>
    94       </Item16>
    95       <Item17>
     99      </Item17>
     100      <Item18>
    96101        <Filename Value="Specialized\SpecializedStack.pas"/>
    97102        <UnitName Value="SpecializedStack"/>
    98       </Item17>
    99       <Item18>
     103      </Item18>
     104      <Item19>
    100105        <Filename Value="Specialized\SpecializedTree.pas"/>
    101106        <UnitName Value="SpecializedTree"/>
    102       </Item18>
    103       <Item19>
     107      </Item19>
     108      <Item20>
    104109        <Filename Value="Specialized\SpecializedQueue.pas"/>
    105110        <UnitName Value="SpecializedQueue"/>
    106       </Item19>
    107       <Item20>
     111      </Item20>
     112      <Item21>
    108113        <Filename Value="Specialized\SpecializedSet.pas"/>
    109114        <UnitName Value="SpecializedSet"/>
    110       </Item20>
    111       <Item21>
     115      </Item21>
     116      <Item22>
    112117        <Filename Value="Specialized\SpecializedPoint.pas"/>
    113118        <UnitName Value="SpecializedPoint"/>
    114       </Item21>
    115       <Item22>
     119      </Item22>
     120      <Item23>
    116121        <Filename Value="Specialized\SpecializedMatrix.pas"/>
    117122        <UnitName Value="SpecializedMatrix"/>
    118       </Item22>
    119       <Item23>
     123      </Item23>
     124      <Item24>
    120125        <Filename Value="Specialized\SpecializedBitmap.pas"/>
    121126        <UnitName Value="SpecializedBitmap"/>
    122       </Item23>
     127      </Item24>
     128      <Item25>
     129        <Filename Value="Specialized\SpecializedStream.pas"/>
     130        <UnitName Value="SpecializedStream"/>
     131      </Item25>
     132      <Item26>
     133        <Filename Value="Specialized\SpecializedRectangle.pas"/>
     134        <UnitName Value="SpecializedRectangle"/>
     135      </Item26>
     136      <Item27>
     137        <Filename Value="Additional\UBinarySerializer.pas"/>
     138        <UnitName Value="UBinarySerializer"/>
     139      </Item27>
    123140    </Files>
    124141    <Type Value="RunAndDesignTime"/>
    125142    <RequiredPkgs Count="2">
    126143      <Item1>
    127         <PackageName Value="LCL"/>
     144        <PackageName Value="LCLBase"/>
    128145      </Item1>
    129146      <Item2>
     
    138155      <Version Value="2"/>
    139156    </PublishOptions>
     157    <CustomOptions Items="ExternHelp" Version="2">
     158      <_ExternHelp Items="Count"/>
     159    </CustomOptions>
    140160  </Package>
    141161</CONFIG>
  • trunk/Packages/TemplateGenerics/TemplateGenerics.pas

    r84 r90  
    33 }
    44
    5 unit TemplateGenerics; 
     5unit TemplateGenerics;
    66
    77interface
     
    1010  SpecializedList, SpecializedDictionary, SpecializedStack, SpecializedTree,
    1111  SpecializedQueue, SpecializedSet, SpecializedPoint, SpecializedMatrix,
    12   SpecializedBitmap, LazarusPackageIntf;
     12  SpecializedBitmap, SpecializedStream, SpecializedRectangle,
     13  UBinarySerializer, LazarusPackageIntf;
    1314
    1415implementation
    1516
    16 procedure Register; 
     17procedure Register;
    1718begin
    18 end; 
     19end;
    1920
    2021initialization
    21   RegisterPackage('TemplateGenerics', @Register); 
     22  RegisterPackage('TemplateGenerics', @Register);
    2223end.
Note: See TracChangeset for help on using the changeset viewer.