 |
Changeset 3890
- Timestamp:
- 08/18/08 17:57:17
(3 months ago)
- Author:
- keinfarbton
- Message:
Fixed many compile error, but DMD 2.018 on linux segfaulted on 30 file:
tango/io/File.d
tango/io/FileSystem.d
tango/io/MappedBuffer.d
tango/io/TempFile.d
tango/io/UnicodeFile.d
tango/io/compress/Zip.d
tango/io/device/FileConduit.d
tango/io/stream/DataFileStream.d
tango/io/stream/FileStream.d
tango/io/stream/TextFileStream.d
tango/io/vfs/FileFolder.d
tango/io/vfs/VirtualFolder.d
tango/io/vfs/ZipFolder.d
tango/net/C/OpenSSL.d
tango/net/PKI.d
tango/net/SSLServerSocket.d
tango/net/SSLSocketConduit.d
tango/net/cluster/tina/ClusterQueue.d
tango/net/cluster/tina/QueueFile.d
tango/net/cluster/tina/QueueServer.d
tango/net/cluster/tina/QueueThread.d
tango/net/ftp/FtpClient.d
tango/net/http/HttpTokens.d
tango/sys/Environment.d
tango/text/Properties.d
tango/text/Regex.d
tango/text/stream/RegexIterator.d
tango/util/log/AppendFile.d
tango/util/log/AppendFiles.d
tango/util/log/ConfigProps.d
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r3724 |
r3890 |
|
| 106 | 106 | then |
|---|
| 107 | 107 | if [ $VERBOSE == 1 ]; then echo "[$DC] $FILENAME"; fi |
|---|
| 108 | | $DC $WARN -c $INLINE $DEBUG $RELEASE -version=Posix -version=Tango -of$OBJNAME $FILENAME |
|---|
| | 108 | echo $DC $WARN -c $INLINE $DEBUG $RELEASE -version=Posix -version=Tango -Ilib/common -of$OBJNAME $FILENAME |
|---|
| | 109 | $DC $WARN -c $INLINE $DEBUG $RELEASE -version=Posix -version=Tango -Ilib/common -of$OBJNAME $FILENAME |
|---|
| 109 | 110 | if [ "$?" != 0 ] |
|---|
| 110 | 111 | then |
|---|
| r3725 |
r3890 |
|
| 248 | 248 | private class ClusterException : IOException |
|---|
| 249 | 249 | { |
|---|
| 250 | | this( char[] msg ) |
|---|
| | 250 | this( Cutf8 msg ) |
|---|
| 251 | 251 | { |
|---|
| 252 | 252 | super( msg ); |
|---|
| … | … | |
| 357 | 357 | class RegistryException : Exception |
|---|
| 358 | 358 | { |
|---|
| 359 | | this( char[] msg ) |
|---|
| | 359 | this( Cutf8 msg ) |
|---|
| 360 | 360 | { |
|---|
| 361 | 361 | super( msg ); |
|---|
| r3724 |
r3890 |
|
| 24 | 24 | #CFLAGS=-g $(ADD_CFLAGS) |
|---|
| 25 | 25 | |
|---|
| 26 | | DFLAGS=-release -O -inline -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| | 26 | DFLAGS=-release -O -inline -w -nofloat -I.. -version=Posix $(ADD_DFLAGS) |
|---|
| 27 | 27 | #DFLAGS=-g -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| 28 | 28 | |
|---|
| r3889 |
r3890 |
|
| 191 | 191 | /** |
|---|
| 192 | 192 | * Create instance of Object represented by 'this'. |
|---|
| | 193 | * Returns: |
|---|
| | 194 | * the object created, or null if the Object does |
|---|
| | 195 | * does not have a default constructor |
|---|
| 193 | 196 | */ |
|---|
| 194 | 197 | Object create() |
|---|
| … | … | |
| 302 | 305 | /// Get type information on the contents of the type; null if not available |
|---|
| 303 | 306 | OffsetTypeInfo[] offTi() { return null; } |
|---|
| | 307 | |
|---|
| | 308 | /// Run the destructor on the object and all its sub-objects |
|---|
| | 309 | void destroy(void *p) { } |
|---|
| | 310 | |
|---|
| | 311 | /// Run the postblit on the object and all its sub-objects |
|---|
| | 312 | void postblit(void *p) { } |
|---|
| 304 | 313 | } |
|---|
| 305 | 314 | |
|---|
| … | … | |
| 327 | 336 | override uint flags() { return base.flags(); } |
|---|
| 328 | 337 | override void[] init() { return m_init.length ? m_init : base.init(); } |
|---|
| | 338 | |
|---|
| | 339 | override void destroy(void *p) { base.destroy(p); } |
|---|
| | 340 | override void postblit(void *p) { base.postblit(p); } |
|---|
| 329 | 341 | |
|---|
| 330 | 342 | TypeInfo base; |
|---|
| … | … | |
| 544 | 556 | override TypeInfo next() { return value; } |
|---|
| 545 | 557 | override uint flags() { return value.flags(); } |
|---|
| | 558 | |
|---|
| | 559 | override void destroy(void *p) |
|---|
| | 560 | { |
|---|
| | 561 | auto sz = value.tsize(); |
|---|
| | 562 | p += sz * len; |
|---|
| | 563 | foreach (i; 0 .. len) |
|---|
| | 564 | { |
|---|
| | 565 | p -= sz; |
|---|
| | 566 | value.destroy(p); |
|---|
| | 567 | } |
|---|
| | 568 | } |
|---|
| | 569 | |
|---|
| | 570 | override void postblit(void *p) |
|---|
| | 571 | { |
|---|
| | 572 | auto sz = value.tsize(); |
|---|
| | 573 | foreach (i; 0 .. len) |
|---|
| | 574 | { |
|---|
| | 575 | value.postblit(p); |
|---|
| | 576 | p += sz; |
|---|
| | 577 | } |
|---|
| | 578 | } |
|---|
| 546 | 579 | |
|---|
| 547 | 580 | TypeInfo value; |
|---|
| … | … | |
| 783 | 816 | // Should use the one for strings. |
|---|
| 784 | 817 | // BUG: relies on the GC not moving objects |
|---|
| 785 | | auto q = p; |
|---|
| | 818 | auto q = cast(const(ubyte)*)p; |
|---|
| 786 | 819 | for (size_t i = 0; i < init.length; i++) |
|---|
| 787 | | { h = h * 9 + *cast(ubyte*)q; |
|---|
| | 820 | { h = h * 9 + *q; |
|---|
| 788 | 821 | q++; |
|---|
| 789 | 822 | } |
|---|
| … | … | |
| 838 | 871 | override uint flags() { return m_flags; } |
|---|
| 839 | 872 | |
|---|
| | 873 | override void destroy(void *p) |
|---|
| | 874 | { |
|---|
| | 875 | if (xdtor) |
|---|
| | 876 | (*xdtor)(p); |
|---|
| | 877 | } |
|---|
| | 878 | |
|---|
| | 879 | override void postblit(void *p) |
|---|
| | 880 | { |
|---|
| | 881 | if (xpostblit) |
|---|
| | 882 | (*xpostblit)(p); |
|---|
| | 883 | } |
|---|
| | 884 | |
|---|
| 840 | 885 | Cutf8 name; |
|---|
| 841 | 886 | void[] m_init; // initializer; init.ptr == null if 0 initialize |
|---|
| … | … | |
| 849 | 894 | |
|---|
| 850 | 895 | const(MemberInfo[]) function(Cutf8) xgetMembers; |
|---|
| | 896 | void function(void*) xdtor; |
|---|
| | 897 | void function(void*) xpostblit; |
|---|
| 851 | 898 | } |
|---|
| 852 | 899 | |
|---|
| … | … | |
| 911 | 958 | assert(0); |
|---|
| 912 | 959 | } |
|---|
| | 960 | |
|---|
| | 961 | override void destroy(void *p) |
|---|
| | 962 | { |
|---|
| | 963 | assert(0); |
|---|
| | 964 | } |
|---|
| | 965 | |
|---|
| | 966 | override void postblit(void *p) |
|---|
| | 967 | { |
|---|
| | 968 | assert(0); |
|---|
| | 969 | } |
|---|
| 913 | 970 | } |
|---|
| 914 | 971 | |
|---|
| 915 | 972 | class TypeInfo_Const : TypeInfo |
|---|
| 916 | 973 | { |
|---|
| 917 | | override Cutf8 toUtf8() { return cast(Cutf8) |
|---|
| 918 | | ("const " ~ base.toUtf8()); } |
|---|
| | 974 | override Cutf8 toString() { return cast(Cutf8) |
|---|
| | 975 | ("const " ~ base.toString()); } |
|---|
| 919 | 976 | |
|---|
| 920 | 977 | override int opEquals(Object o) { return base.opEquals(o); } |
|---|
| … | … | |
| 934 | 991 | class TypeInfo_Invariant : TypeInfo_Const |
|---|
| 935 | 992 | { |
|---|
| 936 | | override Cutf8 toUtf8() { return cast(Cutf8) |
|---|
| 937 | | ("invariant " ~ base.toUtf8()); } |
|---|
| | 993 | override Cutf8 toString() { return cast(Cutf8) |
|---|
| | 994 | ("invariant(" ~ base.toString() ~ ")"); } |
|---|
| 938 | 995 | } |
|---|
| 939 | 996 | |
|---|
| … | … | |
| 1004 | 1061 | Exception next; |
|---|
| 1005 | 1062 | |
|---|
| 1006 | | this( char[] msg, Exception next = null ) |
|---|
| | 1063 | this( Cutf8 msg, Exception next = null ) |
|---|
| 1007 | 1064 | { |
|---|
| 1008 | 1065 | this.msg = msg; |
|---|
| r3889 |
r3890 |
|
| 21 | 21 | #CFLAGS=-g $(ADD_CFLAGS) |
|---|
| 22 | 22 | |
|---|
| 23 | | DFLAGS=-release -O -inline -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| | 23 | DFLAGS=-release -O -inline -w -nofloat -I../../common -version=Posix $(ADD_DFLAGS) |
|---|
| 24 | 24 | #DFLAGS=-g -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| 25 | 25 | |
|---|
| … | … | |
| 68 | 68 | adi.o \ |
|---|
| 69 | 69 | alloca.o \ |
|---|
| | 70 | arrayassign.o \ |
|---|
| 70 | 71 | arraybyte.o \ |
|---|
| 71 | 72 | arraycast.o \ |
|---|
| r3886 |
r3890 |
|
| | 1 | // Written in the D programming language |
|---|
| | 2 | |
|---|
| 1 | 3 | /** |
|---|
| 2 | 4 | * Identify the characteristics of the host CPU. |
|---|
| … | … | |
| 42 | 44 | |
|---|
| 43 | 45 | private import tango.stdc.string : strlen; |
|---|
| | 46 | alias invariant(char)[] string; |
|---|
| 44 | 47 | |
|---|
| 45 | 48 | version(D_InlineAsm_X86) |
|---|
| 46 | 49 | { |
|---|
| | 50 | /+ |
|---|
| | 51 | /// Returns everything as a printable string |
|---|
| | 52 | string toString() |
|---|
| | 53 | { |
|---|
| | 54 | string feats; |
|---|
| | 55 | if (mmx) feats ~= "MMX "; |
|---|
| | 56 | if (fxsr) feats ~= "FXSR "; |
|---|
| | 57 | if (sse) feats ~= "SSE "; |
|---|
| | 58 | if (sse2) feats ~= "SSE2 "; |
|---|
| | 59 | if (sse3) feats ~= "SSE3 "; |
|---|
| | 60 | if (ssse3) feats ~= "SSSE3 "; |
|---|
| | 61 | if (amd3dnow) feats ~= "3DNow! "; |
|---|
| | 62 | if (amd3dnowExt) feats ~= "3DNow!+ "; |
|---|
| | 63 | if (amdMmx) feats ~= "MMX+ "; |
|---|
| | 64 | if (ia64) feats ~= "IA-64 "; |
|---|
| | 65 | if (amd64) feats ~= "AMD64 "; |
|---|
| | 66 | if (hyperThreading) feats ~= "HTT"; |
|---|
| | 67 | |
|---|
| | 68 | return format( |
|---|
| | 69 | "Vendor string: %s\n", vendor, |
|---|
| | 70 | "Processor string: %s\n", processor, |
|---|
| | 71 | "Signature: Family=%d Model=%d Stepping=%d\n", family, model, stepping, |
|---|
| | 72 | "Features: %s\n", feats, |
|---|
| | 73 | "Multithreading: %d threads / %d cores\n", threadsPerCPU, coresPerCPU); |
|---|
| | 74 | |
|---|
| | 75 | } |
|---|
| | 76 | +/ |
|---|
| | 77 | |
|---|
| 47 | 78 | /// Returns vendor string |
|---|
| 48 | | char[] vendor() {return vendorStr;} |
|---|
| | 79 | string vendor() {return vendorStr.idup;} // todo: optimize |
|---|
| 49 | 80 | /// Returns processor string |
|---|
| 50 | | char[] processor() {return processorStr;} |
|---|
| | 81 | string processor() {return processorStr;} |
|---|
| 51 | 82 | |
|---|
| 52 | 83 | /// Is MMX supported? |
|---|
| … | … | |
| 187 | 218 | uint _stepping, _model, _family; |
|---|
| 188 | 219 | |
|---|
| 189 | | char[12] vendorStr = ""; |
|---|
| 190 | | char[] processorStr = ""; |
|---|
| | 220 | char[12] vendorStr = 0; |
|---|
| | 221 | string processorStr = ""; |
|---|
| 191 | 222 | |
|---|
| 192 | 223 | uint maxThreads=1; |
|---|
| … | … | |
| 251 | 282 | |
|---|
| 252 | 283 | // seems many intel processors prepend whitespace |
|---|
| 253 | | processorStr = strip(toString(dst)).dup; |
|---|
| | 284 | processorStr = strip(toString(dst)).idup; |
|---|
| 254 | 285 | } |
|---|
| 255 | 286 | |
|---|
| … | … | |
| 343 | 374 | } |
|---|
| 344 | 375 | } |
|---|
| 345 | | |
|---|
| 346 | 376 | /*************************************************************************** |
|---|
| 347 | 377 | * Support code for above, from std.string and std.ctype |
|---|
| … | … | |
| 427 | 457 | } |
|---|
| 428 | 458 | } |
|---|
| | 459 | |
|---|
| 429 | 460 | } |
|---|
| 430 | 461 | else |
|---|
| 431 | 462 | { |
|---|
| | 463 | char[] toString() { return "unknown CPU\n"; } |
|---|
| | 464 | |
|---|
| 432 | 465 | char[] vendor() {return "unknown vendor"; } |
|---|
| 433 | 466 | char[] processor() {return "unknown processor"; } |
|---|
| r3889 |
r3890 |
|
| 64 | 64 | aApplyR.obj \ |
|---|
| 65 | 65 | adi.obj \ |
|---|
| | 66 | arrayassign.obj \ |
|---|
| 66 | 67 | arraybyte.obj \ |
|---|
| 67 | 68 | arraycast.obj \ |
|---|
| r3724 |
r3890 |
|
| 24 | 24 | CC=gcc |
|---|
| 25 | 25 | LC=$(AR) -qsv |
|---|
| 26 | | DC=dmd |
|---|
| | 26 | DC=~/dmd-2.015/dmd/bin/dmd |
|---|
| 27 | 27 | |
|---|
| 28 | 28 | ADD_CFLAGS=-m32 |
|---|
| r3886 |
r3890 |
|
| 52 | 52 | else |
|---|
| 53 | 53 | echo ">> D 2.0 not supported in this code base" |
|---|
| 54 | | exit 1 |
|---|
| | 54 | #exit 1 |
|---|
| 55 | 55 | fi |
|---|
| 56 | 56 | } |
|---|
| r3724 |
r3890 |
|
| 24 | 24 | #CFLAGS=-g $(ADD_CFLAGS) |
|---|
| 25 | 25 | |
|---|
| 26 | | DFLAGS=-release -O -inline -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| | 26 | DFLAGS=-release -O -inline -w -nofloat -I../../common -version=Posix $(ADD_DFLAGS) |
|---|
| 27 | 27 | #DFLAGS=-g -w -nofloat -version=Posix $(ADD_DFLAGS) |
|---|
| 28 | 28 | |
|---|
| r3724 |
r3890 |
|
| 376 | 376 | static if( needsLoadBarrier!(ms) ) |
|---|
| 377 | 377 | { |
|---|
| 378 | | volatile asm |
|---|
| | 378 | //TODO: check removed volatile |
|---|
| | 379 | /+volatile+/ asm |
|---|
| 379 | 380 | { |
|---|
| 380 | 381 | mov DL, 42; |
|---|
| … | … | |
| 387 | 388 | else |
|---|
| 388 | 389 | { |
|---|
| 389 | | volatile |
|---|
| | 390 | //TODO: check removed volatile |
|---|
| | 391 | // volatile |
|---|
| 390 | 392 | { |
|---|
| 391 | 393 | return val; |
|---|
| … | … | |
| 401 | 403 | static if( needsLoadBarrier!(ms) ) |
|---|
| 402 | 404 | { |
|---|
| 403 | | volatile asm |
|---|
| | 405 | //TODO: check removed volatile |
|---|
| | 406 | /+volatile+/ asm |
|---|
| 404 | 407 | { |
|---|
| 405 | 408 | mov DX, 42; |
|---|
| … | … | |
| 412 | 415 | else |
|---|
| 413 | 416 | { |
|---|
| 414 | | volatile |
|---|
| | 417 | //TODO: check removed volatile |
|---|
| | 418 | // volatile |
|---|
| 415 | 419 | { |
|---|
| 416 | 420 | return val; |
|---|
| … | … | |
| 427 | 431 | static if( needsLoadBarrier!(ms) ) |
|---|
| 428 | 432 | { |
|---|
| 429 | | volatile asm |
|---|
| | 433 | //TODO: check removed volatile |
|---|
| | 434 | /+volatile+/ asm |
|---|
| 430 | 435 | { |
|---|
| 431 | 436 | mov EDX, 42; |
|---|
| … | … | |
| 438 | 443 | else |
|---|
| 439 | 444 | { |
|---|
| 440 | | volatile |
|---|
| | 445 | //TODO: check removed volatile |
|---|
| | 446 | // volatile |
|---|
| 441 | 447 | { |
|---|
| 442 | 448 | return val; |
|---|
| … | … | |
| 460 | 466 | static if( needsLoadBarrier!(ms) ) |
|---|
| 461 | 467 | { |
|---|
| 462 | | volatile asm |
|---|
| | 468 | //TODO: check removed volatile |
|---|
| | 469 | /+volatile+/ asm |
|---|
| 463 | 470 | { |
|---|
| 464 | 471 | mov RAX, val; |
|---|
| … | … | |
| 469 | 476 | else |
|---|
| 470 | 477 | { |
|---|
| 471 | | volatile |
|---|
| | 478 | //TODO: check removed volatile |
|---|
| | 479 | // volatile |
|---|
| 472 | 480 | { |
|---|
| 473 | 481 | return val; |
|---|
| … | … | |
| 523 | 531 | static if( needsStoreBarrier!(ms) ) |
|---|
| 524 | 532 | { |
|---|
| 525 | | volatile asm |
|---|
| | 533 | //TODO: check removed volatile |
|---|
| | 534 | /+volatile+/ asm |
|---|
| 526 | 535 | { |
|---|
| 527 | 536 | mov EAX, val; |
|---|
| … | … | |
| 533 | 542 | else |
|---|
| 534 | 543 | { |
|---|
| 535 | | volatile asm |
|---|
| | 544 | //TODO: check removed volatile |
|---|
| | 545 | /+volatile+/ asm |
|---|
| 536 | 546 | { |
|---|
| 537 | 547 | mov EAX, val; |
|---|
| … | … | |
| 550 | 560 | static if( needsStoreBarrier!(ms) ) |
|---|
| 551 | 561 | { |
|---|
| 552 | | volatile asm |
|---|
| | 562 | //TODO: check removed volatile |
|---|
| | 563 | /+volatile+/ asm |
|---|
| 553 | 564 | { |
|---|
| 554 | 565 | mov EAX, val; |
|---|
| … | … | |
| 560 | 571 | else |
|---|
| 561 | 572 | { |
|---|
| 562 | | volatile asm |
|---|
| | 573 | //TODO: check removed volatile |
|---|
| | 574 | /+volatile+/ asm |
|---|
| 563 | 575 | { |
|---|
| 564 | 576 | mov EAX, val; |
|---|
| … | … | |
| 577 | 589 | static if( needsStoreBarrier!(ms) ) |
|---|
| 578 | 590 | { |
|---|
| 579 | | volatile asm |
|---|
| | 591 | //TODO: check removed volatile |
|---|
| | 592 | /+volatile+/ asm |
|---|
| 580 | 593 | { |
|---|
| 581 | 594 | mov EAX, val; |
|---|
| … | … | |
| 587 | 600 | else |
|---|
| 588 | 601 | { |
|---|
| 589 | | volatile asm |
|---|
| | 602 | //TODO: check removed volatile |
|---|
| | 603 | /+volatile+/ asm |
|---|
| 590 | 604 | { |
|---|
| 591 | 605 | mov EAX, val; |
|---|
| … | … | |
| 611 | 625 | static if( needsStoreBarrier!(ms) ) |
|---|
| 612 | 626 | { |
|---|
| 613 | | volatile asm |
|---|
| | 627 | //TODO: check removed volatile |
|---|
| | 628 | /+volatile+/ asm |
|---|
| 614 | 629 | { |
|---|
| 615 | 630 | mov RAX, val; |
|---|
| … | … | |
| 621 | 636 | else |
|---|
| 622 | 637 | { |
|---|
| 623 | | volatile asm |
|---|
| | 638 | //TODO: check removed volatile |
|---|
| | 639 | /+volatile+/ asm |
|---|
| 624 | 640 | { |
|---|
| 625 | 641 | mov RAX, val; |
|---|
| … | … | |
| 680 | 696 | |
|---|
| 681 | 697 | |
|---|
| 682 | | volatile asm |
|---|
| | 698 | //TODO: check removed volatile |
|---|
| | 699 | /+volatile+/ asm |
|---|
| 683 | 700 | { |
|---|
| 684 | 701 | mov DL, newval; |
|---|
| … | … | |
| 697 | 714 | |
|---|
| 698 | 715 | |
|---|
| 699 | | volatile asm |
|---|
| | 716 | //TODO: check removed volatile |
|---|
| | 717 | /+volatile+/ asm |
|---|
| 700 | 718 | { |
|---|
| 701 | 719 | mov DX, newval; |
|---|
| … | … | |
| 714 | 732 | |
|---|
| 715 | 733 | |
|---|
| 716 | | volatile asm |
|---|
| | 734 | //TODO: check removed volatile |
|---|
| | 735 | /+volatile+/ asm |
|---|
| 717 | 736 | { |
|---|
| 718 | 737 | mov EDX, newval; |
|---|
| … | … | |
| 738 | 757 | |
|---|
| 739 | 758 | |
|---|
| 740 | | volatile asm |
|---|
| | 759 | //TODO: check removed volatile |
|---|
| | 760 | /+volatile+/ asm |
|---|
| 741 | 761 | { |
|---|
| 742 | 762 | mov RDX, newval; |
|---|
| … | … | |
| 755 | 775 | |
|---|
| 756 | 776 | |
|---|
| 757 | | volatile asm |
|---|
| | 777 | //TODO: check removed volatile |
|---|
| | 778 | /+volatile+/ asm |
|---|
| 758 | 779 | { |
|---|
| 759 | 780 | push EDI; |
|---|
| … | … | |
| 815 | 836 | |
|---|
| 816 | 837 | |
|---|
| 817 | | volatile asm |
|---|
| | 838 | //TODO: check removed volatile |
|---|
| | 839 | /+volatile+/ asm |
|---|
| 818 | 840 | { |
|---|
| 819 | 841 | mov EAX, val; |
|---|
| … | … | |
| 830 | 852 | |
|---|
| 831 | 853 | |
|---|
| 832 | | volatile asm |
|---|
| | 854 | //TODO: check removed volatile |
|---|
| | 855 | /+volatile+/ asm |
|---|
| 833 | 856 | { |
|---|
| 834 | 857 | mov EAX, val; |
|---|
| … | … | |
| 845 | 868 | |
|---|
| 846 | 869 | |
|---|
| 847 | | volatile asm |
|---|
| | 870 | //TODO: check removed volatile |
|---|
| | 871 | /+volatile+/ asm |
|---|
| 848 | 872 | { |
|---|
| 849 | 873 | mov EAX, val; |
|---|
| … | … | |
| 867 | 891 | |
|---|
| 868 | 892 | |
|---|
| 869 | | volatile asm |
|---|
| | 893 | //TODO: check removed volatile |
|---|
| | 894 | /+volatile+/ asm |
|---|
| 870 | 895 | { |
|---|
| 871 | 896 | mov RAX, val; |
|---|
| … | … | |
| 927 | 952 | |
|---|
| 928 | 953 | |
|---|
| 929 | | volatile asm |
|---|
| | 954 | //TODO: check removed volatile |
|---|
| | 955 | /+volatile+/ asm |
|---|
| 930 | 956 | { |
|---|
| 931 | 957 | mov EAX, val; |
|---|
| … | … | |
| 942 | 968 | |
|---|
| 943 | 969 | |
|---|
| 944 | | volatile asm |
|---|
| | 970 | //TODO: check removed volatile |
|---|
| | 971 | /+volatile+/ asm |
|---|
| 945 | 972 | { |
|---|
| 946 | 973 | mov EAX, val; |
|---|
| … | … | |
| 957 | 984 | |
|---|
| 958 | 985 | |
|---|
| 959 | | volatile asm |
|---|
| | 986 | //TODO: check removed volatile |
|---|
| | 987 | /+volatile+/ asm |
|---|
| 960 | 988 | { |
|---|
| 961 | 989 | mov EAX, val; |
|---|
| … | … | |
| 979 | 1007 | |
|---|
| 980 | 1008 | |
|---|
| 981 | | volatile asm |
|---|
| | 1009 | //TODO: check removed volatile |
|---|
| | 1010 | /+volatile+/ asm |
|---|
| 982 | 1011 | { |
|---|
| 983 | 1012 | mov RAX, val; |
|---|
| … | … | |
| 1082 | 1111 | else |
|---|
| 1083 | 1112 | { |
|---|
| 1084 | | volatile |
|---|
| | 1113 | //TODO: check removed volatile |
|---|
| | 1114 | // volatile |
|---|
| 1085 | 1115 | { |
|---|
| 1086 | 1116 | return val; |
|---|
| … | … | |
| 1132 | 1162 | else |
|---|
| 1133 | 1163 | { |
|---|
| 1134 | | volatile |
|---|
| | 1164 | //TODO: check removed volatile |
|---|
| | 1165 | // volatile |
|---|
| 1135 | 1166 | { |
|---|
| 1136 | 1167 | val = newval; |
|---|
| r3724 |
r3890 |
|
| 155 | 155 | (*this)[i] = b; |
|---|
| 156 | 156 | } |
|---|
| | 157 | } |
|---|
| | 158 | |
|---|
| | 159 | // TODO: check if this implementation is correct. |
|---|
| | 160 | // a compiler error was issued for this opAssign missing in e.g. reverse() "return *this;" |
|---|
| | 161 | void opAssign( BitArray other ) |
|---|
| | 162 | { |
|---|
| | 163 | auto copy = other.dup; |
|---|
| | 164 | this.length = copy.length; |
|---|
| | 165 | this.ptr = copy.ptr; |
|---|
| 157 | 166 | } |
|---|
| 158 | 167 | |
|---|
| r3887 |
r3890 |
|
| 14 | 14 | author: Kris |
|---|
| 15 | 15 | |
|---|
| 16 | | FilePath provides a means to efficiently edit path components and |
|---|
| | 16 | FilePath provides a means to efficiently edit path components and |
|---|
| 17 | 17 | of accessing the underlying file system. |
|---|
| 18 | 18 | |
|---|
| … | … | |
| 49 | 49 | |
|---|
| 50 | 50 | FilePath is designed to be transformed, thus each mutating method |
|---|
| 51 | | modifies the internal content. |
|---|
| | 51 | modifies the internal content. |
|---|
| 52 | 52 | |
|---|
| 53 | 53 | Note that patterns of adjacent '.' separators are treated specially |
|---|
| 54 | 54 | in that they will be assigned to the name where there is no distinct |
|---|
| 55 | | suffix. In addition, a '.' at the start of a name signifies it does |
|---|
| | 55 | suffix. In addition, a '.' at the start of a name signifies it does |
|---|
| 56 | 56 | not belong to the suffix i.e. ".file" is a name rather than a suffix. |
|---|
| 57 | 57 | Patterns of intermediate '.' characters will otherwise be assigned |
|---|
| … | … | |
| 151 | 151 | ***********************************************************************/ |
|---|
| 152 | 152 | |
|---|
| 153 | | final char[] cString () |
|---|
| | 153 | final Cutf8 cString () |
|---|
| 154 | 154 | { |
|---|
| 155 | 155 | return p.fp [0 .. p.end_+1]; |
|---|
| … | … | |
| 834 | 834 | ***********************************************************************/ |
|---|
| 835 | 835 | |
|---|
| 836 | | final FilePath copy (char[] source) |
|---|
| | 836 | final FilePath copy (Cutf8 source) |
|---|
| 837 | 837 | { |
|---|
| 838 | 838 | FS.copy (source~'\0', cString); |
|---|
| … | … | |
| 997 | 997 | ***********************************************************************/ |
|---|
| 998 | 998 | |
|---|
| 999 | | abstract char[] cString (); |
|---|
| | 999 | abstract Cutf8 cString (); |
|---|
| 1000 | 1000 | |
|---|
| 1001 | 1001 | /*********************************************************************** |
|---|
| r3889 |
r3890 |
|
| 9 | 9 | author: Kris |
|---|
| 10 | 10 | |
|---|
| 11 | | A more direct route to the file-system than FilePath, but with |
|---|
| | 11 | A more direct route to the file-system than FilePath, but with |
|---|
| 12 | 12 | the potential overhead of heap activity. Use this if you don't |
|---|
| 13 | | need path editing features. For example, if all you want is to |
|---|
| 14 | | see if some path exists, using this module would likely be more |
|---|
| | 13 | need path editing features. For example, if all you want is to |
|---|
| | 14 | see if some path exists, using this module would likely be more |
|---|
| 15 | 15 | convenient than FilePath. For example: |
|---|
| 16 | 16 | --- |
|---|
| 17 | | if (exists ("some/file/path")) |
|---|
| | 17 | if (exists ("some/file/path")) |
|---|
| 18 | 18 | ... |
|---|
| 19 | 19 | --- |
|---|
| 20 | 20 | |
|---|
| 21 | | These functions may be less efficient than FilePath because they |
|---|
| | 21 | These functions may be less efficient than FilePath because they |
|---|
| 22 | 22 | may have to attach a null to the filename for each underlying O/S |
|---|
| 23 | | call. Use Path when you need pedestrian access to the file-system, |
|---|
| | 23 | call. Use Path when you need pedestrian access to the file-system, |
|---|
| 24 | 24 | and are not manipulating the path components. Use FilePath where |
|---|
| 25 | 25 | path editing or mutation is desired. |
|---|
| … | … | |
| 29 | 29 | import Path = tango.io.Path; |
|---|
| 30 | 30 | |
|---|
| 31 | | if (Path.exists ("some/file/path")) |
|---|
| | 31 | if (Path.exists ("some/file/path")) |
|---|
| 32 | 32 | ... |
|---|
| 33 | 33 | --- |
|---|
| … | … | |
| 92 | 92 | |
|---|
| 93 | 93 | Wraps the O/S specific calls with a D API. Note that these accept |
|---|
| 94 | | null-terminated strings only, which is why it's not public. We need |
|---|
| | 94 | null-terminated strings only, which is why it's not public. We need |
|---|
| 95 | 95 | this declared first to avoid forward-reference issues |
|---|
| 96 | 96 | |
|---|
| … | … | |
| 120 | 120 | struct FileInfo |
|---|
| 121 | 121 | { |
|---|
| 122 | | char[] path, |
|---|
| | 122 | Cutf8 path, |
|---|
| 123 | 123 | name; |
|---|
| 124 | 124 | ulong bytes; |
|---|
| … | … | |
| 134 | 134 | struct Listing |
|---|
| 135 | 135 | { |
|---|
| 136 | | char[] folder; |
|---|
| | 136 | Cutf8 folder; |
|---|
| 137 | 137 | |
|---|
| 138 | 138 | int opApply (int delegate(ref FileInfo) dg) |
|---|
| … | … | |
| 158 | 158 | ***********************************************************************/ |
|---|
| 159 | 159 | |
|---|
| 160 | | static void exception (char[] filename) |
|---|
| | 160 | static void exception (Cutf8 filename) |
|---|
| 161 | 161 | { |
|---|
| 162 | 162 | exception (filename[0..$-1] ~ ": ", SysError.lastMsg); |
|---|
| … | … | |
| 165 | 165 | /*********************************************************************** |
|---|
| 166 | 166 | |
|---|
| 167 | | Throw an IO exception |
|---|
| 168 | | |
|---|
| 169 | | ***********************************************************************/ |
|---|
| 170 | | |
|---|
| 171 | | static void exception (char[] prefix, char[] error) |
|---|
| | 167 | Throw an IO exception |
|---|
| | 168 | |
|---|
| | 169 | ***********************************************************************/ |
|---|
| | 170 | |
|---|
| | 171 | static void exception (Cutf8 prefix, Cutf8 error) |
|---|
| 172 | 172 | { |
|---|
| 173 | 173 | throw new IOException (prefix ~ error); |
|---|
| … | … | |
| 181 | 181 | ***********************************************************************/ |
|---|
| 182 | 182 | |
|---|
| 183 | | static char[] padded (char[] path, char c = '/') |
|---|
| | 183 | static Cutf8 padded (Cutf8 path, char c = '/') |
|---|
| 184 | 184 | { |
|---|
| 185 | 185 | if (path.length && path[$-1] != c) |
|---|
| … | … | |
| 195 | 195 | ***********************************************************************/ |
|---|
| 196 | 196 | |
|---|
| 197 | | static char[] stripped (char[] path, char c = '/') |
|---|
| | 197 | static Cutf8 stripped (Cutf8 path, char c = '/') |
|---|
| 198 | 198 | { |
|---|
| 199 | 199 | if (path.length && path[$-1] is c) |
|---|
| … | … | |
| 209 | 209 | ***********************************************************************/ |
|---|
| 210 | 210 | |
|---|
| 211 | | static char[] join (char[][] paths...) |
|---|
| | 211 | static Cutf8 join (Cutf8[] paths...) |
|---|
| 212 | 212 | { |
|---|
| 213 | 213 | char[] result; |
|---|
| … | … | |
| 221 | 221 | /*********************************************************************** |
|---|
| 222 | 222 | |
|---|
| 223 | | Append a terminating null onto a string, cheaply where |
|---|
| | 223 | Append a terminating null onto a string, cheaply where |
|---|
| 224 | 224 | feasible |
|---|
| 225 | 225 | |
|---|
| 226 | 226 | ***********************************************************************/ |
|---|
| 227 | 227 | |
|---|
| 228 | | static char[] strz (char[] src, char[] dst) |
|---|
| | 228 | static Cutf8 strz (Cutf8 src, char[] dst) |
|---|
| 229 | 229 | { |
|---|
| 230 | 230 | auto i = src.length + 1; |
|---|
| … | … | |
| 250 | 250 | ***************************************************************/ |
|---|
| 251 | 251 | |
|---|
| 252 | | private static wchar[] toString16 (wchar[] tmp, char[] path) |
|---|
| | 252 | private static Cutf16 toString16 (wchar[] tmp, Cutf8 path) |
|---|
| 253 | 253 | { |
|---|
| 254 | 254 | auto i = MultiByteToWideChar (CP_UTF8, 0, |
|---|
| … | … | |
| 264 | 264 | ***************************************************************/ |
|---|
| 265 | 265 | |
|---|
| 266 | | private static char[] toStr |
|---|
|