diff options
Diffstat (limited to 'ychat-0.7.7.1/src/maps/shashmap.tmpl')
| -rw-r--r-- | ychat-0.7.7.1/src/maps/shashmap.tmpl | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/ychat-0.7.7.1/src/maps/shashmap.tmpl b/ychat-0.7.7.1/src/maps/shashmap.tmpl new file mode 100644 index 0000000..7cf4b6b --- /dev/null +++ b/ychat-0.7.7.1/src/maps/shashmap.tmpl @@ -0,0 +1,129 @@ +template<class obj_type> +shashmap<obj_type>::shashmap() +{ + pthread_mutex_init( &mut_shashmap, NULL ); +} + +template<class obj_type> +shashmap<obj_type>::~shashmap() +{ + pthread_mutex_destroy( &mut_shashmap ); +} + +template<class obj_type> +void +shashmap<obj_type>::add_elem(obj_type t_obj, string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + (*this)[s_key] = t_obj; + pthread_mutex_unlock( &mut_shashmap ); +} + +template<class obj_type> +void +shashmap<obj_type>::add_elem_insecure(obj_type t_obj, string s_key) +{ + (*this)[s_key] = t_obj; +} + +template<class obj_type> +obj_type +shashmap<obj_type>::get_set_elem(obj_type t_obj, string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + obj_type t_ret = hashmap<obj_type>::get_set_elem(t_obj, s_key); + pthread_mutex_unlock( &mut_shashmap ); + return t_ret; +} + +template<class obj_type> +void +shashmap<obj_type>::set_elem(obj_type t_obj, string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + (*this)[s_key] = t_obj; + pthread_mutex_unlock( &mut_shashmap ); +} + +template<class obj_type> +obj_type +shashmap<obj_type>::get_elem(string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + obj_type t_ret = hashmap<obj_type>::get_elem(s_key); + pthread_mutex_unlock( &mut_shashmap ); + return t_ret; +} + +template<class obj_type> +void +shashmap<obj_type>::del_elem(string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + hashmap<obj_type>::erase(s_key); + pthread_mutex_unlock( &mut_shashmap ); +} + +template<class obj_type> +void +shashmap<obj_type>::del_elem_insecure(string s_key) +{ + hashmap<obj_type>::erase(s_key); +} + +template<class obj_type> +vector<string>* +shashmap<obj_type>::get_key_vector() +{ + pthread_mutex_lock( &mut_shashmap ); + vector<string>* p_vec = hashmap<obj_type>::get_key_vector(); + pthread_mutex_unlock( &mut_shashmap ); + return p_vec; +} + +template<class obj_type> +void +shashmap<obj_type>::clear() +{ + pthread_mutex_lock( &mut_shashmap ); + hashmap<obj_type>::clear(); + pthread_mutex_unlock( &mut_shashmap ); +} + +template<class obj_type> +int +shashmap<obj_type>::size() +{ + pthread_mutex_lock( &mut_shashmap ); + int i_size = hashmap<obj_type>::size(); + pthread_mutex_unlock( &mut_shashmap ); + return i_size; +} + +template<class obj_type> +bool +shashmap<obj_type>::exists(string s_key) +{ + pthread_mutex_lock( &mut_shashmap ); + bool b_ret = hashmap<obj_type>::exists(s_key); + pthread_mutex_unlock( &mut_shashmap ); + return b_ret; +} + +template<class obj_type> +void +shashmap<obj_type>::run_func( void (*func)(obj_type) ) +{ + pthread_mutex_lock( &mut_shashmap ); + hashmap<obj_type>::run_func(func); + pthread_mutex_unlock( &mut_shashmap ); +} + +template<class obj_type> +void +shashmap<obj_type>::run_func( void (*func)(obj_type, void*), void* v_arg ) +{ + pthread_mutex_lock( &mut_shashmap ); + hashmap<obj_type>::run_func(func, v_arg); + pthread_mutex_unlock( &mut_shashmap ); +} |
