Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Changeset 3737

Show
Ignore:
Timestamp:
07/09/08 16:03:20 (5 months ago)
Author:
sean
Message:

Merged in changes from DMD 1.032. These changes have not been applied to GDC because they are new functions which GDC is likely to define differently.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/compiler/dmd/adi.d

    r3697 r3737  
    374374/*************************************** 
    375375 * Support for array equality test. 
     376 * Returns: 
     377 *      1       equal 
     378 *      0       not equal 
    376379 */ 
    377380 
    378381extern (C) int _adEq(Array a1, Array a2, TypeInfo ti) 
    379382{ 
    380     /+ 
    381      + TODO: Re-enable once the correct TypeInfo is passed: 
    382      +       http://d.puremagic.com/issues/show_bug.cgi?id=2161 
    383      + 
    384     debug(adi) printf("_adEq(a1.length = %d, a2.length = %d)\n", a1.length, a2.length); 
    385  
    386     if (a1.length != a2.length) 
    387         return 0; // not equal 
    388     if (a1.ptr == a2.ptr) 
    389         return 1; // equal 
    390  
    391     // We should really have a ti.isPOD() check for this 
    392     if (ti.tsize() != 1) 
    393         return ti.equals(&a1, &a2); 
    394     return memcmp(a1.ptr, a2.ptr, a1.length) == 0; 
    395     +/ 
    396383    debug(adi) printf("_adEq(a1.length = %d, a2.length = %d)\n", a1.length, a2.length); 
    397384    if (a1.length != a2.length) 
     
    413400} 
    414401 
     402extern (C) int _adEq2(Array a1, Array a2, TypeInfo ti) 
     403{ 
     404    debug(adi) printf("_adEq2(a1.length = %d, a2.length = %d)\n", a1.length, a2.length); 
     405    if (a1.length != a2.length) 
     406        return 0;               // not equal 
     407    if (!ti.equals(&a1, &a2)) 
     408        return 0; 
     409    return 1; 
     410} 
    415411unittest 
    416412{ 
     
    432428extern (C) int _adCmp(Array a1, Array a2, TypeInfo ti) 
    433429{ 
    434     /+ 
    435      + TODO: Re-enable once the correct TypeInfo is passed: 
    436      +       http://d.puremagic.com/issues/show_bug.cgi?id=2161 
    437      + 
    438     debug(adi) printf("adCmp()\n"); 
    439  
    440     if (a1.ptr == a2.ptr && 
    441         a1.length == a2.length) 
    442         return 0; 
    443  
    444     auto len = a1.length; 
    445     if (a2.length < len) 
    446         len = a2.length; 
    447  
    448     // We should really have a ti.isPOD() check for this 
    449     if (ti.tsize() != 1) 
    450         return ti.compare(&a1, &a2); 
    451     auto c = memcmp(a1.ptr, a2.ptr, len); 
    452     if (c) 
    453         return c; 
    454     if (a1.length == a2.length) 
    455         return 0; 
    456     return a1.length > a2.length ? 1 : -1; 
    457     +/ 
    458430    debug(adi) printf("adCmp()\n"); 
    459431    auto len = a1.length; 
     
    484456} 
    485457 
     458extern (C) int _adCmp2(Array a1, Array a2, TypeInfo ti) 
     459{ 
     460    debug(adi) printf("_adCmp2(a1.length = %d, a2.length = %d)\n", a1.length, a2.length); 
     461    return ti.compare(&a1, &a2); 
     462} 
    486463unittest 
    487464{ 
  • trunk/lib/compiler/dmd/win32.mak

    r3031 r3737  
    6666    arraycast.obj \ 
    6767    arraycat.obj \ 
     68    arraydouble.obj \ 
     69    arrayfloat.obj \ 
     70    arrayreal.obj \ 
    6871    cast.obj \ 
    6972    complex.obj \ 
     
    8992OBJ_UTIL= \ 
    9093    util\console.obj \ 
     94    util\cpuid.obj \ 
    9195    util\ctype.obj \ 
    9296    util\string.obj \