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