|
@@ -19,34 +19,39 @@
|
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
* DEALINGS IN THE SOFTWARE.
|
|
|
*/
|
|
|
- package cpp;
|
|
|
+package cpp;
|
|
|
|
|
|
-@:coreType @:structAccess @:include("cpp/Pointer.h")
|
|
|
-extern class Function<T,ABI:cpp.abi.Abi>
|
|
|
+typedef FunctionData<T,ABI> = T;
|
|
|
+
|
|
|
+
|
|
|
+@:include("cpp/Pointer.h") @:callable
|
|
|
+extern abstract Function<T, ABI:cpp.abi.Abi>( FunctionData<T,ABI> )
|
|
|
{
|
|
|
- public function new(d:Dynamic);
|
|
|
+ inline public function new(inValue:T) this = inValue;
|
|
|
+
|
|
|
+ // Legacy Api
|
|
|
+ public var call(get,never):T;
|
|
|
+ inline function get_call():T return this;
|
|
|
|
|
|
- // Actually a function pointer, but can be called using haxe notation
|
|
|
- public var call(default,null):T;
|
|
|
|
|
|
@:native("::cpp::Function_obj::getProcAddress")
|
|
|
- static function nativeGetProcAddress<T,ABI:cpp.abi.Abi>(inModule:String, inFunction:String) : AutoCast;
|
|
|
+ @:extern static function nativeGetProcAddress<T,ABI:cpp.abi.Abi>(inModule:String, inFunction:String) : AutoCast return null;
|
|
|
inline public static function getProcAddress<T,ABI:cpp.abi.Abi>(inModule:String, inFunction:String) : Function<T,ABI>
|
|
|
{
|
|
|
return cast nativeGetProcAddress(inModule, inFunction);
|
|
|
}
|
|
|
|
|
|
@:native("::cpp::Function_obj::fromStaticFunction")
|
|
|
- static function nativeFromStaticFunction<T>(inStaticFunction:T) : AutoCast;
|
|
|
+ @:extern static function nativeFromStaticFunction<T>(inStaticFunction:T) : AutoCast return null;
|
|
|
inline public static function fromStaticFunction<T>(inStaticFunction:T) : Callable<T>
|
|
|
{
|
|
|
return cast nativeFromStaticFunction(inStaticFunction);
|
|
|
}
|
|
|
|
|
|
- public function lt(inOther:Function<T,ABI>):Bool;
|
|
|
- public function leq(inOther:Function<T,ABI>):Bool;
|
|
|
- public function gt(inOther:Function<T,ABI>):Bool;
|
|
|
- public function geq(inOther:Function<T,ABI>):Bool;
|
|
|
+ @:extern public function lt(inOther:Function<T,ABI>):Bool return false;
|
|
|
+ @:extern public function leq(inOther:Function<T,ABI>):Bool return false;
|
|
|
+ @:extern public function gt(inOther:Function<T,ABI>):Bool return false;
|
|
|
+ @:extern public function geq(inOther:Function<T,ABI>):Bool return false;
|
|
|
}
|
|
|
|
|
|
|