Forráskód Böngészése

[cs] overload Date constructor to support constructing from native DateTime instead of replacing it after default construction, this makes code cleaner and prevents double allocation

Dan Korostelev 10 éve
szülő
commit
5df9be8ae8
1 módosított fájl, 12 hozzáadás és 13 törlés
  1. 12 13
      std/cs/_std/Date.hx

+ 12 - 13
std/cs/_std/Date.hx

@@ -32,7 +32,12 @@ import haxe.Int64;
 	@:readOnly private static var epochTicks:Int64 = new DateTime(1970, 1, 1).Ticks;
 	private var date:DateTime;
 
-	public function new(year : Int, month : Int, day : Int, hour : Int, min : Int, sec : Int ) : Void
+	@:overload private function new(native:DateTime)
+	{
+		date = native;
+	}
+
+	@:overload public function new(year : Int, month : Int, day : Int, hour : Int, min : Int, sec : Int ) : Void
 	{
 		if (day <= 0) day = 1;
 		if (year <= 0) year = 1;
@@ -94,18 +99,14 @@ import haxe.Int64;
 			+":"+(if( s < 10 ) "0"+s else ""+s);
 	}
 
-	static public function now() : Date
+	static public inline function now() : Date
 	{
-		var d = new Date(0, 0, 0, 0, 0, 0);
-		d.date = DateTime.Now;
-		return d;
+		return new Date(DateTime.Now);
 	}
 
-	static public function fromTime( t : Float ) : Date
+	static public inline function fromTime( t : Float ) : Date
 	{
-		var d = new Date(0, 0, 0, 0, 0, 0);
-		d.date = new DateTime(cast(t * cast(TimeSpan.TicksPerMillisecond, Float), Int64) + epochTicks);
-		return d;
+		return new Date(new DateTime(cast(t * cast(TimeSpan.TicksPerMillisecond, Float), Int64) + epochTicks));
 	}
 
 	static public function fromString( s : String ) : Date
@@ -129,10 +130,8 @@ import haxe.Int64;
 		}
 	}
 
-	private static function fromNative( d : cs.system.DateTime ) : Date
+	private static inline function fromNative( d : cs.system.DateTime ) : Date
 	{
-		var date = new Date(0, 0, 0, 0, 0, 0);
-		date.date = d;
-		return date;
+		return new Date(d);
 	}
 }