Răsfoiți Sursa

Fix keyword 'not', Use 'native' metadata for Int32 redirect, added 'toNativeInt'

Hugh Sanderson 14 ani în urmă
părinte
comite
892bef4b8d
3 a modificat fișierele cu 23 adăugiri și 165 ștergeri
  1. 1 1
      gencpp.ml
  2. 0 51
      std/cpp/CppInt32__.hx
  3. 22 113
      std/cpp/_std/haxe/Int32.hx

+ 1 - 1
gencpp.ml

@@ -243,7 +243,7 @@ let keyword_remap name =
 	| "auto" | "char" | "const" | "delete" | "double" | "enum"
 	| "extern" | "float" | "friend" | "goto" | "long" | "operator" | "protected"
 	| "register" | "short" | "signed" | "sizeof" | "template" | "typedef"
-	| "union" | "unsigned" | "void" | "volatile" | "or" | "and" | "xor" | "or_eq"
+	| "union" | "unsigned" | "void" | "volatile" | "or" | "and" | "xor" | "or_eq" | "not"
 	| "and_eq" | "xor_eq" | "typeof" | "stdin" | "stdout" | "stderr"
 	| "BIG_ENDIAN" | "LITTLE_ENDIAN" | "assert" | "NULL" | "wchar_t" | "EOF"
 	| "bool" | "const_cast" | "dynamic_cast" | "explicit" | "export" | "mutable" | "namespace"

+ 0 - 51
std/cpp/CppInt32__.hx

@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2005, The haXe Project Contributors
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- */
-package cpp;
-
-typedef Int32 = CppInt32__;
-
-extern class CppInt32__ {
-	public static  function make( a : Int, b : Int ) : Int32;
-	public static  function ofInt( x : Int ) : Int32;
-	public static  function toInt( x : Int32 ) : Int;
-	public static  function add( a : Int32, b : Int32 ) : Int32;
-	public static  function sub( a : Int32, b : Int32 ) : Int32;
-	public static  function mul( a : Int32, b : Int32 ) : Int32;
-	public static  function div( a : Int32, b : Int32 ) : Int32;
-	public static  function mod( a : Int32, b : Int32 ) : Int32;
-	public static  function shl( a : Int32, b : Int ) : Int32;
-	public static  function shr( a : Int32, b : Int ) : Int32;
-	public static  function ushr( a : Int32, b : Int ) : Int32;
-	public static  function and( a : Int32, b : Int32 ) : Int32;
-	public static  function or( a : Int32, b : Int32 ) : Int32;
-	public static  function xor( a : Int32, b : Int32 ) : Int32;
-	public static  function neg( a : Int32 ) : Int32;
-	public static  function complement( a : Int32 ) : Int32;
-	public static  function compare( a : Int32, b : Int32 ) : Int;
-	public static  function isNeg( a : Int32 ) : Bool;
-	public static  function isZero( a : Int32 ) : Bool;
-	public static  function ucompare( a : Int32, b : Int32 ) : Int;
-}
-

+ 22 - 113
std/cpp/_std/haxe/Int32.hx

@@ -24,118 +24,27 @@
  */
 package haxe;
 
