/trunk/Examples/ruby/exception_class/example.h
C++ Header | 51 lines | 40 code | 9 blank | 2 comment | 4 complexity | 4adc435d86c942f65407e58a91f37e19 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) { }
- };
- 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;
- }
- };
-