2016-04-21 15:19:32 +03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* This code will generate native functions that are referenced by the MarshalDirective
|
|
|
|
|
* attribute in binding code.
|
|
|
|
|
*
|
|
|
|
|
* If a MarshalDirective makes the generator create a P/Invoke to a signature
|
|
|
|
|
* that doesn't already exist, a new signature entry will have to be added
|
|
|
|
|
* in the GetFunctionData method.
|
|
|
|
|
*
|
|
|
|
|
* Then just re-build and bindings-generated.m will be re-created with the
|
|
|
|
|
* new signature.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
namespace Xamarin.BindingMethods.Generator
|
|
|
|
|
{
|
|
|
|
|
class MainClass
|
|
|
|
|
{
|
|
|
|
|
public static int Main (string[] args)
|
|
|
|
|
{
|
|
|
|
|
if (args.Length == 0) {
|
|
|
|
|
Console.WriteLine ("Output filename must be specified");
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var fn = args [0];
|
|
|
|
|
|
|
|
|
|
var data = GetFunctionData ();
|
|
|
|
|
|
|
|
|
|
using (var writer = new StringWriter ()) {
|
|
|
|
|
writer.WriteLine ("/* This file is generated */");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
writer.WriteLine ("#include \"bindings.h\"");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
writer.WriteLine ("#ifdef __cplusplus");
|
|
|
|
|
writer.WriteLine ("extern \"C\" {");
|
|
|
|
|
writer.WriteLine ("#endif");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
|
|
|
|
|
foreach (var func in data) {
|
|
|
|
|
writer.WriteLine (func.Comment);
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
if ((func.Variants & Variants.msgSend) == Variants.msgSend) {
|
|
|
|
|
Write_objc_msgSend (writer, func);
|
|
|
|
|
}
|
|
|
|
|
if ((func.Variants & Variants.msgSendSuper) == Variants.msgSendSuper) {
|
|
|
|
|
Write_objc_msgSendSuper (writer, func);
|
|
|
|
|
}
|
|
|
|
|
if ((func.Variants & Variants.msgSend_stret) == Variants.msgSend_stret) {
|
|
|
|
|
Write_objc_msgSend_stret (writer, func);
|
|
|
|
|
}
|
|
|
|
|
if ((func.Variants & Variants.msgSendSuper_stret) == Variants.msgSendSuper_stret) {
|
|
|
|
|
Write_objc_msgSendSuper_stret (writer, func);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
writer.WriteLine ("#ifdef __cplusplus");
|
|
|
|
|
writer.WriteLine ("} /* extern \"C\" */");
|
|
|
|
|
writer.WriteLine ("#endif");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
|
|
|
|
|
var generated_data = writer.ToString ();
|
|
|
|
|
if (!File.Exists (fn) || File.ReadAllText (fn) != generated_data)
|
|
|
|
|
File.WriteAllText (fn, generated_data);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static IEnumerable<FunctionData> GetFunctionData ()
|
|
|
|
|
{
|
|
|
|
|
var data = new List<FunctionData> ();
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 }
|
|
|
|
|
},
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (Double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Double }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector3, Double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Double },
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func () => Vector4f func ()",
|
|
|
|
|
Prefix = "vector_float3__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3As4,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector3) => void func (Vector4f)",
|
|
|
|
|
Prefix = "vector_float3__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3As4 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector2 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector2,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4 }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector4 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector4,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nuint, Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nuint, Vector4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nuint, Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector2i func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector2i,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, UInt32, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector2 func (nuint)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector2,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2i, Int32, Int32, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool }
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, Vector2i, float)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, bool, IntPtr, Vector2i, nint, nuint, int, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, bool, IntPtr, Vector2i, nint, nuint, Int64, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2, Vector2i, nint, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, nuint, nuint, int, bool, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, nuint, nuint, Int64, bool, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, Vector3i, nint, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3i },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector3, Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, nuint, nuint, int, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, nuint, nuint, Int64, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
2016-12-13 05:26:23 +03:00
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, nuint, nuint, nuint, int, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, nuint, nuint, nuint, Int64, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
2016-04-21 15:19:32 +03:00
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // bool func (Vector2i, IntPtr, IntPtr, IntPtr, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.Bool,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // bool func (Vector2i, nint, float, IntPtr, IntPtr, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.Bool,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // MDLAxisAlignedBoundingBox func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.MDLAxisAlignedBoundingBox,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (MDLAxisAlignedBoundingBox)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.MDLAxisAlignedBoundingBox },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (MDLAxisAlignedBoundingBox, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.MDLAxisAlignedBoundingBox },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // MDLAxisAlignedBoundingBox func (Vector4i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.MDLAxisAlignedBoundingBox,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, MDLAxisAlignedBoundingBox, Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.MDLAxisAlignedBoundingBox },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // MDLAxisAlignedBoundingBox func (double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.MDLAxisAlignedBoundingBox,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Double },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (Vector4i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector4i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector4i func (Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector4i,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, Int64)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (bool, IntPtr, Int64, Vector2i, float, float, float, float)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // bool func (Vector4i, bool, bool, bool, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.Bool,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4i },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nint, Vector2i, float, float, float, float)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, float, IntPtr, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, int)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, int, Int64, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, int, Int64, IntPtr, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, int, int, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, IntPtr, Vector2i, int, int, IntPtr, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, IntPtr, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (Vector2i, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nuint, Matrix4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Matrix4 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Matrix4f,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Matrix4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Matrix4, Double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
new ParameterData { TypeData = Types.Double },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Matrix4 func (Double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Matrix4f,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Double },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Matrix4 func (IntPtr, Double)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Matrix4f,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Double },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Matrix4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3f func (Vector3f)",
|
|
|
|
|
Prefix = "vector_float3__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Exception handling */
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, ref IntPtr); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr, IsRef = true },
|
|
|
|
|
},
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, int); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, uint); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, IntPtr, UInt64); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt64 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (int, int, int, int); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, int, int, int); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, int, int, int, int); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (int, int, int); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (nint, nint, nint, uint32); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (nint, nint, nint, uint64); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt64 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nint, nint, nint, uint64); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt64 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nint, nint, nint, uint32); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, uint32, nint, uint32); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, uint64, nint, uint64); @try",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt64 },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt64 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Vector2); @try",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Vector2, Vector2); @try",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2, Vector2); @try",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2, Vector2, float); @try",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.msgSend | Variants.msgSendSuper,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
MarshalExceptions = true,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2016-08-03 20:12:07 +03:00
|
|
|
|
// Required for SpriteKit
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Matrix2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix2f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Matrix3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix3f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Matrix4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Vector3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Vector4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector4)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector4 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (nint, nint, Vector2, Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Matrix2 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Matrix2f,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Matrix3 func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Matrix3f,
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector2 func (nint)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector2,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Matrix2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix2f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Matrix3)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix3f },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2016-08-19 20:55:59 +03:00
|
|
|
|
// Required for ModelIO
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, Vector2i, bool, IntPtr, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Matrix4, bool);",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Matrix4f },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, Vector2i, bool, nint, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, nint, UInt32, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.UInt32 },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, Vector2i, bool, bool, nint, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector3, Vector2i, int, bool, nint, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData[] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.NInt },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2016-08-30 22:32:46 +03:00
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, Vector2d, Vector2d, Vector2i, bool)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2d },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2d },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (Vector2i, int, int, bool, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
new ParameterData { TypeData = Types.Bool },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (float, Vector2, Vector2, IntPtr)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector2d func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector2d
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // Vector3 func (nuint)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.Vector3,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // float func (Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.Float,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // float func (Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.Float,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (IntPtr, Vector2, Vector2, Int64)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int64 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (IntPtr, Vector2, Vector2, Int)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Int32 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (IntPtr, Vector2, Vector2)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2 },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (Vector3d)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Vector3d },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // void func (float, Vector2i)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
new ParameterData { TypeData = Types.Vector2i },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // GKBox func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.GKBox
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (GKBox)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.GKBox },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (GKBox, float)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.GKBox },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, GKBox)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.GKBox },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // GKQuad func ()",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.GKQuad
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (GKQuad)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.GKQuad },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (GKQuad, float)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.GKQuad },
|
|
|
|
|
new ParameterData { TypeData = Types.Float },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // IntPtr func (IntPtr, GKQuad)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.NonStret,
|
|
|
|
|
ReturnType = Types.IntPtr,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.IntPtr },
|
|
|
|
|
new ParameterData { TypeData = Types.GKQuad },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
data.Add (
|
|
|
|
|
new FunctionData {
|
|
|
|
|
Comment = " // GKTriangle func (nuint)",
|
|
|
|
|
Prefix = "simd__",
|
|
|
|
|
Variants = Variants.All,
|
|
|
|
|
ReturnType = Types.GKTriangle,
|
|
|
|
|
Parameters = new ParameterData [] {
|
|
|
|
|
new ParameterData { TypeData = Types.NUInt },
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2016-04-21 15:19:32 +03:00
|
|
|
|
// We must expand functions with native types to their actual type as well.
|
|
|
|
|
for (int i = data.Count - 1; i >= 0; i--) {
|
|
|
|
|
if (!data [i].HasNativeType)
|
|
|
|
|
continue;
|
|
|
|
|
data.Add (data [i].CloneAsResolvedNativeType (true));
|
|
|
|
|
data.Add (data [i].CloneAsResolvedNativeType (false));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static string GetTypeNameForSignature (string managed_type)
|
|
|
|
|
{
|
|
|
|
|
return managed_type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void MarshalToManaged (StringWriter writer, TypeData type, string nativeVariable, string managedVariable)
|
|
|
|
|
{
|
|
|
|
|
switch (type.ManagedType) {
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector2d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector2i":
|
|
|
|
|
case "Vector2":
|
|
|
|
|
writer.WriteLine ("\t{0}.a = {1} [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.b = {1} [1];", managedVariable, nativeVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector3d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector3i":
|
|
|
|
|
case "Vector3":
|
|
|
|
|
writer.WriteLine ("\t{0}.a = {1} [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.b = {1} [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.c = {1} [2];", managedVariable, nativeVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector4d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector4i":
|
|
|
|
|
case "Vector4":
|
|
|
|
|
if (type.NativeType == "vector_float3") {
|
|
|
|
|
writer.WriteLine ("\t{0}.a = {1} [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.b = {1} [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.c = {1} [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.d = 0;", managedVariable);
|
2016-08-30 22:32:46 +03:00
|
|
|
|
} else if (type.NativeType == "vector_float4" || type.NativeType == "vector_int4" || type.NativeType == "vector_double4") {
|
2016-04-21 15:19:32 +03:00
|
|
|
|
writer.WriteLine ("\t{0}.a = {1} [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.b = {1} [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.c = {1} [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.d = {1} [3];", managedVariable, nativeVariable);
|
|
|
|
|
} else {
|
|
|
|
|
goto default;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2016-08-03 20:12:07 +03:00
|
|
|
|
case "Matrix2":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 2; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
|
|
|
|
case "Matrix3":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].c = {1}.columns [i] [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Matrix4":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].c = {1}.columns [i] [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i].d = {1}.columns [i] [3];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
|
|
|
|
case "MDLAxisAlignedBoundingBox":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.c = {1}.maxBounds [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.c = {1}.minBounds [2];", managedVariable, nativeVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "GKBox":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.c = {1}.maxBounds [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.c = {1}.minBounds [2];", managedVariable, nativeVariable);
|
|
|
|
|
break;
|
|
|
|
|
case "GKQuad":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable);
|
|
|
|
|
break;
|
|
|
|
|
case "GKTriangle":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i].a = {1}.points [i] [0];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i].b = {1}.points [i] [1];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i].c = {1}.points [i] [2];", managedVariable, nativeVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
2016-04-21 15:19:32 +03:00
|
|
|
|
default:
|
|
|
|
|
throw new NotImplementedException (string.Format ("MarshalToManaged for: NativeType: {0} ManagedType: {1}", type.NativeType, type.ManagedType));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void MarshalToNative (StringWriter writer, TypeData type, string nativeVariable, string managedVariable)
|
|
|
|
|
{
|
|
|
|
|
switch (type.ManagedType) {
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector2d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector2i":
|
|
|
|
|
case "Vector2":
|
|
|
|
|
writer.WriteLine ("\t{0} [0] = {1}.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [1] = {1}.b;", nativeVariable, managedVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector3d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector3i":
|
|
|
|
|
case "Vector3":
|
|
|
|
|
writer.WriteLine ("\t{0} [0] = {1}.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [1] = {1}.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [2] = {1}.c;", nativeVariable, managedVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "Vector4d":
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Vector4i":
|
|
|
|
|
case "Vector4":
|
|
|
|
|
if (type.NativeType == "vector_float3") {
|
|
|
|
|
writer.WriteLine ("\t{0} [0] = {1}.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [1] = {1}.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [2] = {1}.c;", nativeVariable, managedVariable);
|
2016-08-30 22:32:46 +03:00
|
|
|
|
} else if (type.NativeType == "vector_float4" || type.NativeType == "vector_int4" || type.NativeType == "vector_double4") {
|
2016-04-21 15:19:32 +03:00
|
|
|
|
writer.WriteLine ("\t{0} [0] = {1}.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [1] = {1}.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [2] = {1}.c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0} [3] = {1}.d;", nativeVariable, managedVariable);
|
|
|
|
|
} else {
|
|
|
|
|
goto default;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2016-08-03 20:12:07 +03:00
|
|
|
|
case "Matrix2":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 2; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][0] = {1}.columns [i].a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][1] = {1}.columns [i].b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
|
|
|
|
case "Matrix3":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][0] = {1}.columns [i].a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][1] = {1}.columns [i].b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][2] = {1}.columns [i].c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
2016-04-21 15:19:32 +03:00
|
|
|
|
case "Matrix4":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][0] = {1}.columns [i].a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][1] = {1}.columns [i].b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][2] = {1}.columns [i].c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.columns [i][3] = {1}.columns [i].d;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
|
|
|
|
case "MDLAxisAlignedBoundingBox":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [0] = {1}.maxBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [1] = {1}.maxBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [2] = {1}.maxBounds.c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [0] = {1}.minBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [1] = {1}.minBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [2] = {1}.minBounds.c;", nativeVariable, managedVariable);
|
|
|
|
|
break;
|
2016-08-30 22:32:46 +03:00
|
|
|
|
case "GKBox":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [0] = {1}.maxBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [1] = {1}.maxBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [2] = {1}.maxBounds.c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [0] = {1}.minBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [1] = {1}.minBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [2] = {1}.minBounds.c;", nativeVariable, managedVariable);
|
|
|
|
|
break;
|
|
|
|
|
case "GKQuad":
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [0] = {1}.maxBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.maxBounds [1] = {1}.maxBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [0] = {1}.minBounds.a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t{0}.minBounds [1] = {1}.minBounds.b;", nativeVariable, managedVariable);
|
|
|
|
|
break;
|
|
|
|
|
case "GKTriangle":
|
|
|
|
|
writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {");
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i][0] = {1}.points [i].a;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i][1] = {1}.points [i].b;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t\t{0}.points [i][2] = {1}.points [i].c;", nativeVariable, managedVariable);
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
break;
|
2016-04-21 15:19:32 +03:00
|
|
|
|
default:
|
|
|
|
|
throw new NotImplementedException (string.Format ("MarshalToNative for: NativeType: {0} ManagedType: {1}", type.NativeType, type.ManagedType));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static string GetFuncName (FunctionData func, string overload)
|
|
|
|
|
{
|
|
|
|
|
var funcName = new StringBuilder ();
|
|
|
|
|
funcName.Append ("xamarin_");
|
|
|
|
|
funcName.Append (func.Prefix);
|
|
|
|
|
if (func.ReturnType != null) {
|
|
|
|
|
funcName.Append (GetTypeNameForSignature (func.ReturnType.ManagedType));
|
|
|
|
|
} else {
|
|
|
|
|
funcName.Append ("void");
|
|
|
|
|
}
|
|
|
|
|
funcName.Append ("_").Append (overload);
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
funcName.Append ("_");
|
|
|
|
|
if (func.Parameters [i].IsRef)
|
|
|
|
|
funcName.Append ("ref_");
|
|
|
|
|
funcName.Append (GetTypeNameForSignature (func.Parameters [i].TypeData.ManagedType));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return funcName.ToString ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void WriteParametersMarshal (StringWriter writer, ParameterData [] ps)
|
|
|
|
|
{
|
|
|
|
|
if (ps == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < ps.Length; i++) {
|
|
|
|
|
var p = ps [i];
|
|
|
|
|
if (!p.TypeData.RequireMarshal)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
writer.WriteLine ("\t{0} v{1};", p.TypeData.NativeType, i);
|
|
|
|
|
MarshalToNative (writer, p.TypeData, "v" + i.ToString (), "p" + i.ToString ());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void WriteParametersInvoke (StringWriter writer, ParameterData [] ps)
|
|
|
|
|
{
|
|
|
|
|
if (ps == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < ps.Length; i++) {
|
|
|
|
|
var p = ps [i];
|
|
|
|
|
if (p.TypeData.RequireMarshal) {
|
|
|
|
|
writer.Write (", v{0}", i);
|
|
|
|
|
} else {
|
|
|
|
|
writer.Write (", p{0}", i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void WriteMessageStretSenderCode (StringWriter writer, TypeData type, bool isSuper)
|
|
|
|
|
{
|
|
|
|
|
var nonstret = isSuper ? "objc_msgSendSuper" : "objc_msgSend";
|
|
|
|
|
var stret = isSuper ? "objc_msgSendSuper_stret" : "objc_msgSend_stret";
|
|
|
|
|
|
|
|
|
|
writer.WriteLine ("#if __i386__");
|
|
|
|
|
writer.WriteLine ("\tIMP msgSend = (IMP) {0};", type.IsX86Stret ? stret : nonstret);
|
|
|
|
|
writer.WriteLine ("#elif __x86_64__");
|
|
|
|
|
writer.WriteLine ("\tIMP msgSend = (IMP) {0};", type.IsX64Stret ? stret : nonstret);
|
|
|
|
|
writer.WriteLine ("#elif __arm64__");
|
|
|
|
|
writer.WriteLine ("\tIMP msgSend = (IMP) {0};", nonstret);
|
|
|
|
|
writer.WriteLine ("#elif __arm__");
|
|
|
|
|
writer.WriteLine ("\tIMP msgSend = (IMP) {0};", type.IsARMStret ? stret : nonstret);
|
|
|
|
|
writer.WriteLine ("#else");
|
|
|
|
|
writer.WriteLine ("#error unknown architecture");
|
|
|
|
|
writer.WriteLine ("#endif");
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-06 15:33:37 +03:00
|
|
|
|
static void WriteCatchHandler (StringWriter writer)
|
|
|
|
|
{
|
|
|
|
|
writer.WriteLine ("\t} @catch (NSException *e) {");
|
|
|
|
|
writer.WriteLine ("\t\txamarin_process_nsexception_using_mode (e, true);");
|
|
|
|
|
writer.WriteLine ("\t}");
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-21 15:19:32 +03:00
|
|
|
|
static void Write_objc_msgSend (StringWriter writer, FunctionData func)
|
|
|
|
|
{
|
|
|
|
|
// func name
|
|
|
|
|
var overload = "objc_msgSend";
|
|
|
|
|
var funcName = GetFuncName (func, overload);
|
|
|
|
|
|
|
|
|
|
// typedef
|
|
|
|
|
writer.Write ("typedef {0} (*func_{1}) (id self, SEL sel", func.ReturnType == null ? "void" : func.ReturnType.NativeType, funcName.ToString ());
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} f{1}", func.Parameters [i].TypeData.NativeType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
// declaration
|
|
|
|
|
writer.WriteLine (func.ReturnType != null ? func.ReturnType.NativeWrapperType : "void");
|
|
|
|
|
writer.Write (funcName);
|
|
|
|
|
writer.Write (" (id self, SEL sel");
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} p{1}", func.Parameters [i].TypeData.NativeWrapperType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (")");
|
|
|
|
|
|
|
|
|
|
// body
|
|
|
|
|
writer.WriteLine ("{");
|
|
|
|
|
if (func.ReturnType != null && func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// marshal managed parameters to native format
|
|
|
|
|
WriteParametersMarshal (writer, func.Parameters);
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType != null && func.ReturnType.IsAnyStret)
|
|
|
|
|
WriteMessageStretSenderCode (writer, func.ReturnType, false);
|
|
|
|
|
|
|
|
|
|
// @try
|
|
|
|
|
string indent = "\t";
|
|
|
|
|
if (func.MarshalExceptions) {
|
|
|
|
|
writer.WriteLine ("\t@try {");
|
|
|
|
|
indent = "\t\t";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
writer.Write (indent);
|
|
|
|
|
if (func.ReturnType != null) {
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.Write ("rv = ");
|
|
|
|
|
} else {
|
|
|
|
|
writer.Write ("return ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.Write ("((func_{0}) {1}) (self, sel", funcName, (func.ReturnType != null && func.ReturnType.IsAnyStret) ? "msgSend" : overload);
|
|
|
|
|
WriteParametersInvoke (writer, func.Parameters);
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType != null) {
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
// Marshal return value back
|
|
|
|
|
writer.WriteLine ("{0}{1} rvm;", indent, func.ReturnType.NativeWrapperType);
|
|
|
|
|
MarshalToManaged (writer, func.ReturnType, "rv", "rvm");
|
|
|
|
|
writer.WriteLine ("{0}return rvm;", indent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @catch
|
2016-06-06 15:33:37 +03:00
|
|
|
|
if (func.MarshalExceptions)
|
|
|
|
|
WriteCatchHandler (writer);
|
2016-04-21 15:19:32 +03:00
|
|
|
|
|
|
|
|
|
writer.WriteLine ("}");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void Write_objc_msgSendSuper (StringWriter writer, FunctionData func)
|
|
|
|
|
{
|
|
|
|
|
// func name
|
|
|
|
|
var overload = "objc_msgSendSuper";
|
|
|
|
|
var funcName = GetFuncName (func, overload);
|
|
|
|
|
|
|
|
|
|
// typedef
|
|
|
|
|
writer.Write ("typedef {0} (*func_{1}) (struct objc_super *super, SEL sel", func.ReturnType == null ? "void" : func.ReturnType.NativeType, funcName.ToString ());
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} f{1}", func.Parameters [i].TypeData.NativeType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
// declaration
|
|
|
|
|
writer.WriteLine (func.ReturnType != null ? func.ReturnType.NativeWrapperType : "void");
|
|
|
|
|
writer.Write (funcName);
|
|
|
|
|
writer.Write (" (struct objc_super *super, SEL sel");
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} p{1}", func.Parameters [i].TypeData.NativeWrapperType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (")");
|
|
|
|
|
|
|
|
|
|
// body
|
|
|
|
|
writer.WriteLine ("{");
|
|
|
|
|
if (func.ReturnType != null && func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// marshal managed parameters to native format
|
|
|
|
|
WriteParametersMarshal (writer, func.Parameters);
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType != null && func.ReturnType.IsAnyStret)
|
|
|
|
|
WriteMessageStretSenderCode (writer, func.ReturnType, true);
|
|
|
|
|
|
|
|
|
|
// @try
|
|
|
|
|
string indent = "\t";
|
|
|
|
|
if (func.MarshalExceptions) {
|
|
|
|
|
writer.WriteLine ("\t@try {");
|
|
|
|
|
indent = "\t\t";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
writer.Write (indent);
|
|
|
|
|
if (func.ReturnType != null) {
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.Write ("rv = ");
|
|
|
|
|
} else {
|
|
|
|
|
writer.Write ("return ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.Write ("((func_{0}) {1}) (super, sel", funcName, (func.ReturnType != null && func.ReturnType.IsAnyStret) ? "msgSend" : overload);
|
|
|
|
|
WriteParametersInvoke (writer, func.Parameters);
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType != null) {
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
// Marshal return value back
|
|
|
|
|
writer.WriteLine ("{0}{1} rvm;", indent, func.ReturnType.NativeWrapperType);
|
|
|
|
|
MarshalToManaged (writer, func.ReturnType, "rv", "rvm");
|
|
|
|
|
writer.WriteLine ("{0}return rvm;", indent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @catch
|
2016-06-06 15:33:37 +03:00
|
|
|
|
if (func.MarshalExceptions)
|
|
|
|
|
WriteCatchHandler (writer);
|
2016-04-21 15:19:32 +03:00
|
|
|
|
|
|
|
|
|
writer.WriteLine ("}");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void Write_objc_msgSend_stret (StringWriter writer, FunctionData func)
|
|
|
|
|
{
|
|
|
|
|
if (func.ReturnType == null)
|
|
|
|
|
throw new Exception (string.Format ("stret functions must have a return type: {0}", func.Comment));
|
|
|
|
|
|
|
|
|
|
// func name
|
|
|
|
|
var overload = "objc_msgSend_stret";
|
|
|
|
|
var funcName = GetFuncName (func, overload);
|
|
|
|
|
|
|
|
|
|
// typedef
|
|
|
|
|
writer.Write ("typedef {0} (*func_{1}) (id self, SEL sel", func.ReturnType.NativeType, funcName.ToString ());
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} f{1}", func.Parameters [i].TypeData.NativeType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
// declaration
|
|
|
|
|
writer.WriteLine ("void");
|
|
|
|
|
writer.Write (funcName);
|
|
|
|
|
writer.Write (" ({0} *stret_rv, id self, SEL sel", func.ReturnType.NativeWrapperType);
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} p{1}", func.Parameters [i].TypeData.NativeWrapperType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (")");
|
|
|
|
|
|
|
|
|
|
// body
|
|
|
|
|
writer.WriteLine ("{");
|
|
|
|
|
if (func.ReturnType.RequireMarshal)
|
|
|
|
|
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
|
|
|
|
|
|
|
|
|
// marshal managed parameters to native format
|
|
|
|
|
WriteParametersMarshal (writer, func.Parameters);
|
|
|
|
|
|
|
|
|
|
// @try
|
|
|
|
|
string indent = "\t";
|
|
|
|
|
if (func.MarshalExceptions) {
|
|
|
|
|
writer.WriteLine ("\t@try {");
|
|
|
|
|
indent = "\t\t";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType.IsAnyStret)
|
|
|
|
|
WriteMessageStretSenderCode (writer, func.ReturnType, false);
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
writer.Write (indent);
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.Write ("rv = ");
|
|
|
|
|
} else {
|
|
|
|
|
writer.Write ("*stret_rv = ");
|
|
|
|
|
}
|
|
|
|
|
writer.Write ("((func_{0}) {1}) (self, sel", funcName, func.ReturnType.IsAnyStret ? "msgSend" : overload.Replace ("_stret", ""));
|
|
|
|
|
WriteParametersInvoke (writer, func.Parameters);
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
// Marshal return value back
|
|
|
|
|
MarshalToManaged (writer, func.ReturnType, "rv", "(*stret_rv)");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @catch
|
2016-06-06 15:33:37 +03:00
|
|
|
|
if (func.MarshalExceptions)
|
|
|
|
|
WriteCatchHandler (writer);
|
2016-04-21 15:19:32 +03:00
|
|
|
|
|
|
|
|
|
writer.WriteLine ("}");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void Write_objc_msgSendSuper_stret (StringWriter writer, FunctionData func)
|
|
|
|
|
{
|
|
|
|
|
if (func.ReturnType == null)
|
|
|
|
|
throw new Exception (string.Format ("stret functions must have a return type: {0}", func.Comment));
|
|
|
|
|
|
|
|
|
|
// func name
|
|
|
|
|
var overload = "objc_msgSendSuper_stret";
|
|
|
|
|
var funcName = GetFuncName (func, overload);
|
|
|
|
|
|
|
|
|
|
// typedef
|
|
|
|
|
writer.Write ("typedef {0} (*func_{1}) (struct objc_super *super, SEL sel", func.ReturnType.NativeType, funcName.ToString ());
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} f{1}", func.Parameters [i].TypeData.NativeType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
// declaration
|
|
|
|
|
writer.WriteLine ("void");
|
|
|
|
|
writer.Write (funcName);
|
|
|
|
|
writer.Write (" ({0} *stret_rv, struct objc_super *super, SEL sel", func.ReturnType.NativeWrapperType);
|
|
|
|
|
if (func.Parameters != null) {
|
|
|
|
|
for (int i = 0; i < func.Parameters.Length; i++) {
|
|
|
|
|
writer.Write (", {0} p{1}", func.Parameters [i].TypeData.NativeWrapperType, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
writer.WriteLine (")");
|
|
|
|
|
|
|
|
|
|
// body
|
|
|
|
|
writer.WriteLine ("{");
|
|
|
|
|
if (func.ReturnType.RequireMarshal)
|
|
|
|
|
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
|
|
|
|
|
|
|
|
|
// marshal managed parameters to native format
|
|
|
|
|
WriteParametersMarshal (writer, func.Parameters);
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType.IsAnyStret)
|
|
|
|
|
WriteMessageStretSenderCode (writer, func.ReturnType, true);
|
|
|
|
|
|
|
|
|
|
// @try
|
|
|
|
|
string indent = "\t";
|
|
|
|
|
if (func.MarshalExceptions) {
|
|
|
|
|
writer.WriteLine ("\t@try {");
|
|
|
|
|
indent = "\t\t";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// invoke
|
|
|
|
|
writer.Write (indent);
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
writer.Write ("rv = ");
|
|
|
|
|
} else {
|
|
|
|
|
writer.Write ("*stret_rv = ");
|
|
|
|
|
}
|
|
|
|
|
writer.Write ("((func_{0}) {1}) (super, sel", funcName, func.ReturnType.IsAnyStret ? "msgSend" : overload.Replace ("_stret", ""));
|
|
|
|
|
WriteParametersInvoke (writer, func.Parameters);
|
|
|
|
|
writer.WriteLine (");");
|
|
|
|
|
|
|
|
|
|
if (func.ReturnType.RequireMarshal) {
|
|
|
|
|
// Marshal return value back
|
|
|
|
|
MarshalToManaged (writer, func.ReturnType, "rv", "(*stret_rv)");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @catch
|
2016-06-06 15:33:37 +03:00
|
|
|
|
if (func.MarshalExceptions)
|
|
|
|
|
WriteCatchHandler (writer);
|
2016-04-21 15:19:32 +03:00
|
|
|
|
|
|
|
|
|
writer.WriteLine ("}");
|
|
|
|
|
writer.WriteLine ();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class Types {
|
|
|
|
|
public static TypeData Vector2 = new TypeData {
|
|
|
|
|
ManagedType = "Vector2",
|
|
|
|
|
NativeType = "vector_float2",
|
|
|
|
|
NativeWrapperType = "struct Vector2f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector3 = new TypeData {
|
|
|
|
|
ManagedType = "Vector3",
|
|
|
|
|
NativeType = "vector_float3",
|
|
|
|
|
NativeWrapperType = "struct Vector3f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector4 = new TypeData {
|
|
|
|
|
ManagedType = "Vector4",
|
|
|
|
|
NativeType = "vector_float4",
|
|
|
|
|
NativeWrapperType = "struct Vector4f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector3As4 = new TypeData {
|
|
|
|
|
ManagedType = "Vector4",
|
|
|
|
|
NativeType = "vector_float3",
|
|
|
|
|
NativeWrapperType = "struct Vector4f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector2i = new TypeData {
|
|
|
|
|
ManagedType = "Vector2i",
|
|
|
|
|
NativeType = "vector_int2",
|
|
|
|
|
NativeWrapperType = "struct Vector2i",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector3i = new TypeData {
|
|
|
|
|
ManagedType = "Vector3i",
|
|
|
|
|
NativeType = "vector_int3",
|
|
|
|
|
NativeWrapperType = "struct Vector3i",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector4i = new TypeData {
|
|
|
|
|
ManagedType = "Vector4i",
|
|
|
|
|
NativeType = "vector_int4",
|
|
|
|
|
NativeWrapperType = "struct Vector4i",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
2016-08-30 22:32:46 +03:00
|
|
|
|
public static TypeData Vector2d = new TypeData {
|
|
|
|
|
ManagedType = "Vector2d",
|
|
|
|
|
NativeType = "vector_double2",
|
|
|
|
|
NativeWrapperType = "struct Vector2d",
|
|
|
|
|
RequireMarshal = true
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector3d = new TypeData {
|
|
|
|
|
ManagedType = "Vector3d",
|
|
|
|
|
NativeType = "vector_double3",
|
|
|
|
|
NativeWrapperType = "struct Vector3d",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Vector4d = new TypeData {
|
|
|
|
|
ManagedType = "Vector4d",
|
|
|
|
|
NativeType = "vector_double4",
|
|
|
|
|
NativeWrapperType = "struct Vector4d",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
};
|
2016-08-03 20:12:07 +03:00
|
|
|
|
public static TypeData Matrix2f = new TypeData {
|
|
|
|
|
ManagedType = "Matrix2",
|
|
|
|
|
NativeType = "matrix_float2x2",
|
|
|
|
|
NativeWrapperType = "struct Matrix2f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Matrix3f = new TypeData {
|
|
|
|
|
ManagedType = "Matrix3",
|
|
|
|
|
NativeType = "matrix_float3x3",
|
|
|
|
|
NativeWrapperType = "struct Matrix3f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = true,
|
|
|
|
|
};
|
2016-04-21 15:19:32 +03:00
|
|
|
|
public static TypeData Matrix4f = new TypeData {
|
|
|
|
|
ManagedType = "Matrix4",
|
|
|
|
|
NativeType = "matrix_float4x4",
|
|
|
|
|
NativeWrapperType = "struct Matrix4f",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = true,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Double = new TypeData {
|
|
|
|
|
ManagedType = "Double",
|
|
|
|
|
NativeType = "double",
|
|
|
|
|
NativeWrapperType = "double",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData IntPtr = new TypeData {
|
|
|
|
|
ManagedType = "IntPtr",
|
|
|
|
|
NativeType = "void *",
|
|
|
|
|
NativeWrapperType = "void *",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Float = new TypeData {
|
|
|
|
|
ManagedType = "float",
|
|
|
|
|
NativeType = "float",
|
|
|
|
|
NativeWrapperType = "float",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Int32 = new TypeData {
|
|
|
|
|
ManagedType = "int",
|
|
|
|
|
NativeType = "int",
|
|
|
|
|
NativeWrapperType = "int",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData UInt32 = new TypeData {
|
|
|
|
|
ManagedType = "UInt32",
|
|
|
|
|
NativeType = "uint32_t",
|
|
|
|
|
NativeWrapperType = "uint32_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Int64 = new TypeData {
|
|
|
|
|
ManagedType = "Int64",
|
|
|
|
|
NativeType = "int64_t",
|
|
|
|
|
NativeWrapperType = "int64_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData UInt64 = new TypeData {
|
|
|
|
|
ManagedType = "UInt64",
|
|
|
|
|
NativeType = "uint64_t",
|
|
|
|
|
NativeWrapperType = "uint64_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData NInt = new TypeData {
|
|
|
|
|
ManagedType = "nint",
|
|
|
|
|
NativeType = "xm_nint_t",
|
|
|
|
|
NativeWrapperType = "xm_nint_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData NUInt = new TypeData {
|
|
|
|
|
ManagedType = "nuint",
|
|
|
|
|
NativeType = "xm_nuint_t",
|
|
|
|
|
NativeWrapperType = "xm_nuint_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData NFloat = new TypeData {
|
|
|
|
|
ManagedType = "nfloat",
|
|
|
|
|
NativeType = "xm_nfloat_t",
|
|
|
|
|
NativeWrapperType = "xm_nfloat_t",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
public static TypeData Bool = new TypeData {
|
|
|
|
|
ManagedType = "bool",
|
|
|
|
|
NativeType = "bool",
|
|
|
|
|
NativeWrapperType = "bool",
|
|
|
|
|
RequireMarshal = false,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static TypeData MDLAxisAlignedBoundingBox = new TypeData {
|
|
|
|
|
ManagedType = "MDLAxisAlignedBoundingBox",
|
|
|
|
|
NativeType = "MDLAxisAlignedBoundingBox",
|
|
|
|
|
NativeWrapperType = "MDLAxisAlignedBoundingBoxWrapper",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
};
|
2016-08-30 22:32:46 +03:00
|
|
|
|
|
|
|
|
|
public static TypeData GKBox = new TypeData {
|
|
|
|
|
ManagedType = "GKBox",
|
|
|
|
|
NativeType = "GKBox",
|
|
|
|
|
NativeWrapperType = "struct GKBoxWrapper",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static TypeData GKQuad = new TypeData {
|
|
|
|
|
ManagedType = "GKQuad",
|
|
|
|
|
NativeType = "GKQuad",
|
|
|
|
|
NativeWrapperType = "struct GKQuadWrapper",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = false,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static TypeData GKTriangle = new TypeData {
|
|
|
|
|
ManagedType = "GKTriangle",
|
|
|
|
|
NativeType = "GKTriangle",
|
|
|
|
|
NativeWrapperType = "struct GKTriangleWrapper",
|
|
|
|
|
RequireMarshal = true,
|
|
|
|
|
IsARMStret = true,
|
|
|
|
|
IsX86Stret = true,
|
|
|
|
|
IsX64Stret = true,
|
|
|
|
|
};
|
2016-04-21 15:19:32 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum Variants {
|
|
|
|
|
msgSend = 1,
|
|
|
|
|
msgSend_stret = 2,
|
|
|
|
|
msgSendSuper = 4,
|
|
|
|
|
msgSendSuper_stret = 8,
|
|
|
|
|
All = msgSend | msgSend_stret | msgSendSuper | msgSendSuper_stret,
|
|
|
|
|
NonStret = msgSend | msgSendSuper,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TypeData {
|
|
|
|
|
public string ManagedType;
|
|
|
|
|
public string NativeWrapperType;
|
|
|
|
|
public string NativeType;
|
|
|
|
|
public bool RequireMarshal;
|
|
|
|
|
public bool IsX86Stret;
|
|
|
|
|
#pragma warning disable 649
|
|
|
|
|
// warning 649: Field `Xamarin.BindingMethods.Generator.TypeData.IsX64Stret' is never assigned to, and will always have its default value `false'
|
|
|
|
|
// this warning will disappear if we ever get a type that requires stret on these platforms, so just ignore it.
|
|
|
|
|
public bool IsX64Stret;
|
|
|
|
|
public bool IsARMStret;
|
|
|
|
|
#pragma warning restore 649
|
|
|
|
|
public bool IsAnyStret { get { return IsX86Stret || IsX64Stret || IsARMStret; } }
|
|
|
|
|
public bool IsNativeType { get { return ManagedType == "nint" || ManagedType == "nuint" || ManagedType == "nfloat"; } }
|
|
|
|
|
|
|
|
|
|
public TypeData AsSpecificNativeType (bool as32bit)
|
|
|
|
|
{
|
|
|
|
|
switch (ManagedType) {
|
|
|
|
|
case "nint":
|
|
|
|
|
return as32bit ? MainClass.Types.Int32 : MainClass.Types.Int64;
|
|
|
|
|
case "nuint":
|
|
|
|
|
return as32bit ? MainClass.Types.UInt32 : MainClass.Types.UInt64;
|
|
|
|
|
case "nfloat":
|
|
|
|
|
return as32bit ? MainClass.Types.Float : MainClass.Types.Double;
|
|
|
|
|
default:
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ParameterData {
|
|
|
|
|
public TypeData TypeData;
|
|
|
|
|
public bool IsRef;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class FunctionData {
|
|
|
|
|
public string Comment;
|
|
|
|
|
public string Prefix = string.Empty;
|
|
|
|
|
// Variants is a [Flags] enum, specifying which of the objc_msgSend variants
|
|
|
|
|
// should be generated. You'll usually use "All", which will generate all 4,
|
|
|
|
|
// or "NonStret", which will just generate objc_msgSend and objc_msgSendSuper.
|
|
|
|
|
public Variants Variants;
|
|
|
|
|
// The return type of the function. Use null for void.
|
|
|
|
|
public TypeData ReturnType;
|
|
|
|
|
// The parameters. Use null for void.
|
|
|
|
|
public ParameterData[] Parameters;
|
|
|
|
|
public bool MarshalExceptions;
|
|
|
|
|
|
|
|
|
|
public bool HasNativeType {
|
|
|
|
|
get {
|
|
|
|
|
if (ReturnType != null && ReturnType.IsNativeType)
|
|
|
|
|
return true;
|
|
|
|
|
if (Parameters != null) {
|
|
|
|
|
foreach (var pd in Parameters) {
|
|
|
|
|
if (pd.TypeData.IsNativeType)
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FunctionData CloneAsResolvedNativeType (bool as32bit)
|
|
|
|
|
{
|
|
|
|
|
var rv = new FunctionData ();
|
|
|
|
|
rv.Comment = Comment + " cloned for " + (as32bit ? "32bit" : "64bit");
|
|
|
|
|
rv.Prefix = Prefix;
|
|
|
|
|
rv.Variants = Variants;
|
|
|
|
|
if (ReturnType != null)
|
|
|
|
|
rv.ReturnType = ReturnType.AsSpecificNativeType (as32bit);
|
|
|
|
|
if (Parameters != null) {
|
|
|
|
|
rv.Parameters = new ParameterData [Parameters.Length];
|
|
|
|
|
for (int i = 0; i < Parameters.Length; i++) {
|
|
|
|
|
rv.Parameters [i] = new ParameterData ();
|
|
|
|
|
rv.Parameters [i].TypeData = Parameters [i].TypeData.AsSpecificNativeType (as32bit);
|
|
|
|
|
rv.Parameters [i].IsRef = Parameters [i].IsRef;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rv.MarshalExceptions = MarshalExceptions;
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|