Advertisement
Drakim

Haxe abstract types

Mar 8th, 2013
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 2.28 KB | None | 0 0
  1. abstract UInt8(Int) to Int {
  2.   private inline function new(a:Int) {
  3.     this = a;
  4.   }
  5.   static public inline function safe(a:Int):UInt8 {
  6.     return new UInt8(a&0xFF);
  7.   }
  8.   static public inline function unsafe(a:Int):UInt8 {
  9.     return new UInt8(a);
  10.   }
  11.   @:from static public inline function fromInt(a:Int):UInt8 {
  12.     return safe(a);
  13.   }
  14.   @:op(A+B) static public inline function add_UInt8_Int(a:UInt8,b:Int):Int {
  15.     return a+b;
  16.   }
  17.   @:op(A+B) static public inline function add_UInt8_UInt8(a:UInt8,b:UInt8):UInt8 {
  18.     return (a+b)&0xFF;
  19.   }
  20.   @:op(A>B) static public inline function greater_UInt8_UInt8(a:UInt8,b:UInt8):Bool {
  21.     return a>b;
  22.   }
  23.   @:op(A<B) static public inline function lesser_UInt8_UInt8(a:UInt8,b:UInt8):Bool {
  24.     return a<b;
  25.   }
  26. }
  27.  
  28. abstract UInt16(Int) to Int {
  29.   private inline function new(a:Int) {
  30.     this = a;
  31.   }
  32.   static public inline function safe(a:Int):UInt16 {
  33.     return new UInt16(a&0xFFFF);
  34.   }
  35.   static public inline function unsafe(a:Int):UInt16 {
  36.     return new UInt16(a);
  37.   }
  38.   @:from static public inline function fromInt(a:Int):UInt16 {
  39.     return safe(a);
  40.   }
  41.   @:op(A+B) static public inline function add_UInt16_Int(a:UInt16,b:Int):Int {
  42.     return a+b;
  43.   }
  44.   @:op(A+B) static public inline function add_UInt16_UInt16(a:UInt16,b:UInt16):UInt16 {
  45.     return (a+b)&0xFFFF;
  46.   }
  47.   @:op(A>B) static public inline function greater_UInt16_UInt16(a:UInt16,b:UInt16):Bool {
  48.     return a>b;
  49.   }
  50.   @:op(A<B) static public inline function lesser_UInt16_UInt16(a:UInt16,b:UInt16):Bool {
  51.     return a<b;
  52.   }
  53. }
  54.  
  55. abstract UInt32(Int) to Int {
  56.   private inline function new(a:Int) {
  57.     this = a;
  58.   }
  59.   static public inline function safe(a:Int):UInt32 {
  60.     return new UInt32(a);
  61.   }
  62.   static public inline function unsafe(a:Int):UInt32 {
  63.     return new UInt32(a);
  64.   }
  65.   @:from static public inline function fromInt(a:Int):UInt32 {
  66.     return safe(a);
  67.   }
  68. }
  69.  
  70. abstract UInt64(Float) to Float {
  71.   private inline function new(a:Float) {
  72.     this = a;
  73.   }
  74.   static public inline function safe(a:Float):UInt64 {
  75.     return new UInt64(a);
  76.   }
  77.   static public inline function unsafe(a:Float):UInt64 {
  78.     return new UInt64(a);
  79.   }
  80.   @:from static public inline function fromFloat(a:Float):UInt64 {
  81.     return safe(a);
  82.   }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement