Skip to content

Instantly share code, notes, and snippets.

SWIG_THIS Matrix& Identity(); // SWIG_THIS doesn't actually exist.
%include "typemaps.i"
%define %TypeOutParam(TYPE)
%apply TYPE& OUTPUT { TYPE& };
%enddef
%TypeOutParam(bool)
%TypeOutParam(int)
%TypeOutParam(float)
...
%include "typemaps.i"
%define %TypeRefParam(TYPE)
%apply TYPE& INOUT { TYPE& };
%enddef
%TypeRefParam(bool)
%TypeRefParam(int)
%TypeRefParam(float)
...
%typemap(ctype) void * "void *"
%typemap(imtype) void * "IntPtr"
%typemap(cstype) void * "IntPtr"
%typemap(csin) void * "$csinput"
%typemap(in) void * %{ $1 = $input; %}
%typemap(out) void * %{ $result = $1; %}
%typemap(csout) void * { return $imcall; }
%typemap(ctype) char** "char**"
%typemap(imtype) char** "string[]"
%typemap(cstype) char** "string[]"
%typemap(csin) char** "$csinput"
%typemap(csout, excode=SWIGEXCODE) char**, const char**& {
int ret = $imcall;$excode
return ret;
}
%typemap(csvarin, excode=SWIGEXCODE2) char** %{
%rename(Add) Vector3::operator +;
%typemap(cscode) YOUR_CLASS
%{
public bool IsLifecycleManaged
{
get { return swigCMemOwn; }
set { swigCMemOwn = value; }
}
%}
%template(ListFloat) List<float>;
%newobject MyFactory::Create;
RWBuffer dispatchBuff : register(u0);
[numthreads(1, 1, 1)]
void UpdateIndirectDispatchBuffer()
{
dispatchBuff[0] = (uint)ceil(dispatchBuff[0] / NumThreadGroupSize);
}