Changeset 26 for trunk/Compiler
- Timestamp:
- Dec 8, 2010, 10:00:30 AM (14 years ago)
- Location:
- trunk/Compiler
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Compiler/Analyze/UAnalyzer.pas
r25 r26 8 8 uses 9 9 SysUtils, Variants, Classes, Contnrs, 10 Dialogs, USourceCode, FileUtil ;10 Dialogs, USourceCode, FileUtil, SpecializedObjectList; 11 11 12 12 type … … 82 82 83 83 // 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); 92 85 93 86 resourcestring … … 95 88 96 89 implementation 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'}110 90 111 91 { TAnalyzer } -
trunk/Compiler/Analyze/UAnalyzerPascal.pas
r24 r26 156 156 I := 1; 157 157 while (I < Expressions.Count - 1) do begin 158 if not Expressions[I].Associated and159 ( Expressions[I].OperatorName = Operators[II]) then158 if not TExpression(Expressions[I]).Associated and 159 (TExpression(Expressions[I]).OperatorName = Operators[II]) then 160 160 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]; 164 164 Expressions.Delete(I); 165 165 end else Inc(I); 166 166 end; 167 167 end; 168 if Assigned( Expressions.First.SubItems.Last) then169 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; 171 171 //ShowMessage(IntToStr(Expressions.Count)); 172 172 if Expressions.Count > 1 then 173 Expressions[1].SubItems.First := nil;173 TExpression(Expressions[1]).SubItems.First := nil; 174 174 end; 175 175 finally … … 191 191 ParseExpression(NewExpression); 192 192 193 Expressions.Last.SubItems.Last := NewExpression;194 with Expressions.Items[Expressions.Add(TExpression.Create)]do193 TExpression(Expressions.Last).SubItems.Last := NewExpression; 194 with TExpression(Expressions.Items[Expressions.Add(TExpression.Create)]) do 195 195 begin 196 196 CommonBlock := SourceCode.CommonBlock; … … 207 207 if IsOperator(NextToken) then begin 208 208 // Operator 209 Expressions.Last.OperatorName := ReadToken;210 Expressions.Last.NodeType := ntOperator;209 TExpression(Expressions.Last).OperatorName := ReadToken; 210 TExpression(Expressions.Last).NodeType := ntOperator; 211 211 Result := True; 212 212 end else Result := False; … … 320 320 end; 321 321 if Assigned(NewExpression) then begin 322 Expressions.Last.SubItems.Last := NewExpression;322 TExpression(Expressions.Last).SubItems.Last := NewExpression; 323 323 with Expressions.Items[Expressions.Add(TExpression.Create)] do 324 324 begin … … 672 672 if UseType is TTypeRecord then begin 673 673 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); 674 681 if not Assigned(UseFunction) then begin 675 682 ErrorMessage(SFunctionNotDeclared, [UseName]); … … 880 887 with Call do begin 881 888 ParameterExpression.Add(TExpression.Create); 882 ParameterExpression.Last.CommonBlock := SourceCode;883 ParseExpression( ParameterExpression.Last);889 TExpression(ParameterExpression.Last).CommonBlock := SourceCode; 890 ParseExpression(TExpression(ParameterExpression.Last)); 884 891 end; 885 892 Expect(')'); … … 1246 1253 ): Boolean; 1247 1254 var 1255 Visibility: TTypeVisibility; 1256 SectionType: TCommonBlockSection; 1248 1257 NewType2: TType; 1249 1258 TempType: TType; … … 1251 1260 if NextToken = 'class' then begin 1252 1261 Expect('class'); 1262 SectionType := cbsVariable; 1263 Visibility := tvPublic; 1253 1264 TempType := NewType; 1254 1265 NewType := TTypeClass.Create; 1255 1266 NewType.Assign(TempType); 1256 1267 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'); 1268 1322 Result := True; 1269 1323 end else Result := False; -
trunk/Compiler/Produce/UProducer.pas
r17 r26 7 7 8 8 uses 9 USourceCode, Classes, SysUtils, StrUtils ;9 USourceCode, Classes, SysUtils, StrUtils, SpecializedObjectList; 10 10 11 11 type … … 27 27 28 28 // 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); 37 30 38 31 implementation 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'}52 32 53 33 { TProducer } -
trunk/Compiler/Produce/UProducerPascal.pas
r21 r26 137 137 with TTypeRecord(AType).CommonBlock do 138 138 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); 141 141 EmitLn(';'); 142 142 end; … … 259 259 Inc(Indetation); 260 260 for I := 0 to Constants.Count - 1 do 261 GenerateConstant( Constants[I]);261 GenerateConstant(TConstant(Constants[I])); 262 262 Dec(Indetation); 263 263 Emit(''); -
trunk/Compiler/TranspascalCompiler.lpk
r17 r26 12 12 </SearchPaths> 13 13 <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> 14 17 <CustomOptions Value="-dSINGLE_PRODUCER_"/> 15 18 <CompilerPath Value="$(CompPath)"/> -
trunk/Compiler/USourceCode.pas
r25 r26 58 58 59 59 // 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); 69 61 70 62 { TFunctionCall } … … 129 121 130 122 // 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); 140 124 141 125 TCaseOfEnd = class(TCommand) … … 158 142 159 143 // 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); 169 145 170 146 TCommonBlockSection = (cbsVariable, cbsType, cbsConstant); … … 203 179 204 180 // 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); 214 182 215 183 TTypeList = class(TListType) … … 247 215 248 216 // 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); 258 218 259 219 TTypeEnumeration = class(TType) … … 266 226 267 227 TTypeClass = class(TType) 268 Items: TListType;228 CommonBlock: TCommonBlock; 269 229 constructor Create; 270 230 destructor Destroy; override; … … 280 240 281 241 // 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); 291 243 292 244 TConstantList = class(TListConstant) … … 304 256 305 257 // 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); 315 259 316 260 TVariableList = class(TListVariable) … … 324 268 325 269 // 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); 335 271 336 272 TParameterList = class(TListParameter) … … 373 309 374 310 // 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); 384 312 385 313 TFunctionList = class(TListFunction) … … 397 325 398 326 // 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); 408 328 409 329 TUsedModuleList = class(TListUsedModule) … … 452 372 453 373 // 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); 463 375 464 376 { TModuleList } … … 491 403 implementation 492 404 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 617 405 { TFunction } 618 406 … … 661 449 begin 662 450 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 begin451 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 665 453 if Assigned(Parent.Parent) then Result := Parent.Parent.Constants.Search(Name) 666 454 else begin … … 742 530 // Search in own list 743 531 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]) 746 534 else Result := nil; 747 535 … … 769 557 // Search in own list 770 558 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); 772 560 if I < Count then Result := TVariable(Items[I]) else Result := nil; 773 561 … … 814 602 // Search in own list 815 603 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; 818 606 819 607 // Search parent block list … … 865 653 begin 866 654 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]) 869 657 else Result := nil; 870 658 end; … … 995 783 begin 996 784 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; 999 788 end; 1000 789 … … 1010 799 I := 0; 1011 800 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); 1013 802 Inc(I); 1014 803 end; … … 1030 819 I := 0; 1031 820 while (I < UsedModules.Count) and (not Assigned(Result)) do begin 1032 with UsedModules[I]do821 with TUsedModule(UsedModules[I]) do 1033 822 if Assigned(Module) then 1034 823 with Module do … … 1048 837 I := 0; 1049 838 while (I < UsedModules.Count) and (not Assigned(Result)) do begin 1050 if Assigned( UsedModules[I].Module) then1051 Result := UsedModules[I].Module.SearchFunction(Name, False);839 if Assigned(TUsedModule(UsedModules[I]).Module) then 840 Result := TUsedModule(UsedModules[I]).Module.SearchFunction(Name, False); 1052 841 Inc(I); 1053 842 end; … … 1103 892 begin 1104 893 inherited; 1105 Items := TListType.Create;894 CommonBlock := TCommonBlock.Create; 1106 895 end; 1107 896 1108 897 destructor TTypeClass.Destroy; 1109 898 begin 1110 Items.Free;899 CommonBlock.Free; 1111 900 inherited Destroy; 1112 901 end; … … 1125 914 NewType := TType.Create; 1126 915 //NewType := TType(Source.Parameters[I].ClassType.Create); 1127 NewType.Assign( Source.Parameters[I]);916 NewType.Assign(TType(Source.Parameters[I])); 1128 917 Parameters.Add(NewType); 1129 918 end;
Note:
See TracChangeset
for help on using the changeset viewer.