00001 #ifndef COIN_SBFIFO_H
00002 #define COIN_SBFIFO_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/C/threads/fifo.h>
00028
00029 class SbFifo {
00030 public:
00031 SbFifo(void) { this->fifo = cc_fifo_new(); }
00032 ~SbFifo(void) { cc_fifo_delete(this->fifo); }
00033
00034 void assign(void * ptr, uint32_t type)
00035 { cc_fifo_assign(this->fifo, ptr, type); }
00036 void retrieve(void *& ptr, uint32_t &type)
00037 { cc_fifo_retrieve(this->fifo, &ptr, &type); }
00038 SbBool tryRetrieve(void *& ptr, uint32_t & type)
00039 { return cc_fifo_try_retrieve(this->fifo, &ptr, &type); }
00040
00041 unsigned int size(void) const { return cc_fifo_size(this->fifo); }
00042
00043 void lock(void) const { cc_fifo_lock(this->fifo); }
00044 void unlock(void) const { cc_fifo_unlock(this->fifo); }
00045
00046
00047 SbBool peek(void *& item, uint32_t & type) const
00048 { return cc_fifo_peek(this->fifo, &item, &type); }
00049 SbBool contains(void * item) const
00050 { return cc_fifo_contains(this->fifo, item); }
00051 SbBool reclaim(void * item)
00052 { return cc_fifo_reclaim(this->fifo, item); }
00053
00054 private:
00055 cc_fifo * fifo;
00056 };
00057
00058 #endif // !COIN_SBFIFO_H