/tags/Root-branch-php-utl/SWIG/Examples/python/exceptshadow/example.h
C++ Header | 54 lines | 46 code | 6 blank | 2 comment | 4 complexity | 3d5feac2d80f40b04c82d536b9d39757 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* File : example.h */
- // A simple exception
- class EmptyError { };
- class FullError {
- public:
- int maxsize;
- FullError(int m) : maxsize(m) { }
- };
- #if defined(_MSC_VER)
- #pragma warning(disable: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
- #endif
- 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;
- }
- };
- #if defined(_MSC_VER)
- #pragma warning(default: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
- #endif