diff options
| author | William S Fulton <wsf@fultondesigns.co.uk> | 2010-06-02 20:53:17 +0000 |
|---|---|---|
| committer | William S Fulton <wsf@fultondesigns.co.uk> | 2010-06-02 20:53:17 +0000 |
| commit | 2824b0cbb66e715490e1ef13250bd675d87b32d9 (patch) | |
| tree | c3bc8d54c6d73f2b7ce08cac34172dbc9f5e5b95 /trunk/Examples/ruby/exception_class/example.h | |
| parent | 289cfef4b4766ff266f3b1bdda8ca3a952e5a047 (diff) | |
| download | swig-2.0.0.tar.gz | |
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/tags/rel-2.0.0@12089 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'trunk/Examples/ruby/exception_class/example.h')
| -rw-r--r-- | trunk/Examples/ruby/exception_class/example.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/trunk/Examples/ruby/exception_class/example.h b/trunk/Examples/ruby/exception_class/example.h new file mode 100644 index 000000000..9facde4bd --- /dev/null +++ b/trunk/Examples/ruby/exception_class/example.h @@ -0,0 +1,51 @@ +/* File : example.h */ + +// A simple exception +class EmptyError { }; +class FullError { + public: + int maxsize; + FullError(int m) : maxsize(m) { } +}; + +template<typename T> class Queue { + int maxsize; + T *items; + int nitems; + int last; + public: + Queue(int size) { + maxsize = size; + items = new T[size]; + nitems = 0; + last = 0; + } + ~Queue() { + delete [] items; + } + void enqueue(T x) throw(FullError) { + if (nitems == maxsize) { + throw FullError(maxsize); + } + items[last] = x; + last = (last + 1) % maxsize; + nitems++; + } + T dequeue() { + T x; + if (nitems == 0) throw EmptyError(); + x = items[(last + maxsize - nitems) % maxsize]; + nitems--; + return x; + } + int length() { + return nitems; + } +}; + + + + + + + |
