diff options
Diffstat (limited to 'share/swig/2.0.11/d/director.swg')
-rw-r--r-- | share/swig/2.0.11/d/director.swg | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/share/swig/2.0.11/d/director.swg b/share/swig/2.0.11/d/director.swg new file mode 100644 index 0000000..9692e03 --- /dev/null +++ b/share/swig/2.0.11/d/director.swg @@ -0,0 +1,46 @@ +/* ----------------------------------------------------------------------------- + * director.swg + * + * This file contains support for director classes so that D proxy + * methods can be called from C++. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus + +#if defined(DEBUG_DIRECTOR_OWNED) +#include <iostream> +#endif +#include <string> + +namespace Swig { + // Director base class – not used in D directors. + class Director { + }; + + // Base class for director exceptions. + class DirectorException { + protected: + std::string swig_msg; + + public: + DirectorException(const char* msg) : swig_msg(msg) { + } + DirectorException(const std::string &msg) : swig_msg(msg) { + } + const std::string& what() const { + return swig_msg; + } + virtual ~DirectorException() { + } + }; + + // Exception which is thrown when attempting to call a pure virtual method + // from D code thorugh the director layer. + class DirectorPureVirtualException : public Swig::DirectorException { + public: + DirectorPureVirtualException(const char* msg) : DirectorException(std::string("Attempted to invoke pure virtual method ") + msg) { + } + }; +} + +#endif /* __cplusplus */ |