60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha; | ||
|  | 
 | ||
|  | import haxe.io.Bytes; | ||
|  | import haxe.Serializer; | ||
|  | import haxe.Unserializer; | ||
|  | 
 | ||
|  | // A file in the storage system. | ||
|  | // Be aware that on some platforms files may be easily lost, such us Flash or HTML5. | ||
|  | class StorageFile { | ||
|  | 	public function read(): Blob { | ||
|  | 		return null; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function write(data: Blob): Void {} | ||
|  | 
 | ||
|  | 	public function append(data: Blob): Void {} | ||
|  | 
 | ||
|  | 	public function canAppend(): Bool { | ||
|  | 		return false; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function maxSize(): Int { | ||
|  | 		return -1; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function writeString(data: String): Void { | ||
|  | 		var bytes = Bytes.ofString(data); | ||
|  | 		write(Blob.fromBytes(bytes)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function appendString(data: String): Void { | ||
|  | 		var bytes = Bytes.ofString(data); | ||
|  | 		append(Blob.fromBytes(bytes)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function readString(): String { | ||
|  | 		var blob = read(); | ||
|  | 		if (blob == null) | ||
|  | 			return null; | ||
|  | 		else | ||
|  | 			return blob.toString(); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function writeObject(object: Dynamic): Void { | ||
|  | 		writeString(Serializer.run(object)); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function readObject(): Dynamic { | ||
|  | 		var s = readString(); | ||
|  | 		if (s == null) | ||
|  | 			return null; | ||
|  | 		try { | ||
|  | 			return Unserializer.run(s); | ||
|  | 		} | ||
|  | 		catch (e:Dynamic) { | ||
|  | 			return null; | ||
|  | 		} | ||
|  | 	} | ||
|  | } |