Diff
Not logged in

Differences From Artifact [783554bf667412ed]:

To Artifact [0665970b47ba63ed]:


19 this.tupleof = params; 19 this.tupleof = params; 20 } 20 } 21 } 21 } 22 22 23 template DeriveCompare() 23 template DeriveCompare() 24 { 24 { 25 override: 25 override: 26 bool opEquals(Object rhs) | 26 bool opEquals(Object rhs) const 27 { 27 { 28 return tuple(this.tupleof) == tuple((cast(typeof(this))rhs).tupl 28 return tuple(this.tupleof) == tuple((cast(typeof(this))rhs).tupl 29 } 29 } 30 30 31 int opCmp(Object rhs) | 31 int opCmp(Object rhs) const 32 { 32 { 33 return tuple(this.tupleof).opCmp(tuple((cast(typeof(this))rhs).t 33 return tuple(this.tupleof).opCmp(tuple((cast(typeof(this))rhs).t 34 } 34 } 35 35 36 hash_t toHash() | 36 hash_t toHash() const 37 { 37 { 38 hash_t v = 0; 38 hash_t v = 0; 39 foreach(mem; this.tupleof) { 39 foreach(mem; this.tupleof) { 40 v *= 11; 40 v *= 11; 41 static if(__traits(compiles, v^=mem)) 41 static if(__traits(compiles, v^=mem)) 42 v ^= mem; 42 v ^= mem; 43 else 43 else ................................................................................................................................................................................ 46 return v; 46 return v; 47 } 47 } 48 } 48 } 49 49 50 template DeriveShow() 50 template DeriveShow() 51 { 51 { 52 override: 52 override: 53 string toString() | 53 string toString() const 54 { 54 { 55 string str = text(typeof(this).stringof, "("); 55 string str = text(typeof(this).stringof, "("); 56 foreach(i,mem; this.tupleof) { 56 foreach(i,mem; this.tupleof) { 57 if(i) str ~= ", "; 57 if(i) str ~= ", "; 58 str = text(str, this.tupleof[i].stringof[5..$], ":", me 58 str = text(str, this.tupleof[i].stringof[5..$], ":", me 59 } 59 } 60 return str ~ ")"; 60 return str ~ ")"; 61 } 61 } 62 } 62 }