summaryrefslogtreecommitdiff
path: root/Lib/octave
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2017-11-17 08:00:46 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2017-11-29 20:31:55 +0000
commit923091da13dcc572b5acf4d167d57c7e8fbf550f (patch)
tree33fb780c3b3faeef850392f26210053ac58398a3 /Lib/octave
parent077bb0b04fdb644af65dc83973137cf5dbbb9d5a (diff)
downloadswig-923091da13dcc572b5acf4d167d57c7e8fbf550f.tar.gz
Changes to use common DirectorException class
Add director.swg for Go as was completely absent. This is just the start of a common exception handling approach to directors. An exception thrown in a Java director method will be propogated back to Java via a C++ DirectorException. DirectorException throws typemap for Java is fully working, all other languages need work. DirectorException throws typemap for Perl added just to fix compilation errors. Add director_exception_catches test.
Diffstat (limited to 'Lib/octave')
-rw-r--r--Lib/octave/director.swg20
1 files changed, 18 insertions, 2 deletions
diff --git a/Lib/octave/director.swg b/Lib/octave/director.swg
index e80877ef6..86ac3b004 100644
--- a/Lib/octave/director.swg
+++ b/Lib/octave/director.swg
@@ -46,7 +46,22 @@ namespace Swig {
}
};
- struct DirectorTypeMismatchException {
+ // Base class for director exceptions.
+ class DirectorException : public std::exception {
+ public:
+ static void raise(const char *msg) {
+ // ... todo
+ throw(DirectorException());
+ }
+
+ static void raise(const octave_value &ov, const char *msg) {
+ // ... todo
+ raise(msg);
+ }
+ };
+
+ class DirectorTypeMismatchException : public DirectorException {
+ public:
static void raise(const char *msg) {
// ... todo
throw(DirectorTypeMismatchException());
@@ -58,7 +73,8 @@ namespace Swig {
}
};
- struct DirectorPureVirtualException {
+ class DirectorPureVirtualException : public DirectorException {
+ public:
static void raise(const char *msg) {
// ... todo
throw(DirectorPureVirtualException());