Browse Source

[cpp] Add accessors for manipulating NativeArray data.

Hugh 10 years ago
parent
commit
3640a5b631
3 changed files with 16 additions and 1 deletions
  1. 2 1
      std/cpp/ConstPointer.hx
  2. 12 0
      std/cpp/NativeArray.hx
  3. 2 0
      std/cpp/Pointer.hx

+ 2 - 1
std/cpp/ConstPointer.hx

@@ -20,11 +20,12 @@ extern class ConstPointer<T>
 	public function gt(inOther:Pointer<T>):Bool;
 	public function gt(inOther:Pointer<T>):Bool;
 	public function geq(inOther:Pointer<T>):Bool;
 	public function geq(inOther:Pointer<T>):Bool;
 
 
-
+   public static function fromRaw<T>(ptr:RawConstPointer<T>) : ConstPointer<T>;
 
 
    public static function fromPointer<T>(inNativePointer:Dynamic) : ConstPointer<T>;
    public static function fromPointer<T>(inNativePointer:Dynamic) : ConstPointer<T>;
 
 
 	public function reinterpret<Other>():Pointer<Other>;
 	public function reinterpret<Other>():Pointer<Other>;
+	public function rawCast<Other>():RawPointer<Other>;
 
 
    @:analyzer(no_simplification)
    @:analyzer(no_simplification)
 	public function at(inIndex:Int):T;
 	public function at(inIndex:Int):T;

+ 12 - 0
std/cpp/NativeArray.hx

@@ -12,6 +12,18 @@ extern class NativeArray {
       return untyped inArray;
       return untyped inArray;
    }
    }
 
 
+	public static inline function address<T>( inArray:Array<T>,inIndex:Int ) : Pointer<T> {
+      return Pointer.arrayElem(inArray,inIndex);
+   }
+
+	public static inline function setData<T>( inArray:Array<T>,inData:Pointer<T>,inElementCount:Int ) : Void {
+      untyped inArray.setData(inData.raw,inElementCount);
+   }
+	public static inline function setUnmanagedData<T>( inArray:Array<T>,inData:Pointer<T>,inElementCount:Int ) : Void {
+      untyped inArray.setUnmanagedData(inData.raw,inElementCount);
+   }
+
+
 	public static inline function zero<T>( ioDestArray:Array<T>, ?inFirst:Int, ?inElements:Int ) : Void {
 	public static inline function zero<T>( ioDestArray:Array<T>, ?inFirst:Int, ?inElements:Int ) : Void {
 		untyped ioDestArray.zero(inFirst, inElements);
 		untyped ioDestArray.zero(inFirst, inElements);
 	};
 	};

+ 2 - 0
std/cpp/Pointer.hx

@@ -13,6 +13,8 @@ extern class Pointer<T> extends ConstPointer<T> implements ArrayAccess<T>
    public function set_ref(t:T) : T;
    public function set_ref(t:T) : T;
 
 
 
 
+   public static function fromRaw<T>(ptr:RawPointer<T>) : Pointer<T>;
+
    public static function fromHandle<T>(inHandle:Dynamic,?inKind:String) : Pointer<T>;
    public static function fromHandle<T>(inHandle:Dynamic,?inKind:String) : Pointer<T>;
 
 
    public static function fromPointer<T>(inNativePointer:Dynamic) : Pointer<T>;
    public static function fromPointer<T>(inNativePointer:Dynamic) : Pointer<T>;