diff options
Diffstat (limited to 'bindings/csharp/csharp.i')
-rw-r--r-- | bindings/csharp/csharp.i | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/bindings/csharp/csharp.i b/bindings/csharp/csharp.i new file mode 100644 index 0000000..33534cd --- /dev/null +++ b/bindings/csharp/csharp.i @@ -0,0 +1,147 @@ +/* File : csharp.i +* http://www.swig.org/Doc1.3/CSharp.html +*/ + + +%define %cs_marshal_array(TYPE, CSTYPE) +%typemap(ctype) TYPE[] "void*" +%typemap(imtype, +inattributes="[MarshalAs(UnmanagedType.LPArray)]") TYPE[] "CSTYPE[]" +%typemap(cstype) TYPE[] "CSTYPE[]" +%typemap(in) TYPE[] %{ $1 = (TYPE*)$input; %} +%typemap(csin) TYPE[] "$csinput" +%enddef + +// Mapping void* as IntPtr +%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(csdirectorin) void * "$iminput" + + +//======== SipMessage ========// +%typemap(cscode) SipMessage %{ + public byte[] getSipContent() { + uint clen = this.getSipContentLength(); + if(clen>0){ + IntPtr ptr = Marshal.AllocHGlobal((int)clen); + this.getSipContent(ptr, clen); + byte[] bytes = new byte[clen]; + Marshal.Copy(ptr, bytes, 0, bytes.Length); + Marshal.FreeHGlobal(ptr); + return bytes; + } + return null; + } +%} + +//======== MessagingSession ========// +%typemap(cscode) MessagingSession %{ + public bool send(byte[] buffer) { + IntPtr ptr = Marshal.AllocHGlobal(buffer.Length); + Marshal.Copy(buffer, 0, ptr, buffer.Length); + bool ret = this.send(ptr, (uint)buffer.Length); + Marshal.FreeHGlobal(ptr); + return ret; + } +%} + +//======== InfoSession ========// +%typemap(cscode) InfoSession %{ +public bool send(byte[] buffer, ActionConfig config) { + IntPtr ptr = Marshal.AllocHGlobal(buffer.Length); + Marshal.Copy(buffer, 0, ptr, buffer.Length); + bool ret = this.send(ptr, (uint)buffer.Length, config); + Marshal.FreeHGlobal(ptr); + return ret; + } +%} + +//======= MediaContent ========// +%typemap(cscode) MediaContent %{ + public byte[] getPayload() { + uint clen = this.getPayloadLength(); + if(clen>0){ + IntPtr ptr = Marshal.AllocHGlobal((int)clen); + this.getPayload(ptr, clen); + byte[] bytes = new byte[clen]; + Marshal.Copy(ptr, bytes, 0, bytes.Length); + Marshal.FreeHGlobal(ptr); + return bytes; + } + return null; + } +%} + + +//======= SMSData ========// +%typemap(cscode) SMSData %{ + public byte[] getPayload() { + uint clen = this.getPayloadLength(); + if(clen>0){ + IntPtr ptr = Marshal.AllocHGlobal((int)clen); + this.getPayload(ptr, clen); + byte[] bytes = new byte[clen]; + Marshal.Copy(ptr, bytes, 0, bytes.Length); + Marshal.FreeHGlobal(ptr); + return bytes; + } + return null; + } +%} + +//======= RPMessage ========// +%typemap(cscode) RPMessage %{ + public byte[] getPayload() { + uint clen = this.getPayloadLength(); + if(clen>0){ + IntPtr ptr = Marshal.AllocHGlobal((int)clen); + this.getPayload(ptr, clen); + byte[] bytes = new byte[clen]; + Marshal.Copy(ptr, bytes, 0, bytes.Length); + Marshal.FreeHGlobal(ptr); + return bytes; + } + return null; + } +%} + +//======== XcapStack ========// +%typemap(cscode) XcapStack %{ + public bool putElement(string url, byte[] payload) { + IntPtr ptr = Marshal.AllocHGlobal(payload.Length); + Marshal.Copy(payload, 0, ptr, payload.Length); + bool ret = this.putElement(url, ptr, (uint)payload.Length); + Marshal.FreeHGlobal(ptr); + return ret; + } + + public bool putAttribute(string url, byte[] payload) { + IntPtr ptr = Marshal.AllocHGlobal(payload.Length); + Marshal.Copy(payload, 0, ptr, payload.Length); + bool ret = this.putAttribute(url, ptr, (uint)payload.Length); + Marshal.FreeHGlobal(ptr); + return ret; + } + + public bool putDocument(string url, byte[] payload, string contentType) { + IntPtr ptr = Marshal.AllocHGlobal(payload.Length); + Marshal.Copy(payload, 0, ptr, payload.Length); + bool ret = this.putDocument(url, ptr, (uint)payload.Length, contentType); + Marshal.FreeHGlobal(ptr); + return ret; + } +%} + + +//======== Deprecated ========// +// @deprecated: to be replaced by "tmedia_codec_id_t" in Doubango 3.0 +%typemap(csattributes) tdav_codec_id_e "[System.Obsolete(\"Deprecated and replaced by 'tmedia_codec_id_t'. Will be removed in Doubango 3.0.\", false)]" + + + +%include ../_common/tinyWRAP.i |