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");
 | 
						|
	}
 | 
						|
}
 |