New example showing use of %catchs and %

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8355 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Charlie Savage 2006-01-10 22:45:58 +00:00
commit 650ea1c873
4 changed files with 160 additions and 0 deletions

View file

@ -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;
}
};