forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			127 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package kha;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import haxe.io.Bytes;
							 | 
						||
| 
								 | 
							
								import js.node.Buffer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Blob implements Resource {
							 | 
						||
| 
								 | 
							
									var buffer: Buffer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function new(bytes: Bytes) {
							 | 
						||
| 
								 | 
							
										if (bytes != null) {
							 | 
						||
| 
								 | 
							
											buffer = new Buffer(bytes.length);
							 | 
						||
| 
								 | 
							
											for (i in 0...bytes.length) {
							 | 
						||
| 
								 | 
							
												buffer.writeUInt8(bytes.get(i), i);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function fromBytes(bytes: Bytes): Blob {
							 | 
						||
| 
								 | 
							
										return new Blob(bytes);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public static function alloc(size: Int): Blob {
							 | 
						||
| 
								 | 
							
										var blob = new Blob(null);
							 | 
						||
| 
								 | 
							
										var array = new Array();
							 | 
						||
| 
								 | 
							
										array[size - 1] = 0;
							 | 
						||
| 
								 | 
							
										blob.buffer = new Buffer(array);
							 | 
						||
| 
								 | 
							
										return blob;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@:noCompletion
							 | 
						||
| 
								 | 
							
									public static function _fromBuffer(buffer: Buffer): Blob {
							 | 
						||
| 
								 | 
							
										var blob = new Blob(null);
							 | 
						||
| 
								 | 
							
										blob.buffer = buffer;
							 | 
						||
| 
								 | 
							
										return blob;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function sub(start: Int, length: Int): Blob {
							 | 
						||
| 
								 | 
							
										return _fromBuffer(buffer.slice(start, start + length));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public var length(get, never): Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function get_length(): Int {
							 | 
						||
| 
								 | 
							
										return buffer.length;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function writeU8(position: Int, value: Int): Void {
							 | 
						||
| 
								 | 
							
										buffer.writeUInt8(value, position);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readU8(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var byte = buffer.readUInt8(position);
							 | 
						||
| 
								 | 
							
										++position;
							 | 
						||
| 
								 | 
							
										return byte;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readS8(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var byte = buffer.readInt8(position);
							 | 
						||
| 
								 | 
							
										++position;
							 | 
						||
| 
								 | 
							
										return byte;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readU16BE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readUInt16BE(position);
							 | 
						||
| 
								 | 
							
										position += 2;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readU16LE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readUInt16LE(position);
							 | 
						||
| 
								 | 
							
										position += 2;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readS16BE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readInt16BE(position);
							 | 
						||
| 
								 | 
							
										position += 2;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readS16LE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readInt16LE(position);
							 | 
						||
| 
								 | 
							
										position += 2;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readS32BE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readInt32BE(position);
							 | 
						||
| 
								 | 
							
										position += 4;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readS32LE(position: Int): Int {
							 | 
						||
| 
								 | 
							
										var value = buffer.readInt32LE(position);
							 | 
						||
| 
								 | 
							
										position += 4;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readF32BE(position: Int): Float {
							 | 
						||
| 
								 | 
							
										var value = buffer.readFloatBE(position);
							 | 
						||
| 
								 | 
							
										position += 4;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readF32LE(position: Int): Float {
							 | 
						||
| 
								 | 
							
										var value = buffer.readFloatLE(position);
							 | 
						||
| 
								 | 
							
										position += 4;
							 | 
						||
| 
								 | 
							
										return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function toString(): String {
							 | 
						||
| 
								 | 
							
										return buffer.toString();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function readUtf8String(): String {
							 | 
						||
| 
								 | 
							
										return toString();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function toBytes(): Bytes {
							 | 
						||
| 
								 | 
							
										return Bytes.ofData(cast buffer);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function unload(): Void {
							 | 
						||
| 
								 | 
							
										buffer = null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |