Changeset 26 for trunk/Compiler


Ignore:
Timestamp:
Dec 8, 2010, 10:00:30 AM (14 years ago)
Author:
george
Message:
  • Removed: Generic template usage form project code. Replaced by TListObject descendants.
Location:
trunk/Compiler
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/Analyze/UAnalyzer.pas

    r25 r26  
    88uses
    99  SysUtils, Variants, Classes, Contnrs,
    10   Dialogs, USourceCode, FileUtil;
     10  Dialogs, USourceCode, FileUtil, SpecializedObjectList;
    1111
    1212type
     
    8282
    8383  // TListAnalyzer = TGObjectList<Integer, TAnalyzer>
    84   {$DEFINE TGObjectListIndex := Integer}
    85   {$DEFINE TGObjectListItem := TAnalyzer}
    86   {$DEFINE TGObjectListList := TObjectListAnalyzer}
    87   {$DEFINE TGObjectList := TListAnalyzer}
    88   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareAnalyzer}
    89   {$DEFINE TGObjectListStringConverter := TObjectListStringConverterAnalyzer}
    90   {$DEFINE INTERFACE}
    91   {$I 'GenericObjectList.inc'}
     84  TListAnalyzer = class(TListObject);
    9285
    9386resourcestring
     
    9588
    9689implementation
    97 
    98 {$DEFINE IMPLEMENTATION_USES}
    99 {$I 'GenericObjectList.inc'}
    100 
    101 // TListAnalyzer = TGObjectList<Integer, TAnalyzer>
    102 {$DEFINE TGObjectListIndex := Integer}
    103 {$DEFINE TGObjectListItem := TAnalyzer}
    104 {$DEFINE TGObjectListList := TObjectListAnalyzer}
    105 {$DEFINE TGObjectList := TListAnalyzer}
    106 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareAnalyzer}
    107 {$DEFINE TGObjectListStringConverter := TObjectListStringConverterAnalyzer}
    108 {$DEFINE IMPLEMENTATION}
    109 {$I 'GenericObjectList.inc'}
    11090
    11191{ TAnalyzer }
  • trunk/Compiler/Analyze/UAnalyzerPascal.pas

    r24 r26  
    156156        I := 1;
    157157        while (I < Expressions.Count - 1) do begin
    158           if not Expressions[I].Associated and
    159             (Expressions[I].OperatorName = Operators[II]) then
     158          if not TExpression(Expressions[I]).Associated and
     159            (TExpression(Expressions[I]).OperatorName = Operators[II]) then
    160160          begin
    161             Expressions[I].Associated := True;
    162             Expressions[I - 1].SubItems.Last := Expressions[I];
    163             Expressions[I + 1].SubItems.First := Expressions[I];
     161            TExpression(Expressions[I]).Associated := True;
     162            TExpression(Expressions[I - 1]).SubItems.Last := Expressions[I];
     163            TExpression(Expressions[I + 1]).SubItems.First := Expressions[I];
    164164            Expressions.Delete(I);
    165165          end else Inc(I);
    166166        end;
    167167      end;
    168       if Assigned(Expressions.First.SubItems.Last) then
    169         Assign(Expressions.First.SubItems.Last);
    170       Expressions.First.SubItems.Last := nil;
     168      if Assigned(TExpression(Expressions.First).SubItems.Last) then
     169        Assign(TExpression(TExpression(Expressions.First).SubItems.Last));
     170      TExpression(Expressions.First).SubItems.Last := nil;
    171171      //ShowMessage(IntToStr(Expressions.Count));
    172172      if Expressions.Count > 1 then
    173         Expressions[1].SubItems.First := nil;
     173        TExpression(Expressions[1]).SubItems.First := nil;
    174174    end;
    175175  finally
     
    191191    ParseExpression(NewExpression);
    192192
    193     Expressions.Last.SubItems.Last := NewExpression;
    194     with Expressions.Items[Expressions.Add(TExpression.Create)] do
     193    TExpression(Expressions.Last).SubItems.Last := NewExpression;
     194    with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do
    195195    begin
    196196      CommonBlock := SourceCode.CommonBlock;
     
    207207  if IsOperator(NextToken) then begin
    208208    // Operator
    209     Expressions.Last.OperatorName := ReadToken;
    210     Expressions.Last.NodeType := ntOperator;
     209    TExpression(Expressions.Last).OperatorName := ReadToken;
     210    TExpression(Expressions.Last).NodeType := ntOperator;
    211211    Result := True;
    212212  end else Result := False;
     
    320320    end;
    321321    if Assigned(NewExpression) then begin
    322       Expressions.Last.SubItems.Last := NewExpression;
     322      TExpression(Expressions.Last).SubItems.Last := NewExpression;
    323323      with Expressions.Items[Expressions.Add(TExpression.Create)] do
    324324      begin
     
    672672      if UseType is TTypeRecord then begin
    673673        UseFunction := TTypeRecord(UseType).CommonBlock.Functions.Search(UseName);
     674        if not Assigned(UseFunction) then begin
     675          ErrorMessage(SFunctionNotDeclared, [UseName]);
     676          Exit;
     677        end;
     678      end else
     679      if UseType is TTypeClass then begin
     680        UseFunction := TTypeClass(UseType).CommonBlock.Functions.Search(UseName);
    674681        if not Assigned(UseFunction) then begin
    675682          ErrorMessage(SFunctionNotDeclared, [UseName]);
     
    880887        with Call do begin
    881888          ParameterExpression.Add(TExpression.Create);
    882           ParameterExpression.Last.CommonBlock := SourceCode;
    883           ParseExpression(ParameterExpression.Last);
     889          TExpression(ParameterExpression.Last).CommonBlock := SourceCode;
     890          ParseExpression(TExpression(ParameterExpression.Last));
    884891        end;
    885892        Expect(')');
     
    12461253  ): Boolean;
    12471254var
     1255  Visibility: TTypeVisibility;
     1256  SectionType: TCommonBlockSection;
    12481257  NewType2: TType;
    12491258  TempType: TType;
     
    12511260  if NextToken = 'class' then begin
    12521261    Expect('class');
     1262    SectionType := cbsVariable;
     1263    Visibility := tvPublic;
    12531264    TempType := NewType;
    12541265    NewType := TTypeClass.Create;
    12551266    NewType.Assign(TempType);
    12561267    TempType.Free;
    1257     if NextToken <> ';' then begin
    1258       while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do
    1259       begin
    1260         if ParseType(NewType.Parent, NewType2, True, ':') then begin
    1261           NewType2.Parent := NewType.Parent;
    1262           TTypeClass(NewType).Items.Add(NewType2);
    1263         end;
    1264         Expect(';');
    1265       end;
    1266       Expect('end');
    1267     end;
     1268    TTypeClass(NewType).CommonBlock.Parent := NewType.Parent.Parent;
     1269    while (NextToken <> 'end') and (NextTokenType <> ttEndOfFile) do begin
     1270      // Visibility sections
     1271      if NextToken = 'public' then begin
     1272        Expect('public');
     1273        Visibility := tvPublic;
     1274      end else
     1275      if NextToken = 'private' then begin
     1276        Expect('private');
     1277        Visibility := tvPrivate;
     1278      end else
     1279      if NextToken = 'published' then begin
     1280        Expect('published');
     1281        Visibility := tvPublished;
     1282      end else
     1283      if NextToken = 'protected' then begin
     1284        Expect('protected');
     1285        Visibility := tvProtected;
     1286      end else
     1287
     1288      // Definition sections
     1289      if NextToken = 'var' then begin
     1290        Expect('var');
     1291        SectionType := cbsVariable;
     1292      end else
     1293      if NextToken = 'const' then begin
     1294        Expect('const');
     1295        SectionType := cbsConstant;
     1296      end else
     1297      if NextToken = 'type' then begin
     1298        Expect('type');
     1299        SectionType := cbsType;
     1300      end;
     1301
     1302      if NextToken = 'procedure' then
     1303        ParseFunction(TTypeClass(NewType).CommonBlock.Functions, True)
     1304      else if NextToken = 'function' then
     1305        ParseFunction(TTypeClass(NewType).CommonBlock.Functions, True)
     1306      else
     1307      if SectionType = cbsConstant then begin
     1308        ParseConstant(TTypeClass(NewType).CommonBlock.Constants, True)
     1309      end else
     1310      if SectionType = cbsVariable then begin
     1311        ParseVariable(TTypeClass(NewType).CommonBlock.Variables, True);
     1312      end else
     1313      if SectionType = cbsType then
     1314      with TTypeClass(NewType).CommonBlock do begin
     1315        if ParseType(Types, NewType2, True, '=') then begin
     1316          Types.Add(NewType2);
     1317          NewType2.Parent := Types;
     1318        end;
     1319      end;
     1320    end;
     1321    Expect('end');
    12681322    Result := True;
    12691323  end else Result := False;
  • trunk/Compiler/Produce/UProducer.pas

    r17 r26  
    77
    88uses
    9   USourceCode, Classes, SysUtils, StrUtils;
     9  USourceCode, Classes, SysUtils, StrUtils, SpecializedObjectList;
    1010
    1111type
     
    2727
    2828  // TListProducer = TGObjectList<Integer, TProducer>
    29   {$DEFINE TGObjectListIndex := Integer}
    30   {$DEFINE TGObjectListItem := TProducer}
    31   {$DEFINE TGObjectListList := TObjectListProducer}
    32   {$DEFINE TGObjectList := TListProducer}
    33   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareProducer}
    34   {$DEFINE TGObjectListStringConverter := TObjectListStringConverterProducer}
    35   {$DEFINE INTERFACE}
    36   {$I 'GenericObjectList.inc'}
     29  TListProducer = class(TListObject);
    3730
    3831implementation
    39 
    40 {$DEFINE IMPLEMENTATION_USES}
    41 {$I 'GenericObjectList.inc'}
    42 
    43 // TListProducer = TGObjectList<Integer, TProducer>
    44 {$DEFINE TGObjectListIndex := Integer}
    45 {$DEFINE TGObjectListItem := TProducer}
    46 {$DEFINE TGObjectListList := TObjectListProducer}
    47 {$DEFINE TGObjectList := TListProducer}
    48 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareProducer}
    49 {$DEFINE TGObjectListStringConverter := TObjectListStringConverterProducer}
    50 {$DEFINE IMPLEMENTATION}
    51 {$I 'GenericObjectList.inc'}
    5232
    5333{ TProducer }
  • trunk/Compiler/Produce/UProducerPascal.pas

    r21 r26  
    137137    with TTypeRecord(AType).CommonBlock do
    138138    for I := 0 to Variables.Count - 1 do begin
    139       Emit(Variables[I].Name + ': ');
    140       GenerateType(Variables[I].ValueType);
     139      Emit(TVariable(Variables[I]).Name + ': ');
     140      GenerateType(TVariable(Variables[I]).ValueType);
    141141      EmitLn(';');
    142142    end;
     
    259259    Inc(Indetation);
    260260    for I := 0 to Constants.Count - 1 do
    261       GenerateConstant(Constants[I]);
     261      GenerateConstant(TConstant(Constants[I]));
    262262    Dec(Indetation);
    263263    Emit('');
  • trunk/Compiler/TranspascalCompiler.lpk

    r17 r26  
    1212      </SearchPaths>
    1313      <Other>
     14        <CompilerMessages>
     15          <IgnoredMessages idx5023="True" idx5024="True" idx5025="True" idx5026="True" idx5027="True" idx5028="True" idx5029="True" idx5030="True" idx5031="True"/>
     16        </CompilerMessages>
    1417        <CustomOptions Value="-dSINGLE_PRODUCER_"/>
    1518        <CompilerPath Value="$(CompPath)"/>
  • trunk/Compiler/USourceCode.pas

    r25 r26  
    5858
    5959  // TListExpression = TGObjectList<Integer, TExpression>
    60   {$DEFINE TGObjectListIndex := Integer}
    61   {$DEFINE TGObjectListItem := TExpression}
    62   {$DEFINE TGObjectListList := TObjectListExpression}
    63   {$DEFINE TGObjectList := TListExpression}
    64   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareExpression}
    65   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterExpression}
    66   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterExpression}
    67   {$DEFINE INTERFACE}
    68   {$I 'GenericObjectList.inc'}
     60  TListExpression = class(TListObject);
    6961
    7062  { TFunctionCall }
     
    129121
    130122  // TListCaseOfEndBranche = TGObjectList<Integer, TCaseOfEndBranche>
    131   {$DEFINE TGObjectListIndex := Integer}
    132   {$DEFINE TGObjectListItem := TCaseOfEndBranche}
    133   {$DEFINE TGObjectListList := TObjectListCaseOfEndBranche}
    134   {$DEFINE TGObjectList := TListCaseOfEndBranche}
    135   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareCaseOfEndBranche}
    136   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterCaseOfEndBranche}
    137   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterCaseOfEndBranche}
    138   {$DEFINE INTERFACE}
    139   {$I 'GenericObjectList.inc'}
     123  TListCaseOfEndBranche = class(TListObject);
    140124
    141125  TCaseOfEnd = class(TCommand)
     
    158142
    159143  // TCommandList = TGObjectList<Integer, TCommand>
    160   {$DEFINE TGObjectListIndex := Integer}
    161   {$DEFINE TGObjectListItem := TCommand}
    162   {$DEFINE TGObjectListList := TObjectListCommand}
    163   {$DEFINE TGObjectList := TCommandList}
    164   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareCommand}
    165   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterCommand}
    166   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterCommand}
    167   {$DEFINE INTERFACE}
    168   {$I 'GenericObjectList.inc'}
     144  TCommandList = class(TListObject);
    169145
    170146  TCommonBlockSection = (cbsVariable, cbsType, cbsConstant);
     
    203179
    204180  // TListType = TGObjectList<Integer, TType>
    205   {$DEFINE TGObjectListIndex := Integer}
    206   {$DEFINE TGObjectListItem := TType}
    207   {$DEFINE TGObjectListList := TObjectListType}
    208   {$DEFINE TGObjectList := TListType}
    209   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareType}
    210   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterType}
    211   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterType}
    212   {$DEFINE INTERFACE}
    213   {$I 'GenericObjectList.inc'}
     181  TListType = class(TListObject);
    214182
    215183  TTypeList = class(TListType)
     
    247215
    248216  // TListEnumItem = TGObjectList<Integer, TEnumItem>
    249   {$DEFINE TGObjectListIndex := Integer}
    250   {$DEFINE TGObjectListItem := TEnumItem}
    251   {$DEFINE TGObjectListList := TObjectListEnumItem}
    252   {$DEFINE TGObjectList := TListEnumItem}
    253   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareEnumItem}
    254   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterEnumItem}
    255   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterEnumItem}
    256   {$DEFINE INTERFACE}
    257   {$I 'GenericObjectList.inc'}
     217  TListEnumItem = class(TListObject);
    258218
    259219  TTypeEnumeration = class(TType)
     
    266226
    267227  TTypeClass = class(TType)
    268     Items: TListType;
     228    CommonBlock: TCommonBlock;
    269229    constructor Create;
    270230    destructor Destroy; override;
     
    280240
    281241  // TListConstant = TGObjectList<Integer, TConstant>
    282   {$DEFINE TGObjectListIndex := Integer}
    283   {$DEFINE TGObjectListItem := TConstant}
    284   {$DEFINE TGObjectListList := TObjectListConstant}
    285   {$DEFINE TGObjectList := TListConstant}
    286   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareConstant}
    287   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterConstant}
    288   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterConstant}
    289   {$DEFINE INTERFACE}
    290   {$I 'GenericObjectList.inc'}
     242  TListConstant = class(TListObject);
    291243
    292244  TConstantList = class(TListConstant)
     
    304256
    305257  // TListVariable = TGObjectList<Integer, TVariable>
    306   {$DEFINE TGObjectListIndex := Integer}
    307   {$DEFINE TGObjectListItem := TVariable}
    308   {$DEFINE TGObjectListList := TObjectListVariable}
    309   {$DEFINE TGObjectList := TListVariable}
    310   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareVariable}
    311   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterVariable}
    312   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterVariable}
    313   {$DEFINE INTERFACE}
    314   {$I 'GenericObjectList.inc'}
     258  TListVariable = class(TListObject);
    315259
    316260  TVariableList = class(TListVariable)
     
    324268
    325269  // TListParameter = TGObjectList<Integer, TParameter>
    326   {$DEFINE TGObjectListIndex := Integer}
    327   {$DEFINE TGObjectListItem := TParameter}
    328   {$DEFINE TGObjectListList := TObjectListParameter}
    329   {$DEFINE TGObjectList := TListParameter}
    330   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareParameter}
    331   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterParameter}
    332   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterParameter}
    333   {$DEFINE INTERFACE}
    334   {$I 'GenericObjectList.inc'}
     270  TListParameter = class(TListObject);
    335271
    336272  TParameterList = class(TListParameter)
     
    373309
    374310  // TListFunction = TGObjectList<Integer, TFunction>
    375   {$DEFINE TGObjectListIndex := Integer}
    376   {$DEFINE TGObjectListItem := TFunction}
    377   {$DEFINE TGObjectListList := TObjectListFunction}
    378   {$DEFINE TGObjectList := TListFunction}
    379   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareFunction}
    380   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterFunction}
    381   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterFunction}
    382   {$DEFINE INTERFACE}
    383   {$I 'GenericObjectList.inc'}
     311  TListFunction = class(TListObject);
    384312
    385313  TFunctionList = class(TListFunction)
     
    397325
    398326  // TListUsedModule = TGObjectList<Integer, TUsedModule>
    399   {$DEFINE TGObjectListIndex := Integer}
    400   {$DEFINE TGObjectListItem := TUsedModule}
    401   {$DEFINE TGObjectListList := TObjectListUsedModule}
    402   {$DEFINE TGObjectList := TListUsedModule}
    403   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareUsedModule}
    404   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterUsedModule}
    405   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterUsedModule}
    406   {$DEFINE INTERFACE}
    407   {$I 'GenericObjectList.inc'}
     327  TListUsedModule = class(TListObject);
    408328
    409329  TUsedModuleList = class(TListUsedModule)
     
    452372
    453373  // TListModule = TGObjectList<Integer, TModule>
    454   {$DEFINE TGObjectListIndex := Integer}
    455   {$DEFINE TGObjectListItem := TModule}
    456   {$DEFINE TGObjectListList := TObjectListModule}
    457   {$DEFINE TGObjectList := TListModule}
    458   {$DEFINE TGObjectListSortCompare := TObjectListSortCompareModule}
    459   {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterModule}
    460   {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterModule}
    461   {$DEFINE INTERFACE}
    462   {$I 'GenericObjectList.inc'}
     374  TListModule = class(TListObject);
    463375
    464376  { TModuleList }
     
    491403implementation
    492404
    493 {$DEFINE IMPLEMENTATION_USES}
    494 {$I 'GenericObjectList.inc'}
    495 
    496 // TListExpression = TGObjectList<Integer, TExpression>
    497 {$DEFINE TGObjectListIndex := Integer}
    498 {$DEFINE TGObjectListItem := TExpression}
    499 {$DEFINE TGObjectListList := TObjectListExpression}
    500 {$DEFINE TGObjectList := TListExpression}
    501 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareExpression}
    502 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterExpression}
    503 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterExpression}
    504 {$DEFINE IMPLEMENTATION}
    505 {$I 'GenericObjectList.inc'}
    506 
    507 // TListCaseOfEndBranche = TGObjectList<Integer, TCaseOfEndBranche>
    508 {$DEFINE TGObjectListIndex := Integer}
    509 {$DEFINE TGObjectListItem := TCaseOfEndBranche}
    510 {$DEFINE TGObjectListList := TObjectListCaseOfEndBranche}
    511 {$DEFINE TGObjectList := TListCaseOfEndBranche}
    512 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareCaseOfEndBranche}
    513 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterCaseOfEndBranche}
    514 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterCaseOfEndBranche}
    515 {$DEFINE IMPLEMENTATION}
    516 {$I 'GenericObjectList.inc'}
    517 
    518 // TCommandList = TGObjectList<Integer, TCommand>
    519 {$DEFINE TGObjectListIndex := Integer}
    520 {$DEFINE TGObjectListItem := TCommand}
    521 {$DEFINE TGObjectListList := TObjectListCommand}
    522 {$DEFINE TGObjectList := TCommandList}
    523 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareCommand}
    524 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterCommand}
    525 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterCommand}
    526 {$DEFINE IMPLEMENTATION}
    527 {$I 'GenericObjectList.inc'}
    528 
    529 // TListEnumItem = TGObjectList<Integer, TEnumItem>
    530 {$DEFINE TGObjectListIndex := Integer}
    531 {$DEFINE TGObjectListItem := TEnumItem}
    532 {$DEFINE TGObjectListList := TObjectListEnumItem}
    533 {$DEFINE TGObjectList := TListEnumItem}
    534 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareEnumItem}
    535 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterEnumItem}
    536 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterEnumItem}
    537 {$DEFINE IMPLEMENTATION}
    538 {$I 'GenericObjectList.inc'}
    539 
    540 // TListType = TGObjectList<Integer, TType>
    541 {$DEFINE TGObjectListIndex := Integer}
    542 {$DEFINE TGObjectListItem := TType}
    543 {$DEFINE TGObjectListList := TObjectListType}
    544 {$DEFINE TGObjectList := TListType}
    545 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareType}
    546 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterType}
    547 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterType}
    548 {$DEFINE IMPLEMENTATION}
    549 {$I 'GenericObjectList.inc'}
    550 
    551 // TListConstant = TGObjectList<Integer, TConstant>
    552 {$DEFINE TGObjectListIndex := Integer}
    553 {$DEFINE TGObjectListItem := TConstant}
    554 {$DEFINE TGObjectListList := TObjectListConstant}
    555 {$DEFINE TGObjectList := TListConstant}
    556 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareConstant}
    557 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterConstant}
    558 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterConstant}
    559 {$DEFINE IMPLEMENTATION}
    560 {$I 'GenericObjectList.inc'}
    561 
    562 // TListVariable = TGObjectList<Integer, TVariable>
    563 {$DEFINE TGObjectListIndex := Integer}
    564 {$DEFINE TGObjectListItem := TVariable}
    565 {$DEFINE TGObjectListList := TObjectListVariable}
    566 {$DEFINE TGObjectList := TListVariable}
    567 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareVariable}
    568 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterVariable}
    569 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterVariable}
    570 {$DEFINE IMPLEMENTATION}
    571 {$I 'GenericObjectList.inc'}
    572 
    573 // TListParameter = TGObjectList<Integer, TParameter>
    574 {$DEFINE TGObjectListIndex := Integer}
    575 {$DEFINE TGObjectListItem := TParameter}
    576 {$DEFINE TGObjectListList := TObjectListParameter}
    577 {$DEFINE TGObjectList := TListParameter}
    578 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareParameter}
    579 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterParameter}
    580 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterParameter}
    581 {$DEFINE IMPLEMENTATION}
    582 {$I 'GenericObjectList.inc'}
    583 
    584 // TListFunction = TGObjectList<Integer, TFunction>
    585 {$DEFINE TGObjectListIndex := Integer}
    586 {$DEFINE TGObjectListItem := TFunction}
    587 {$DEFINE TGObjectListList := TObjectListFunction}
    588 {$DEFINE TGObjectList := TListFunction}
    589 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareFunction}
    590 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterFunction}
    591 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterFunction}
    592 {$DEFINE IMPLEMENTATION}
    593 {$I 'GenericObjectList.inc'}
    594 
    595 // TListUsedModule = TGObjectList<Integer, TUsedModule>
    596 {$DEFINE TGObjectListIndex := Integer}
    597 {$DEFINE TGObjectListItem := TUsedModule}
    598 {$DEFINE TGObjectListList := TObjectListUsedModule}
    599 {$DEFINE TGObjectList := TListUsedModule}
    600 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareUsedModule}
    601 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterUsedModule}
    602 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterUsedModule}
    603 {$DEFINE IMPLEMENTATION}
    604 {$I 'GenericObjectList.inc'}
    605 
    606 // TListModule = TGObjectList<Integer, TModule>
    607 {$DEFINE TGObjectListIndex := Integer}
    608 {$DEFINE TGObjectListItem := TModule}
    609 {$DEFINE TGObjectListList := TObjectListModule}
    610 {$DEFINE TGObjectList := TListModule}
    611 {$DEFINE TGObjectListSortCompare := TObjectListSortCompareModule}
    612 {$DEFINE TGObjectListToStringConverter := TObjectListToStringConverterModule}
    613 {$DEFINE TGObjectListFromStringConverter := TObjectListFromStringConverterModule}
    614 {$DEFINE IMPLEMENTATION}
    615 {$I 'GenericObjectList.inc'}
    616 
    617405{ TFunction }
    618406
     
    661449begin
    662450  I := 0;
    663   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
    664   if I < Count then Result := Items[I] else begin
     451  while (I < Count) and (LowerCase(TConstant(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
     452  if I < Count then Result := TConstant(Items[I]) else begin
    665453    if Assigned(Parent.Parent) then Result := Parent.Parent.Constants.Search(Name)
    666454      else begin
     
    742530  // Search in own list
    743531  I := 0;
    744   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
    745   if I < Count then Result := Items[I]
     532  while (I < Count) and (LowerCase(TType(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
     533  if I < Count then Result := TType(Items[I])
    746534    else Result := nil;
    747535
     
    769557  // Search in own list
    770558  I := 0;
    771   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
     559  while (I < Count) and (LowerCase(TVariable(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
    772560  if I < Count then Result := TVariable(Items[I]) else Result := nil;
    773561
     
    814602  // Search in own list
    815603  I := 0;
    816   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
    817   if I < Count then Result := Items[I] else Result := nil;
     604  while (I < Count) and (LowerCase(TFunction(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
     605  if I < Count then Result := TFunction(Items[I]) else Result := nil;
    818606
    819607  // Search parent block list
     
    865653begin
    866654  I := 0;
    867   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
    868   if I < Count then Result := Items[I]
     655  while (I < Count) and (LowerCase(TParameter(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
     656  if I < Count then Result := TParameter(Items[I])
    869657    else Result := nil;
    870658end;
     
    995783begin
    996784  I := 0;
    997   while (I < Count) and (LowerCase(Items[I].Name) <> LowerCase(Name)) do Inc(I);
    998   if I < Count then Result := Items[I] else Result := nil;
     785  while (I < Count) and (LowerCase(TModule(Items[I]).Name) <> LowerCase(Name)) do Inc(I);
     786  if I < Count then Result := TModule(Items[I])
     787    else Result := nil;
    999788end;
    1000789
     
    1010799    I := 0;
    1011800    while (I < UsedModules.Count) and (not Assigned(Result)) do begin
    1012       Result := UsedModules[I].Module.SearchVariable(Name, False);
     801      Result := TUsedModule(UsedModules[I]).Module.SearchVariable(Name, False);
    1013802      Inc(I);
    1014803    end;
     
    1030819    I := 0;
    1031820    while (I < UsedModules.Count) and (not Assigned(Result)) do begin
    1032       with UsedModules[I] do
     821      with TUsedModule(UsedModules[I]) do
    1033822        if Assigned(Module) then
    1034823        with Module do
     
    1048837    I := 0;
    1049838    while (I < UsedModules.Count) and (not Assigned(Result)) do begin
    1050     if Assigned(UsedModules[I].Module) then
    1051       Result := UsedModules[I].Module.SearchFunction(Name, False);
     839    if Assigned(TUsedModule(UsedModules[I]).Module) then
     840      Result := TUsedModule(UsedModules[I]).Module.SearchFunction(Name, False);
    1052841      Inc(I);
    1053842    end;
     
    1103892begin
    1104893  inherited;
    1105   Items := TListType.Create;
     894  CommonBlock := TCommonBlock.Create;
    1106895end;
    1107896
    1108897destructor TTypeClass.Destroy;
    1109898begin
    1110   Items.Free;
     899  CommonBlock.Free;
    1111900  inherited Destroy;
    1112901end;
     
    1125914      NewType := TType.Create;
    1126915      //NewType := TType(Source.Parameters[I].ClassType.Create);
    1127       NewType.Assign(Source.Parameters[I]);
     916      NewType.Assign(TType(Source.Parameters[I]));
    1128917      Parameters.Add(NewType);
    1129918    end;
Note: See TracChangeset for help on using the changeset viewer.