_Memc Thread Safe.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /******************************************************************************/
  2. struct _MemcThreadSafe // Thread-Safe Continuous Memory Based Container Base - Do not use this class, use 'MemcThreadSafe' instead
  3. {
  4. void clear();
  5. void del ();
  6. // get / set
  7. Int elms ()C {return _memc.elms ();}
  8. UInt elmSize ()C {return _memc.elmSize ();}
  9. UInt memUsage()C {return _memc.memUsage();}
  10. Ptr lockedData ( )C {return _memc.data ( );}
  11. Ptr lockedAddr (Int i)C {return _memc.addr (i);}
  12. Ptr lockedElm (Int i)C {return _memc [i];}
  13. Ptr lockedFirst( )C {return _memc.first( );}
  14. Ptr lockedLast ( )C {return _memc.last ( );}
  15. Ptr lockedNew ( ) {return _memc.New ( );}
  16. Ptr lockedNewAt(Int i) {return _memc.NewAt(i);}
  17. Int index (CPtr elm)C;
  18. Bool contains(CPtr elm)C {return index(elm)>=0;}
  19. void removeLast();
  20. void remove (Int i , Bool keep_order=false);
  21. void removeData(CPtr elm, Bool keep_order=false);
  22. void setNum (Int num);
  23. void setNumZero(Int num);
  24. Int addNum (Int num);
  25. Bool binarySearch(CPtr value, Int &index, Int compare(CPtr a, CPtr b))C;
  26. void sort(Int compare(CPtr a, CPtr b));
  27. void reverseOrder();
  28. void randomizeOrder();
  29. void rotateOrder(Int offset);
  30. void swapOrder(Int i , Int j);
  31. void moveElm (Int elm, Int new_index);
  32. // operations
  33. void lock()C {_lock.on ();}
  34. void unlock()C {_lock.off();}
  35. private:
  36. _Memc _memc;
  37. SyncLock _lock;
  38. explicit _MemcThreadSafe(Int elm_size, void (*_new)(Ptr elm), void (*_del)(Ptr elm));
  39. T1(TYPE) friend struct MemcThreadSafe;
  40. };
  41. /******************************************************************************/