2025-01-15 19:28:55 +01:00

160 lines
2.2 KiB
Haxe

package openfl; #if (display || !flash)
import openfl.system.ApplicationDomain;
import openfl.utils.ByteArray;
@:jsRequire("openfl/Memory", "default")
extern class Memory {
public static inline function getByte (addr:Int):Int {
#if flash
return untyped __vmem_get__ (0, addr);
#else
return 0;
#end
}
public static inline function getDouble (addr:Int):Float {
#if flash
return untyped __vmem_get__ (4, addr);
#else
return 0;
#end
}
public static inline function getI32 (addr:Int):Int {
#if flash
return untyped __vmem_get__ (2, addr);
#else
return 0;
#end
}
public static inline function getFloat (addr:Int):Float {
#if flash
return untyped __vmem_get__ (3, addr);
#else
return 0;
#end
}
public static inline function getUI16 (addr:Int):Int {
#if flash
return untyped __vmem_get__ (1, addr);
#else
return 0;
#end
}
public static inline function select (b:ByteArray):Void {
#if (flash && !display)
ApplicationDomain.currentDomain.domainMemory = b;
#end
}
public static inline function setByte (addr:Int, v:Int):Void {
#if flash
untyped __vmem_set__ (0, addr, v);
#end
}
public static inline function setDouble (addr:Int, v:Float):Void {
#if flash
untyped __vmem_set__ (4, addr, v);
#end
}
public static inline function setFloat (addr:Int, v:Float):Void {
#if flash
untyped __vmem_set__ (3, addr, v);
#end
}
public static inline function setI16 (addr:Int, v:Int):Void {
#if flash
untyped __vmem_set__ (1, addr, v);
#end
}
public static inline function setI32 (addr:Int, v:Int):Void {
#if flash
untyped __vmem_set__ (2, addr, v);
#end
}
public static inline function signExtend1 (v:Int):Int {
#if flash
return untyped __vmem_sign__ (0, v);
#else
return 0;
#end
}
public static inline function signExtend8 (v:Int):Int {
#if flash
return untyped __vmem_sign__ (1, v);
#else
return 0;
#end
}
public static inline function signExtend16 (v:Int):Int {
#if flash
return untyped __vmem_sign__ (2, v);
#else
return 0;
#end
}
}
#else
typedef Memory = flash.Memory;
#end