https://swig.svn.sourceforge.net/svnroot/swig/trunk ........ r10498 | talby | 2008-05-26 22:09:56 +0200 (Pn, 26 maj 2008) | 2 lines run test cases in the Perl set by the --with-perl5 configure option. ........ r10499 | talby | 2008-05-26 23:04:06 +0200 (Pn, 26 maj 2008) | 3 lines The perl5 minherit runtime test will work better if the classes are actually built under SWIGPERL. ........ r10503 | wsfulton | 2008-05-28 11:44:37 +0200 (Śr, 28 maj 2008) | 1 line Fix variable wrappers when using -proxy. Patch from Jan Jezabek ........ r10504 | bhy | 2008-05-28 19:27:48 +0200 (Śr, 28 maj 2008) | 2 lines Fixed SF #1971977: typo in pycontainer.swg (related to -extranative option) ........ r10506 | wsfulton | 2008-05-29 02:45:28 +0200 (Cz, 29 maj 2008) | 1 line Fix variable wrappers when using -noproxy ........ r10508 | bhy | 2008-05-30 15:53:33 +0200 (Pt, 30 maj 2008) | 1 line Fixed SF #1976978, apply the macros for primitive types to std::wstring ........ r10511 | olly | 2008-05-30 18:11:27 +0200 (Pt, 30 maj 2008) | 4 lines Fix typo in handling of /*@SWIG[...]*/ comments in the scanner. This just meant we were only actually looking for /*@SWI at the start of the comment, so was pretty harmless in practice. ........ r10515 | wsfulton | 2008-06-02 22:10:40 +0200 (Pn, 02 cze 2008) | 1 line Fix samename testcase for c# and java ........ r10516 | wsfulton | 2008-06-02 22:15:39 +0200 (Pn, 02 cze 2008) | 1 line Fix enums when using -noproxy ........ r10518 | bhy | 2008-06-07 13:20:07 +0200 (So, 07 cze 2008) | 4 lines Added a test case for keyword renaming. Now it works for Python in SWIG's -c++ mode, but in C mode it doesn't work! (you can try with make keyword_rename.ctest) ........ r10519 | bhy | 2008-06-07 15:40:51 +0200 (So, 07 cze 2008) | 1 line fixed keyword_rename.ctest tese case, caused by a mistake in Swig/naming.c ........ r10527 | mgossage | 2008-06-17 04:57:15 +0200 (Wt, 17 cze 2008) | 1 line [lua] bugfix 1938142 (bool& and bool* support) ........ r10530 | wsfulton | 2008-06-19 22:02:13 +0200 (Cz, 19 cze 2008) | 1 line Add R keyword support. Rename keywords for successful compilation of Java and C# code. More consistent keyword warnings across the different languages. ........ r10531 | wsfulton | 2008-06-19 23:15:48 +0200 (Cz, 19 cze 2008) | 1 line add complete list of R reserved words ........ r10536 | wsfulton | 2008-06-21 13:35:33 +0200 (So, 21 cze 2008) | 1 line better terminology for static types ........ r10537 | wsfulton | 2008-06-21 13:42:48 +0200 (So, 21 cze 2008) | 1 line remove raise as keyword test- it conflicts with _raise in LIBCMT on windows ........ r10539 | wsfulton | 2008-06-21 17:21:29 +0200 (So, 21 cze 2008) | 1 line Lua example warning removal fixes for vc++ ........ r10540 | wsfulton | 2008-06-21 17:23:02 +0200 (So, 21 cze 2008) | 1 line Remove some vc++ /W4 warnings ........ r10541 | wsfulton | 2008-06-21 18:04:55 +0200 (So, 21 cze 2008) | 1 line minor vc++ /W4 warning fixes ........ r10542 | wsfulton | 2008-06-21 21:07:51 +0200 (So, 21 cze 2008) | 1 line 'byte' is already used in Ruby on windows, so use another keyword ........ r10543 | wsfulton | 2008-06-21 22:45:32 +0200 (So, 21 cze 2008) | 1 line Fix crashing in the Ruby reject method in the STL wrappers ........ r10544 | wsfulton | 2008-06-21 22:48:28 +0200 (So, 21 cze 2008) | 1 line Fix crashing in the Ruby reject method in the STL wrappers ........ r10545 | wsfulton | 2008-06-21 22:49:10 +0200 (So, 21 cze 2008) | 1 line remove unnecessary variable int the char **STRING_ARRAY out typemap ........ r10546 | wsfulton | 2008-06-21 23:07:49 +0200 (So, 21 cze 2008) | 1 line Fix Ruby C++ example dependencies in dsp files ........ r10547 | wsfulton | 2008-06-22 00:25:36 +0200 (N, 22 cze 2008) | 1 line Fix unused parameter warnings in python when using gcc's -W -Wall options ........ r10548 | wsfulton | 2008-06-22 00:26:35 +0200 (N, 22 cze 2008) | 1 line Fix virtual destructor ........ r10549 | wsfulton | 2008-06-22 01:25:20 +0200 (N, 22 cze 2008) | 1 line various warning fixes ........ r10550 | wsfulton | 2008-06-22 02:09:11 +0200 (N, 22 cze 2008) | 1 line Another fix for the JVM hanging on exit problem when using directors ........ r10551 | wsfulton | 2008-06-22 02:09:51 +0200 (N, 22 cze 2008) | 1 line documentation sections update ........ r10552 | wsfulton | 2008-06-22 02:18:10 +0200 (N, 22 cze 2008) | 1 line more docs on defining macros for the thread hanging problem ........ r10558 | wsfulton | 2008-06-22 23:30:20 +0200 (N, 22 cze 2008) | 1 line fix unused parms in last commit for C code ........ r10559 | wsfulton | 2008-06-23 00:12:43 +0200 (Pn, 23 cze 2008) | 1 line Suppress unused methods warning for VC++ ........ r10560 | wsfulton | 2008-06-23 22:26:07 +0200 (Pn, 23 cze 2008) | 1 line fix partialcheck-test-suite and parallel make for r, chicken, tcl and php ........ r10561 | wsfulton | 2008-06-23 22:39:41 +0200 (Pn, 23 cze 2008) | 1 line correct message display when running the partialcheck-test-suite make target ........ r10562 | wsfulton | 2008-06-23 23:14:53 +0200 (Pn, 23 cze 2008) | 1 line fix typo ........ r10563 | olly | 2008-06-23 23:23:54 +0200 (Pn, 23 cze 2008) | 3 lines Fix bad use of Python API (untested, since I can't even compile this code on x86-64!) ........ r10564 | olly | 2008-06-24 00:58:03 +0200 (Wt, 24 cze 2008) | 3 lines [PHP] Fix segfault when wrapping a non-class function marked with %newobject (testcase char_strings). ........ r10565 | olly | 2008-06-24 02:27:34 +0200 (Wt, 24 cze 2008) | 3 lines [PHP] Fix assertion failure when handling %typemap(in,numinputs=0) (testcase ignore_parameter). ........ r10566 | olly | 2008-06-24 02:33:08 +0200 (Wt, 24 cze 2008) | 2 lines [PHP] Fix typemap_namespace.i to not try to copy a non-existent typemap. ........ r10567 | olly | 2008-06-24 02:41:07 +0200 (Wt, 24 cze 2008) | 3 lines Clean up dead and unused code in SwigToPhpType(), and rename to GetShadowReturnType(). ........ r10568 | olly | 2008-06-24 02:42:29 +0200 (Wt, 24 cze 2008) | 2 lines Fix cosmetic typo in string constant. ........ r10574 | wsfulton | 2008-06-24 22:10:28 +0200 (Wt, 24 cze 2008) | 1 line zap last entry ........ r10575 | wsfulton | 2008-06-24 22:11:46 +0200 (Wt, 24 cze 2008) | 1 line variable name changes to remove php keywords ........ r10576 | wsfulton | 2008-06-24 22:12:08 +0200 (Wt, 24 cze 2008) | 1 line variable name hiding fix ........ r10577 | wsfulton | 2008-06-24 22:12:43 +0200 (Wt, 24 cze 2008) | 1 line More info about numobjects added ........ r10578 | wsfulton | 2008-06-24 22:13:41 +0200 (Wt, 24 cze 2008) | 1 line update for 1.3.36 release ........ r10579 | wsfulton | 2008-06-24 23:48:46 +0200 (Wt, 24 cze 2008) | 1 line remove deprecated -c commandline option (runtime library generation) ........ r10580 | wsfulton | 2008-06-24 23:53:12 +0200 (Wt, 24 cze 2008) | 1 line correct comment about deprecated option ........ r10582 | wsfulton | 2008-06-25 01:00:27 +0200 (Śr, 25 cze 2008) | 1 line use rsync and ssh to upload releases to SourceForge as ftp no longer works ........ r10584 | wsfulton | 2008-06-25 01:24:48 +0200 (Śr, 25 cze 2008) | 1 line correction for 1.3.36 ........ r10588 | wsfulton | 2008-06-25 02:16:04 +0200 (Śr, 25 cze 2008) | 1 line section update ........ r10589 | wsfulton | 2008-06-25 02:16:40 +0200 (Śr, 25 cze 2008) | 1 line bump version to 1.3.37 ........ r10594 | wsfulton | 2008-06-26 20:33:06 +0200 (Cz, 26 cze 2008) | 1 line correct typo in first entry about %fragment ........ git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-maciekd@10606 626c5289-ae23-0410-ae9c-e8d60b6d4f22
329 lines
16 KiB
Text
329 lines
16 KiB
Text
/* -----------------------------------------------------------------------------
|
|
* See the LICENSE file for information on copyright, usage and redistribution
|
|
* of SWIG, and the README file for authors - http://www.swig.org/release.html.
|
|
*
|
|
* csharphead.swg
|
|
*
|
|
* Support code for exceptions if the SWIG_CSHARP_NO_EXCEPTION_HELPER is not defined
|
|
* Support code for strings if the SWIG_CSHARP_NO_STRING_HELPER is not defined
|
|
* ----------------------------------------------------------------------------- */
|
|
|
|
%insert(runtime) %{
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
%}
|
|
|
|
#if !defined(SWIG_CSHARP_NO_EXCEPTION_HELPER)
|
|
%insert(runtime) %{
|
|
/* Support for throwing C# exceptions from C/C++. There are two types:
|
|
* Exceptions that take a message and ArgumentExceptions that take a message and a parameter name. */
|
|
typedef enum {
|
|
SWIG_CSharpApplicationException,
|
|
SWIG_CSharpArithmeticException,
|
|
SWIG_CSharpDivideByZeroException,
|
|
SWIG_CSharpIndexOutOfRangeException,
|
|
SWIG_CSharpInvalidCastException,
|
|
SWIG_CSharpInvalidOperationException,
|
|
SWIG_CSharpIOException,
|
|
SWIG_CSharpNullReferenceException,
|
|
SWIG_CSharpOutOfMemoryException,
|
|
SWIG_CSharpOverflowException,
|
|
SWIG_CSharpSystemException
|
|
} SWIG_CSharpExceptionCodes;
|
|
|
|
typedef enum {
|
|
SWIG_CSharpArgumentException,
|
|
SWIG_CSharpArgumentNullException,
|
|
SWIG_CSharpArgumentOutOfRangeException
|
|
} SWIG_CSharpExceptionArgumentCodes;
|
|
|
|
typedef void (SWIGSTDCALL* SWIG_CSharpExceptionCallback_t)(const char *);
|
|
typedef void (SWIGSTDCALL* SWIG_CSharpExceptionArgumentCallback_t)(const char *, const char *);
|
|
|
|
typedef struct {
|
|
SWIG_CSharpExceptionCodes code;
|
|
SWIG_CSharpExceptionCallback_t callback;
|
|
} SWIG_CSharpException_t;
|
|
|
|
typedef struct {
|
|
SWIG_CSharpExceptionArgumentCodes code;
|
|
SWIG_CSharpExceptionArgumentCallback_t callback;
|
|
} SWIG_CSharpExceptionArgument_t;
|
|
|
|
static SWIG_CSharpException_t SWIG_csharp_exceptions[] = {
|
|
{ SWIG_CSharpApplicationException, NULL },
|
|
{ SWIG_CSharpArithmeticException, NULL },
|
|
{ SWIG_CSharpDivideByZeroException, NULL },
|
|
{ SWIG_CSharpIndexOutOfRangeException, NULL },
|
|
{ SWIG_CSharpInvalidCastException, NULL },
|
|
{ SWIG_CSharpInvalidOperationException, NULL },
|
|
{ SWIG_CSharpIOException, NULL },
|
|
{ SWIG_CSharpNullReferenceException, NULL },
|
|
{ SWIG_CSharpOutOfMemoryException, NULL },
|
|
{ SWIG_CSharpOverflowException, NULL },
|
|
{ SWIG_CSharpSystemException, NULL }
|
|
};
|
|
|
|
static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = {
|
|
{ SWIG_CSharpArgumentException, NULL },
|
|
{ SWIG_CSharpArgumentNullException, NULL },
|
|
{ SWIG_CSharpArgumentOutOfRangeException, NULL },
|
|
};
|
|
|
|
static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
|
|
SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
|
|
if ((size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
|
|
callback = SWIG_csharp_exceptions[code].callback;
|
|
}
|
|
callback(msg);
|
|
}
|
|
|
|
static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
|
|
SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
|
|
if ((size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) {
|
|
callback = SWIG_csharp_exceptions_argument[code].callback;
|
|
}
|
|
callback(msg, param_name);
|
|
}
|
|
%}
|
|
|
|
%insert(runtime) %{
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
#endif
|
|
SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionCallbacks_$module(
|
|
SWIG_CSharpExceptionCallback_t applicationCallback,
|
|
SWIG_CSharpExceptionCallback_t arithmeticCallback,
|
|
SWIG_CSharpExceptionCallback_t divideByZeroCallback,
|
|
SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback,
|
|
SWIG_CSharpExceptionCallback_t invalidCastCallback,
|
|
SWIG_CSharpExceptionCallback_t invalidOperationCallback,
|
|
SWIG_CSharpExceptionCallback_t ioCallback,
|
|
SWIG_CSharpExceptionCallback_t nullReferenceCallback,
|
|
SWIG_CSharpExceptionCallback_t outOfMemoryCallback,
|
|
SWIG_CSharpExceptionCallback_t overflowCallback,
|
|
SWIG_CSharpExceptionCallback_t systemCallback) {
|
|
SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback = applicationCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpArithmeticException].callback = arithmeticCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpDivideByZeroException].callback = divideByZeroCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpIndexOutOfRangeException].callback = indexOutOfRangeCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpInvalidCastException].callback = invalidCastCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpInvalidOperationException].callback = invalidOperationCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpIOException].callback = ioCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpNullReferenceException].callback = nullReferenceCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpOutOfMemoryException].callback = outOfMemoryCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpOverflowException].callback = overflowCallback;
|
|
SWIG_csharp_exceptions[SWIG_CSharpSystemException].callback = systemCallback;
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
#endif
|
|
SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionArgumentCallbacks_$module(
|
|
SWIG_CSharpExceptionArgumentCallback_t argumentCallback,
|
|
SWIG_CSharpExceptionArgumentCallback_t argumentNullCallback,
|
|
SWIG_CSharpExceptionArgumentCallback_t argumentOutOfRangeCallback) {
|
|
SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback = argumentCallback;
|
|
SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentNullException].callback = argumentNullCallback;
|
|
SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentOutOfRangeException].callback = argumentOutOfRangeCallback;
|
|
}
|
|
%}
|
|
|
|
%pragma(csharp) imclasscode=%{
|
|
protected class SWIGExceptionHelper {
|
|
|
|
public delegate void ExceptionDelegate(string message);
|
|
public delegate void ExceptionArgumentDelegate(string message, string paramName);
|
|
|
|
static ExceptionDelegate applicationDelegate = new ExceptionDelegate(SetPendingApplicationException);
|
|
static ExceptionDelegate arithmeticDelegate = new ExceptionDelegate(SetPendingArithmeticException);
|
|
static ExceptionDelegate divideByZeroDelegate = new ExceptionDelegate(SetPendingDivideByZeroException);
|
|
static ExceptionDelegate indexOutOfRangeDelegate = new ExceptionDelegate(SetPendingIndexOutOfRangeException);
|
|
static ExceptionDelegate invalidCastDelegate = new ExceptionDelegate(SetPendingInvalidCastException);
|
|
static ExceptionDelegate invalidOperationDelegate = new ExceptionDelegate(SetPendingInvalidOperationException);
|
|
static ExceptionDelegate ioDelegate = new ExceptionDelegate(SetPendingIOException);
|
|
static ExceptionDelegate nullReferenceDelegate = new ExceptionDelegate(SetPendingNullReferenceException);
|
|
static ExceptionDelegate outOfMemoryDelegate = new ExceptionDelegate(SetPendingOutOfMemoryException);
|
|
static ExceptionDelegate overflowDelegate = new ExceptionDelegate(SetPendingOverflowException);
|
|
static ExceptionDelegate systemDelegate = new ExceptionDelegate(SetPendingSystemException);
|
|
|
|
static ExceptionArgumentDelegate argumentDelegate = new ExceptionArgumentDelegate(SetPendingArgumentException);
|
|
static ExceptionArgumentDelegate argumentNullDelegate = new ExceptionArgumentDelegate(SetPendingArgumentNullException);
|
|
static ExceptionArgumentDelegate argumentOutOfRangeDelegate = new ExceptionArgumentDelegate(SetPendingArgumentOutOfRangeException);
|
|
|
|
[DllImport("$dllimport", EntryPoint="SWIGRegisterExceptionCallbacks_$module")]
|
|
public static extern void SWIGRegisterExceptionCallbacks_$module(
|
|
ExceptionDelegate applicationDelegate,
|
|
ExceptionDelegate arithmeticDelegate,
|
|
ExceptionDelegate divideByZeroDelegate,
|
|
ExceptionDelegate indexOutOfRangeDelegate,
|
|
ExceptionDelegate invalidCastDelegate,
|
|
ExceptionDelegate invalidOperationDelegate,
|
|
ExceptionDelegate ioDelegate,
|
|
ExceptionDelegate nullReferenceDelegate,
|
|
ExceptionDelegate outOfMemoryDelegate,
|
|
ExceptionDelegate overflowDelegate,
|
|
ExceptionDelegate systemExceptionDelegate);
|
|
|
|
[DllImport("$dllimport", EntryPoint="SWIGRegisterExceptionArgumentCallbacks_$module")]
|
|
public static extern void SWIGRegisterExceptionCallbacksArgument_$module(
|
|
ExceptionArgumentDelegate argumentDelegate,
|
|
ExceptionArgumentDelegate argumentNullDelegate,
|
|
ExceptionArgumentDelegate argumentOutOfRangeDelegate);
|
|
|
|
static void SetPendingApplicationException(string message) {
|
|
SWIGPendingException.Set(new System.ApplicationException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingArithmeticException(string message) {
|
|
SWIGPendingException.Set(new System.ArithmeticException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingDivideByZeroException(string message) {
|
|
SWIGPendingException.Set(new System.DivideByZeroException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingIndexOutOfRangeException(string message) {
|
|
SWIGPendingException.Set(new System.IndexOutOfRangeException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingInvalidCastException(string message) {
|
|
SWIGPendingException.Set(new System.InvalidCastException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingInvalidOperationException(string message) {
|
|
SWIGPendingException.Set(new System.InvalidOperationException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingIOException(string message) {
|
|
SWIGPendingException.Set(new System.IO.IOException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingNullReferenceException(string message) {
|
|
SWIGPendingException.Set(new System.NullReferenceException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingOutOfMemoryException(string message) {
|
|
SWIGPendingException.Set(new System.OutOfMemoryException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingOverflowException(string message) {
|
|
SWIGPendingException.Set(new System.OverflowException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingSystemException(string message) {
|
|
SWIGPendingException.Set(new System.SystemException(message, SWIGPendingException.Retrieve()));
|
|
}
|
|
|
|
static void SetPendingArgumentException(string message, string paramName) {
|
|
SWIGPendingException.Set(new System.ArgumentException(message, paramName, SWIGPendingException.Retrieve()));
|
|
}
|
|
static void SetPendingArgumentNullException(string message, string paramName) {
|
|
Exception e = SWIGPendingException.Retrieve();
|
|
if (e != null) message = message + " Inner Exception: " + e.Message;
|
|
SWIGPendingException.Set(new System.ArgumentNullException(paramName, message));
|
|
}
|
|
static void SetPendingArgumentOutOfRangeException(string message, string paramName) {
|
|
Exception e = SWIGPendingException.Retrieve();
|
|
if (e != null) message = message + " Inner Exception: " + e.Message;
|
|
SWIGPendingException.Set(new System.ArgumentOutOfRangeException(paramName, message));
|
|
}
|
|
|
|
static SWIGExceptionHelper() {
|
|
SWIGRegisterExceptionCallbacks_$module(
|
|
applicationDelegate,
|
|
arithmeticDelegate,
|
|
divideByZeroDelegate,
|
|
indexOutOfRangeDelegate,
|
|
invalidCastDelegate,
|
|
invalidOperationDelegate,
|
|
ioDelegate,
|
|
nullReferenceDelegate,
|
|
outOfMemoryDelegate,
|
|
overflowDelegate,
|
|
systemDelegate);
|
|
|
|
SWIGRegisterExceptionCallbacksArgument_$module(
|
|
argumentDelegate,
|
|
argumentNullDelegate,
|
|
argumentOutOfRangeDelegate);
|
|
}
|
|
}
|
|
|
|
protected static SWIGExceptionHelper swigExceptionHelper = new SWIGExceptionHelper();
|
|
|
|
public class SWIGPendingException {
|
|
[ThreadStatic]
|
|
private static Exception pendingException = null;
|
|
private static int numExceptionsPending = 0;
|
|
|
|
public static bool Pending {
|
|
get {
|
|
bool pending = false;
|
|
if (numExceptionsPending > 0)
|
|
if (pendingException != null)
|
|
pending = true;
|
|
return pending;
|
|
}
|
|
}
|
|
|
|
public static void Set(Exception e) {
|
|
if (pendingException != null)
|
|
throw new ApplicationException("FATAL: An earlier pending exception from unmanaged code was missed and thus not thrown (" + pendingException.ToString() + ")", e);
|
|
pendingException = e;
|
|
lock(typeof($imclassname)) {
|
|
numExceptionsPending++;
|
|
}
|
|
}
|
|
|
|
public static Exception Retrieve() {
|
|
Exception e = null;
|
|
if (numExceptionsPending > 0) {
|
|
if (pendingException != null) {
|
|
e = pendingException;
|
|
pendingException = null;
|
|
lock(typeof($imclassname)) {
|
|
numExceptionsPending--;
|
|
}
|
|
}
|
|
}
|
|
return e;
|
|
}
|
|
}
|
|
%}
|
|
#endif // SWIG_CSHARP_NO_EXCEPTION_HELPER
|
|
|
|
#if !defined(SWIG_CSHARP_NO_STRING_HELPER)
|
|
%insert(runtime) %{
|
|
/* Callback for returning strings to C# without leaking memory */
|
|
typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *);
|
|
static SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback = NULL;
|
|
%}
|
|
|
|
%pragma(csharp) imclasscode=%{
|
|
protected class SWIGStringHelper {
|
|
|
|
public delegate string SWIGStringDelegate(string message);
|
|
static SWIGStringDelegate stringDelegate = new SWIGStringDelegate(CreateString);
|
|
|
|
[DllImport("$dllimport", EntryPoint="SWIGRegisterStringCallback_$module")]
|
|
public static extern void SWIGRegisterStringCallback_$module(SWIGStringDelegate stringDelegate);
|
|
|
|
static string CreateString(string cString) {
|
|
return cString;
|
|
}
|
|
|
|
static SWIGStringHelper() {
|
|
SWIGRegisterStringCallback_$module(stringDelegate);
|
|
}
|
|
}
|
|
|
|
static protected SWIGStringHelper swigStringHelper = new SWIGStringHelper();
|
|
%}
|
|
|
|
%insert(runtime) %{
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
#endif
|
|
SWIGEXPORT void SWIGSTDCALL SWIGRegisterStringCallback_$module(SWIG_CSharpStringHelperCallback callback) {
|
|
SWIG_csharp_string_callback = callback;
|
|
}
|
|
%}
|
|
#endif // SWIG_CSHARP_NO_STRING_HELPER
|
|
|
|
%insert(runtime) %{
|
|
/* Contract support */
|
|
|
|
#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } else
|
|
%}
|