449 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			449 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| package kha.arrays;
 | |
| 
 | |
| class ByteArrayPrivate {
 | |
| 	public var self: ByteBuffer;
 | |
| 	public var byteArrayOffset: Int;
 | |
| 	public var byteArrayLength: Int;
 | |
| 
 | |
| 	public inline function new(offset: Int, length: Int) {
 | |
| 		this.byteArrayOffset = offset;
 | |
| 		this.byteArrayLength = length;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| abstract ByteArray(ByteArrayPrivate) {
 | |
| 	public var buffer(get, never): ByteBuffer;
 | |
| 
 | |
| 	inline function get_buffer(): ByteBuffer {
 | |
| 		return this.self;
 | |
| 	}
 | |
| 
 | |
| 	public var byteLength(get, never): Int;
 | |
| 
 | |
| 	inline function get_byteLength(): Int {
 | |
| 		return this.byteArrayLength;
 | |
| 	}
 | |
| 
 | |
| 	public var byteOffset(get, never): Int;
 | |
| 
 | |
| 	inline function get_byteOffset(): Int {
 | |
| 		return this.byteArrayOffset;
 | |
| 	}
 | |
| 
 | |
| 	public inline function new(buffer: ByteBuffer, byteOffset: Int, byteLength: Int): Void {
 | |
| 		this = new ByteArrayPrivate(byteOffset, byteLength);
 | |
| 		this.self = buffer;
 | |
| 	}
 | |
| 
 | |
| 	public static inline function make(byteLength: Int): ByteArray {
 | |
| 		var buffer = ByteBuffer.create(byteLength);
 | |
| 		return new ByteArray(buffer, 0, byteLength);
 | |
| 	}
 | |
| 
 | |
| 	public inline function free() {
 | |
| 		this.self.free();
 | |
| 	}
 | |
| 
 | |
| 	public inline function getData(): Pointer {
 | |
| 		return this.self;
 | |
| 	}
 | |
| 
 | |
| 	// Get
 | |
| 
 | |
| 	public inline function getInt8(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getint8(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint8(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getuint8(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getInt16(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getint16(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint16(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getuint16(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getInt32(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getint32(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint32(byteOffset: Int): Int {
 | |
| 		return kinc_bytearray_getuint32(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat32(byteOffset: Int): FastFloat {
 | |
| 		return kinc_bytearray_getfloat32(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat64(byteOffset: Int): Float {
 | |
| 		return kinc_bytearray_getfloat64(this.self, this.byteArrayOffset + byteOffset);
 | |
| 	}
 | |
| 
 | |
| 	// Set
 | |
| 
 | |
| 	public inline function setInt8(byteOffset: Int, value: Int): Void {
 | |
| 		kinc_bytearray_setint8(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint8(byteOffset: Int, value: Int): Void {
 | |
| 		kinc_bytearray_setuint8(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setInt16(byteOffset: Int, value: Int): Void {
 | |
| 		kinc_bytearray_setint16(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint16(byteOffset: Int, value: Int): Void {
 | |
| 		kinc_bytearray_setuint16(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setInt32(byteOffset: Int, value: Int): Void {
 | |
| 		kinc_bytearray_setint32(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint32(byteOffset: Int, value: hl.I64): Void {
 | |
| 		kinc_bytearray_setuint32(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat32(byteOffset: Int, value: FastFloat): Void {
 | |
| 		kinc_bytearray_setfloat32(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat64(byteOffset: Int, value: Float): Void {
 | |
| 		kinc_bytearray_setfloat64(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 	}
 | |
| 
 | |
| 	// Get (little endian)
 | |
| 
 | |
| 	public inline function getInt16LE(byteOffset: Int): Int {
 | |
| 		#if !sys_bigendian
 | |
| 		return getInt16(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getint16_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint16LE(byteOffset: Int): Int {
 | |
| 		#if !sys_bigendian
 | |
| 		return getUint16(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getuint16_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getInt32LE(byteOffset: Int): Int {
 | |
| 		#if !sys_bigendian
 | |
| 		return getInt32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getint32_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint32LE(byteOffset: Int): hl.I64 {
 | |
| 		#if !sys_bigendian
 | |
| 		return getUint32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getuint32_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat32LE(byteOffset: Int): FastFloat {
 | |
| 		#if !sys_bigendian
 | |
| 		return getFloat32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getfloat32_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat64LE(byteOffset: Int): Float {
 | |
| 		#if !sys_bigendian
 | |
| 		return getFloat64(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getfloat64_le(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	// Set (little endian)
 | |
| 
 | |
| 	public inline function setInt16LE(byteOffset: Int, value: Int): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setInt16(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setint16_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint16LE(byteOffset: Int, value: Int): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setUint16(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setuint16_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setInt32LE(byteOffset: Int, value: Int): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setInt32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setint32_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint32LE(byteOffset: Int, value: hl.I64): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setUint32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setuint32_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat32LE(byteOffset: Int, value: FastFloat): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setFloat32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setfloat32_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat64LE(byteOffset: Int, value: Float): Void {
 | |
| 		#if !sys_bigendian
 | |
| 		setFloat64(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setfloat64_le(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	// Get (big endian)
 | |
| 
 | |
| 	public inline function getInt16BE(byteOffset: Int): Int {
 | |
| 		#if sys_bigendian
 | |
| 		return getInt16(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getint16_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint16BE(byteOffset: Int): Int {
 | |
| 		#if sys_bigendian
 | |
| 		return getUint16(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getuint16_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getInt32BE(byteOffset: Int): Int {
 | |
| 		#if sys_bigendian
 | |
| 		return getInt32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getint32_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getUint32BE(byteOffset: Int): hl.I64 {
 | |
| 		#if sys_bigendian
 | |
| 		return getUint32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getuint32_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat32BE(byteOffset: Int): FastFloat {
 | |
| 		#if sys_bigendian
 | |
| 		return getFloat32(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getfloat32_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function getFloat64BE(byteOffset: Int): Float {
 | |
| 		#if sys_bigendian
 | |
| 		return getFloat64(byteOffset);
 | |
| 		#else
 | |
| 		return kinc_bytearray_getfloat64_be(this.self, this.byteArrayOffset + byteOffset);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	// Set (big endian)
 | |
| 
 | |
| 	public inline function setInt16BE(byteOffset: Int, value: Int): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setInt16(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setint16_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint16BE(byteOffset: Int, value: Int): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setUint16(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setuint16_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setInt32BE(byteOffset: Int, value: Int): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setInt32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setint32_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setUint32BE(byteOffset: Int, value: hl.I64): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setUint32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setuint32_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat32BE(byteOffset: Int, value: FastFloat): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setFloat32(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setfloat32_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public inline function setFloat64BE(byteOffset: Int, value: Float): Void {
 | |
| 		#if sys_bigendian
 | |
| 		setFloat64(byteOffset, value);
 | |
| 		#else
 | |
| 		kinc_bytearray_setfloat64_be(this.self, this.byteArrayOffset + byteOffset, value);
 | |
| 		#end
 | |
| 	}
 | |
| 
 | |
| 	public function subarray(start: Int, ?end: Int): ByteArray {
 | |
| 		var offset: Int = this.byteArrayOffset + start;
 | |
| 		var length: Int = end == null ? this.byteArrayLength - start : end - start;
 | |
| 		return new ByteArray(this.self, offset, length);
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint8") static function kinc_bytearray_getint8(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint8") static function kinc_bytearray_getuint8(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint16") static function kinc_bytearray_getint16(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint16") static function kinc_bytearray_getuint16(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint32") static function kinc_bytearray_getint32(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint32") static function kinc_bytearray_getuint32(bytearray: Pointer, byteOffset: Int): hl.I64 {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat32") static function kinc_bytearray_getfloat32(bytearray: Pointer, byteOffset: Int): FastFloat {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat64") static function kinc_bytearray_getfloat64(bytearray: Pointer, byteOffset: Int): Float {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint8") static function kinc_bytearray_setint8(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint8") static function kinc_bytearray_setuint8(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint16") static function kinc_bytearray_setint16(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint16") static function kinc_bytearray_setuint16(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint32") static function kinc_bytearray_setint32(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint32") static function kinc_bytearray_setuint32(bytearray: Pointer, byteOffset: Int, value: hl.I64) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat32") static function kinc_bytearray_setfloat32(bytearray: Pointer, byteOffset: Int, value: FastFloat) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat64") static function kinc_bytearray_setfloat64(bytearray: Pointer, byteOffset: Int, value: Float) {}
 | |
| 
 | |
| 	// Variants for little endian on big endian system
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint16_le") static function kinc_bytearray_getint16_le(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint16_le") static function kinc_bytearray_getuint16_le(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint32_le") static function kinc_bytearray_getint32_le(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint32_le") static function kinc_bytearray_getuint32_le(bytearray: Pointer, byteOffset: Int): hl.I64 {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat32_le") static function kinc_bytearray_getfloat32_le(bytearray: Pointer, byteOffset: Int): FastFloat {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat64_le") static function kinc_bytearray_getfloat64_le(bytearray: Pointer, byteOffset: Int): Float {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint16_le") static function kinc_bytearray_setint16_le(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint16_le") static function kinc_bytearray_setuint16_le(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint32_le") static function kinc_bytearray_setint32_le(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint32_le") static function kinc_bytearray_setuint32_le(bytearray: Pointer, byteOffset: Int, value: hl.I64) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat32_le") static function kinc_bytearray_setfloat32_le(bytearray: Pointer, byteOffset: Int, value: FastFloat) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat64_le") static function kinc_bytearray_setfloat64_le(bytearray: Pointer, byteOffset: Int, value: Float) {}
 | |
| 
 | |
| 	// Variants for big endian on little endian system
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint16_be") static function kinc_bytearray_getint16_be(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint16_be") static function kinc_bytearray_getuint16_be(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getint32_be") static function kinc_bytearray_getint32_be(bytearray: Pointer, byteOffset: Int): Int {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getuint32_be") static function kinc_bytearray_getuint32_be(bytearray: Pointer, byteOffset: Int): hl.I64 {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat32_be") static function kinc_bytearray_getfloat32_be(bytearray: Pointer, byteOffset: Int): FastFloat {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_getfloat64_be") static function kinc_bytearray_getfloat64_be(bytearray: Pointer, byteOffset: Int): Float {
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint16_be") static function kinc_bytearray_setint16_be(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint16_be") static function kinc_bytearray_setuint16_be(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setint32_be") static function kinc_bytearray_setint32_be(bytearray: Pointer, byteOffset: Int, value: Int) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setuint32_be") static function kinc_bytearray_setuint32_be(bytearray: Pointer, byteOffset: Int, value: hl.I64) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat32_be") static function kinc_bytearray_setfloat32_be(bytearray: Pointer, byteOffset: Int, value: FastFloat) {}
 | |
| 
 | |
| 	@:hlNative("std", "kinc_bytearray_setfloat64_be") static function kinc_bytearray_setfloat64_be(bytearray: Pointer, byteOffset: Int, value: Float) {}
 | |
| }
 |