172 lines
4.3 KiB
Text
172 lines
4.3 KiB
Text
/* -----------------------------------------------------------------------------
|
|
* dclassgen.swg
|
|
*
|
|
* Typemaps containing D code used when generating D proxy classes.
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
%typemap(dbase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
|
|
%typemap(dclassmodifiers) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) "class"
|
|
%typemap(dcode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
|
|
%typemap(dimports) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
|
|
%typemap(dinterfaces) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
|
|
%typemap(dinterfaces_derived) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [], SWIGTYPE (CLASS::*) ""
|
|
|
|
// See <denums.swg>.
|
|
%typemap(dclassmodifiers) enum SWIGTYPE "enum"
|
|
%typemap(dcode) enum SWIGTYPE ""
|
|
|
|
|
|
/*
|
|
* Proxy classes.
|
|
*/
|
|
|
|
%typemap(dconstructor, excode=SWIGEXCODE,directorconnect="\n swigDirectorConnect();") SWIGTYPE {
|
|
this($imcall, true);$excode$directorconnect
|
|
}
|
|
|
|
%typemap(ddestructor) SWIGTYPE %{
|
|
~this() {
|
|
dispose();
|
|
}
|
|
%}
|
|
|
|
// We do not use »override« attribute for generated dispose() methods to stay
|
|
// somewhat compatible to Phobos and older Tango versions where Object.dispose()
|
|
// does not exist.
|
|
%typemap(ddispose, methodname="dispose", methodmodifiers="public", parameters="") SWIGTYPE {
|
|
synchronized(this) {
|
|
if (swigCPtr !is null) {
|
|
if (swigCMemOwn) {
|
|
swigCMemOwn = false;
|
|
$imcall;
|
|
}
|
|
swigCPtr = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
%typemap(ddispose_derived, methodname="dispose", methodmodifiers="public", parameters="") SWIGTYPE {
|
|
synchronized(this) {
|
|
if (swigCPtr !is null) {
|
|
if (swigCMemOwn) {
|
|
swigCMemOwn = false;
|
|
$imcall;
|
|
}
|
|
swigCPtr = null;
|
|
super.dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Unfortunately, the »package« visibility attribute does not work in D when the
|
|
// module in question is in the root package (happens if no -package is specified
|
|
// at the SWIG command line), so we are stuck with public visibility for
|
|
// swigGetCPtr().
|
|
%typemap(dbody) SWIGTYPE %{
|
|
private void* swigCPtr;
|
|
protected bool swigCMemOwn;
|
|
|
|
public this(void* cObject, bool ownCObject) {
|
|
swigCPtr = cObject;
|
|
swigCMemOwn = ownCObject;
|
|
}
|
|
|
|
public static void* swigGetCPtr(typeof(this) obj) {
|
|
return (obj is null) ? null : obj.swigCPtr;
|
|
}
|
|
|
|
public static void* swigRelease(typeof(this) obj) {
|
|
if (obj !is null) {
|
|
if (!obj.swigCMemOwn)
|
|
throw new Exception("Cannot release ownership as memory is not owned");
|
|
void* ptr = obj.swigCPtr;
|
|
obj.swigCMemOwn = false;
|
|
obj.dispose();
|
|
return ptr;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
mixin $imdmodule.SwigOperatorDefinitions;
|
|
%}
|
|
|
|
|
|
%typemap(dbody_derived) SWIGTYPE %{
|
|
private void* swigCPtr;
|
|
|
|
public this(void* cObject, bool ownCObject) {
|
|
super($imdmodule.$dclazznameUpcast(cObject), ownCObject);
|
|
swigCPtr = cObject;
|
|
}
|
|
|
|
public static void* swigGetCPtr(typeof(this) obj) {
|
|
return (obj is null) ? null : obj.swigCPtr;
|
|
}
|
|
|
|
public static void* swigRelease(typeof(this) obj) {
|
|
if (obj !is null) {
|
|
if (!obj.swigCMemOwn)
|
|
throw new Exception("Cannot release ownership as memory is not owned");
|
|
void* ptr = obj.swigCPtr;
|
|
obj.swigCMemOwn = false;
|
|
obj.dispose();
|
|
return ptr;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
mixin $imdmodule.SwigOperatorDefinitions;
|
|
%}
|
|
|
|
|
|
/*
|
|
* Type wrapper classes.
|
|
*/
|
|
|
|
%typemap(dbody) SWIGTYPE *, SWIGTYPE &, SWIGTYPE &&, SWIGTYPE [] %{
|
|
private void* swigCPtr;
|
|
|
|
public this(void* cObject, bool futureUse) {
|
|
swigCPtr = cObject;
|
|
}
|
|
|
|
protected this() {
|
|
swigCPtr = null;
|
|
}
|
|
|
|
public static void* swigGetCPtr(typeof(this) obj) {
|
|
return (obj is null) ? null : obj.swigCPtr;
|
|
}
|
|
|
|
public static void* swigRelease(typeof(this) obj) {
|
|
return (obj is null) ? null : obj.swigCPtr;
|
|
}
|
|
|
|
mixin $imdmodule.SwigOperatorDefinitions;
|
|
%}
|
|
|
|
|
|
/*
|
|
* Member function pointer wrapper classes (see <dmemberfunctionpointers.swg>).
|
|
*/
|
|
|
|
%typemap(dbody) SWIGTYPE (CLASS::*) %{
|
|
private char* swigCPtr;
|
|
|
|
public this(char* cMemberPtr, bool futureUse) {
|
|
swigCPtr = cMemberPtr;
|
|
}
|
|
|
|
protected this() {
|
|
swigCPtr = null;
|
|
}
|
|
|
|
package static char* swigGetCMemberPtr(typeof(this) obj) {
|
|
return (obj is null) ? null : obj.swigCPtr;
|
|
}
|
|
|
|
mixin $imdmodule.SwigOperatorDefinitions;
|
|
%}
|