git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7324 626c5289-ae23-0410-ae9c-e8d60b6d4f22
54 lines
1.5 KiB
Text
54 lines
1.5 KiB
Text
/***********************************************************************
|
|
* director.swg
|
|
*
|
|
* This file contains support for director classes that proxy
|
|
* method calls from C++ to Python extensions.
|
|
*
|
|
* Author : Mark Rose (mrose@stm.lbl.gov)
|
|
************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace Swig {
|
|
/* simple thread abstraction for pthreads on win32 */
|
|
Director::~Director() {
|
|
swig_decref();
|
|
}
|
|
|
|
bool Director::swig_up = false;
|
|
|
|
#ifdef __PTHREAD__
|
|
MUTEX_INIT(Director::swig_mutex_up);
|
|
pthread_t Director::swig_mutex_thread;
|
|
bool Director::swig_mutex_active = false;
|
|
#endif
|
|
|
|
|
|
void UnknownExceptionHandler::handler() {
|
|
try {
|
|
throw;
|
|
} catch (DirectorException& e) {
|
|
std::cerr << "Swig Director exception caught:" << std::endl
|
|
<< e.getMessage() << std::endl;
|
|
} catch (std::exception& e) {
|
|
std::cerr << "std::exception caught: "<< e.what() << std::endl;
|
|
} catch (...) {
|
|
std::cerr << "Unknown exception caught." << std::endl;
|
|
}
|
|
|
|
std::cerr << std::endl
|
|
<< "Python interpreter traceback:" << std::endl;
|
|
PyErr_Print();
|
|
std::cerr << std::endl;
|
|
|
|
std::cerr << "This exception was caught by the SWIG unexpected exception handler." << std::endl
|
|
<< "Try using %feature(\"director:except\") to avoid reaching this point." << std::endl
|
|
<< std::endl
|
|
<< "Exception is being re-thrown, program will like abort/terminate." << std::endl;
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|