Changeset 90


Ignore:
Timestamp:
Nov 8, 2010, 12:29:19 PM (14 years ago)
Author:
george
Message:
  • Modified: Last and First functions of TGList changed to properties.
Location:
Generics
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • Generics/NativeGenerics/units/GenericList.pas

    r67 r90  
    99
    1010resourcestring
    11   SNotImplemented = 'Not implememnted';
     11  SNotImplemented = 'Not implemented';
    1212
    1313type
  • Generics/TemplateGenerics/Demo/Demo.lpi

    r88 r90  
    3838      </Item2>
    3939    </RequiredPackages>
    40     <Units Count="91">
     40    <Units Count="94">
    4141      <Unit0>
    4242        <Filename Value="Demo.lpr"/>
     
    4646        <TopLine Value="1"/>
    4747        <CursorPos X="26" Y="8"/>
    48         <UsageCount Value="63"/>
     48        <UsageCount Value="64"/>
    4949        <DefaultSyntaxHighlighter Value="Delphi"/>
    5050      </Unit0>
     
    5959        <WindowIndex Value="0"/>
    6060        <TopLine Value="1"/>
    61         <CursorPos X="35" Y="10"/>
    62         <UsageCount Value="63"/>
     61        <CursorPos X="15" Y="33"/>
     62        <UsageCount Value="64"/>
    6363        <Loaded Value="True"/>
    6464        <LoadedDesigner Value="True"/>
     
    679679      <Unit78>
    680680        <Filename Value="../Generic/GenericList.inc"/>
    681         <EditorIndex Value="13"/>
     681        <EditorIndex Value="16"/>
    682682        <WindowIndex Value="0"/>
    683683        <TopLine Value="58"/>
    684684        <CursorPos X="86" Y="71"/>
    685         <UsageCount Value="13"/>
     685        <UsageCount Value="14"/>
    686686        <Loaded Value="True"/>
    687687      </Unit78>
    688688      <Unit79>
    689689        <Filename Value="../Generic/GenericDictionary.inc"/>
    690         <EditorIndex Value="1"/>
     690        <EditorIndex Value="3"/>
    691691        <WindowIndex Value="0"/>
    692692        <TopLine Value="1"/>
    693693        <CursorPos X="1" Y="10"/>
    694         <UsageCount Value="13"/>
     694        <UsageCount Value="14"/>
    695695        <Loaded Value="True"/>
    696696      </Unit79>
    697697      <Unit80>
    698698        <Filename Value="../Generic/GenericObjectList.inc"/>
    699         <EditorIndex Value="3"/>
     699        <EditorIndex Value="5"/>
    700700        <WindowIndex Value="0"/>
    701701        <TopLine Value="34"/>
    702702        <CursorPos X="8" Y="56"/>
    703         <UsageCount Value="13"/>
     703        <UsageCount Value="14"/>
    704704        <Loaded Value="True"/>
    705705      </Unit80>
    706706      <Unit81>
    707707        <Filename Value="../Generic/GenericQueue.inc"/>
    708         <EditorIndex Value="6"/>
     708        <EditorIndex Value="9"/>
    709709        <WindowIndex Value="0"/>
    710710        <TopLine Value="1"/>
    711711        <CursorPos X="1" Y="3"/>
    712         <UsageCount Value="13"/>
     712        <UsageCount Value="14"/>
    713713        <Loaded Value="True"/>
    714714      </Unit81>
    715715      <Unit82>
    716716        <Filename Value="../Generic/GenericSet.inc"/>
    717         <EditorIndex Value="11"/>
     717        <EditorIndex Value="14"/>
    718718        <WindowIndex Value="0"/>
    719719        <TopLine Value="1"/>
    720720        <CursorPos X="42" Y="11"/>
    721         <UsageCount Value="13"/>
     721        <UsageCount Value="14"/>
    722722        <Loaded Value="True"/>
    723723      </Unit82>
    724724      <Unit83>
    725725        <Filename Value="../Generic/GenericStack.inc"/>
    726         <EditorIndex Value="10"/>
     726        <EditorIndex Value="13"/>
    727727        <WindowIndex Value="0"/>
    728728        <TopLine Value="1"/>
    729729        <CursorPos X="1" Y="3"/>
    730         <UsageCount Value="13"/>
     730        <UsageCount Value="14"/>
    731731        <Loaded Value="True"/>
    732732      </Unit83>
    733733      <Unit84>
    734734        <Filename Value="../Generic/GenericTree.inc"/>
    735         <EditorIndex Value="12"/>
     735        <EditorIndex Value="15"/>
    736736        <WindowIndex Value="0"/>
    737737        <TopLine Value="1"/>
    738738        <CursorPos X="22" Y="30"/>
    739         <UsageCount Value="13"/>
     739        <UsageCount Value="14"/>
    740740        <Loaded Value="True"/>
    741741      </Unit84>
     
    743743        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    744744        <UnitName Value="SpecializedDictionary"/>
    745         <EditorIndex Value="8"/>
     745        <EditorIndex Value="11"/>
    746746        <WindowIndex Value="0"/>
    747747        <TopLine Value="1"/>
    748748        <CursorPos X="1" Y="13"/>
    749         <UsageCount Value="12"/>
     749        <UsageCount Value="13"/>
    750750        <Loaded Value="True"/>
    751751      </Unit85>
     
    753753        <Filename Value="../Specialized/SpecializedStack.pas"/>
    754754        <UnitName Value="SpecializedStack"/>
    755         <EditorIndex Value="9"/>
     755        <EditorIndex Value="12"/>
    756756        <WindowIndex Value="0"/>
    757757        <TopLine Value="1"/>
    758758        <CursorPos X="1" Y="13"/>
    759         <UsageCount Value="11"/>
     759        <UsageCount Value="12"/>
    760760        <Loaded Value="True"/>
    761761      </Unit86>
     
    763763        <Filename Value="../Specialized/SpecializedTree.pas"/>
    764764        <UnitName Value="SpecializedTree"/>
    765         <EditorIndex Value="2"/>
     765        <EditorIndex Value="4"/>
    766766        <WindowIndex Value="0"/>
    767767        <TopLine Value="1"/>
    768768        <CursorPos X="1" Y="11"/>
    769         <UsageCount Value="11"/>
     769        <UsageCount Value="12"/>
    770770        <Loaded Value="True"/>
    771771      </Unit87>
    772772      <Unit88>
    773773        <Filename Value="../Generic/GenericRange.inc"/>
    774         <EditorIndex Value="7"/>
     774        <EditorIndex Value="10"/>
    775775        <WindowIndex Value="0"/>
    776776        <TopLine Value="1"/>
    777777        <CursorPos X="1" Y="44"/>
    778         <UsageCount Value="11"/>
     778        <UsageCount Value="12"/>
    779779        <Loaded Value="True"/>
    780780      </Unit88>
     
    782782        <Filename Value="../Specialized/SpecializedQueue.pas"/>
    783783        <UnitName Value="SpecializedQueue"/>
    784         <EditorIndex Value="4"/>
     784        <EditorIndex Value="6"/>
    785785        <WindowIndex Value="0"/>
    786786        <TopLine Value="1"/>
    787787        <CursorPos X="1" Y="13"/>
    788         <UsageCount Value="11"/>
     788        <UsageCount Value="12"/>
    789789        <Loaded Value="True"/>
    790790      </Unit89>
     
    792792        <Filename Value="../Specialized/SpecializedSet.pas"/>
    793793        <UnitName Value="SpecializedSet"/>
    794         <EditorIndex Value="5"/>
     794        <EditorIndex Value="8"/>
    795795        <WindowIndex Value="0"/>
    796796        <TopLine Value="1"/>
    797797        <CursorPos X="1" Y="13"/>
     798        <UsageCount Value="12"/>
     799        <Loaded Value="True"/>
     800      </Unit90>
     801      <Unit91>
     802        <Filename Value="../Generic/GenericPoint.inc"/>
     803        <EditorIndex Value="1"/>
     804        <WindowIndex Value="0"/>
     805        <TopLine Value="1"/>
     806        <CursorPos X="33" Y="5"/>
    798807        <UsageCount Value="11"/>
    799808        <Loaded Value="True"/>
    800       </Unit90>
     809      </Unit91>
     810      <Unit92>
     811        <Filename Value="../Specialized/SpecializedPoint.pas"/>
     812        <UnitName Value="SpecializedPoint"/>
     813        <EditorIndex Value="2"/>
     814        <WindowIndex Value="0"/>
     815        <TopLine Value="1"/>
     816        <CursorPos X="1" Y="1"/>
     817        <UsageCount Value="11"/>
     818        <Loaded Value="True"/>
     819      </Unit92>
     820      <Unit93>
     821        <Filename Value="../Specialized/SpecializedObjectList.pas"/>
     822        <UnitName Value="SpecializedObjectList"/>
     823        <EditorIndex Value="7"/>
     824        <WindowIndex Value="0"/>
     825        <TopLine Value="1"/>
     826        <CursorPos X="1" Y="1"/>
     827        <UsageCount Value="11"/>
     828        <Loaded Value="True"/>
     829      </Unit93>
    801830    </Units>
    802     <JumpHistory Count="29" HistoryIndex="28">
     831    <JumpHistory Count="30" HistoryIndex="29">
    803832      <Position1>
    804833        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    805         <Caret Line="22" Column="23" TopLine="1"/>
     834        <Caret Line="19" Column="42" TopLine="1"/>
    806835      </Position1>
    807836      <Position2>
    808837        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    809         <Caret Line="19" Column="42" TopLine="1"/>
     838        <Caret Line="18" Column="24" TopLine="1"/>
    810839      </Position2>
    811840      <Position3>
    812841        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    813         <Caret Line="18" Column="24" TopLine="1"/>
     842        <Caret Line="19" Column="43" TopLine="1"/>
    814843      </Position3>
    815844      <Position4>
    816845        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    817         <Caret Line="19" Column="43" TopLine="1"/>
     846        <Caret Line="39" Column="5" TopLine="3"/>
    818847      </Position4>
    819848      <Position5>
    820         <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    821         <Caret Line="39" Column="5" TopLine="3"/>
     849        <Filename Value="../Specialized/SpecializedStack.pas"/>
     850        <Caret Line="19" Column="36" TopLine="1"/>
    822851      </Position5>
    823852      <Position6>
    824853        <Filename Value="../Specialized/SpecializedStack.pas"/>
    825         <Caret Line="19" Column="36" TopLine="1"/>
     854        <Caret Line="5" Column="1" TopLine="1"/>
    826855      </Position6>
    827856      <Position7>
    828         <Filename Value="../Specialized/SpecializedStack.pas"/>
    829         <Caret Line="5" Column="1" TopLine="1"/>
     857        <Filename Value="../Generic/GenericStack.inc"/>
     858        <Caret Line="28" Column="34" TopLine="13"/>
    830859      </Position7>
    831860      <Position8>
    832         <Filename Value="../Generic/GenericStack.inc"/>
    833         <Caret Line="28" Column="34" TopLine="13"/>
     861        <Filename Value="UMainForm.pas"/>
     862        <Caret Line="9" Column="7" TopLine="1"/>
    834863      </Position8>
    835864      <Position9>
    836865        <Filename Value="UMainForm.pas"/>
    837         <Caret Line="9" Column="7" TopLine="1"/>
     866        <Caret Line="10" Column="20" TopLine="1"/>
    838867      </Position9>
    839868      <Position10>
    840869        <Filename Value="UMainForm.pas"/>
    841         <Caret Line="10" Column="20" TopLine="1"/>
     870        <Caret Line="20" Column="49" TopLine="1"/>
    842871      </Position10>
    843872      <Position11>
    844873        <Filename Value="UMainForm.pas"/>
    845         <Caret Line="20" Column="49" TopLine="1"/>
     874        <Caret Line="22" Column="35" TopLine="1"/>
    846875      </Position11>
    847876      <Position12>
    848877        <Filename Value="UMainForm.pas"/>
    849         <Caret Line="22" Column="35" TopLine="1"/>
     878        <Caret Line="110" Column="12" TopLine="81"/>
    850879      </Position12>
    851880      <Position13>
    852881        <Filename Value="UMainForm.pas"/>
    853         <Caret Line="110" Column="12" TopLine="81"/>
     882        <Caret Line="133" Column="9" TopLine="103"/>
    854883      </Position13>
    855884      <Position14>
    856885        <Filename Value="UMainForm.pas"/>
    857         <Caret Line="133" Column="9" TopLine="103"/>
     886        <Caret Line="162" Column="7" TopLine="136"/>
    858887      </Position14>
    859888      <Position15>
    860889        <Filename Value="UMainForm.pas"/>
    861         <Caret Line="162" Column="7" TopLine="136"/>
     890        <Caret Line="171" Column="1" TopLine="152"/>
    862891      </Position15>
    863892      <Position16>
    864893        <Filename Value="UMainForm.pas"/>
    865         <Caret Line="171" Column="1" TopLine="152"/>
     894        <Caret Line="190" Column="7" TopLine="165"/>
    866895      </Position16>
    867896      <Position17>
    868897        <Filename Value="UMainForm.pas"/>
    869         <Caret Line="190" Column="7" TopLine="165"/>
     898        <Caret Line="188" Column="5" TopLine="168"/>
    870899      </Position17>
    871900      <Position18>
    872901        <Filename Value="UMainForm.pas"/>
    873         <Caret Line="188" Column="5" TopLine="168"/>
     902        <Caret Line="393" Column="5" TopLine="364"/>
    874903      </Position18>
    875904      <Position19>
    876         <Filename Value="UMainForm.pas"/>
    877         <Caret Line="393" Column="5" TopLine="364"/>
     905        <Filename Value="../Specialized/SpecializedQueue.pas"/>
     906        <Caret Line="33" Column="32" TopLine="1"/>
    878907      </Position19>
    879908      <Position20>
    880909        <Filename Value="../Specialized/SpecializedQueue.pas"/>
    881         <Caret Line="33" Column="32" TopLine="1"/>
     910        <Caret Line="20" Column="34" TopLine="1"/>
    882911      </Position20>
    883912      <Position21>
    884         <Filename Value="../Specialized/SpecializedQueue.pas"/>
    885         <Caret Line="20" Column="34" TopLine="1"/>
     913        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
     914        <Caret Line="22" Column="36" TopLine="1"/>
    886915      </Position21>
    887916      <Position22>
     917        <Filename Value="UMainForm.pas"/>
     918        <Caret Line="469" Column="3" TopLine="439"/>
     919      </Position22>
     920      <Position23>
     921        <Filename Value="../Generic/GenericObjectList.inc"/>
     922        <Caret Line="14" Column="55" TopLine="1"/>
     923      </Position23>
     924      <Position24>
     925        <Filename Value="UMainForm.pas"/>
     926        <Caret Line="89" Column="20" TopLine="70"/>
     927      </Position24>
     928      <Position25>
    888929        <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    889930        <Caret Line="22" Column="36" TopLine="1"/>
    890       </Position22>
    891       <Position23>
    892         <Filename Value="UMainForm.pas"/>
    893         <Caret Line="469" Column="3" TopLine="439"/>
    894       </Position23>
    895       <Position24>
    896         <Filename Value="../Generic/GenericObjectList.inc"/>
    897         <Caret Line="14" Column="55" TopLine="1"/>
    898       </Position24>
    899       <Position25>
    900         <Filename Value="UMainForm.pas"/>
    901         <Caret Line="89" Column="20" TopLine="70"/>
    902931      </Position25>
    903932      <Position26>
    904         <Filename Value="../Specialized/SpecializedDictionary.pas"/>
    905         <Caret Line="22" Column="36" TopLine="1"/>
     933        <Filename Value="../Generic/GenericTree.inc"/>
     934        <Caret Line="33" Column="25" TopLine="12"/>
    906935      </Position26>
    907936      <Position27>
    908         <Filename Value="../Generic/GenericTree.inc"/>
    909         <Caret Line="33" Column="25" TopLine="12"/>
     937        <Filename Value="../Specialized/SpecializedTree.pas"/>
     938        <Caret Line="82" Column="5" TopLine="47"/>
    910939      </Position27>
    911940      <Position28>
    912         <Filename Value="../Specialized/SpecializedTree.pas"/>
    913         <Caret Line="82" Column="5" TopLine="47"/>
     941        <Filename Value="UMainForm.pas"/>
     942        <Caret Line="360" Column="51" TopLine="342"/>
    914943      </Position28>
    915944      <Position29>
    916         <Filename Value="UMainForm.pas"/>
    917         <Caret Line="360" Column="51" TopLine="342"/>
     945        <Filename Value="../Generic/GenericPoint.inc"/>
     946        <Caret Line="6" Column="1" TopLine="1"/>
    918947      </Position29>
     948      <Position30>
     949        <Filename Value="../Generic/GenericPoint.inc"/>
     950        <Caret Line="12" Column="62" TopLine="1"/>
     951      </Position30>
    919952    </JumpHistory>
    920953  </ProjectOptions>
  • Generics/TemplateGenerics/Demo/UMainForm.lfm

    r88 r90  
    11object MainForm: TMainForm
    2   Left = 379
     2  Left = 388
    33  Height = 397
    4   Top = 129
     4  Top = 121
    55  Width = 478
    66  Caption = 'Template generics demo'
     
    6868    Left = 8
    6969    Height = 25
    70     Top = 352
     70    Top = 367
    7171    Width = 128
    7272    Caption = 'Benchmark list'
     
    8686    Left = 10
    8787    Height = 25
    88     Top = 320
     88    Top = 336
    8989    Width = 126
    9090    Caption = 'Benchmark dictionary'
  • Generics/TemplateGenerics/Generic/GenericList.inc

    r84 r90  
    1414    function Get(Index: TGListIndex): TGListItem;
    1515    function GetCapacity: TGListIndex;
     16    function GetLast: TGListItem;
     17    function GetFirst: TGListItem;
    1618    procedure SetCapacity(const AValue: TGListIndex);
     19    procedure SetLast(AValue: TGListItem);
     20    procedure SetFirst(AValue: TGListItem);
    1721    procedure Put(Index: TGListIndex; const AValue: TGListItem); virtual;
    1822    procedure SetCount(const AValue: TGListIndex);
    1923    procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
    2024  public
    21     // All items
    22     procedure Reverse;
     25    function Add(Item: TGListItem): TGListIndex;
     26    procedure AddArray(Values: array of TGListItem);
     27    procedure AddList(List: TGList);
     28    procedure Assign(List: TGList);
    2329    procedure Clear; virtual;
     30    procedure Contract;
     31    procedure Delete(Index: TGListIndex); virtual;
     32    procedure DeleteItems(Index, Count: TGListIndex);
     33    function Equals(List: TGList): Boolean;
    2434    procedure Expand;
    25     procedure Contract;
    26     procedure Sort(Compare: TGListSortCompare);
    27     function Implode(Separator: string; Converter: TGListStringConverter): string;
    28     // Many items
    29     procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    30     procedure DeleteItems(Index, Count: TGListIndex);
    31     procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
    32     // One item
    33     function Add(Item: TGListItem): TGListIndex;
    34     procedure Delete(Index: TGListIndex); virtual;
    3535    function Extract(Item: TGListItem): TGListItem;
    3636    procedure Exchange(Index1, Index2: TGListIndex);
    37     function First: TGListItem;
     37    property First: TGListItem read GetFirst write SetFirst;
     38    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
     39    function Implode(Separator: string; Converter: TGListStringConverter): string;
    3840    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex;
     41    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
    3942    procedure Insert(Index: TGListIndex; Item: TGListItem);
    40     function Last: TGListItem;
     43    procedure InsertList(Index: TGListIndex; List: TGList);
     44    procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
    4145    procedure Move(CurIndex, NewIndex: TGListIndex);
     46    procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    4247    function Remove(Item: TGListItem): TGListIndex;
    43     property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
    44     // List
    45     procedure AddList(List: TGList);
    46     procedure Assign(List: TGList);
    47     function Equals(List: TGList): Boolean;
    48     procedure InsertList(Index: TGListIndex; List: TGList);
    49     function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
    50     // Other
     48    procedure Reverse;
     49    procedure Sort(Compare: TGListSortCompare);
     50    procedure SetArray(Values: array of TGListItem);
    5151    property Count: TGListIndex read FCount write SetCount;
    5252    property Capacity: TGListIndex read GetCapacity write SetCapacity;
    53     // Array
    54     procedure AddArray(Values: array of TGListItem);
    55     procedure SetArray(Values: array of TGListItem);
    56     procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
     53    property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
     54    property Last: TGListItem read GetLast write SetLast;
    5755  end;
    5856 
     
    172170end;
    173171
    174 function TGList.First: TGListItem;
    175 begin
    176   if FCount = 0 then
    177     raise EListError.CreateFmt(SListIndexError, [0])
    178   else
    179     Result := Items[0];
    180 end;
    181 
    182172function TGList.IndexOf(Item: TGListItem; Start: TGListIndex): TGListIndex;
    183173begin
     
    230220end;
    231221
    232 function TGList.Last: TGListItem;
     222function TGList.GetLast: TGListItem;
    233223begin
    234224  if FCount = 0 then
     
    236226  else
    237227    Result := Items[FCount - 1];
     228end;
     229
     230procedure TGList.SetLast(AValue: TGListItem);
     231begin
     232  if FCount = 0 then
     233    raise EListError.CreateFmt(SListIndexError, [0])
     234  else
     235    Items[FCount - 1] := AValue;
     236end;
     237
     238function TGList.GetFirst: TGListItem;
     239begin
     240  if FCount = 0 then
     241    raise EListError.CreateFmt(SListIndexError, [0])
     242  else
     243    Result := Items[0];
     244end;
     245
     246procedure TGList.SetFirst(AValue: TGListItem);
     247begin
     248  if FCount = 0 then
     249    raise EListError.CreateFmt(SListIndexError, [0])
     250  else
     251    Items[0] := AValue;
    238252end;
    239253
  • Generics/TemplateGenerics/TemplateGenerics.lpk

    r87 r90  
    1919    <Description Value="Generic classes implemented as templates."/>
    2020    <Version Minor="2"/>
    21     <Files Count="16">
     21    <Files Count="18">
    2222      <Item1>
    2323        <Filename Value="ReadMe.txt"/>
     
    8484        <UnitName Value="SpecializedObjectList"/>
    8585      </Item16>
     86      <Item17>
     87        <Filename Value="Generic\GenericPoint.inc"/>
     88      </Item17>
     89      <Item18>
     90        <Filename Value="Specialized\SpecializedPoint.pas"/>
     91        <UnitName Value="SpecializedPoint"/>
     92      </Item18>
    8693    </Files>
    8794    <Type Value="RunAndDesignTime"/>
  • Generics/TemplateGenerics/TemplateGenerics.pas

    r87 r90  
    99uses
    1010    SpecializedList, SpecializedDictionary, SpecializedStack, SpecializedTree,
    11   SpecializedQueue, SpecializedSet, SpecializedObjectList, LazarusPackageIntf;
     11  SpecializedQueue, SpecializedSet, SpecializedObjectList, SpecializedPoint,
     12  LazarusPackageIntf;
    1213
    1314implementation
Note: See TracChangeset for help on using the changeset viewer.