summaryrefslogtreecommitdiff
path: root/src/maps
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2010-11-21 16:20:55 +0000
committerPaul Buetow <paul@buetow.org>2010-11-21 16:20:55 +0000
commit6fde6b0fe90abde84011202edd40fe46eb06af44 (patch)
treeef760338c50b4df3ae9cca96347bca962fdbec7e /src/maps
parent55b08bd93257d32df76efc4e8e3f49311c39ee82 (diff)
Diffstat (limited to 'src/maps')
-rw-r--r--src/maps/hashmap.h3
-rw-r--r--src/maps/hashmap.tmpl5
-rw-r--r--src/maps/mtools.h3
-rw-r--r--src/maps/mtools.tmpl3
-rw-r--r--src/maps/nhashmap.h3
-rw-r--r--src/maps/nhashmap.tmpl3
-rw-r--r--src/maps/shashmap.h5
-rw-r--r--src/maps/shashmap.tmpl41
8 files changed, 43 insertions, 23 deletions
diff --git a/src/maps/hashmap.h b/src/maps/hashmap.h
index 913b274..0a0535a 100644
--- a/src/maps/hashmap.h
+++ b/src/maps/hashmap.h
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/hashmap.h
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
diff --git a/src/maps/hashmap.tmpl b/src/maps/hashmap.tmpl
index cea2131..b3524b9 100644
--- a/src/maps/hashmap.tmpl
+++ b/src/maps/hashmap.tmpl
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/hashmap.tmpl
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
@@ -44,7 +43,7 @@ size_hash<key_type_>::operator()(key_type_ t_key) const
int i_hash = 0;
int i_size = t_key.size();
- for ( size_t i = 0; i < i_size; ++i )
+ for( size_t i = 0; i < i_size; ++i )
i_hash = ( i_hash << 5 ) ^ t_key.at(i) ^ i_hash;
return i_hash;
diff --git a/src/maps/mtools.h b/src/maps/mtools.h
index dadcdc8..5a2b6bb 100644
--- a/src/maps/mtools.h
+++ b/src/maps/mtools.h
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/mtools.h
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
diff --git a/src/maps/mtools.tmpl b/src/maps/mtools.tmpl
index 0c6b409..dff950f 100644
--- a/src/maps/mtools.tmpl
+++ b/src/maps/mtools.tmpl
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/mtools.tmpl
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
diff --git a/src/maps/nhashmap.h b/src/maps/nhashmap.h
index fcfaf36..6443219 100644
--- a/src/maps/nhashmap.h
+++ b/src/maps/nhashmap.h
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/nhashmap.h
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
diff --git a/src/maps/nhashmap.tmpl b/src/maps/nhashmap.tmpl
index 45a40aa..c1f02ce 100644
--- a/src/maps/nhashmap.tmpl
+++ b/src/maps/nhashmap.tmpl
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/nhashmap.tmpl
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
diff --git a/src/maps/shashmap.h b/src/maps/shashmap.h
index 8c94331..445ea77 100644
--- a/src/maps/shashmap.h
+++ b/src/maps/shashmap.h
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/shashmap.h
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
@@ -26,6 +25,7 @@
#ifndef SHASHMAP_H
#define SHASHMAP_H
+#include <pthread.h>
#include "hashmap.h"
#include "../monitor/dump.h"
@@ -43,6 +43,7 @@ class shashmap : protected hashmap<obj_type, key_type_, hash_type, alloc_type>,
public dumpable
{
private:
+ pthread_mutex_t mut_shashmap;
protected:
virtual void dumpit();
diff --git a/src/maps/shashmap.tmpl b/src/maps/shashmap.tmpl
index 1613049..4e91d33 100644
--- a/src/maps/shashmap.tmpl
+++ b/src/maps/shashmap.tmpl
@@ -1,12 +1,11 @@
/*:*
*: File: ./src/maps/shashmap.tmpl
*:
- *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT
+ *: yChat; Homepage: www.yChat.org; Version 0.8.3-CURRENT
*:
*: Copyright (C) 2003 Paul C. Buetow, Volker Richter
*: Copyright (C) 2004 Paul C. Buetow
*: Copyright (C) 2005 EXA Digital Solutions GbR
- *: Copyright (C) 2006, 2007 Paul C. Buetow
*:
*: This program is free software; you can redistribute it and/or
*: modify it under the terms of the GNU General Public License
@@ -25,17 +24,23 @@
template<class obj_type, class key_type_, class hash_type, class alloc_type>
shashmap<obj_type, key_type_, hash_type, alloc_type>::shashmap()
-{}
+{
+ pthread_mutex_init( &mut_shashmap, NULL );
+}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
shashmap<obj_type, key_type_, hash_type, alloc_type>::~shashmap()
-{}
+{
+ pthread_mutex_destroy( &mut_shashmap );
+}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::add_elem(obj_type t_obj, key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
(*this)[t_key] = t_obj;
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
@@ -49,7 +54,9 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
obj_type
shashmap<obj_type, key_type_, hash_type, alloc_type>::get_set_elem(obj_type t_obj, key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
obj_type t_ret = hashmap<obj_type, key_type_, hash_type, alloc_type>::get_set_elem(t_obj, t_key);
+ pthread_mutex_unlock( &mut_shashmap );
return t_ret;
}
@@ -58,8 +65,10 @@ obj_type
shashmap<obj_type, key_type_, hash_type, alloc_type>::get_or_callback_set
(obj_type (*func)(void*), void* p_void, key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
obj_type t_ret = hashmap<obj_type, key_type_, hash_type, alloc_type>::get_or_callback_set
(func, p_void, t_key);
+ pthread_mutex_unlock( &mut_shashmap );
return t_ret;
}
@@ -67,14 +76,18 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::set_elem(obj_type t_obj, key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
(*this)[t_key] = t_obj;
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
obj_type
shashmap<obj_type, key_type_, hash_type, alloc_type>::get_elem(key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
obj_type t_ret = hashmap<obj_type, key_type_, hash_type, alloc_type>::get_elem(t_key);
+ pthread_mutex_unlock( &mut_shashmap );
return t_ret;
}
@@ -82,7 +95,9 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::del_elem(key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
hashmap<obj_type, key_type_, hash_type, alloc_type>::erase(t_key);
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
@@ -96,7 +111,9 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
vector<key_type_>*
shashmap<obj_type, key_type_, hash_type, alloc_type>::get_key_vector()
{
+ pthread_mutex_lock( &mut_shashmap );
vector<key_type_>* p_vec = hashmap<obj_type, key_type_, hash_type, alloc_type>::get_key_vector();
+ pthread_mutex_unlock( &mut_shashmap );
return p_vec;
}
@@ -104,14 +121,18 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::clear()
{
+ pthread_mutex_lock( &mut_shashmap );
hashmap<obj_type, key_type_, hash_type, alloc_type>::clear();
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
int
shashmap<obj_type, key_type_, hash_type, alloc_type>::size()
{
+ pthread_mutex_lock( &mut_shashmap );
int i_size = hashmap<obj_type, key_type_, hash_type, alloc_type>::size();
+ pthread_mutex_unlock( &mut_shashmap );
return i_size;
}
@@ -119,7 +140,9 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
bool
shashmap<obj_type, key_type_, hash_type, alloc_type>::exists(key_type_ t_key)
{
+ pthread_mutex_lock( &mut_shashmap );
bool b_ret = hashmap<obj_type, key_type_, hash_type, alloc_type>::exists(t_key);
+ pthread_mutex_unlock( &mut_shashmap );
return b_ret;
}
@@ -127,28 +150,30 @@ template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::run_func( void (*func)(obj_type) )
{
+ pthread_mutex_lock( &mut_shashmap );
hashmap<obj_type, key_type_, hash_type, alloc_type>::run_func(func);
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::run_func( void (*func)(obj_type, void*), void* v_arg )
{
+ pthread_mutex_lock( &mut_shashmap );
hashmap<obj_type, key_type_, hash_type, alloc_type>::run_func(func, v_arg);
+ pthread_mutex_unlock( &mut_shashmap );
}
template<class obj_type, class key_type_, class hash_type, class alloc_type>
void
shashmap<obj_type, key_type_, hash_type, alloc_type>::dumpit()
{
- dumpable::add
- ("[shashmap]");
+ dumpable::add("[shashmap]");
vector<key_type_>* p_vec = get_key_vector();
typename vector<key_type_>::iterator iter;
for (iter = p_vec->begin(); iter != p_vec->end(); ++iter)
- dumpable::add
- (*iter);
+ dumpable::add(*iter);
delete p_vec;
}