Changeset 30 for trunk/Components/TemplateGenerics/Demo
- Timestamp:
- Sep 8, 2012, 9:28:39 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 3 3 backup 4 4 tunneler.exe 5 heaptrclog.trc
-
- Property svn:ignore
-
trunk/Components/TemplateGenerics
-
Property svn:ignore
set to
lib
-
Property svn:ignore
set to
-
trunk/Components/TemplateGenerics/Demo/Demo.lpi
r29 r30 33 33 <Item1> 34 34 <PackageName Value="TemplateGenerics"/> 35 <DefaultFilename Value="../TemplateGenerics.lpk" Prefer="True"/> 35 36 </Item1> 36 37 <Item2> … … 38 39 </Item2> 39 40 </RequiredPackages> 40 <Units Count=" 62">41 <Units Count="75"> 41 42 <Unit0> 42 43 <Filename Value="Demo.lpr"/> … … 57 58 <EditorIndex Value="0"/> 58 59 <WindowIndex Value="0"/> 59 <TopLine Value=" 232"/>60 <CursorPos X=" 19" Y="237"/>60 <TopLine Value="640"/> 61 <CursorPos X="20" Y="653"/> 61 62 <UsageCount Value="233"/> 62 63 <Bookmarks Count="1"> 63 <Item0 X="65" Y="2 24" ID="2"/>64 <Item0 X="65" Y="275" ID="2"/> 64 65 </Bookmarks> 65 66 <Loaded Value="True"/> … … 73 74 <TopLine Value="1"/> 74 75 <CursorPos X="1" Y="11"/> 75 <UsageCount Value=" 4"/>76 <UsageCount Value="3"/> 76 77 </Unit2> 77 78 <Unit3> 78 79 <Filename Value="../Specialized/SpecializedList.pas"/> 79 80 <UnitName Value="SpecializedList"/> 80 <EditorIndex Value=" 2"/>81 <WindowIndex Value="0"/> 82 <TopLine Value=" 3"/>83 <CursorPos X=" 43" Y="13"/>84 <UsageCount Value="1 0"/>81 <EditorIndex Value="3"/> 82 <WindowIndex Value="0"/> 83 <TopLine Value="47"/> 84 <CursorPos X="20" Y="60"/> 85 <UsageCount Value="15"/> 85 86 <Loaded Value="True"/> 86 87 </Unit3> … … 91 92 <TopLine Value="33"/> 92 93 <CursorPos X="12" Y="56"/> 93 <UsageCount Value=" 4"/>94 <UsageCount Value="3"/> 94 95 </Unit4> 95 96 <Unit5> … … 99 100 <TopLine Value="1"/> 100 101 <CursorPos X="23" Y="21"/> 101 <UsageCount Value=" 4"/>102 <UsageCount Value="3"/> 102 103 </Unit5> 103 104 <Unit6> … … 107 108 <TopLine Value="1"/> 108 109 <CursorPos X="23" Y="24"/> 109 <UsageCount Value=" 4"/>110 <UsageCount Value="3"/> 110 111 </Unit6> 111 112 <Unit7> … … 115 116 <TopLine Value="1"/> 116 117 <CursorPos X="23" Y="13"/> 117 <UsageCount Value=" 4"/>118 <UsageCount Value="3"/> 118 119 </Unit7> 119 120 <Unit8> … … 123 124 <TopLine Value="1"/> 124 125 <CursorPos X="23" Y="24"/> 125 <UsageCount Value=" 4"/>126 <UsageCount Value="3"/> 126 127 </Unit8> 127 128 <Unit9> … … 131 132 <TopLine Value="1"/> 132 133 <CursorPos X="31" Y="13"/> 133 <UsageCount Value=" 4"/>134 <UsageCount Value="3"/> 134 135 </Unit9> 135 136 <Unit10> … … 139 140 <TopLine Value="1"/> 140 141 <CursorPos X="29" Y="17"/> 141 <UsageCount Value=" 4"/>142 <UsageCount Value="3"/> 142 143 </Unit10> 143 144 <Unit11> … … 146 147 <TopLine Value="1"/> 147 148 <CursorPos X="1" Y="4"/> 148 <UsageCount Value=" 4"/>149 <UsageCount Value="3"/> 149 150 <DefaultSyntaxHighlighter Value="None"/> 150 151 </Unit11> … … 154 155 <TopLine Value="1"/> 155 156 <CursorPos X="21" Y="6"/> 156 <UsageCount Value=" 4"/>157 <UsageCount Value="3"/> 157 158 <DefaultSyntaxHighlighter Value="None"/> 158 159 </Unit12> … … 162 163 <TopLine Value="1"/> 163 164 <CursorPos X="1" Y="1"/> 164 <UsageCount Value=" 4"/>165 <UsageCount Value="3"/> 165 166 <DefaultSyntaxHighlighter Value="None"/> 166 167 </Unit13> … … 170 171 <TopLine Value="1"/> 171 172 <CursorPos X="25" Y="13"/> 172 <UsageCount Value=" 5"/>173 <UsageCount Value="4"/> 173 174 <DefaultSyntaxHighlighter Value="None"/> 174 175 </Unit14> … … 178 179 <TopLine Value="4"/> 179 180 <CursorPos X="3" Y="6"/> 180 <UsageCount Value=" 4"/>181 <UsageCount Value="3"/> 181 182 <DefaultSyntaxHighlighter Value="None"/> 182 183 </Unit15> … … 186 187 <TopLine Value="1"/> 187 188 <CursorPos X="14" Y="16"/> 188 <UsageCount Value=" 4"/>189 <UsageCount Value="3"/> 189 190 <DefaultSyntaxHighlighter Value="None"/> 190 191 </Unit16> … … 195 196 <TopLine Value="1"/> 196 197 <CursorPos X="32" Y="18"/> 197 <UsageCount Value=" 4"/>198 <UsageCount Value="3"/> 198 199 </Unit17> 199 200 <Unit18> … … 202 203 <TopLine Value="1"/> 203 204 <CursorPos X="20" Y="12"/> 204 <UsageCount Value=" 2"/>205 <UsageCount Value="1"/> 205 206 <DefaultSyntaxHighlighter Value="None"/> 206 207 </Unit18> … … 211 212 <TopLine Value="1"/> 212 213 <CursorPos X="1" Y="22"/> 213 <UsageCount Value=" 2"/>214 <UsageCount Value="1"/> 214 215 </Unit19> 215 216 <Unit20> … … 218 219 <TopLine Value="1"/> 219 220 <CursorPos X="1" Y="1"/> 220 <UsageCount Value=" 2"/>221 <UsageCount Value="1"/> 221 222 <DefaultSyntaxHighlighter Value="None"/> 222 223 </Unit20> … … 226 227 <TopLine Value="1"/> 227 228 <CursorPos X="1" Y="3"/> 228 <UsageCount Value=" 2"/>229 <UsageCount Value="1"/> 229 230 <DefaultSyntaxHighlighter Value="None"/> 230 231 </Unit21> … … 234 235 <TopLine Value="1"/> 235 236 <CursorPos X="1" Y="3"/> 236 <UsageCount Value=" 2"/>237 <UsageCount Value="1"/> 237 238 <DefaultSyntaxHighlighter Value="None"/> 238 239 </Unit22> … … 243 244 <TopLine Value="45"/> 244 245 <CursorPos X="9" Y="79"/> 245 <UsageCount Value="1 "/>246 <UsageCount Value="10"/> 246 247 </Unit23> 247 248 <Unit24> … … 250 251 <TopLine Value="1"/> 251 252 <CursorPos X="21" Y="4"/> 252 <UsageCount Value=" 6"/>253 <UsageCount Value="5"/> 253 254 <DefaultSyntaxHighlighter Value="None"/> 254 255 </Unit24> … … 259 260 <TopLine Value="1"/> 260 261 <CursorPos X="1" Y="25"/> 261 <UsageCount Value=" 6"/>262 <UsageCount Value="5"/> 262 263 </Unit25> 263 264 <Unit26> … … 266 267 <TopLine Value="1"/> 267 268 <CursorPos X="1" Y="3"/> 268 <UsageCount Value=" 6"/>269 <UsageCount Value="5"/> 269 270 <DefaultSyntaxHighlighter Value="None"/> 270 271 </Unit26> … … 274 275 <TopLine Value="1"/> 275 276 <CursorPos X="7" Y="4"/> 276 <UsageCount Value=" 6"/>277 <UsageCount Value="5"/> 277 278 <DefaultSyntaxHighlighter Value="None"/> 278 279 </Unit27> … … 283 284 <TopLine Value="1"/> 284 285 <CursorPos X="14" Y="15"/> 285 <UsageCount Value=" 6"/>286 <UsageCount Value="5"/> 286 287 </Unit28> 287 288 <Unit29> … … 290 291 <TopLine Value="1"/> 291 292 <CursorPos X="14" Y="18"/> 292 <UsageCount Value=" 6"/>293 <UsageCount Value="5"/> 293 294 <DefaultSyntaxHighlighter Value="None"/> 294 295 </Unit29> … … 299 300 <TopLine Value="2"/> 300 301 <CursorPos X="30" Y="8"/> 301 <UsageCount Value=" 6"/>302 <UsageCount Value="5"/> 302 303 </Unit30> 303 304 <Unit31> … … 307 308 <TopLine Value="13"/> 308 309 <CursorPos X="15" Y="12"/> 309 <UsageCount Value=" 8"/>310 <UsageCount Value="7"/> 310 311 <DefaultSyntaxHighlighter Value="Delphi"/> 311 312 </Unit31> 312 313 <Unit32> 313 314 <Filename Value="../Generic/GenericList.inc"/> 314 <IsVisibleTab Value="True"/> 315 <EditorIndex Value="6"/> 316 <WindowIndex Value="0"/> 317 <TopLine Value="462"/> 318 <CursorPos X="40" Y="470"/> 315 <EditorIndex Value="4"/> 316 <WindowIndex Value="0"/> 317 <TopLine Value="42"/> 318 <CursorPos X="15" Y="55"/> 319 319 <UsageCount Value="107"/> 320 320 <Loaded Value="True"/> … … 325 325 <TopLine Value="31"/> 326 326 <CursorPos X="44" Y="47"/> 327 <UsageCount Value="9 4"/>327 <UsageCount Value="93"/> 328 328 </Unit33> 329 329 <Unit34> … … 332 332 <TopLine Value="1"/> 333 333 <CursorPos X="36" Y="48"/> 334 <UsageCount Value="9 4"/>334 <UsageCount Value="93"/> 335 335 </Unit34> 336 336 <Unit35> … … 339 339 <TopLine Value="3"/> 340 340 <CursorPos X="1" Y="3"/> 341 <UsageCount Value="9 4"/>341 <UsageCount Value="93"/> 342 342 </Unit35> 343 343 <Unit36> … … 346 346 <TopLine Value="11"/> 347 347 <CursorPos X="42" Y="11"/> 348 <UsageCount Value="9 4"/>348 <UsageCount Value="93"/> 349 349 </Unit36> 350 350 <Unit37> … … 353 353 <TopLine Value="3"/> 354 354 <CursorPos X="1" Y="3"/> 355 <UsageCount Value="9 4"/>355 <UsageCount Value="93"/> 356 356 </Unit37> 357 357 <Unit38> … … 360 360 <TopLine Value="1"/> 361 361 <CursorPos X="22" Y="30"/> 362 <UsageCount Value="9 4"/>362 <UsageCount Value="93"/> 363 363 </Unit38> 364 364 <Unit39> … … 368 368 <TopLine Value="6"/> 369 369 <CursorPos X="56" Y="36"/> 370 <UsageCount Value="9 3"/>370 <UsageCount Value="92"/> 371 371 </Unit39> 372 372 <Unit40> … … 376 376 <TopLine Value="27"/> 377 377 <CursorPos X="50" Y="59"/> 378 <UsageCount Value="9 2"/>378 <UsageCount Value="91"/> 379 379 </Unit40> 380 380 <Unit41> … … 384 384 <TopLine Value="57"/> 385 385 <CursorPos X="48" Y="85"/> 386 <UsageCount Value="9 2"/>386 <UsageCount Value="91"/> 387 387 </Unit41> 388 388 <Unit42> … … 391 391 <TopLine Value="1"/> 392 392 <CursorPos X="33" Y="14"/> 393 <UsageCount Value="9 2"/>393 <UsageCount Value="91"/> 394 394 </Unit42> 395 395 <Unit43> … … 399 399 <TopLine Value="52"/> 400 400 <CursorPos X="1" Y="81"/> 401 <UsageCount Value="9 2"/>401 <UsageCount Value="91"/> 402 402 </Unit43> 403 403 <Unit44> … … 407 407 <TopLine Value="29"/> 408 408 <CursorPos X="1" Y="62"/> 409 <UsageCount Value="9 2"/>409 <UsageCount Value="91"/> 410 410 </Unit44> 411 411 <Unit45> … … 415 415 <TopLine Value="9"/> 416 416 <CursorPos X="60" Y="36"/> 417 <UsageCount Value="9 1"/>417 <UsageCount Value="90"/> 418 418 </Unit45> 419 419 <Unit46> 420 420 <Filename Value="../Generic/GenericMatrix.inc"/> 421 <EditorIndex Value="7"/> 422 <WindowIndex Value="0"/> 423 <TopLine Value="311"/> 424 <CursorPos X="48" Y="331"/> 425 <UsageCount Value="103"/> 426 <Loaded Value="True"/> 421 <WindowIndex Value="0"/> 422 <TopLine Value="9"/> 423 <CursorPos X="28" Y="23"/> 424 <UsageCount Value="102"/> 427 425 </Unit46> 428 426 <Unit47> 429 <Filename Value="../../../../ ../lazarus/trunk/lcl/graphics.pp"/>427 <Filename Value="../../../../lazarus/trunk/lcl/graphics.pp"/> 430 428 <UnitName Value="Graphics"/> 431 429 <WindowIndex Value="0"/> 432 430 <TopLine Value="2624"/> 433 431 <CursorPos X="37" Y="2636"/> 434 <UsageCount Value="90"/> 432 <UsageCount Value="89"/> 433 <DefaultSyntaxHighlighter Value="Delphi"/> 435 434 </Unit47> 436 435 <Unit48> 437 <Filename Value="../../../../ ../lazarus/trunk/lcl/interfaces/carbon/issues.xml"/>436 <Filename Value="../../../../lazarus/trunk/lcl/interfaces/carbon/issues.xml"/> 438 437 <WindowIndex Value="0"/> 439 438 <TopLine Value="94"/> 440 439 <CursorPos X="1" Y="1"/> 441 <UsageCount Value=" 6"/>440 <UsageCount Value="5"/> 442 441 <DefaultSyntaxHighlighter Value="XML"/> 443 442 </Unit48> … … 447 446 <TopLine Value="199"/> 448 447 <CursorPos X="14" Y="213"/> 449 <UsageCount Value="28"/> 448 <UsageCount Value="27"/> 449 <DefaultSyntaxHighlighter Value="Delphi"/> 450 450 </Unit49> 451 451 <Unit50> … … 454 454 <TopLine Value="199"/> 455 455 <CursorPos X="3" Y="201"/> 456 <UsageCount Value="28"/> 456 <UsageCount Value="27"/> 457 <DefaultSyntaxHighlighter Value="Delphi"/> 457 458 </Unit50> 458 459 <Unit51> 459 460 <Filename Value="../Generic/GenericListObject.inc"/> 460 <WindowIndex Value="0"/> 461 <TopLine Value="1"/> 462 <CursorPos X="21" Y="20"/> 463 <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"/> 464 467 </Unit51> 465 468 <Unit52> … … 469 472 <TopLine Value="1"/> 470 473 <CursorPos X="27" Y="26"/> 471 <UsageCount Value="28"/> 474 <UsageCount Value="27"/> 475 <DefaultSyntaxHighlighter Value="Delphi"/> 472 476 </Unit52> 473 477 <Unit53> … … 476 480 <TopLine Value="381"/> 477 481 <CursorPos X="3" Y="398"/> 478 <UsageCount Value="28"/> 482 <UsageCount Value="27"/> 483 <DefaultSyntaxHighlighter Value="Delphi"/> 479 484 </Unit53> 480 485 <Unit54> … … 483 488 <TopLine Value="475"/> 484 489 <CursorPos X="10" Y="503"/> 485 <UsageCount Value="7"/> 490 <UsageCount Value="6"/> 491 <DefaultSyntaxHighlighter Value="Delphi"/> 486 492 </Unit54> 487 493 <Unit55> 488 <Filename Value="../../../../ ../lazarus/trunk/lcl/include/control.inc"/>494 <Filename Value="../../../../lazarus/trunk/lcl/include/control.inc"/> 489 495 <WindowIndex Value="0"/> 490 496 <TopLine Value="2270"/> 491 497 <CursorPos X="22" Y="2273"/> 492 <UsageCount Value="19"/> 498 <UsageCount Value="18"/> 499 <DefaultSyntaxHighlighter Value="Delphi"/> 493 500 </Unit55> 494 501 <Unit56> 495 502 <Filename Value="../Specialized/SpecializedMatrix.pas"/> 496 503 <UnitName Value="SpecializedMatrix"/> 497 <EditorIndex Value="8"/> 498 <WindowIndex Value="0"/> 499 <TopLine Value="31"/> 500 <CursorPos X="38" Y="62"/> 504 <WindowIndex Value="0"/> 505 <TopLine Value="1"/> 506 <CursorPos X="25" Y="41"/> 501 507 <UsageCount Value="19"/> 502 <Loaded Value="True"/>503 508 </Unit56> 504 509 <Unit57> … … 507 512 <TopLine Value="1"/> 508 513 <CursorPos X="28" Y="10"/> 509 <UsageCount Value=" 9"/>514 <UsageCount Value="8"/> 510 515 <DefaultSyntaxHighlighter Value="None"/> 511 516 </Unit57> 512 517 <Unit58> 513 <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/dateutil.inc"/> 514 <EditorIndex Value="5"/> 518 <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/dateutil.inc"/> 515 519 <WindowIndex Value="0"/> 516 520 <TopLine Value="38"/> 517 521 <CursorPos X="3" Y="50"/> 518 <UsageCount Value="1 1"/>519 < Loaded Value="True"/>522 <UsageCount Value="10"/> 523 <DefaultSyntaxHighlighter Value="Delphi"/> 520 524 </Unit58> 521 525 <Unit59> 522 <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/> 523 <EditorIndex Value="1"/> 526 <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/> 524 527 <WindowIndex Value="0"/> 525 528 <TopLine Value="649"/> 526 529 <CursorPos X="38" Y="671"/> 527 <UsageCount Value=" 10"/>528 < Loaded Value="True"/>530 <UsageCount Value="9"/> 531 <DefaultSyntaxHighlighter Value="Delphi"/> 529 532 </Unit59> 530 533 <Unit60> 531 <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/> 532 <EditorIndex Value="4"/> 534 <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/> 533 535 <WindowIndex Value="0"/> 534 536 <TopLine Value="1185"/> 535 537 <CursorPos X="22" Y="1196"/> 536 <UsageCount Value=" 10"/>537 < Loaded Value="True"/>538 <UsageCount Value="9"/> 539 <DefaultSyntaxHighlighter Value="Delphi"/> 538 540 </Unit60> 539 541 <Unit61> 540 <Filename Value="../../../../ ../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/types.pp"/>542 <Filename Value="../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/types.pp"/> 541 543 <UnitName Value="types"/> 542 <EditorIndex Value="3"/>543 544 <WindowIndex Value="0"/> 544 545 <TopLine Value="112"/> 545 546 <CursorPos X="3" Y="124"/> 547 <UsageCount Value="9"/> 548 <DefaultSyntaxHighlighter Value="Delphi"/> 549 </Unit61> 550 <Unit62> 551 <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstrh.inc"/> 552 <WindowIndex Value="0"/> 553 <TopLine Value="71"/> 554 <CursorPos X="10" Y="84"/> 555 <UsageCount Value="9"/> 556 <DefaultSyntaxHighlighter Value="Delphi"/> 557 </Unit62> 558 <Unit63> 559 <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/objpas/sysutils/sysstr.inc"/> 560 <WindowIndex Value="0"/> 561 <TopLine Value="148"/> 562 <CursorPos X="11" Y="169"/> 563 <UsageCount Value="9"/> 564 <DefaultSyntaxHighlighter Value="Delphi"/> 565 </Unit63> 566 <Unit64> 567 <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/inc/systemh.inc"/> 568 <WindowIndex Value="0"/> 569 <TopLine Value="511"/> 570 <CursorPos X="11" Y="524"/> 571 <UsageCount Value="9"/> 572 <DefaultSyntaxHighlighter Value="Delphi"/> 573 </Unit64> 574 <Unit65> 575 <Filename Value="../../../../Projekty2/FreePascalManager/trunk/Instance/1/FPC/rtl/i386/i386.inc"/> 576 <WindowIndex Value="0"/> 577 <TopLine Value="411"/> 578 <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"/> 546 613 <UsageCount Value="10"/> 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"/> 547 630 <Loaded Value="True"/> 548 </Unit61> 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> 549 659 </Units> 550 <JumpHistory Count="30" HistoryIndex="2 7">660 <JumpHistory Count="30" HistoryIndex="28"> 551 661 <Position1> 552 662 <Filename Value="UMainForm.pas"/> 553 <Caret Line=" 42" Column="51" TopLine="20"/>663 <Caret Line="142" Column="1" TopLine="128"/> 554 664 </Position1> 555 665 <Position2> 556 666 <Filename Value="UMainForm.pas"/> 557 <Caret Line=" 458" Column="36" TopLine="440"/>667 <Caret Line="143" Column="1" TopLine="128"/> 558 668 </Position2> 559 669 <Position3> 560 <Filename Value=" UMainForm.pas"/>561 <Caret Line=" 7" Column="52" TopLine="1"/>670 <Filename Value="../Generic/GenericList.inc"/> 671 <Caret Line="161" Column="1" TopLine="148"/> 562 672 </Position3> 563 673 <Position4> 564 <Filename Value=" UMainForm.pas"/>565 <Caret Line=" 526" Column="1" TopLine="502"/>674 <Filename Value="../Specialized/SpecializedStream.pas"/> 675 <Caret Line="93" Column="21" TopLine="80"/> 566 676 </Position4> 567 677 <Position5> 568 678 <Filename Value="UMainForm.pas"/> 569 <Caret Line=" 32" Column="49" TopLine="27"/>679 <Caret Line="150" Column="22" TopLine="129"/> 570 680 </Position5> 571 681 <Position6> 572 <Filename Value=" UMainForm.pas"/>573 <Caret Line=" 416" Column="38" TopLine="312"/>682 <Filename Value="../Generic/GenericStream.inc"/> 683 <Caret Line="22" Column="12" TopLine="9"/> 574 684 </Position6> 575 685 <Position7> 576 <Filename Value=" UMainForm.pas"/>577 <Caret Line=" 417" Column="38" TopLine="393"/>686 <Filename Value="../Generic/GenericStream.inc"/> 687 <Caret Line="37" Column="18" TopLine="35"/> 578 688 </Position7> 579 689 <Position8> 580 690 <Filename Value="UMainForm.pas"/> 581 <Caret Line=" 418" Column="38" TopLine="394"/>691 <Caret Line="157" Column="79" TopLine="132"/> 582 692 </Position8> 583 693 <Position9> 584 <Filename Value=" UMainForm.pas"/>585 <Caret Line=" 241" Column="3" TopLine="234"/>694 <Filename Value="../Specialized/SpecializedStream.pas"/> 695 <Caret Line="58" Column="45" TopLine="46"/> 586 696 </Position9> 587 697 <Position10> 588 <Filename Value=" UMainForm.pas"/>589 <Caret Line=" 377" Column="1" TopLine="361"/>698 <Filename Value="../Specialized/SpecializedStream.pas"/> 699 <Caret Line="119" Column="12" TopLine="100"/> 590 700 </Position10> 591 701 <Position11> 592 <Filename Value=" UMainForm.pas"/>593 <Caret Line=" 617" Column="1" TopLine="593"/>702 <Filename Value="../Generic/GenericList.inc"/> 703 <Caret Line="197" Column="39" TopLine="182"/> 594 704 </Position11> 595 705 <Position12> 596 <Filename Value=" UMainForm.pas"/>597 <Caret Line=" 260" Column="25" TopLine="230"/>706 <Filename Value="../Specialized/SpecializedStream.pas"/> 707 <Caret Line="119" Column="12" TopLine="100"/> 598 708 </Position12> 599 709 <Position13> 600 <Filename Value=" UMainForm.pas"/>601 <Caret Line=" 246" Column="21" TopLine="233"/>710 <Filename Value="../Specialized/SpecializedStream.pas"/> 711 <Caret Line="61" Column="38" TopLine="48"/> 602 712 </Position13> 603 713 <Position14> 604 <Filename Value=" UMainForm.pas"/>605 <Caret Line=" 364" Column="25" TopLine="358"/>714 <Filename Value="../Specialized/SpecializedStream.pas"/> 715 <Caret Line="130" Column="15" TopLine="117"/> 606 716 </Position14> 607 717 <Position15> 608 <Filename Value=" UMainForm.pas"/>609 <Caret Line=" 596" Column="33" TopLine="586"/>718 <Filename Value="../Specialized/SpecializedStream.pas"/> 719 <Caret Line="64" Column="36" TopLine="51"/> 610 720 </Position15> 611 721 <Position16> 612 <Filename Value=" UMainForm.pas"/>613 <Caret Line=" 237" Column="19" TopLine="232"/>722 <Filename Value="../Specialized/SpecializedStream.pas"/> 723 <Caret Line="58" Column="29" TopLine="45"/> 614 724 </Position16> 615 725 <Position17> 616 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>617 <Caret Line="7 01" Column="36" TopLine="683"/>726 <Filename Value="../Specialized/SpecializedStream.pas"/> 727 <Caret Line="78" Column="45" TopLine="78"/> 618 728 </Position17> 619 729 <Position18> 620 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>621 <Caret Line="6 59" Column="27" TopLine="653"/>730 <Filename Value="../Specialized/SpecializedStream.pas"/> 731 <Caret Line="64" Column="64" TopLine="48"/> 622 732 </Position18> 623 733 <Position19> 624 <Filename Value="../ Generic/GenericList.inc"/>625 <Caret Line=" 468" Column="70" TopLine="462"/>734 <Filename Value="../Specialized/SpecializedStream.pas"/> 735 <Caret Line="82" Column="3" TopLine="68"/> 626 736 </Position19> 627 737 <Position20> 628 <Filename Value="../Generic/GenericList .inc"/>629 <Caret Line=" 469" Column="1" TopLine="462"/>738 <Filename Value="../Generic/GenericListObject.inc"/> 739 <Caret Line="20" Column="21" TopLine="1"/> 630 740 </Position20> 631 741 <Position21> 632 <Filename Value="../Generic/GenericList .inc"/>633 <Caret Line=" 470" Column="1" TopLine="462"/>742 <Filename Value="../Generic/GenericListObject.inc"/> 743 <Caret Line="24" Column="17" TopLine="11"/> 634 744 </Position21> 635 745 <Position22> 636 <Filename Value="../Generic/GenericList .inc"/>637 <Caret Line=" 471" Column="1" TopLine="462"/>746 <Filename Value="../Generic/GenericListString.inc"/> 747 <Caret Line="1" Column="1" TopLine="1"/> 638 748 </Position22> 639 749 <Position23> 640 <Filename Value=" ../Generic/GenericList.inc"/>641 <Caret Line="4 70" Column="5" TopLine="462"/>750 <Filename Value="UMainForm.pas"/> 751 <Caret Line="43" Column="15" TopLine="28"/> 642 752 </Position23> 643 753 <Position24> 644 <Filename Value=" UMainForm.pas"/>645 <Caret Line=" 237" Column="19" TopLine="232"/>754 <Filename Value="../Generic/GenericStream.inc"/> 755 <Caret Line="13" Column="1" TopLine="1"/> 646 756 </Position24> 647 757 <Position25> 648 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>649 <Caret Line=" 659" Column="26" TopLine="647"/>758 <Filename Value="../Specialized/SpecializedStream.pas"/> 759 <Caret Line="84" Column="35" TopLine="40"/> 650 760 </Position25> 651 761 <Position26> 652 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>653 <Caret Line="1 193" Column="20" TopLine="1185"/>762 <Filename Value="../Specialized/SpecializedStream.pas"/> 763 <Caret Line="126" Column="39" TopLine="111"/> 654 764 </Position26> 655 765 <Position27> 656 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/stringl.inc"/>657 <Caret Line="1 196" Column="22" TopLine="1185"/>766 <Filename Value="../Specialized/SpecializedStream.pas"/> 767 <Caret Line="128" Column="1" TopLine="111"/> 658 768 </Position27> 659 769 <Position28> 660 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>661 <Caret Line="6 61" Column="23" TopLine="649"/>770 <Filename Value="../Specialized/SpecializedStream.pas"/> 771 <Caret Line="68" Column="32" TopLine="55"/> 662 772 </Position28> 663 773 <Position29> 664 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>665 <Caret Line=" 657" Column="48" TopLine="644"/>774 <Filename Value="../Specialized/SpecializedStream.pas"/> 775 <Caret Line="121" Column="1" TopLine="106"/> 666 776 </Position29> 667 777 <Position30> 668 <Filename Value="../ ../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>669 <Caret Line=" 651" Column="3" TopLine="639"/>778 <Filename Value="../Generic/GenericList.inc"/> 779 <Caret Line="55" Column="15" TopLine="42"/> 670 780 </Position30> 671 781 </JumpHistory> 672 782 </ProjectOptions> 673 783 <CompilerOptions> 674 <Version Value=" 9"/>784 <Version Value="11"/> 675 785 <Target> 676 786 <Filename Value="Demo"/> … … 699 809 <Linking> 700 810 <Debugging> 701 < GenerateDebugInfo Value="True"/>811 <DebugInfoType Value="dsStabs"/> 702 812 <UseHeaptrc Value="True"/> 703 813 </Debugging> -
trunk/Components/TemplateGenerics/Demo/UMainForm.lfm
r29 r30 48 48 end 49 49 object ButtonCharList: TButton 50 Left = 750 Left = 8 51 51 Height = 25 52 52 Top = 134 53 Width = 12 953 Width = 128 54 54 Caption = 'TListChar(TString)' 55 55 OnClick = ButtonCharListClick … … 57 57 end 58 58 object ButtonBenchmarkListString: TButton 59 Left = 1059 Left = 8 60 60 Height = 24 61 61 Top = 456 … … 67 67 end 68 68 object ButtonListObject: TButton 69 Left = 769 Left = 8 70 70 Height = 25 71 71 Top = 163 72 Width = 12 972 Width = 128 73 73 Caption = 'TListObject' 74 74 OnClick = ButtonListObjectClick … … 76 76 end 77 77 object ButtonBenchmarkDictionary: TButton 78 Left = 1078 Left = 8 79 79 Height = 25 80 80 Top = 424 81 Width = 12 681 Width = 128 82 82 Anchors = [akLeft, akBottom] 83 83 Caption = 'TDictionaryStringString' … … 86 86 end 87 87 object ButtonMatrixInteger: TButton 88 Left = 788 Left = 8 89 89 Height = 25 90 90 Top = 192 91 Width = 12 991 Width = 128 92 92 Caption = 'TMatrixInteger' 93 93 OnClick = ButtonMatrixIntegerClick … … 107 107 item 108 108 Caption = 'Value' 109 Width = 3 16109 Width = 321 110 110 end> 111 111 ReadOnly = True … … 140 140 TabOrder = 10 141 141 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 142 151 end -
trunk/Components/TemplateGenerics/Demo/UMainForm.pas
r29 r30 8 8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 9 ComCtrls, SpecializedList, SpecializedDictionary, SpecializedQueue, 10 DateUtils, SpecializedMatrix ;10 DateUtils, SpecializedMatrix, SpecializedStream; 11 11 12 12 type … … 15 15 16 16 TMainForm = class(TForm) 17 ButtonStreamByte: TButton; 17 18 ButtonBenchmarkDictionary: TButton; 18 19 ButtonBenchmarkListPointer: TButton; … … 38 39 procedure ButtonQueueIntegerClick(Sender: TObject); 39 40 procedure ButtonStringListClick(Sender: TObject); 41 procedure ButtonStreamByteClick(Sender: TObject); 40 42 procedure FormCreate(Sender: TObject); 41 43 procedure FormDestroy(Sender: TObject); 42 private43 44 public 44 45 MeasureDuration: TDateTime; … … 65 66 var 66 67 List: TListInteger; 68 List2: TListInteger; 67 69 I: Integer; 68 70 begin … … 70 72 LabelTestName.Caption := 'TListInteger test'; 71 73 List := TListInteger.Create; 74 List2 := TListInteger.Create; 72 75 with List do try 73 76 AddArray([10, 20, 30, 40]); … … 86 89 Insert(5, 11); 87 90 WriteOutput('Insert(5, 11)', Implode(',', IntToStr)); 91 DeleteItems(0, 10); 92 WriteOutput('Delete(0, 10)', Implode(',', IntToStr)); 93 List2.SetArray([1, 0]); 94 WriteOutput('EqualTo([6, 11])', BoolToStr(EqualTo(List2))); 95 List2.SetArray([2, 0]); 96 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)); 88 101 finally 89 102 Free; 103 List2.Free; 90 104 end; 91 105 end; … … 110 124 WriteOutput('Clear', '[' + Implode('; ', ', ', IntToStr) + ']'); 111 125 WriteOutput('Count [Y, X]', IntToStr(Count.Y) + ', ' + IntToStr(Count.X)); 126 finally 127 Free; 128 end; 129 end; 130 131 procedure TMainForm.ButtonStreamByteClick(Sender: TObject); 132 var 133 Stream: TMemoryStreamByte; 134 I: Integer; 135 ByteArray: array of Byte; 136 ByteArrayText: string; 137 begin 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)); 112 163 finally 113 164 Free; … … 478 529 var 479 530 List: TListPointer; 480 List2: T List;531 List2: TFPList; 481 532 StartTime: TDateTime; 482 533 I: Integer; … … 484 535 SampleCount: Integer = 100000; 485 536 begin 486 LabelTestName.Caption := 'Generic specialized TListObject vs. classic non-generic T List benchmark';537 LabelTestName.Caption := 'Generic specialized TListObject vs. classic non-generic TFPList benchmark'; 487 538 ListViewOutput.Clear; 488 539 try 489 540 UpdateButtonState(False); 490 541 List := TListPointer.Create; 491 List2 := TList.Create; 492 493 StartTime := Now; 494 repeat 495 List.Add(1); 542 List2 := TFPList.Create; 543 544 WriteOutput('TListPointer.InstanceSize', IntToStr(TListPointer.InstanceSize) + ' bytes'); 545 WriteOutput('TFPList.InstanceSize', IntToStr(TFPList.InstanceSize) + ' bytes'); 546 547 StartTime := Now; 548 repeat 549 List.Add(Pointer(1)); 496 550 until (Now - StartTime) > MeasureDuration; 497 551 WriteOutput('TListPointer.Add', IntToStr(List.Count) + ' ops'); … … 501 555 StartTime := Now; 502 556 repeat 503 List2.Add( 1);504 until (Now - StartTime) > MeasureDuration; 505 WriteOutput('T List.Add', IntToStr(List2.Count) + ' ops');557 List2.Add(Pointer(1)); 558 until (Now - StartTime) > MeasureDuration; 559 WriteOutput('TFPList.Add', IntToStr(List2.Count) + ' ops'); 506 560 List2.Clear; 507 561 Application.ProcessMessages; … … 509 563 StartTime := Now; 510 564 repeat 511 List.Insert(0, 1);565 List.Insert(0, Pointer(1)); 512 566 until (Now - StartTime) > MeasureDuration; 513 567 WriteOutput('TListPointer.Insert', IntToStr(List.Count) + ' ops'); … … 517 571 StartTime := Now; 518 572 repeat 519 List2.Insert(0, 1);520 until (Now - StartTime) > MeasureDuration; 521 WriteOutput('T List.Insert', IntToStr(List2.Count) + ' ops');573 List2.Insert(0, Pointer(1)); 574 until (Now - StartTime) > MeasureDuration; 575 WriteOutput('TFPList.Insert', IntToStr(List2.Count) + ' ops'); 522 576 List2.Clear; 523 577 Application.ProcessMessages; 524 578 525 579 for I := 0 to SampleCount - 1 do 526 List.Add( 1);580 List.Add(Pointer(1)); 527 581 StartTime := Now; 528 582 I := 0; … … 536 590 537 591 for I := 0 to SampleCount - 1 do 538 List2.Add( 1);592 List2.Add(Pointer(1)); 539 593 StartTime := Now; 540 594 I := 0; … … 543 597 Inc(I); 544 598 until (Now - StartTime) > MeasureDuration; 545 WriteOutput('T List.Delete', IntToStr(I) + ' ops');546 Application.ProcessMessages; 547 548 for I := 0 to SampleCount - 1 do 549 List.Add( 1);599 WriteOutput('TFPList.Delete', IntToStr(I) + ' ops'); 600 Application.ProcessMessages; 601 602 for I := 0 to SampleCount - 1 do 603 List.Add(Pointer(1)); 550 604 StartTime := Now; 551 605 I := 0; … … 559 613 560 614 for I := 0 to SampleCount - 1 do 561 List2.Add( 1);615 List2.Add(Pointer(1)); 562 616 StartTime := Now; 563 617 I := 0; … … 566 620 Inc(I); 567 621 until (Now - StartTime) > MeasureDuration; 568 WriteOutput('T List.Move', IntToStr(I) + ' ops');569 Application.ProcessMessages; 570 571 for I := 0 to SampleCount - 1 do 572 List.Add( 1);622 WriteOutput('TFPList.Move', IntToStr(I) + ' ops'); 623 Application.ProcessMessages; 624 625 for I := 0 to SampleCount - 1 do 626 List.Add(Pointer(1)); 573 627 StartTime := Now; 574 628 I := 0; … … 582 636 583 637 for I := 0 to SampleCount - 1 do 584 List2.Add( 1);638 List2.Add(Pointer(1)); 585 639 StartTime := Now; 586 640 I := 0; … … 589 643 Inc(I); 590 644 until (Now - StartTime) > MeasureDuration; 591 WriteOutput('T List.Exchange', IntToStr(I) + ' ops');592 Application.ProcessMessages; 593 594 for I := 0 to SampleCount - 1 do 595 List.Add( 1);645 WriteOutput('TFPList.Exchange', IntToStr(I) + ' ops'); 646 Application.ProcessMessages; 647 648 for I := 0 to SampleCount - 1 do 649 List.Add(Pointer(1)); 596 650 StartTime := Now; 597 651 I := 0; … … 605 659 606 660 for I := 0 to SampleCount - 1 do 607 List2.Add( 1);661 List2.Add(Pointer(1)); 608 662 StartTime := Now; 609 663 I := 0; … … 612 666 Inc(I); 613 667 until (Now - StartTime) > MeasureDuration; 614 WriteOutput('TList.IndexOf', IntToStr(I) + ' ops'); 615 Application.ProcessMessages; 616 668 WriteOutput('TFPList.IndexOf', IntToStr(I) + ' ops'); 669 Application.ProcessMessages; 670 671 for I := 0 to SampleCount - 1 do 672 List.Add(Pointer(1)); 673 StartTime := Now; 674 I := 0; 675 repeat 676 List[I mod List.Count] := Pointer(1); 677 Inc(I); 678 until (Now - StartTime) > MeasureDuration; 679 WriteOutput('TListPointer[I] write', IntToStr(I) + ' ops'); 680 List.Clear; 681 Application.ProcessMessages; 682 683 for I := 0 to SampleCount - 1 do 684 List2.Add(Pointer(1)); 685 StartTime := Now; 686 I := 0; 687 repeat 688 List2[I mod List2.Count] := Pointer(1); 689 Inc(I); 690 until (Now - StartTime) > MeasureDuration; 691 WriteOutput('TFPList[I] write', IntToStr(I) + ' ops'); 692 Application.ProcessMessages; 693 694 for I := 0 to SampleCount - 1 do 695 List.Add(Pointer(1)); 696 StartTime := Now; 697 I := 0; 698 repeat 699 List[I mod List.Count]; 700 Inc(I); 701 until (Now - StartTime) > MeasureDuration; 702 WriteOutput('TListPointer[I] read', IntToStr(I) + ' ops'); 703 List.Clear; 704 Application.ProcessMessages; 705 706 for I := 0 to SampleCount - 1 do 707 List2.Add(Pointer(1)); 708 StartTime := Now; 709 I := 0; 710 repeat 711 List2[I mod List2.Count]; 712 Inc(I); 713 until (Now - StartTime) > MeasureDuration; 714 WriteOutput('TFPList[I] read', IntToStr(I) + ' ops'); 715 Application.ProcessMessages; 617 716 finally 618 717 UpdateButtonState(True); … … 645 744 MoveItems(2, 3, 3); 646 745 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)); 647 750 finally 648 751 Free;
Note:
See TracChangeset
for help on using the changeset viewer.