Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changeset 761

Show
Ignore:
Timestamp:
06/25/08 06:25:40 (16 years ago)
Author:
walter
Message:

change opEquals to return bool

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/phobos/internal/object.d

    r758 r761  
    127127        // BUG: this prevents a compacting GC from working, needs to be fixed 
    128128        //return cast(int)cast(void *)this - cast(int)cast(void *)o; 
    129129 
    130130        throw new Error(cast(string) ("need opCmp for class " 
    131131                                      ~ this.classinfo.name)); 
    132132    } 
    133133 
    134134    /** 
    135135     * Returns !=0 if this object does have the same contents as obj. 
    136136     */ 
    137     int opEquals(Object o) 
    138     { 
    139         return cast(int)(this is o); 
     137    bool opEquals(Object o) 
     138    { 
     139   return (this is o); 
    140140    } 
    141141 
    142142    /* ** 
    143143     * Call delegate dg, passing this to it, when this object gets destroyed. 
    144144     * Use extreme caution, as the list of delegates is stored in a place 
    145145     * not known to the gc. Thus, if any objects pointed to by one of these 
    146146     * delegates gets freed by the gc, calling the delegate will cause a 
    147147     * crash. 
    148148     * This is only for use by library developers, as it will need to be 
    149149     * redone if weak pointers are added or a moving gc is developed. 
     
    355355 
    356356 
    357357/** 
    358358 * Runtime type information about a type. 
    359359 * Can be retrieved for any type using a 
    360360 * <a href="../expression.html#typeidexpression">TypeidExpression</a>. 
    361361 */ 
    362362class TypeInfo 
    363363{ 
    364364    override hash_t toHash() 
    365     { 
    366         hash_t hash; 
    367  
    368         foreach (char c; this.toString()) 
    369             hash = hash * 9 + c; 
    370         return hash; 
     365    {   hash_t hash; 
     366 
     367    foreach (char c; this.toString()) 
     368        hash = hash * 9 + c; 
     369    return hash; 
    371370    } 
    372371 
    373372    override int opCmp(Object o) 
    374373    { 
    375         if (this is o) 
    376             return 0; 
    377         TypeInfo ti = cast(TypeInfo)o; 
    378         if (ti is null) 
    379             return 1; 
    380         return std.string.cmp(this.toString(), ti.toString()); 
    381     } 
    382  
    383     override int opEquals(Object o) 
    384     { 
    385         /* TypeInfo instances are singletons, but duplicates can exist 
    386         * across DLL's. Therefore, comparing for a name match is 
    387         * sufficient. 
    388         */ 
    389         if (this is o) 
    390             return 1; 
    391         TypeInfo ti = cast(TypeInfo)o; 
    392         return cast(int)(ti && this.toString() == ti.toString()); 
     374   if (this is o) 
     375       return 0; 
     376   TypeInfo ti = cast(TypeInfo)o; 
     377   if (ti is null) 
     378       return 1; 
     379   return std.string.cmp(this.toString(), ti.toString()); 
     380    } 
     381 
     382    override bool opEquals(Object o) 
     383    { 
     384   /* TypeInfo instances are singletons, but duplicates can exist 
     385    * across DLL's. Therefore, comparing for a name match is 
     386    * sufficient. 
     387    */ 
     388   if (this is o) 
     389       return 1; 
     390   TypeInfo ti = cast(TypeInfo)o; 
     391   return (ti && this.toString() == ti.toString()); 
    393392    } 
    394393 
    395394    /// Returns a hash of the instance of a type. 
    396395    hash_t getHash(in void *p) { return cast(uint)p; } 
    397396 
    398397    /// Compares two instances for equality. 
    399     int equals(in void *p1, in void *p2) { return cast(int)(p1 == p2); } 
     398    bool equals(in void *p1, in void *p2) { return (p1 == p2); } 
    400399 
    401400    /// Compares two instances for &lt;, ==, or &gt;. 
    402401    int compare(in void *p1, in void *p2) { return 0; } 
    403402 
    404403    /// Returns size of the type. 
    405404    size_t tsize() { return 0; } 
    406405 
    407406    /// Swaps two instances of the type. 
    408407    void swap(void *p1, void *p2) 
    409408    { 
     
    434433    void destroy(void *p) { } 
    435434 
    436435    /// Run the postblit on the object and all its sub-objects 
    437436    void postblit(void *p) { } 
    438437} 
    439438 
    440439class TypeInfo_Typedef : TypeInfo 
    441440{ 
    442441    override string toString() { return name; } 
    443442 
    444     override int opEquals(Object o) 
     443    override bool opEquals(Object o) 
    445444    {   TypeInfo_Typedef c; 
    446445 
    447         return cast(int) 
    448                 (this is o || 
    449                 ((c = cast(TypeInfo_Typedef)o) !is null && 
    450                  this.name == c.name && 
    451                  this.base == c.base)); 
     446    return  this is o || 
     447        ((c = cast(TypeInfo_Typedef)o) !is null && 
     448         this.name == c.name && 
     449         this.base == c.base); 
    452450    } 
    453451 
    454452    override hash_t getHash(in void *p) { return base.getHash(p); } 
    455     override int equals(in void *p1, in void *p2) { return base.equals(p1, p2); } 
     453    override bool equals(in void *p1, in void *p2) { return base.equals(p1, p2); } 
    456454    override int compare(in void *p1, in void *p2) { return base.compare(p1, p2); } 
    457455    override size_t tsize() { return base.tsize(); } 
    458456    override void swap(void *p1, void *p2) { return base.swap(p1, p2); } 
    459457 
    460458    override TypeInfo next() { return base.next(); } 
    461459    override uint flags() { return base.flags(); } 
    462460    override void[] init() { return m_init.length ? m_init : base.init(); } 
    463461 
    464462    override void destroy(void *p) { base.destroy(p); } 
    465463    override void postblit(void *p) { base.postblit(p); } 
     
    470468} 
    471469 
    472470class TypeInfo_Enum : TypeInfo_Typedef 
    473471{ 
    474472} 
    475473 
    476474class TypeInfo_Pointer : TypeInfo 
    477475{ 
    478476    override string toString() { return cast(string) (m_next.toString() ~ "*"); } 
    479477 
    480     override int opEquals(Object o) 
     478    override bool opEquals(Object o) 
    481479    {   TypeInfo_Pointer c; 
    482480 
    483481        return this is o || 
    484482                ((c = cast(TypeInfo_Pointer)o) !is null && 
    485483                 this.m_next == c.m_next); 
    486484    } 
    487485 
    488486    override hash_t getHash(in void *p) 
    489487    { 
    490488        return cast(uint)*cast(void* *)p; 
    491489    } 
    492490 
    493     override int equals(in void *p1, in void *p2) 
    494     { 
    495         return cast(int)(*cast(void* *)p1 == *cast(void* *)p2); 
     491    override bool equals(in void *p1, in void *p2) 
     492    { 
     493        return (*cast(void* *)p1 == *cast(void* *)p2); 
    496494    } 
    497495 
    498496    override int compare(in void *p1, in void *p2) 
    499497    { 
    500498        if (*cast(void* *)p1 < *cast(void* *)p2) 
    501499            return -1; 
    502500        else if (*cast(void* *)p1 > *cast(void* *)p2) 
    503501            return 1; 
    504502        else 
    505503            return 0; 
    506504    } 
    507505 
    508506    override size_t tsize() 
    509507    { 
    510508        return (void*).sizeof; 
    511509    } 
    512510 
    513511    override void swap(void *p1, void *p2) 
    514     { 
    515         void* tmp; 
    516         tmp = *cast(void**)p1; 
    517         *cast(void**)p1 = *cast(void**)p2; 
    518         *cast(void**)p2 = tmp; 
     512    {   void* tmp; 
     513    tmp = *cast(void**)p1; 
     514    *cast(void**)p1 = *cast(void**)p2; 
     515    *cast(void**)p2 = tmp; 
    519516    } 
    520517 
    521518    override TypeInfo next() { return m_next; } 
    522519    override uint flags() { return 1; } 
    523520 
    524521    TypeInfo m_next; 
    525522} 
    526523 
    527524class TypeInfo_Array : TypeInfo 
    528525{ 
    529526    override string toString() { return cast(string) (value.toString() ~ "[]"); } 
    530527 
    531     override int opEquals(Object o) 
     528    override bool opEquals(Object o) 
    532529    {   TypeInfo_Array c; 
    533530 
    534         return cast(int) 
    535                (this is o || 
    536                 ((c = cast(TypeInfo_Array)o) !is null && 
    537                  this.value == c.value)); 
     531    return  this is o || 
     532        ((c = cast(TypeInfo_Array)o) !is null && 
     533         this.value == c.value); 
    538534    } 
    539535 
    540536    override hash_t getHash(in void *p) 
    541     { 
    542         size_t sz = value.tsize(); 
    543         hash_t hash = 0; 
    544         void[] a = *cast(void[]*)p; 
    545         for (size_t i = 0; i < a.length; i++) 
    546             hash += value.getHash(a.ptr + i * sz); 
     537    {   size_t sz = value.tsize(); 
     538    hash_t hash = 0; 
     539    void[] a = *cast(void[]*)p; 
     540    for (size_t i = 0; i < a.length; i++) 
     541        hash += value.getHash(a.ptr + i * sz); 
    547542        return hash; 
    548543    } 
    549544 
    550     override int equals(in void *p1, in void *p2) 
    551     { 
    552         void[] a1 = *cast(void[]*)p1; 
    553         void[] a2 = *cast(void[]*)p2; 
    554         if (a1.length != a2.length) 
    555             return 0; 
    556         size_t sz = value.tsize(); 
    557         for (size_t i = 0; i < a1.length; i++) 
    558        
    559             if (!value.equals(a1.ptr + i * sz, a2.ptr + i * sz)) 
    560                 return 0; 
    561        
     545    override bool equals(in void *p1, in void *p2) 
     546    { 
     547   void[] a1 = *cast(void[]*)p1; 
     548   void[] a2 = *cast(void[]*)p2; 
     549   if (a1.length != a2.length) 
     550       return 0; 
     551   size_t sz = value.tsize(); 
     552   for (size_t i = 0; i < a1.length; i++) 
     553   
     554       if (!value.equals(a1.ptr + i * sz, a2.ptr + i * sz)) 
     555       return 0; 
     556   
    562557        return 1; 
    563558    } 
    564559 
    565560    override int compare(in void *p1, in void *p2) 
    566561    { 
    567562        void[] a1 = *cast(void[]*)p1; 
    568563        void[] a2 = *cast(void[]*)p2; 
    569564        size_t sz = value.tsize(); 
    570565        size_t len = a1.length; 
    571566 
     
    579574        } 
    580575        return cast(int)a1.length - cast(int)a2.length; 
    581576    } 
    582577 
    583578    override size_t tsize() 
    584579    { 
    585580        return (void[]).sizeof; 
    586581    } 
    587582 
    588583    override void swap(void *p1, void *p2) 
    589     { 
    590         void[] tmp; 
    591         tmp = *cast(void[]*)p1; 
    592         *cast(void[]*)p1 = *cast(void[]*)p2; 
    593         *cast(void[]*)p2 = tmp; 
     584    {   void[] tmp; 
     585    tmp = *cast(void[]*)p1; 
     586    *cast(void[]*)p1 = *cast(void[]*)p2; 
     587    *cast(void[]*)p2 = tmp; 
    594588    } 
    595589 
    596590    TypeInfo value; 
    597591 
    598592    override TypeInfo next() 
    599593    { 
    600594        return value; 
    601595    } 
    602596 
    603597    override uint flags() { return 1; } 
    604598} 
    605599 
    606600class TypeInfo_StaticArray : TypeInfo 
    607601{ 
    608602    override string toString() 
    609603    { 
    610604        return cast(string) 
    611605            (value.toString() ~ "[" ~ std.string.toString(len) ~ "]"); 
    612606    } 
    613607 
    614     override int opEquals(Object o) 
     608    override bool opEquals(Object o) 
    615609    {   TypeInfo_StaticArray c; 
    616610 
    617         return cast(int) 
    618                (this is o || 
    619                 ((c = cast(TypeInfo_StaticArray)o) !is null && 
    620                  this.len == c.len && 
    621                  this.value == c.value)); 
     611    return  this is o || 
     612        ((c = cast(TypeInfo_StaticArray)o) !is null && 
     613         this.len == c.len && 
     614         this.value == c.value); 
    622615    } 
    623616 
    624617    override hash_t getHash(in void *p) 
    625     { 
    626         size_t sz = value.tsize(); 
    627         hash_t hash = 0; 
    628         for (size_t i = 0; i < len; i++) 
    629             hash += value.getHash(p + i * sz); 
     618    {   size_t sz = value.tsize(); 
     619    hash_t hash = 0; 
     620    for (size_t i = 0; i < len; i++) 
     621        hash += value.getHash(p + i * sz); 
    630622        return hash; 
    631623    } 
    632624 
    633     override int equals(in void *p1, in void *p2) 
    634     { 
    635         size_t sz = value.tsize(); 
     625    override bool equals(in void *p1, in void *p2) 
     626    { 
     627   size_t sz = value.tsize(); 
    636628 
    637629        for (size_t u = 0; u < len; u++) 
    638630        { 
    639631            if (!value.equals(p1 + u * sz, p2 + u * sz)) 
    640632                return 0; 
    641633        } 
    642634        return 1; 
    643635    } 
    644636 
    645637    override int compare(in void *p1, in void *p2) 
     
    654646        } 
    655647        return 0; 
    656648    } 
    657649 
    658650    override size_t tsize() 
    659651    { 
    660652        return len * value.tsize(); 
    661653    } 
    662654 
    663655    override void swap(void *p1, void *p2) 
    664     { 
    665         void* tmp; 
    666         size_t sz = value.tsize(); 
    667         ubyte[16] buffer; 
    668         void* pbuffer; 
    669  
    670         if (sz < buffer.sizeof) 
    671             tmp = buffer.ptr; 
    672         else 
    673             tmp = pbuffer = (new void[sz]).ptr; 
    674  
    675         for (size_t u = 0; u < len; u += sz) 
    676         {   size_t o = u * sz; 
    677             memcpy(tmp, p1 + o, sz); 
    678             memcpy(p1 + o, p2 + o, sz); 
    679             memcpy(p2 + o, tmp, sz); 
    680         } 
    681         if (pbuffer) 
    682             delete pbuffer; 
     656    {   void* tmp; 
     657    size_t sz = value.tsize(); 
     658    ubyte[16] buffer; 
     659    void* pbuffer; 
     660 
     661    if (sz < buffer.sizeof) 
     662        tmp = buffer.ptr; 
     663    else 
     664        tmp = pbuffer = (new void[sz]).ptr; 
     665 
     666    for (size_t u = 0; u < len; u += sz) 
     667    {   size_t o = u * sz; 
     668        memcpy(tmp, p1 + o, sz); 
     669        memcpy(p1 + o, p2 + o, sz); 
     670        memcpy(p2 + o, tmp, sz); 
     671    } 
     672    if (pbuffer) 
     673        delete pbuffer; 
    683674    } 
    684675 
    685676    override void[] init() { return value.init(); } 
    686677    override TypeInfo next() { return value; } 
    687678    override uint flags() { return value.flags(); } 
    688679 
    689680    override void destroy(void *p) 
    690681    { 
    691682        auto sz = value.tsize(); 
    692683        p += sz * len; 
     
    708699    } 
    709700 
    710701    TypeInfo value; 
    711702    size_t len; 
    712703} 
    713704 
    714705class TypeInfo_AssociativeArray : TypeInfo 
    715706{ 
    716707    override string toString() 
    717708    { 
    718         return cast(string) (value.toString() ~ "[" ~ key.toString() ~ "]"); 
    719     } 
    720  
    721     override int opEquals(Object o) 
     709   return cast(string) (value.toString() ~ "[" ~ key.toString() ~ "]"); 
     710    } 
     711 
     712    override bool opEquals(Object o) 
    722713    {   TypeInfo_AssociativeArray c; 
    723714 
    724715        return this is o || 
    725716                ((c = cast(TypeInfo_AssociativeArray)o) !is null && 
    726717                 this.key == c.key && 
    727718                 this.value == c.value); 
    728719    } 
    729720 
    730721    // BUG: need to add the rest of the functions 
    731722 
     
    738729    override uint flags() { return 1; } 
    739730 
    740731    TypeInfo value; 
    741732    TypeInfo key; 
    742733} 
    743734 
    744735class TypeInfo_Function : TypeInfo 
    745736{ 
    746737    override string toString() 
    747738    { 
    748         return cast(string) (next.toString() ~ "()"); 
    749     } 
    750  
    751     override int opEquals(Object o) 
     739   return cast(string) (next.toString() ~ "()"); 
     740    } 
     741 
     742    override bool opEquals(Object o) 
    752743    {   TypeInfo_Function c; 
    753744 
    754745        return this is o || 
    755746                ((c = cast(TypeInfo_Function)o) !is null && 
    756747                 this.next == c.next); 
    757748    } 
    758749 
    759750    // BUG: need to add the rest of the functions 
    760751 
    761752    override size_t tsize() 
     
    763754        return 0;   // no size for functions 
    764755    } 
    765756 
    766757    TypeInfo next;  // function return type 
    767758} 
    768759 
    769760class TypeInfo_Delegate : TypeInfo 
    770761{ 
    771762    override string toString() 
    772763    { 
    773         return cast(string) (next.toString() ~ " delegate()"); 
    774     } 
    775  
    776     override int opEquals(Object o) 
     764   return cast(string) (next.toString() ~ " delegate()"); 
     765    } 
     766 
     767    override bool opEquals(Object o) 
    777768    {   TypeInfo_Delegate c; 
    778769 
    779770        return this is o || 
    780771                ((c = cast(TypeInfo_Delegate)o) !is null && 
    781772                 this.next == c.next); 
    782773    } 
    783774 
    784775    // BUG: need to add the rest of the functions 
    785776 
    786777    override size_t tsize() 
    787     { 
    788         alias int delegate() dg; 
    789         return dg.sizeof; 
     778    {   alias int delegate() dg; 
     779    return dg.sizeof; 
    790780    } 
    791781 
    792782    override uint flags() { return 1; } 
    793783 
    794784    TypeInfo next;  // delegate return type 
    795785} 
    796786 
    797787class TypeInfo_Class : TypeInfo 
    798788{ 
    799789    override string toString() { return info.name; } 
    800790 
    801     override int opEquals(Object o) 
     791    override bool opEquals(Object o) 
    802792    {   TypeInfo_Class c; 
    803793 
    804794        return this is o || 
    805795                ((c = cast(TypeInfo_Class)o) !is null && 
    806796                 this.info.name == c.classinfo.name); 
    807797    } 
    808798 
    809799    override hash_t getHash(in void *p) 
    810800    { 
    811         Object o = *cast(Object*)p; 
    812         return o ? o.toHash() : 0; 
    813     } 
    814  
    815     override int equals(in void *p1, in void *p2) 
    816     { 
    817         Object o1 = *cast(Object*)p1; 
    818         Object o2 = *cast(Object*)p2; 
    819  
    820         return (o1 is o2) || (o1 && o1.opEquals(o2)); 
     801   Object o = *cast(Object*)p; 
     802   return o ? o.toHash() : 0; 
     803    } 
     804 
     805    override bool equals(in void *p1, in void *p2) 
     806    { 
     807   Object o1 = *cast(Object*)p1; 
     808   Object o2 = *cast(Object*)p2; 
     809 
     810   return (o1 is o2) || (o1 && o1.opEquals(o2)); 
    821811    } 
    822812 
    823813    override int compare(in void *p1, in void *p2) 
    824814    { 
    825         Object o1 = *cast(Object*)p1; 
    826         Object o2 = *cast(Object*)p2; 
    827         int c = 0; 
    828  
    829         // Regard null references as always being "less than" 
    830         if (o1 !is o2) 
    831         { 
    832             if (o1) 
    833             { 
    834                 if (!o2) 
    835                     c = 1; 
    836                 else 
    837                     c = o1.opCmp(o2); 
    838             } 
    839             else 
    840                 c = -1; 
    841         } 
    842         return c; 
     815    Object o1 = *cast(Object*)p1; 
     816    Object o2 = *cast(Object*)p2; 
     817    int c = 0; 
     818 
     819    // Regard null references as always being "less than" 
     820    if (o1 !is o2) 
     821    { 
     822        if (o1) 
     823        {   if (!o2) 
     824            c = 1; 
     825        else 
     826            c = o1.opCmp(o2); 
     827        } 
     828        else 
     829        c = -1; 
     830    } 
     831    return c; 
    843832    } 
    844833 
    845834    override size_t tsize() 
    846835    { 
    847836        return Object.sizeof; 
    848837    } 
    849838 
    850839    override uint flags() { return 1; } 
    851840 
    852841    override OffsetTypeInfo[] offTi() 
     
    854843        return (info.flags & 4) ? info.offTi : null; 
    855844    } 
    856845 
    857846    ClassInfo info; 
    858847} 
    859848 
    860849class TypeInfo_Interface : TypeInfo 
    861850{ 
    862851    override string toString() { return info.name; } 
    863852 
    864     override int opEquals(Object o) 
     853    override bool opEquals(Object o) 
    865854    {   TypeInfo_Interface c; 
    866855 
    867856        return this is o || 
    868857                ((c = cast(TypeInfo_Interface)o) !is null && 
    869858                 this.info.name == c.classinfo.name); 
    870859    } 
    871860 
    872861    override hash_t getHash(in void *p) 
    873862    { 
    874         Interface* pi = **cast(Interface ***)*cast(void**)p; 
    875         Object o = cast(Object)(*cast(void**)p - pi.offset); 
    876         assert(o); 
    877         return o.toHash(); 
    878     } 
    879  
    880     override int equals(in void *p1, in void *p2) 
    881     { 
    882         Interface* pi = **cast(Interface ***)*cast(void**)p1; 
    883         Object o1 = cast(Object)(*cast(void**)p1 - pi.offset); 
    884         pi = **cast(Interface ***)*cast(void**)p2; 
    885         Object o2 = cast(Object)(*cast(void**)p2 - pi.offset); 
    886  
    887         return o1 == o2 || (o1 && o1.opCmp(o2) == 0); 
     863   Interface* pi = **cast(Interface ***)*cast(void**)p; 
     864   Object o = cast(Object)(*cast(void**)p - pi.offset); 
     865   assert(o); 
     866   return o.toHash(); 
     867    } 
     868 
     869    override bool equals(in void *p1, in void *p2) 
     870    { 
     871   Interface* pi = **cast(Interface ***)*cast(void**)p1; 
     872   Object o1 = cast(Object)(*cast(void**)p1 - pi.offset); 
     873   pi = **cast(Interface ***)*cast(void**)p2; 
     874   Object o2 = cast(Object)(*cast(void**)p2 - pi.offset); 
     875 
     876   return o1 == o2 || (o1 && o1.opCmp(o2) == 0); 
    888877    } 
    889878 
    890879    override int compare(in void *p1, in void *p2) 
    891880    { 
    892         Interface* pi = **cast(Interface ***)*cast(void**)p1; 
    893         Object o1 = cast(Object)(*cast(void**)p1 - pi.offset); 
    894         pi = **cast(Interface ***)*cast(void**)p2; 
    895         Object o2 = cast(Object)(*cast(void**)p2 - pi.offset); 
    896         int c = 0; 
    897  
    898         // Regard null references as always being "less than" 
    899         if (o1 != o2) 
    900         { 
    901             if (o1) 
    902             { 
    903                 if (!o2) 
    904                     c = 1; 
    905                 else 
    906                     c = o1.opCmp(o2); 
    907             } 
    908             else 
    909                 c = -1; 
    910         } 
    911         return c; 
     881    Interface* pi = **cast(Interface ***)*cast(void**)p1; 
     882    Object o1 = cast(Object)(*cast(void**)p1 - pi.offset); 
     883    pi = **cast(Interface ***)*cast(void**)p2; 
     884    Object o2 = cast(Object)(*cast(void**)p2 - pi.offset); 
     885    int c = 0; 
     886 
     887    // Regard null references as always being "less than" 
     888    if (o1 != o2) 
     889    { 
     890        if (o1) 
     891        {   if (!o2) 
     892            c = 1; 
     893        else 
     894            c = o1.opCmp(o2); 
     895        } 
     896        else 
     897        c = -1; 
     898    } 
     899    return c; 
    912900    } 
    913901 
    914902    override size_t tsize() 
    915903    { 
    916904        return Object.sizeof; 
    917905    } 
    918906 
    919907    override uint flags() { return 1; } 
    920908 
    921909    ClassInfo info; 
    922910} 
    923911 
    924912class TypeInfo_Struct : TypeInfo 
    925913{ 
    926914    override string toString() { return name; } 
    927915 
    928     override int opEquals(Object o) 
     916    override bool opEquals(Object o) 
    929917    {   TypeInfo_Struct s; 
    930918 
    931919        return this is o || 
    932920                ((s = cast(TypeInfo_Struct)o) !is null && 
    933921                 this.name == s.name && 
    934922                 this.init.length == s.init.length); 
    935923    } 
    936924 
    937925    override hash_t getHash(in void *p) 
    938     { 
    939         hash_t h; 
    940  
    941         assert(p); 
    942         if (xtoHash) 
    943         {   //printf("getHash() using xtoHash\n"); 
    944             h = (*xtoHash)(p); 
    945         } 
    946         else 
    947         { 
    948             //printf("getHash() using default hash\n"); 
    949             // A sorry hash algorithm. 
    950             // Should use the one for strings. 
    951             // BUG: relies on the GC not moving objects 
    952             auto q = cast(const(ubyte)*)p; 
    953             for (size_t i = 0; i < init.length; i++) 
    954             { 
    955                 h = h * 9 + *q; 
    956                 q++; 
    957             } 
    958         } 
    959         return h; 
    960     } 
    961  
    962     override int equals(in void *p2, in void *p1) 
    963     { 
    964         int c; 
    965  
    966         if (p1 == p2) 
    967             c = 1; 
    968         else if (!p1 || !p2) 
    969             c = 0; 
    970         else if (xopEquals) 
    971             c = (*xopEquals)(p1, p2); 
    972         else 
    973             // BUG: relies on the GC not moving objects 
    974             c = (memcmp(p1, p2, init.length) == 0); 
    975         return c; 
     926    {   hash_t h; 
     927 
     928    assert(p); 
     929    if (xtoHash) 
     930    {   //printf("getHash() using xtoHash\n"); 
     931        h = (*xtoHash)(p); 
     932    } 
     933    else 
     934    { 
     935        //printf("getHash() using default hash\n"); 
     936        // A sorry hash algorithm. 
     937        // Should use the one for strings. 
     938        // BUG: relies on the GC not moving objects 
     939        auto q = cast(const(ubyte)*)p; 
     940        for (size_t i = 0; i < init.length; i++) 
     941        {   h = h * 9 + *q; 
     942        q++; 
     943        } 
     944    } 
     945    return h; 
     946    } 
     947 
     948    override bool equals(in void *p2, in void *p1) 
     949    {   bool c; 
     950 
     951    if (p1 == p2) 
     952        c = 1; 
     953    else if (!p1 || !p2) 
     954        c = 0; 
     955    else if (xopEquals) 
     956        c = (*xopEquals)(p1, p2); 
     957    else 
     958        // BUG: relies on the GC not moving objects 
     959        c = (memcmp(p1, p2, init.length) == 0); 
     960    return c; 
    976961    } 
    977962 
    978963    override int compare(in void *p2, in void *p1) 
    979964    { 
    980         int c = 0; 
    981  
    982         // Regard null references as always being "less than" 
    983         if (p1 != p2) 
    984         { 
    985             if (p1) 
    986             { 
    987                 if (!p2) 
    988                     c = 1; 
    989                 else if (xopCmp) 
    990                     c = (*xopCmp)(p1, p2); 
    991                 else 
    992                     // BUG: relies on the GC not moving objects 
    993                     c = memcmp(p1, p2, init.length); 
    994             } 
    995             else 
    996                 c = -1; 
    997         } 
    998         return c; 
     965    int c = 0; 
     966 
     967    // Regard null references as always being "less than" 
     968    if (p1 != p2) 
     969    { 
     970        if (p1) 
     971        {   if (!p2) 
     972            c = 1; 
     973        else if (xopCmp) 
     974            c = (*xopCmp)(p1, p2); 
     975        else 
     976            // BUG: relies on the GC not moving objects 
     977            c = memcmp(p1, p2, init.length); 
     978        } 
     979        else 
     980        c = -1; 
     981    } 
     982    return c; 
    999983    } 
    1000984 
    1001985    override size_t tsize() 
    1002986    { 
    1003987        return init.length; 
    1004988    } 
    1005989 
    1006990    override void[] init() { return m_init; } 
    1007991 
    1008992    override uint flags() { return m_flags; } 
     
    10161000    override void postblit(void *p) 
    10171001    { 
    10181002        if (xpostblit) 
    10191003            (*xpostblit)(p); 
    10201004    } 
    10211005 
    10221006    string name; 
    10231007    void[] m_init;  // initializer; init.ptr == null if 0 initialize 
    10241008 
    10251009    hash_t function(in void*) xtoHash; 
    1026     int function(in void*, in void*) xopEquals; 
     1010    bool function(in void*, in void*) xopEquals; 
    10271011    int function(in void*, in void*) xopCmp; 
    10281012    string function(const(void)*) xtoString; 
    10291013 
    10301014    uint m_flags; 
    10311015 
    10321016    const(MemberInfo[]) function(string) xgetMembers; 
    10331017    void function(void*) xdtor; 
    10341018    void function(void*) xpostblit; 
    10351019} 
    10361020 
     
    10451029        foreach (i, element; elements) 
    10461030        { 
    10471031            if (i) 
    10481032                s ~= ','; 
    10491033            s ~= element.toString(); 
    10501034        } 
    10511035        s ~= ")"; 
    10521036        return s; 
    10531037    } 
    10541038 
    1055     override int opEquals(Object o) 
    1056     { 
    1057         if (this is o) 
    1058             return 1; 
    1059  
    1060         auto t = cast(TypeInfo_Tuple)o; 
    1061         if (t && elements.length == t.elements.length) 
    1062        
    1063             for (size_t i = 0; i < elements.length; i++) 
    1064             { 
    1065                 if (elements[i] != t.elements[i]) 
    1066                     return 0; 
    1067             } 
    1068             return 1; 
    1069        
    1070         return 0; 
     1039    override bool opEquals(Object o) 
     1040    { 
     1041   if (this is o) 
     1042       return 1; 
     1043 
     1044   auto t = cast(TypeInfo_Tuple)o; 
     1045   if (t && elements.length == t.elements.length) 
     1046   
     1047       for (size_t i = 0; i < elements.length; i++) 
     1048       { 
     1049       if (elements[i] != t.elements[i]) 
     1050           return 0; 
     1051       } 
     1052       return 1; 
     1053   
     1054   return 0; 
    10711055    } 
    10721056 
    10731057    override hash_t getHash(in void *p) 
    10741058    { 
    10751059        assert(0); 
    10761060    } 
    10771061 
    1078     override int equals(in void *p1, in void *p2) 
     1062    override bool equals(in void *p1, in void *p2) 
    10791063    { 
    10801064        assert(0); 
    10811065    } 
    10821066 
    10831067    override int compare(in void *p1, in void *p2) 
    10841068    { 
    10851069        assert(0); 
    10861070    } 
    10871071 
    10881072    override size_t tsize() 
     
    11041088    { 
    11051089        assert(0); 
    11061090    } 
    11071091} 
    11081092 
    11091093class TypeInfo_Const : TypeInfo 
    11101094{ 
    11111095    override string toString() { return cast(string) 
    11121096            ("const(" ~ base.toString() ~ ")"); } 
    11131097 
    1114     override int opEquals(Object o) { return base.opEquals(o); } 
     1098    override bool opEquals(Object o) { return base.opEquals(o); } 
    11151099    override hash_t getHash(in void *p) { return base.getHash(p); } 
    1116     override int equals(in void *p1, in void *p2) { return base.equals(p1, p2); } 
     1100    override bool equals(in void *p1, in void *p2) { return base.equals(p1, p2); } 
    11171101    override int compare(in void *p1, in void *p2) { return base.compare(p1, p2); } 
    11181102    override size_t tsize() { return base.tsize(); } 
    11191103    override void swap(void *p1, void *p2) { return base.swap(p1, p2); } 
    11201104 
    11211105    override TypeInfo next() { return base.next(); } 
    11221106    override uint flags() { return base.flags(); } 
    11231107    override void[] init() { return base.init(); } 
    11241108 
    11251109    TypeInfo base; 
    11261110} 
  • trunk/phobos/object.d

    r550 r761  
    1717{   int printf(in char *, ...); 
    1818    void trace_term(); 
    1919} 
    2020 
    2121class Object 
    2222{ 
    2323    void print(); 
    2424    string toString(); 
    2525    hash_t toHash(); 
    2626    int opCmp(Object o); 
    27     int opEquals(Object o); 
     27    bool opEquals(Object o); 
    2828 
    2929    final void notifyRegister(void delegate(Object) dg); 
    3030    final void notifyUnRegister(void delegate(Object) dg); 
    3131 
    3232    static Object factory(string classname); 
    3333} 
    3434 
    3535struct Interface 
    3636{ 
    3737    ClassInfo classinfo; 
     
    138138{ 
    139139    ClassInfo info; 
    140140} 
    141141 
    142142class TypeInfo_Struct : TypeInfo 
    143143{ 
    144144    string name; 
    145145    void[] m_init; 
    146146 
    147147    uint function(in void*) xtoHash; 
    148     int function(in void*, in void*) xopEquals; 
     148    bool function(in void*, in void*) xopEquals; 
    149149    int function(in void*, in void*) xopCmp; 
    150150    string function(const(void)*) xtoString; 
    151151 
    152152    uint m_flags; 
    153153 
    154154    const(MemberInfo[]) function(string) xgetMembers; 
    155155    void function(void*) xdtor; 
    156156    void function(void*) xpostblit; 
    157157} 
    158158 
  • trunk/phobos/std/bitmanip.d

    r689 r761  
    540540            assert(ba[i] == false); 
    541541        for (size_t i = 6; i < 10; i++) 
    542542            assert(ba[i] == true); 
    543543    } 
    544544 
    545545 
    546546    /*************************************** 
    547547     * Support for operators == and != for bit arrays. 
    548548     */ 
    549549 
    550     int opEquals(BitArray a2) 
     550    bool opEquals(BitArray a2) 
    551551    {   int i; 
    552552 
    553553        if (this.length != a2.length) 
    554554            return 0;                // not equal 
    555555        byte *p1 = cast(byte*)this.ptr; 
    556556        byte *p2 = cast(byte*)a2.ptr; 
    557557        uint n = this.length / 8; 
    558558        for (i = 0; i < n; i++) 
    559559        { 
    560560            if (p1[i] != p2[i]) 
  • trunk/phobos/std/regexp.d

    r589 r761  
    13721372        break; 
    13731373    //debug(regexp) printf("Starting new try: '%.*s'\n", input[si + 1 .. input.length]); 
    13741374    } 
    13751375    return 0;       // no match 
    13761376} 
    13771377 
    13781378    /** 
    13791379       Returns whether string $(D_PARAM s) matches $(D_PARAM this). 
    13801380    */ 
    13811381alias test opEquals; 
    1382 //     int opEquals(string s) 
     1382//     bool opEquals(string s) 
    13831383//     { 
    13841384//         return test(s); 
    13851385//     } 
    13861386 
    13871387unittest 
    13881388{ 
    13891389    assert("abc" == RegExp(".b.")); 
    13901390    assert("abc" != RegExp(".b..")); 
    13911391} 
    13921392 
  • trunk/phobos/std/typeinfo/ti_AC.d

    r408 r761  
    99    hash_t hash = 0; 
    1010 
    1111    foreach (Object o; s) 
    1212    { 
    1313        if (o) 
    1414        hash += o.toHash(); 
    1515    } 
    1616    return hash; 
    1717    } 
    1818 
    19     override int equals(in void *p1, in void *p2) 
     19    override bool equals(in void *p1, in void *p2) 
    2020    { 
    2121    Object[] s1 = *cast(Object[]*)p1; 
    2222    Object[] s2 = *cast(Object[]*)p2; 
    2323 
    2424    if (s1.length == s2.length) 
    2525    { 
    2626        for (size_t u = 0; u < s1.length; u++) 
    2727        {   Object o1 = s1[u]; 
    2828        Object o2 = s2[u]; 
    2929 
  • trunk/phobos/std/typeinfo/ti_Acdouble.d

    r408 r761  
    4444        hash += (cast(uint *)str)[1]; 
    4545        hash += (cast(uint *)str)[2]; 
    4646        hash += (cast(uint *)str)[3]; 
    4747        str++; 
    4848        len--; 
    4949    } 
    5050 
    5151    return hash; 
    5252    } 
    5353 
    54     override int equals(in void *p1, in void *p2) 
     54    override bool equals(in void *p1, in void *p2) 
    5555    { 
    5656    cdouble[] s1 = *cast(cdouble[]*)p1; 
    5757    cdouble[] s2 = *cast(cdouble[]*)p2; 
    5858    size_t len = s1.length; 
    5959 
    6060    if (len != s2.length) 
    6161        return 0; 
    6262    for (size_t u = 0; u < len; u++) 
    6363    { 
    64         int c = TypeInfo_r._equals(s1[u], s2[u]); 
    65         if (c == 0
     64        auto c = TypeInfo_r._equals(s1[u], s2[u]); 
     65        if (!c
    6666        return 0; 
    6767    } 
    6868    return 1; 
    6969    } 
    7070 
    7171    override int compare(in void *p1, in void *p2) 
    7272    { 
    7373    cdouble[] s1 = *cast(cdouble[]*)p1; 
    7474    cdouble[] s2 = *cast(cdouble[]*)p2; 
    7575    size_t len = s1.length; 
  • trunk/phobos/std/typeinfo/ti_Acfloat.d

    r408 r761  
    4242        hash *= 9; 
    4343        hash += (cast(uint *)str)[0]; 
    4444        hash += (cast(uint *)str)[1]; 
    4545        str++; 
    4646        len--; 
    4747    } 
    4848 
    4949    return hash; 
    5050    } 
    5151 
    52     override int equals(in void *p1, in void *p2) 
     52    override bool equals(in void *p1, in void *p2) 
    5353    { 
    5454    cfloat[] s1 = *cast(cfloat[]*)p1; 
    5555    cfloat[] s2 = *cast(cfloat[]*)p2; 
    5656    size_t len = s1.length; 
    5757 
    5858    if (len != s2.length) 
    5959        return 0; 
    6060    for (size_t u = 0; u < len; u++) 
    6161    { 
    62         int c = TypeInfo_q._equals(s1[u], s2[u]); 
     62        auto c = TypeInfo_q._equals(s1[u], s2[u]); 
    6363        if (c == 0) 
    6464        return 0; 
    6565    } 
    6666    return 1; 
    6767    } 
    6868 
    6969    override int compare(in void *p1, in void *p2) 
    7070    { 
    7171    cfloat[] s1 = *cast(cfloat[]*)p1; 
    7272    cfloat[] s2 = *cast(cfloat[]*)p2; 
  • trunk/phobos/std/typeinfo/ti_Acreal.d

    r408 r761  
    4545        hash += (cast(uint *)str)[2]; 
    4646        hash += (cast(uint *)str)[3]; 
    4747        hash += (cast(uint *)str)[4]; 
    4848        str++; 
    4949        len--; 
    5050    } 
    5151 
    5252    return hash; 
    5353    } 
    5454 
    55     override int equals(in void *p1, in void *p2) 
     55    override bool equals(in void *p1, in void *p2) 
    5656    { 
    5757    creal[] s1 = *cast(creal[]*)p1; 
    5858    creal[] s2 = *cast(creal[]*)p2; 
    5959    size_t len = s1.length; 
    6060 
    6161    if (len != s2.length) 
    6262        return 0; 
    6363    for (size_t u = 0; u < len; u++) 
    6464    { 
    65         int c = TypeInfo_c._equals(s1[u], s2[u]); 
     65        auto c = TypeInfo_c._equals(s1[u], s2[u]); 
    6666        if (c == 0) 
    6767        return 0; 
    6868    } 
    6969    return 1; 
    7070    } 
    7171 
    7272    override int compare(in void *p1, in void *p2) 
    7373    { 
    7474    creal[] s1 = *cast(creal[]*)p1; 
    7575    creal[] s2 = *cast(creal[]*)p2; 
  • trunk/phobos/std/typeinfo/ti_Adouble.d

    r408 r761  
    4242        hash *= 9; 
    4343        hash += (cast(uint *)str)[0]; 
    4444        hash += (cast(uint *)str)[1]; 
    4545        str++; 
    4646        len--; 
    4747    } 
    4848 
    4949    return hash; 
    5050    } 
    5151 
    52     override int equals(in void *p1, in void *p2) 
     52    override bool equals(in void *p1, in void *p2) 
    5353    { 
    5454    double[] s1 = *cast(double[]*)p1; 
    5555    double[] s2 = *cast(double[]*)p2; 
    5656    size_t len = s1.length; 
    5757 
    5858    if (len != s2.length) 
    5959        return 0; 
    6060    for (size_t u = 0; u < len; u++) 
    6161    { 
    62         int c = TypeInfo_d._equals(s1[u], s2[u]); 
    63         if (c == 0
     62        auto c = TypeInfo_d._equals(s1[u], s2[u]); 
     63        if (!c
    6464        return 0; 
    6565    } 
    6666    return 1; 
    6767    } 
    6868 
    6969    override int compare(in void *p1, in void *p2) 
    7070    { 
    7171    double[] s1 = *cast(double[]*)p1; 
    7272    double[] s2 = *cast(double[]*)p2; 
    7373    size_t len = s1.length; 
  • trunk/phobos/std/typeinfo/ti_Afloat.d

    r408 r761  
    4141    { 
    4242        hash *= 9; 
    4343        hash += *cast(uint *)str; 
    4444        str++; 
    4545        len--; 
    4646    } 
    4747 
    4848    return hash; 
    4949    } 
    5050 
    51     override int equals(in void *p1, in void *p2) 
     51    override bool equals(in void *p1, in void *p2) 
    5252    { 
    5353    float[] s1 = *cast(float[]*)p1; 
    5454    float[] s2 = *cast(float[]*)p2; 
    5555    size_t len = s1.length; 
    5656 
    5757    if (len != s2.length) 
    5858        return 0; 
    5959    for (size_t u = 0; u < len; u++) 
    6060    { 
    61         int c = TypeInfo_f._equals(s1[u], s2[u]); 
    62         if (c == 0
     61        auto c = TypeInfo_f._equals(s1[u], s2[u]); 
     62        if (!c
    6363        return 0; 
    6464    } 
    6565    return 1; 
    6666    } 
    6767 
    6868    override int compare(in void *p1, in void *p2) 
    6969    { 
    7070    float[] s1 = *cast(float[]*)p1; 
    7171    float[] s2 = *cast(float[]*)p2; 
    7272    size_t len = s1.length; 
  • trunk/phobos/std/typeinfo/ti_Ag.d

    r408 r761  
    4444            hash += *cast(uint *)str; 
    4545            str += 4; 
    4646            len -= 4; 
    4747            break; 
    4848        } 
    4949    } 
    5050 
    5151    return hash; 
    5252    } 
    5353 
    54     override int equals(in void *p1, in void *p2) 
     54    override bool equals(in void *p1, in void *p2) 
    5555    { 
    5656    byte[] s1 = *cast(byte[]*)p1; 
    5757    byte[] s2 = *cast(byte[]*)p2; 
    5858 
    5959    return s1.length == s2.length && 
    6060           memcmp(cast(byte *)s1, cast(byte *)s2, s1.length) == 0; 
    6161    } 
    6262 
    6363    override int compare(in void *p1, in void *p2) 
    6464    { 
  • trunk/phobos/std/typeinfo/ti_Aint.d

    r703 r761  
    1919    { 
    2020        hash *= 9; 
    2121        hash += *cast(uint *)str; 
    2222        str++; 
    2323        len--; 
    2424    } 
    2525 
    2626    return hash; 
    2727    } 
    2828 
    29     override int equals(in void *p1, in void *p2) 
     29    override bool equals(in void *p1, in void *p2) 
    3030    { 
    3131    int[] s1 = *cast(int[]*)p1; 
    3232    int[] s2 = *cast(int[]*)p2; 
    3333 
    3434    return s1.length == s2.length && 
    3535           memcmp(cast(void *)s1, cast(void *)s2, s1.length * int.sizeof) == 0; 
    3636    } 
    3737 
    3838    override int compare(in void *p1, in void *p2) 
    3939    { 
  • trunk/phobos/std/typeinfo/ti_Along.d

    r408 r761  
    1919    { 
    2020        hash *= 9; 
    2121        hash += *cast(uint *)str + *(cast(uint *)str + 1); 
    2222        str++; 
    2323        len--; 
    2424    } 
    2525 
    2626    return hash; 
    2727    } 
    2828 
    29     override int equals(in void *p1, in void *p2) 
     29    override bool equals(in void *p1, in void *p2) 
    3030    { 
    3131    long[] s1 = *cast(long[]*)p1; 
    3232    long[] s2 = *cast(long[]*)p2; 
    3333 
    3434    return s1.length == s2.length && 
    3535           memcmp(cast(void *)s1, cast(void *)s2, s1.length * long.sizeof) == 0; 
    3636    } 
    3737 
    3838    override int compare(in void *p1, in void *p2) 
    3939    { 
  • trunk/phobos/std/typeinfo/ti_Areal.d

    r408 r761  
    4343        hash += (cast(uint *)str)[0]; 
    4444        hash += (cast(uint *)str)[1]; 
    4545        hash += (cast(ushort *)str)[4]; 
    4646        str++; 
    4747        len--; 
    4848    } 
    4949 
    5050    return hash; 
    5151    } 
    5252 
    53     override int equals(in void *p1, in void *p2) 
     53    override bool equals(in void *p1, in void *p2) 
    5454    { 
    5555    real[] s1 = *cast(real[]*)p1; 
    5656    real[] s2 = *cast(real[]*)p2; 
    5757    size_t len = s1.length; 
    5858 
    5959    if (len != s2.length) 
    6060        return 0; 
    6161    for (size_t u = 0; u < len; u++) 
    6262    { 
    63         int c = TypeInfo_e._equals(s1[u], s2[u]); 
    64         if (c == 0
    65         return 0
     63        bool c = TypeInfo_e._equals(s1[u], s2[u]); 
     64        if (c == false
     65        return false
    6666    } 
    6767    return 1; 
    6868    } 
    6969 
    7070    override int compare(in void *p1, in void *p2) 
    7171    { 
    7272    real[] s1 = *cast(real[]*)p1; 
    7373    real[] s2 = *cast(real[]*)p2; 
    7474    size_t len = s1.length; 
    7575 
  • trunk/phobos/std/typeinfo/ti_Ashort.d

    r408 r761  
    3232            hash += *cast(uint *)str; 
    3333            str += 2; 
    3434            len -= 2; 
    3535            break; 
    3636        } 
    3737    } 
    3838 
    3939    return hash; 
    4040    } 
    4141 
    42     override int equals(in void *p1, in void *p2) 
     42    override bool equals(in void *p1, in void *p2) 
    4343    { 
    4444    short[] s1 = *cast(short[]*)p1; 
    4545    short[] s2 = *cast(short[]*)p2; 
    4646 
    4747    return s1.length == s2.length && 
    4848           memcmp(cast(void *)s1, cast(void *)s2, s1.length * short.sizeof) == 0; 
    4949    } 
    5050 
    5151    override int compare(in void *p1, in void *p2) 
    5252    { 
  • trunk/phobos/std/typeinfo/ti_byte.d

    r408 r761  
    55 
    66class TypeInfo_g : TypeInfo 
    77{ 
    88    override string toString() { return "byte"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(byte *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(byte *)p1 == *cast(byte *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(byte *)p1 - *cast(byte *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_C.d

    r664 r761  
    2626// Object 
    2727 
    2828class TypeInfo_C : TypeInfo 
    2929{ 
    3030    override hash_t getHash(in void *p) 
    3131    { 
    3232    Object o = *cast(Object*)p; 
    3333    return o ? o.toHash() : 0; 
    3434    } 
    3535 
    36     override int equals(in void *p1, in void *p2) 
     36    override bool equals(in void *p1, in void *p2) 
    3737    { 
    3838    Object o1 = *cast(Object*)p1; 
    3939    Object o2 = *cast(Object*)p2; 
    4040 
    4141    return o1 == o2; 
    4242    } 
    4343 
    4444    override int compare(in void *p1, in void *p2) 
    4545    { 
    4646    Object o1 = *cast(Object*)p1; 
  • trunk/phobos/std/typeinfo/ti_cdouble.d

    r408 r761  
    66class TypeInfo_r : TypeInfo 
    77{ 
    88    override string toString() { return "cdouble"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return (cast(uint *)p)[0] + (cast(uint *)p)[1] + 
    1313           (cast(uint *)p)[2] + (cast(uint *)p)[3]; 
    1414    } 
    1515 
    16     static int _equals(cdouble f1, cdouble f2) 
     16    static bool _equals(cdouble f1, cdouble f2) 
    1717    { 
    1818    return f1 == f2; 
    1919    } 
    2020 
    2121    static int _compare(cdouble f1, cdouble f2) 
    2222    {   int result; 
    2323 
    2424    if (f1.re < f2.re) 
    2525        result = -1; 
    2626    else if (f1.re > f2.re) 
    2727        result = 1; 
    2828    else if (f1.im < f2.im) 
    2929        result = -1; 
    3030    else if (f1.im > f2.im) 
    3131        result = 1; 
    3232    else 
    3333        result = 0; 
    3434        return result; 
    3535    } 
    3636 
    37     override int equals(in void *p1, in void *p2) 
     37    override bool equals(in void *p1, in void *p2) 
    3838    { 
    3939    return _equals(*cast(cdouble *)p1, *cast(cdouble *)p2); 
    4040    } 
    4141 
    4242    override int compare(in void *p1, in void *p2) 
    4343    { 
    4444    return _compare(*cast(cdouble *)p1, *cast(cdouble *)p2); 
    4545    } 
    4646 
    4747    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_cfloat.d

    r408 r761  
    55 
    66class TypeInfo_q : TypeInfo 
    77{ 
    88    override string toString() { return "cfloat"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return (cast(uint *)p)[0] + (cast(uint *)p)[1]; 
    1313    } 
    1414 
    15     static int _equals(cfloat f1, cfloat f2) 
     15    static bool _equals(cfloat f1, cfloat f2) 
    1616    { 
    1717    return f1 == f2; 
    1818    } 
    1919 
    2020    static int _compare(cfloat f1, cfloat f2) 
    2121    {   int result; 
    2222 
    2323    if (f1.re < f2.re) 
    2424        result = -1; 
    2525    else if (f1.re > f2.re) 
    2626        result = 1; 
    2727    else if (f1.im < f2.im) 
    2828        result = -1; 
    2929    else if (f1.im > f2.im) 
    3030        result = 1; 
    3131    else 
    3232        result = 0; 
    3333        return result; 
    3434    } 
    3535 
    36     override int equals(in void *p1, in void *p2) 
     36    override bool equals(in void *p1, in void *p2) 
    3737    { 
    3838    return _equals(*cast(cfloat *)p1, *cast(cfloat *)p2); 
    3939    } 
    4040 
    4141    override int compare(in void *p1, in void *p2) 
    4242    { 
    4343    return _compare(*cast(cfloat *)p1, *cast(cfloat *)p2); 
    4444    } 
    4545 
    4646    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_char.d

    r408 r761  
    33 
    44class TypeInfo_a : TypeInfo 
    55{ 
    66    override string toString() { return "char"; } 
    77 
    88    override hash_t getHash(in void *p) 
    99    { 
    1010    return *cast(char *)p; 
    1111    } 
    1212 
    13     override int equals(in void *p1, in void *p2) 
     13    override bool equals(in void *p1, in void *p2) 
    1414    { 
    1515    return *cast(char *)p1 == *cast(char *)p2; 
    1616    } 
    1717 
    1818    override int compare(in void *p1, in void *p2) 
    1919    { 
    2020    return *cast(char *)p1 - *cast(char *)p2; 
    2121    } 
    2222 
    2323    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_creal.d

    r408 r761  
    77{ 
    88    override string toString() { return "creal"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return (cast(uint *)p)[0] + (cast(uint *)p)[1] + 
    1313           (cast(uint *)p)[2] + (cast(uint *)p)[3] + 
    1414           (cast(uint *)p)[4]; 
    1515    } 
    1616 
    17     static int _equals(creal f1, creal f2) 
     17    static bool _equals(creal f1, creal f2) 
    1818    { 
    1919    return f1 == f2; 
    2020    } 
    2121 
    2222    static int _compare(creal f1, creal f2) 
    2323    {   int result; 
    2424 
    2525    if (f1.re < f2.re) 
    2626        result = -1; 
    2727    else if (f1.re > f2.re) 
    2828        result = 1; 
    2929    else if (f1.im < f2.im) 
    3030        result = -1; 
    3131    else if (f1.im > f2.im) 
    3232        result = 1; 
    3333    else 
    3434        result = 0; 
    3535        return result; 
    3636    } 
    3737 
    38     override int equals(in void *p1, in void *p2) 
     38    override bool equals(in void *p1, in void *p2) 
    3939    { 
    4040    return _equals(*cast(creal *)p1, *cast(creal *)p2); 
    4141    } 
    4242 
    4343    override int compare(in void *p1, in void *p2) 
    4444    { 
    4545    return _compare(*cast(creal *)p1, *cast(creal *)p2); 
    4646    } 
    4747 
    4848    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_dchar.d

    r408 r761  
    55 
    66class TypeInfo_w : TypeInfo 
    77{ 
    88    override string toString() { return "dchar"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(dchar *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(dchar *)p1 == *cast(dchar *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(dchar *)p1 - *cast(dchar *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_delegate.d

    r408 r761  
    66alias void delegate(int) dg; 
    77 
    88class TypeInfo_D : TypeInfo 
    99{ 
    1010    override hash_t getHash(in void *p) 
    1111    {   long l = *cast(long *)p; 
    1212 
    1313    return cast(uint)(l + (l >> 32)); 
    1414    } 
    1515 
    16     override int equals(in void *p1, in void *p2) 
     16    override bool equals(in void *p1, in void *p2) 
    1717    { 
    1818    return *cast(dg *)p1 == *cast(dg *)p2; 
    1919    } 
    2020 
    2121    override size_t tsize() 
    2222    { 
    2323    return dg.sizeof; 
    2424    } 
    2525 
    2626    override void swap(void *p1, void *p2) 
  • trunk/phobos/std/typeinfo/ti_double.d

    r408 r761  
    77 
    88class TypeInfo_d : TypeInfo 
    99{ 
    1010    override string toString() { return "double"; } 
    1111 
    1212    override hash_t getHash(in void *p) 
    1313    { 
    1414    return (cast(uint *)p)[0] + (cast(uint *)p)[1]; 
    1515    } 
    1616 
    17     static int _equals(double f1, double f2) 
     17    static bool _equals(double f1, double f2) 
    1818    { 
    1919    return f1 == f2 || 
    2020        (isnan(f1) && isnan(f2)); 
    2121    } 
    2222 
    2323    static int _compare(double d1, double d2) 
    2424    { 
    2525    if (d1 !<>= d2)     // if either are NaN 
    2626    { 
    2727        if (isnan(d1)) 
    2828        {   if (isnan(d2)) 
    2929            return 0; 
    3030        return -1; 
    3131        } 
    3232        return 1; 
    3333    } 
    3434    return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); 
    3535    } 
    3636 
    37     override int equals(in void *p1, in void *p2) 
     37    override bool equals(in void *p1, in void *p2) 
    3838    { 
    3939    return _equals(*cast(double *)p1, *cast(double *)p2); 
    4040    } 
    4141 
    4242    override int compare(in void *p1, in void *p2) 
    4343    { 
    4444    return _compare(*cast(double *)p1, *cast(double *)p2); 
    4545    } 
    4646 
    4747    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_float.d

    r408 r761  
    77 
    88class TypeInfo_f : TypeInfo 
    99{ 
    1010    override string toString() { return "float"; } 
    1111 
    1212    override hash_t getHash(in void *p) 
    1313    { 
    1414    return *cast(uint *)p; 
    1515    } 
    1616 
    17     static int _equals(float f1, float f2) 
     17    static bool _equals(float f1, float f2) 
    1818    { 
    1919    return f1 == f2 || 
    2020        (isnan(f1) && isnan(f2)); 
    2121    } 
    2222 
    2323    static int _compare(float d1, float d2) 
    2424    { 
    2525    if (d1 !<>= d2)     // if either are NaN 
    2626    { 
    2727        if (isnan(d1)) 
    2828        {   if (isnan(d2)) 
    2929            return 0; 
    3030        return -1; 
    3131        } 
    3232        return 1; 
    3333    } 
    3434    return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); 
    3535    } 
    3636 
    37     override int equals(in void *p1, in void *p2) 
     37    override bool equals(in void *p1, in void *p2) 
    3838    { 
    3939    return _equals(*cast(float *)p1, *cast(float *)p2); 
    4040    } 
    4141 
    4242    override int compare(in void *p1, in void *p2) 
    4343    { 
    4444    return _compare(*cast(float *)p1, *cast(float *)p2); 
    4545    } 
    4646 
    4747    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_int.d

    r408 r761  
    55 
    66class TypeInfo_i : TypeInfo 
    77{ 
    88    override string toString() { return "int"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(uint *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(uint *)p1 == *cast(uint *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    if (*cast(int*) p1 < *cast(int*) p2) 
    2323        return -1; 
    2424    else if (*cast(int*) p1 > *cast(int*) p2) 
    2525        return 1; 
  • trunk/phobos/std/typeinfo/ti_long.d

    r408 r761  
    55 
    66class TypeInfo_l : TypeInfo 
    77{ 
    88    override string toString() { return "long"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(uint *)p + (cast(uint *)p)[1]; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(long *)p1 == *cast(long *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    if (*cast(long *)p1 < *cast(long *)p2) 
    2323        return -1; 
    2424    else if (*cast(long *)p1 > *cast(long *)p2) 
    2525        return 1; 
  • trunk/phobos/std/typeinfo/ti_ptr.d

    r408 r761  
    33 
    44module std.typeinfo.ti_ptr; 
    55 
    66class TypeInfo_P : TypeInfo 
    77{ 
    88    override hash_t getHash(in void *p) 
    99    { 
    1010    return cast(uint)*cast(void* *)p; 
    1111    } 
    1212 
    13     override int equals(in void *p1, in void *p2) 
     13    override bool equals(in void *p1, in void *p2) 
    1414    { 
    1515    return *cast(void* *)p1 == *cast(void* *)p2; 
    1616    } 
    1717 
    1818    override int compare(in void *p1, in void *p2) 
    1919    { 
    2020    return *cast(void* *)p1 - *cast(void* *)p2; 
    2121    } 
    2222 
    2323    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_real.d

    r408 r761  
    77 
    88class TypeInfo_e : TypeInfo 
    99{ 
    1010    override string toString() { return "real"; } 
    1111 
    1212    override hash_t getHash(in void *p) 
    1313    { 
    1414    return (cast(uint *)p)[0] + (cast(uint *)p)[1] + (cast(ushort *)p)[4]; 
    1515    } 
    1616 
    17     static int _equals(real f1, real f2) 
     17    static bool _equals(real f1, real f2) 
    1818    { 
    1919    return f1 == f2 || 
    2020        (isnan(f1) && isnan(f2)); 
    2121    } 
    2222 
    2323    static int _compare(real d1, real d2) 
    2424    { 
    2525    if (d1 !<>= d2)     // if either are NaN 
    2626    { 
    2727        if (isnan(d1)) 
    2828        {   if (isnan(d2)) 
    2929            return 0; 
    3030        return -1; 
    3131        } 
    3232        return 1; 
    3333    } 
    3434    return (d1 == d2) ? 0 : ((d1 < d2) ? -1 : 1); 
    3535    } 
    3636 
    37     override int equals(in void *p1, in void *p2) 
     37    override bool equals(in void *p1, in void *p2) 
    3838    { 
    3939    return _equals(*cast(real *)p1, *cast(real *)p2); 
    4040    } 
    4141 
    4242    override int compare(in void *p1, in void *p2) 
    4343    { 
    4444    return _compare(*cast(real *)p1, *cast(real *)p2); 
    4545    } 
    4646 
    4747    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_short.d

    r408 r761  
    55 
    66class TypeInfo_s : TypeInfo 
    77{ 
    88    override string toString() { return "short"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(short *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(short *)p1 == *cast(short *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(short *)p1 - *cast(short *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_ubyte.d

    r408 r761  
    55 
    66class TypeInfo_h : TypeInfo 
    77{ 
    88    override string toString() { return "ubyte"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(ubyte *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(ubyte *)p1 == *cast(ubyte *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(ubyte *)p1 - *cast(ubyte *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_uint.d

    r408 r761  
    55 
    66class TypeInfo_k : TypeInfo 
    77{ 
    88    override string toString() { return "uint"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(uint *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(uint *)p1 == *cast(uint *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    if (*cast(uint*) p1 < *cast(uint*) p2) 
    2323        return -1; 
    2424    else if (*cast(uint*) p1 > *cast(uint*) p2) 
    2525        return 1; 
  • trunk/phobos/std/typeinfo/ti_ulong.d

    r408 r761  
    55 
    66class TypeInfo_m : TypeInfo 
    77{ 
    88    override string toString() { return "ulong"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(uint *)p + (cast(uint *)p)[1]; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(ulong *)p1 == *cast(ulong *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    if (*cast(ulong *)p1 < *cast(ulong *)p2) 
    2323        return -1; 
    2424    else if (*cast(ulong *)p1 > *cast(ulong *)p2) 
    2525        return 1; 
  • trunk/phobos/std/typeinfo/ti_ushort.d

    r408 r761  
    55 
    66class TypeInfo_t : TypeInfo 
    77{ 
    88    override string toString() { return "ushort"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    return *cast(ushort *)p; 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(ushort *)p1 == *cast(ushort *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(ushort *)p1 - *cast(ushort *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_void.d

    r408 r761  
    55 
    66class TypeInfo_v : TypeInfo 
    77{ 
    88    override string toString() { return "void"; } 
    99 
    1010    override hash_t getHash(in void *p) 
    1111    { 
    1212    assert(0); 
    1313    } 
    1414 
    15     override int equals(in void *p1, in void *p2) 
     15    override bool equals(in void *p1, in void *p2) 
    1616    { 
    1717    return *cast(byte *)p1 == *cast(byte *)p2; 
    1818    } 
    1919 
    2020    override int compare(in void *p1, in void *p2) 
    2121    { 
    2222    return *cast(byte *)p1 - *cast(byte *)p2; 
    2323    } 
    2424 
    2525    override size_t tsize() 
  • trunk/phobos/std/typeinfo/ti_wchar.d

    r408 r761  
    44 
    55class TypeInfo_u : TypeInfo 
    66{ 
    77    override string toString() { return "wchar"; } 
    88 
    99    override hash_t getHash(in void *p) 
    1010    { 
    1111    return *cast(wchar *)p; 
    1212    } 
    1313 
    14     override int equals(in void *p1, in void *p2) 
     14    override bool equals(in void *p1, in void *p2) 
    1515    { 
    1616    return *cast(wchar *)p1 == *cast(wchar *)p2; 
    1717    } 
    1818 
    1919    override int compare(in void *p1, in void *p2) 
    2020    { 
    2121    return *cast(wchar *)p1 - *cast(wchar *)p2; 
    2222    } 
    2323 
    2424    override size_t tsize() 
  • trunk/phobos/std/variant.d

    r716 r761  
    594594        string result; 
    595595        fptr(OpID.toString, &store, &result) == 0 || assert(false); 
    596596        return result; 
    597597    } 
    598598 
    599599    /** 
    600600     * Comparison for equality used by the "==" and "!="  operators. 
    601601     */ 
    602602 
    603603    // returns 1 if the two are equal 
    604     int opEquals(T)(T rhs) 
     604    bool opEquals(T)(T rhs) 
    605605    { 
    606606        static if (is(T == VariantN)) 
    607607            alias rhs temp; 
    608608        else 
    609609            auto temp = Variant(rhs); 
    610610        return fptr(OpID.compare, &store, &temp) == 0; 
    611611    } 
    612612 
    613613    /** 
    614614     * Ordering comparison used by the "<", "<=", ">", and ">=" 
  • trunk/phobos/std/xml.d

    r753 r761  
    499499    { 
    500500        /** 
    501501         * Compares two Documents for equality 
    502502         * 
    503503         * Examples: 
    504504         * -------------- 
    505505         * Document d1,d2; 
    506506         * if (d1 == d2) { } 
    507507         * -------------- 
    508508         */ 
    509         override int opEquals(Object o) 
     509        override bool opEquals(Object o) 
    510510        { 
    511511            const doc = toType!(const Document)(o); 
    512512            return 
    513513                (prolog != doc.prolog            ) ? false : ( 
    514514                (super  != cast(const Element)doc) ? false : ( 
    515515                (epilog != doc.epilog            ) ? false : ( 
    516516            true ))); 
    517517        } 
    518518 
    519519        /** 
     
    730730 
    731731    /** 
    732732     * Compares two Elements for equality 
    733733     * 
    734734     * Examples: 
    735735     * -------------- 
    736736     * Element e1,e2; 
    737737     * if (e1 == e2) { } 
    738738     * -------------- 
    739739     */ 
    740     override int opEquals(Object o) 
     740    override bool opEquals(Object o) 
    741741    { 
    742742        const element = toType!(const Element)(o); 
    743743        uint len = items.length; 
    744744        if (len != element.items.length) return false; 
    745745        for (uint i=0; i<len; ++i) 
    746746        { 
    747747            if (!items[i].opEquals(element.items[i])) return false; 
    748748        } 
    749749        return true; 
    750750    } 
     
    998998         * 
    999999         * You should rarely need to call this function. It exists so that Tags 
    10001000         * can be used as associative array keys. 
    10011001         * 
    10021002         * Examples: 
    10031003         * -------------- 
    10041004         * Tag tag1,tag2 
    10051005         * if (tag1 == tag2) { } 
    10061006         * -------------- 
    10071007         */ 
    1008         override int opEquals(Object o) 
     1008        override bool opEquals(Object o) 
    10091009        { 
    10101010            const tag = toType!(const Tag)(o); 
    10111011            return 
    10121012                (name != tag.name) ? false : ( 
    10131013                (attr != tag.attr) ? false : ( 
    10141014                (type != tag.type) ? false : ( 
    10151015            true ))); 
    10161016        } 
    10171017 
    10181018        /** 
     
    11421142 
    11431143    /** 
    11441144     * Compares two comments for equality 
    11451145     * 
    11461146     * Examples: 
    11471147     * -------------- 
    11481148     * Comment item1,item2; 
    11491149     * if (item1 == item2) { } 
    11501150     * -------------- 
    11511151     */ 
    1152     override int opEquals(Object o) 
     1152    override bool opEquals(Object o) 
    11531153    { 
    11541154        const item = toType!(const Item)(o); 
    11551155        const t = cast(Comment)item; 
    11561156        return t !is null && content == t.content; 
    11571157    } 
    11581158 
    11591159    /** 
    11601160     * Compares two comments 
    11611161     * 
    11621162     * You should rarely need to call this function. It exists so that Comments 
     
    12211221 
    12221222    /** 
    12231223     * Compares two CDatas for equality 
    12241224     * 
    12251225     * Examples: 
    12261226     * -------------- 
    12271227     * CData item1,item2; 
    12281228     * if (item1 == item2) { } 
    12291229     * -------------- 
    12301230     */ 
    1231     override int opEquals(Object o) 
     1231    override bool opEquals(Object o) 
    12321232    { 
    12331233        const item = toType!(const Item)(o); 
    12341234        const t = cast(CData)item; 
    12351235        return t !is null && content == t.content; 
    12361236    } 
    12371237 
    12381238    /** 
    12391239     * Compares two CDatas 
    12401240     * 
    12411241     * You should rarely need to call this function. It exists so that CDatas 
     
    12981298 
    12991299    /** 
    13001300     * Compares two text sections for equality 
    13011301     * 
    13021302     * Examples: 
    13031303     * -------------- 
    13041304     * Text item1,item2; 
    13051305     * if (item1 == item2) { } 
    13061306     * -------------- 
    13071307     */ 
    1308     override int opEquals(Object o) 
     1308    override bool opEquals(Object o) 
    13091309    { 
    13101310        const item = toType!(const Item)(o); 
    13111311        const t = cast(Text)item; 
    13121312        return t !is null && content == t.content; 
    13131313    } 
    13141314 
    13151315    /** 
    13161316     * Compares two text sections 
    13171317     * 
    13181318     * You should rarely need to call this function. It exists so that Texts 
     
    13801380 
    13811381    /** 
    13821382     * Compares two XML instructions for equality 
    13831383     * 
    13841384     * Examples: 
    13851385     * -------------- 
    13861386     * XMLInstruction item1,item2; 
    13871387     * if (item1 == item2) { } 
    13881388     * -------------- 
    13891389     */ 
    1390     override int opEquals(Object o) 
     1390    override bool opEquals(Object o) 
    13911391    { 
    13921392        const item = toType!(const Item)(o); 
    13931393        const t = cast(XMLInstruction)item; 
    13941394        return t !is null && content == t.content; 
    13951395    } 
    13961396 
    13971397    /** 
    13981398     * Compares two XML instructions 
    13991399     * 
    14001400     * You should rarely need to call this function. It exists so that 
     
    14591459 
    14601460    /** 
    14611461     * Compares two processing instructions for equality 
    14621462     * 
    14631463     * Examples: 
    14641464     * -------------- 
    14651465     * ProcessingInstruction item1,item2; 
    14661466     * if (item1 == item2) { } 
    14671467     * -------------- 
    14681468     */ 
    1469     override int opEquals(Object o) 
     1469    override bool opEquals(Object o) 
    14701470    { 
    14711471        const item = toType!(const Item)(o); 
    14721472        const t = cast(ProcessingInstruction)item; 
    14731473        return t !is null && content == t.content; 
    14741474    } 
    14751475 
    14761476    /** 
    14771477     * Compares two processing instructions 
    14781478     * 
    14791479     * You should rarely need to call this function. It exists so that 
     
    15081508 
    15091509    override const bool isEmptyXML() { return false; } /// Returns false always 
    15101510} 
    15111511 
    15121512/** 
    15131513 * Abstract base class for XML items 
    15141514 */ 
    15151515abstract class Item 
    15161516{ 
    15171517    /// Compares with another Item of same type for equality 
    1518     abstract override int opEquals(Object o); 
     1518    abstract override bool opEquals(Object o); 
    15191519 
    15201520    /// Compares with another Item of same type 
    15211521    abstract override int opCmp(Object o); 
    15221522 
    15231523    /// Returns the hash of this item 
    15241524    abstract override hash_t toHash(); 
    15251525 
    15261526    /// Returns a string representation of this item 
    15271527    abstract override const string toString(); 
    15281528 
  • trunk/phobos/win32.mak

    r756 r761  
    233233    std\stdio.d std\perf.d std\openrj.d std\uni.d std\boxer.d \ 
    234234    std\cstream.d std\demangle.d std\cover.d std\bitarray.d \ 
    235235    std\signals.d std\cpuid.d std\typetuple.d std\traits.d std\bind.d \ 
    236236    std\metastrings.d std\hiddenfunc.d std\contracts.d std\getopt.d \ 
    237237    std\variant.d std\numeric.d std\bitmanip.d std\complex.d \ 
    238238    std\functional.d std\algorithm.d std\typecons.d std\iterator.d \ 
    239239    std\xml.d std\encoding.d std\bigint.d 
    240240 
    241241SRC_STD_C= std\c\process.d std\c\stdlib.d std\c\time.d std\c\stdio.d \ 
    242242    std\c\math.d std\c\stdarg.d std\c\stddef.d std\c\fenv.d std\c\string.d \ 
    243     std\c\locale.d stc\c\wcharh.d 
     243    std\c\locale.d std\c\wcharh.d 
    244244 
    245245SRC_TI= \ 
    246246    std\typeinfo\ti_wchar.d std\typeinfo\ti_uint.d \ 
    247247    std\typeinfo\ti_short.d std\typeinfo\ti_ushort.d \ 
    248248    std\typeinfo\ti_byte.d std\typeinfo\ti_ubyte.d \ 
    249249    std\typeinfo\ti_long.d std\typeinfo\ti_ulong.d \ 
    250250    std\typeinfo\ti_ptr.d std\typeinfo\ti_dchar.d \ 
    251251    std\typeinfo\ti_float.d std\typeinfo\ti_double.d \ 
    252252    std\typeinfo\ti_real.d std\typeinfo\ti_delegate.d \ 
    253253    std\typeinfo\ti_creal.d std\typeinfo\ti_ireal.d \