Changeset 3898
- Timestamp:
- 08/20/08 14:07:55 (4 months ago)
- Files:
-
- trunk/tango/core/Variant.d (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/tango/core/Variant.d
r3810 r3898 9 9 10 10 private import tango.core.Vararg : va_list; 11 private import tango.core.Traits; 11 12 12 13 private … … 71 72 } 72 73 73 template isArray(T)74 {75 static if( is( T U : U[] ) )76 const isArray = true;77 else78 const isArray = false;79 }80 81 template isPointer(T)82 {83 static if( is( T U : U* ) )84 const isPointer = true;85 else86 const isPointer = false;87 }88 89 74 template isObject(T) 90 75 { … … 101 86 else 102 87 const isInterface = false; 103 }104 105 template isStaticArray(T)106 {107 static if( is( typeof(T.init)[(T).sizeof / typeof(T.init).sizeof] == T ) )108 const isStaticArray = true;109 else110 const isStaticArray = false;111 88 } 112 89 … … 194 171 template storageT(T) 195 172 { 196 static if( isStaticArray !(T) )173 static if( isStaticArrayType!(T) ) 197 174 alias typeof(T.dup) storageT; 198 175 else … … 241 218 Variant _this; 242 219 243 static if( isStaticArray !(T) )220 static if( isStaticArrayType!(T) ) 244 221 _this = value.dup; 245 222 … … 262 239 Variant opAssign(T)(T value) 263 240 { 264 static if( isStaticArray !(T) )241 static if( isStaticArrayType!(T) ) 265 242 { 266 243 return (*this = value.dup); … … 274 251 mixin("this.value._"~T.stringof~"=value;"); 275 252 } 276 else static if( is Array!(T) )253 else static if( isDynamicArrayType!(T) ) 277 254 { 278 255 this.value.arr = (cast(void*)value.ptr) 279 256 [0 .. value.length]; 280 257 } 281 else static if( isPointer !(T) )258 else static if( isPointerType!(T) ) 282 259 { 283 260 this.value.ptr = cast(void*)value; … … 414 391 } 415 392 } 416 else static if( is Array!(T) )393 else static if( isDynamicArrayType!(T) ) 417 394 { 418 395 return (cast(typeof(T[0])*)this.value.arr.ptr) 419 396 [0 .. this.value.arr.length]; 420 397 } 421 else static if( isPointer !(T) )398 else static if( isPointerType!(T) ) 422 399 { 423 400 return cast(T)this.value.ptr;