-#if doc_gen
-
-class Int32 {
-
-	public static inline function make( a : Int, b : Int ) : Int32 {
-		return cast ((a << 16) | b);
-	}
-
-	public static inline function ofInt( x : Int ) : Int32 {
-		return clamp(cast x);
-	}
-
-	static inline function clamp( x : Int32 ) : Int32 {
-		#if (js || flash8)
-		return cast ((cast x) | 0); // force to-int convertion
-		#else
-		return x;
-		#end
-	}
-
-	public static inline function toInt( x : Int32 ) : Int {
-		if( (((cast x) >> 30) & 1) != ((cast x) >>> 31) ) throw "Overflow " + x;
-		#if php
-		return (cast x) & 0xFFFFFFFF;
-		#else
-		return cast x;
-		#end
-	}
-
-	public static inline function toNativeInt( x : Int32 ) : Int {
-		return cast x;
-	}
-
-	public static inline function add( a : Int32, b : Int32 ) : Int32 {
-		return clamp(cast ((cast a) + (cast b)));
-	}
-
-	public static inline function sub( a : Int32, b : Int32 ) : Int32 {
-		return clamp(cast ((cast a) - (cast b)));
-	}
-
-	public static inline function mul( a : Int32, b : Int32 ) : Int32 {
-		return clamp(cast ((cast a) * (cast b)));
-	}
-
-	public static inline function div( a : Int32, b : Int32 ) : Int32 {
-		return cast Std.int(cast(a) / cast(b));
-	}
-
-	public static inline function mod( a : Int32, b : Int32 ) : Int32 {
-		return cast (cast(a) % cast(b));
-	}
-
-	public static inline function shl( a : Int32, b : Int ) : Int32 {
-		return cast ((cast a) << b);
-	}
-
-	public static inline function shr( a : Int32, b : Int ) : Int32 {
-		return cast ((cast a) >> b);
-	}
-
-	public static inline function ushr( a : Int32, b : Int ) : Int32 {
-		return cast ((cast a) >>> b);
-	}
-
-	public static inline function and( a : Int32, b : Int32 ) : Int32 {
-		return cast ((cast a) & (cast b));
-	}
-
-	public static inline function or( a : Int32, b : Int32 ) : Int32 {
-		return cast ((cast a) | (cast b));
-	}
-
-	public static inline function xor( a : Int32, b : Int32 ) : Int32 {
-		return cast ((cast a) ^ (cast b));
-	}
-
-	public static inline function neg( a : Int32 ) : Int32 {
-		return cast -(cast a);
-	}
-
-	public static inline function isNeg( a : Int32 ) : Bool {
-		return (cast a) < 0;
-	}
-
-	public static inline function isZero( a : Int32 ) : Bool {
-		return (cast a) == 0;
-	}
-
-	public static inline function complement( a : Int32 ) : Int32 {
-		return cast ~(cast a);
-	}
-
-	public static inline function compare( a : Int32, b : Int32 ) : Int {
-		#if neko
-		return untyped __i32__compare(a,b);
-		#else
-		return untyped a - b;
-		#end
-	}
-
-	/**
-		Compare two Int32 in unsigned mode.
-	**/
-	public static function ucompare( a : Int32, b : Int32 ) : Int {
-		if( isNeg(a) )
-			return isNeg(b) ? compare(complement(b),complement(a)) : 1;
-		return isNeg(b) ? -1 : compare(a,b);
-	}
-
+@:native("cpp.CppInt32__") extern class Int32 {
+	public static  function make( a : Int, b : Int ) : Int32;
+	public static  function ofInt( x : Int ) : Int32;
+	public static  function toInt( x : Int32 ) : Int;
+	public static  function add( a : Int32, b : Int32 ) : Int32;
+	public static  function sub( a : Int32, b : Int32 ) : Int32;
+	public static  function mul( a : Int32, b : Int32 ) : Int32;
+	public static  function div( a : Int32, b : Int32 ) : Int32;
+	public static  function mod( a : Int32, b : Int32 ) : Int32;
+	public static  function shl( a : Int32, b : Int ) : Int32;
+	public static  function shr( a : Int32, b : Int ) : Int32;
+	public static  function ushr( a : Int32, b : Int ) : Int32;
+	public static  function and( a : Int32, b : Int32 ) : Int32;
+	public static  function or( a : Int32, b : Int32 ) : Int32;
+	public static  function xor( a : Int32, b : Int32 ) : Int32;
+	public static  function neg( a : Int32 ) : Int32;
+	public static  function complement( a : Int32 ) : Int32;
+	public static  function compare( a : Int32, b : Int32 ) : Int;
+	public static  function isNeg( a : Int32 ) : Bool;
+	public static  function isZero( a : Int32 ) : Bool;
+	public static  function ucompare( a : Int32, b : Int32 ) : Int;
+	public static  function toNativeInt(a:Int32) : Int;
 }
 
-#else
-typedef Int32 = cpp.CppInt32__;
-#end