From ae4e87df37ed8904de92c7cf2f3a11128cda2a21 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:41 +0200 Subject: tagging ychat-0.7.4.1 --- src/maps/smap.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/maps/smap.h (limited to 'src/maps/smap.h') diff --git a/src/maps/smap.h b/src/maps/smap.h new file mode 100644 index 0000000..a3ee89d --- /dev/null +++ b/src/maps/smap.h @@ -0,0 +1,55 @@ +// smap := Syncronized hmap +// nmap := Syncronized hmap which's get_elem returns a new obj_type +// instance instead of NULL if for a specific key no value has +// been found + +#include "../incl.h" + +#ifndef SMAP_H +#define SMAP_H + +#include "hmap.h" + +template +class smap : public hmap +{ + private: + pthread_mutex_t mut_smap; + + protected: + void lock_mutex(); + void unlock_mutex(); + + public: + smap( double moc ); + ~smap(); + int get_size(); + void make_empty(); + void make_empty( void (*func)(key_type) ); + void add_elem ( const obj_type &x, const key_type &k ); + obj_type set_elem ( const obj_type &x, const key_type &k ); + void del_elem ( const key_type &k ); + void rename_key ( const key_type &k1, const key_type &k2 ); + bool is_avail ( const key_type &k ); + obj_type get_elem ( const key_type &k ); + obj_type pop_elem ( const key_type &k ); + void run_func( void (*func)(obj_type) ); + void run_func( void (*func)(obj_type, void*), void* v_arg ); + void run_func_on( void (*func)(obj_type), const key_type &k ); + vector* get_key_vector(); + + int get_size_insecure(); + void make_empty_insecure(); + void make_empty_insecure( void (*func)(key_type) ); + void add_elem_insecure ( const obj_type &x, const key_type &k ); + void del_elem_insecure ( const key_type &k ); + bool is_avail_insecure ( const key_type &k ); + obj_type get_elem_insecure ( const key_type &k ); + obj_type pop_elem_insecure ( const key_type &k ); + void run_func_insecure( void (*func)(obj_type) ); + void run_func_insecure( void (*func)(obj_type, void*), void* v_arg ); + vector* get_key_vector_insecure(); +}; + +#include "smap.tmpl" +#endif -- cgit v1.2.3