# HG changeset patch # User Frank Benoit # Date 1218201545 -7200 # Node ID 92e785261f30f02187e266513533c2e06c18aa55 # Parent 617fdf42394bddb55a5fa294a8370aa35d0cc940 Fix: missing opEquals, toHash for ArrayWrapper. Fix: opEquals for ValueWrapper in case of T is Object diff -r 617fdf42394b -r 92e785261f30 dwt/dwthelper/utils.d --- a/dwt/dwthelper/utils.d Thu Aug 07 15:07:17 2008 +0200 +++ b/dwt/dwthelper/utils.d Fri Aug 08 15:19:05 2008 +0200 @@ -41,6 +41,15 @@ public this( T[] data ){ array = data; } + public override int opEquals( Object o ){ + if( auto other = cast(ArrayWrapperT!(T))o){ + return array == other.array; + } + return false; + } + public override hash_t toHash(){ + return (typeid(T[])).getHash(&array); + } } class ValueWrapperT(T) : ValueWrapper { @@ -48,14 +57,36 @@ public this( T data ){ value = data; } - public int opEquals( T other ){ - return value == other; + static if( is(T==class) || is(T==interface)){ + public int opEquals( Object other ){ + if( auto o = cast(ValueWrapperT!(T))other ){ + return value == o.value; + } + if( auto o = cast(T)other ){ + if( value is o ){ + return true; + } + if( value is null || o is null ){ + return false; + } + return value == o; + } + return false; + } } - public int opEquals( Object other ){ - if( auto o = cast(ValueWrapperT!(T))other ){ - return value == o.value; + else{ + public int opEquals( Object other ){ + if( auto o = cast(ValueWrapperT!(T))other ){ + return value == o.value; + } + return false; } - return false; + public int opEquals( T other ){ + return value == other; + } + } + public override hash_t toHash(){ + return (typeid(T)).getHash(&value); } }