Răsfoiți Sursa

merge haxe.io.Input

Simon Krajewski 11 ani în urmă
părinte
comite
b5e029239b
2 a modificat fișierele cu 1 adăugiri și 357 ștergeri
  1. 1 1
      std/haxe/io/Input.hx
  2. 0 356
      std/python/_std/haxe/io/Input.hx

+ 1 - 1
std/haxe/io/Input.hx

@@ -312,7 +312,7 @@ class Input {
 		var ch2 = readByte();
 		var ch3 = readByte();
 		var ch4 = readByte();
-#if php
+#if (php || python)
         // php will overflow integers.  Convert them back to signed 32-bit ints.
         var n = bigEndian ? ch4 | (ch3 << 8) | (ch2 << 16) | (ch1 << 24) : ch1 | (ch2 << 8) | (ch3 << 16) | (ch4 << 24);
         if (n & 0x80000000 != 0)

+ 0 - 356
std/python/_std/haxe/io/Input.hx

@@ -1,356 +0,0 @@
-/*
- * Copyright (C)2005-2012 Haxe Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-package haxe.io;
-
-/**
-	An Input is an abstract reader. See other classes in the [haxe.io] package
-	for several possible implementations.
-**/
-class Input {
-
-	public var bigEndian(default,set) : Bool;
-	#if cs
-	private var helper:BytesData;
-	#elseif java
-	private var helper:java.nio.ByteBuffer;
-	#end
-
-	public function readByte() : Int {
-	#if cpp
-		throw "Not implemented";
-		return 0;
-	#else
-		return throw "Not implemented";
-	#end
-	}
-
-	public function readBytes( s : Bytes, pos : Int, len : Int ) : Int {
-		var k = len;
-		var b = s.getData();
-		if( pos < 0 || len < 0 || pos + len > s.length )
-			throw Error.OutsideBounds;
-		while( k > 0 ) {
-			#if neko
-				untyped __dollar__sset(b,pos,readByte());
-			#elseif php
-				b[pos] = untyped __call__("chr", readByte());
-			#elseif cpp
-				b[pos] = untyped readByte();
-			#else
-				b[pos] = cast readByte();
-			#end
-			pos++;
-			k--;
-		}
-		return len;
-	}
-
-	public function close() {
-	}
-
-	function set_bigEndian(b) {
-		bigEndian = b;
-		return b;
-	}
-
-	/* ------------------ API ------------------ */
-
-	public function readAll( ?bufsize : Int ) : Bytes {
-		if( bufsize == null )
-		#if php
-			bufsize = 8192; // default value for PHP and max under certain circumstances
-		#else
-			bufsize = (1 << 14); // 16 Ko
-		#end
-
-		var buf = Bytes.alloc(bufsize);
-		var total = new haxe.io.BytesBuffer();
-		try {
-			while( true ) {
-				var len = readBytes(buf,0,bufsize);
-				if( len == 0 )
-					throw Error.Blocked;
-				total.addBytes(buf,0,len);
-			}
-		} catch( e : Eof ) {
-		}
-		return total.getBytes();
-	}
-
-	public function readFullBytes( s : Bytes, pos : Int, len : Int ) {
-		while( len > 0 ) {
-			var k = readBytes(s,pos,len);
-			pos += k;
-			len -= k;
-		}
-	}
-
-	public function read( nbytes : Int ) : Bytes {
-		var s = Bytes.alloc(nbytes);
-		var p = 0;
-		while( nbytes > 0 ) {
-			var k = readBytes(s,p,nbytes);
-			if( k == 0 ) throw Error.Blocked;
-			p += k;
-			nbytes -= k;
-		}
-		return s;
-	}
-
-	public function readUntil( end : Int ) : String {
-		var buf = new StringBuf();
-		var last : Int;
-		while( (last = readByte()) != end )
-			buf.addChar( last );
-		return buf.toString();
-	}
-
-	public function readLine() : String {
-		var buf = new StringBuf();
-		var last : Int;
-		var s;
-		try {
-			while( (last = readByte()) != 10 )
-				buf.addChar( last );
-			s = buf.toString();
-			if( s.charCodeAt(s.length-1) == 13 ) s = s.substr(0,-1);
-		} catch( e : Eof ) {
-			s = buf.toString();
-			if( s.length == 0 )
-				#if neko neko.Lib.rethrow #else throw #end (e);
-		}
-		return s;
-	}
-
-	public function readFloat() : Float {
-		#if neko
-			return _float_of_bytes(untyped read(4).b,bigEndian);
-		#elseif cpp
-			return _float_of_bytes(read(4).getData(),bigEndian);
-		#elseif php
-			var a = untyped __call__('unpack', 'f', readString(4));
-			return a[1];
-		#elseif cs
-			if (helper == null) helper = new cs.NativeArray(8);
-
-			var helper = helper;
-			if (bigEndian == !cs.system.BitConverter.IsLittleEndian)
-			{
-				helper[0] = readByte();
-				helper[1] = readByte();
-				helper[2] = readByte();
-				helper[3] = readByte();
-			} else {
-				helper[3] = readByte();
-				helper[2] = readByte();
-				helper[1] = readByte();
-				helper[0] = readByte();
-			}
-
-			return cs.system.BitConverter.ToSingle(helper, 0);
-		#elseif java
-			if (helper == null) helper = java.nio.ByteBuffer.allocateDirect(8);
-			var helper = helper;
-			helper.order(bigEndian ? java.nio.ByteOrder.BIG_ENDIAN : java.nio.ByteOrder.LITTLE_ENDIAN);
-
-			helper.put(0, cast readByte());
-			helper.put(1, cast readByte());
-			helper.put(2, cast readByte());
-			helper.put(3, cast readByte());
-
-			return helper.getFloat(0);
-		#else
-			var bytes = [];
-			bytes.push(cast readByte());
-			bytes.push(cast readByte());
-			bytes.push(cast readByte());
-			bytes.push(cast readByte());
-			if (!bigEndian)
-				bytes.reverse();
-			var sign = 1 - ((bytes[0] >> 7) << 1);
-			var exp = (((bytes[0] << 1) & 0xFF) | (bytes[1] >> 7)) - 127;
-			var sig = ((bytes[1] & 0x7F) << 16) | (bytes[2] << 8) | bytes[3];
-			if (sig == 0 && exp == -127)
-				return 0.0;
-			return sign*(1 + Math.pow(2, -23)*sig) * Math.pow(2, exp);
-		#end
-	}
-
-	public function readDouble() : Float {
-		#if neko
-			return _double_of_bytes(untyped read(8).b,bigEndian);
-		#elseif cpp
-			return _double_of_bytes(read(8).getData(),bigEndian);
-		#elseif php
-			var a = untyped __call__('unpack', 'd', readString(8));
-			return a[1];
-		#elseif (flash || js)
-		var bytes = [];
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		bytes.push(readByte());
-		if (!bigEndian)
-			bytes.reverse();
-
-		var sign = 1 - ((bytes[0] >> 7) << 1); // sign = bit 0
-		var exp = (((bytes[0] << 4) & 0x7FF) | (bytes[1] >> 4)) - 1023; // exponent = bits 1..11
-		var sig = getDoubleSig(bytes);
-		if (sig == 0 && exp == -1023)
-			return 0.0;
-		return sign * (1.0 + Math.pow(2, -52) * sig) * Math.pow(2, exp);
-		#elseif cs
-		if (helper == null) helper = new cs.NativeArray(8);
-
-		var helper = helper;
-		if (bigEndian == !cs.system.BitConverter.IsLittleEndian)
-		{
-			helper[0] = readByte();
-			helper[1] = readByte();
-			helper[2] = readByte();
-			helper[3] = readByte();
-			helper[4] = readByte();
-			helper[5] = readByte();
-			helper[6] = readByte();
-			helper[7] = readByte();
-		} else {
-			helper[7] = readByte();
-			helper[6] = readByte();
-			helper[5] = readByte();
-			helper[4] = readByte();
-			helper[3] = readByte();
-			helper[2] = readByte();
-			helper[1] = readByte();
-			helper[0] = readByte();
-		}
-
-		return cs.system.BitConverter.ToDouble(helper, 0);
-		#elseif java
-		if (helper == null) helper = java.nio.ByteBuffer.allocateDirect(8);
-		var helper = helper;
-		helper.order(bigEndian ? java.nio.ByteOrder.BIG_ENDIAN : java.nio.ByteOrder.LITTLE_ENDIAN);
-
-		helper.put(0, cast readByte());
-		helper.put(1, cast readByte());
-		helper.put(2, cast readByte());
-		helper.put(3, cast readByte());
-		helper.put(4, cast readByte());
-		helper.put(5, cast readByte());
-		helper.put(6, cast readByte());
-		helper.put(7, cast readByte());
-
-		return helper.getDouble(0);
-		#else
-		return throw "not implemented";
-		#end
-	}
-
-	public function readInt8() {
-		var n = readByte();
-		if( n >= 128 )
-			return n - 256;
-		return n;
-	}
-
-	public function readInt16() {
-		var ch1 = readByte();
-		var ch2 = readByte();
-		var n = bigEndian ? ch2 | (ch1 << 8) : ch1 | (ch2 << 8);
-		if( n & 0x8000 != 0 )
-			return n - 0x10000;
-		return n;
-	}
-
-	public function readUInt16() {
-		var ch1 = readByte();
-		var ch2 = readByte();
-		return bigEndian ? ch2 | (ch1 << 8) : ch1 | (ch2 << 8);
-	}
-
-	public function readInt24() {
-		var ch1 = readByte();
-		var ch2 = readByte();
-		var ch3 = readByte();
-		var n = bigEndian ? ch3 | (ch2 << 8) | (ch1 << 16) : ch1 | (ch2 << 8) | (ch3 << 16);
-		if( n & 0x800000 != 0 )
-			return n - 0x1000000;
-		return n;
-	}
-
-	public function readUInt24() {
-		var ch1 = readByte();
-		var ch2 = readByte();
-		var ch3 = readByte();
-		return bigEndian ? ch3 | (ch2 << 8) | (ch1 << 16) : ch1 | (ch2 << 8) | (ch3 << 16);
-	}
-
-	public function readInt32() {
-		var ch1 = readByte();
-		var ch2 = readByte();
-		var ch3 = readByte();
-		var ch4 = readByte();
-#if (php || python)
-        // php will overflow integers.  Convert them back to signed 32-bit ints.
-        var n = bigEndian ? ch4 | (ch3 << 8) | (ch2 << 16) | (ch1 << 24) : ch1 | (ch2 << 8) | (ch3 << 16) | (ch4 << 24);
-        if (n & 0x80000000 != 0)
-            return ( n | 0x80000000);
-        else return n;
-#else
-		return bigEndian ? ch4 | (ch3 << 8) | (ch2 << 16) | (ch1 << 24) : ch1 | (ch2 << 8) | (ch3 << 16) | (ch4 << 24);
-#end
-	}
-
-	public function readString( len : Int ) : String {
-		var b = Bytes.alloc(len);
-		readFullBytes(b,0,len);
-		#if neko
-		return neko.Lib.stringReference(b);
-		#else
-		return b.toString();
-		#end
-	}
-
-#if neko
-	static var _float_of_bytes = neko.Lib.load("std","float_of_bytes",2);
-	static var _double_of_bytes = neko.Lib.load("std","double_of_bytes",2);
-	static function __init__() untyped {
-		Input.prototype.bigEndian = false;
-	}
-#elseif cpp
-	static var _float_of_bytes = cpp.Lib.load("std","float_of_bytes",2);
-	static var _double_of_bytes = cpp.Lib.load("std","double_of_bytes",2);
-#end
-
-#if (flash || js)
-	function getDoubleSig(bytes:Array<Int>)
-    {
-        return (((bytes[1]&0xF) << 16) | (bytes[2] << 8) | bytes[3] ) * 4294967296. +
-            (bytes[4] >> 7) * 2147483648 +
-            (((bytes[4]&0x7F) << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7]);
-    }
-#end
-
-}