Changeset 488
- Timestamp:
- 01/08/11 19:59:15 (14 years ago)
- Files:
-
- trunk/import/object.di (modified) (1 diff)
- trunk/src/object_.d (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/import/object.di
r476 r488 398 398 return &foo; 399 399 } 400 400 401 401 int delegate(int delegate(ref Value) dg) byValue() 402 402 { 403 403 return &opApply; 404 404 } 405 405 406 406 Value get(Key key, lazy Value defaultValue) 407 407 { 408 auto p = key in *cast(Value[Key]*)(&p); 409 return p ? *p : defaultValue; 410 } 408 auto r = key in *cast(Value[Key]*)(&p); 409 return r ? *r : defaultValue; 410 } 411 412 @property Value[Key] dup() 413 { 414 Value[Key] result; 415 foreach (k, v; this) 416 { 417 result[k] = v; 418 } 419 return result; 420 } 421 } 422 423 unittest 424 { 425 auto a = [ 1:"one", 2:"two", 3:"three" ]; 426 auto b = a.dup; 427 assert(b == [ 1:"one", 2:"two", 3:"three" ]); 411 428 } 412 429 413 430 void clear(T)(T obj) if (is(T == class)) 414 431 { 415 432 if (!obj) return; 416 433 auto ci = obj.classinfo; 417 434 auto defaultCtor = 418 435 cast(void function(Object)) ci.defaultConstructor; 419 436 version(none) // enforce isn't available in druntime 420 437 _enforce(defaultCtor || (ci.flags & 8) == 0); trunk/src/object_.d
r476 r488 2444 2444 return &foo; 2445 2445 } 2446 2446 2447 2447 int delegate(int delegate(ref Value) dg) byValue() 2448 2448 { 2449 2449 return &opApply; 2450 2450 } 2451 2451 2452 2452 Value get(Key key, lazy Value defaultValue) 2453 2453 { 2454 auto p = key in *cast(Value[Key]*)(&p); 2455 return p ? *p : defaultValue; 2456 } 2454 auto p = key in *cast(Value[Key]*)(&p); 2455 return p ? *p : defaultValue; 2456 } 2457 2458 @property Value[Key] dup() 2459 { 2460 Value[Key] result; 2461 foreach (k, v; this) 2462 { 2463 result[k] = v; 2464 } 2465 return result; 2466 } 2467 } 2468 2469 unittest 2470 { 2471 auto a = [ 1:"one", 2:"two", 3:"three" ]; 2472 auto b = a.dup; 2473 assert(b == [ 1:"one", 2:"two", 3:"three" ]); 2457 2474 } 2458 2475 2459 2476 void clear(T)(T obj) if (is(T == class)) 2460 2477 { 2461 2478 if (!obj) return; 2462 2479 auto ci = obj.classinfo; 2463 2480 auto defaultCtor = 2464 2481 cast(void function(Object)) ci.defaultConstructor; 2465 2482 version(none) // enforce isn't available in druntime 2466 2483 _enforce(defaultCtor || (ci.flags & 8) == 0); … … 2712 2729 /*************************************** 2713 2730 * Helper function used to see if two containers of different 2714 2731 * types have the same contents in the same sequence. 2715 2732 */ 2716 2733 2717 2734 bool _ArrayEq(T1, T2)(T1[] a1, T2[] a2) 2718 2735 { 2719 2736 if (a1.length != a2.length) 2720 2737 return false; 2721 2738 foreach(i, a; a1) 2722 { if (a != a2[i]) 2723 return false; 2739 { 2740 if (a != a2[i]) 2741 return false; 2724 2742 } 2725 2743 return true; 2726 2744 } 2727 2745 2728 2746
