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