forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha; | ||
|  | 
 | ||
|  | import haxe.io.Bytes; | ||
|  | 
 | ||
|  | using StringTools; | ||
|  | 
 | ||
|  | @:headerCode("
 | ||
|  | #include <kinc/io/filereader.h> | ||
|  | #include <kinc/io/filewriter.h> | ||
|  | ")
 | ||
|  | @:ifFeature("kha.Storage.*") | ||
|  | class KoreStorageFile extends StorageFile { | ||
|  | 	var name: String; | ||
|  | 
 | ||
|  | 	public function new(name: String) { | ||
|  | 		this.name = name; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:functionCode("
 | ||
|  | 		kinc_file_reader_t file; | ||
|  | 		if (!kinc_file_reader_open(&file, name, KINC_FILE_TYPE_SAVE)) return null(); | ||
|  | 		::kha::internal::BytesBlob blob = createBlob(kinc_file_reader_size(&file)); | ||
|  | 		kinc_file_reader_read(&file, blob->bytes->b->Pointer(), kinc_file_reader_size(&file)); | ||
|  | 		kinc_file_reader_close(&file); | ||
|  | 		return blob; | ||
|  | 	")
 | ||
|  | 	override public function read(): Blob { | ||
|  | 		return null; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:functionCode("
 | ||
|  | 		kinc_file_writer_t file; | ||
|  | 		if (!kinc_file_writer_open(&file, name)) return; | ||
|  | 		kinc_file_writer_write(&file, data->bytes->b->Pointer(), data->get_length()); | ||
|  | 		kinc_file_writer_close(&file); | ||
|  | 	")
 | ||
|  | 	function writeInternal(data: Blob): Void {} | ||
|  | 
 | ||
|  | 	override public function write(data: Blob): Void { | ||
|  | 		if (data != null) { | ||
|  | 			writeInternal(data); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:keep | ||
|  | 	static function createBlob(size: Int): Blob { | ||
|  | 		return Blob.alloc(size); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	static function unused(): Void { | ||
|  | 		Bytes.alloc(0); | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | class Storage { | ||
|  | 	public static function namedFile(name: String): StorageFile { | ||
|  | 		name = name.replace("\\", "."); | ||
|  | 		name = name.replace("/", "."); | ||
|  | 		return new KoreStorageFile(name); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function defaultFile(): StorageFile { | ||
|  | 		return namedFile("default.kha"); | ||
|  | 	} | ||
|  | } |