Mercurial > repos > xilinxu > xilinxu
diff fastx_toolkit-0.0.6/src/fastx_collapser/std_hash.h @ 3:997f5136985f draft default tip
Uploaded
author | xilinxu |
---|---|
date | Thu, 14 Aug 2014 04:52:17 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fastx_toolkit-0.0.6/src/fastx_collapser/std_hash.h Thu Aug 14 04:52:17 2014 -0400 @@ -0,0 +1,64 @@ +/* + FASTX-toolkit - FASTA/FASTQ preprocessing tools. + Copyright (C) 2009 A. Gordon (gordon@cshl.edu) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef __STD_HASH__ +#define __STD_HASH__ + + +/* + * Centralized place to load std::hash_map + * + * GCC needs the following hacks... + * Other compilers/systems might require different hacks + */ + +#include <ext/hash_map> +#include <ext/hash_set> + +namespace std +{ + using namespace __gnu_cxx; + + struct std_string_hash + { + size_t operator()( const std::string& x ) const + { + //printf("std_string_hash: hashing '%s'\n", x.c_str()); + return hash< const char* >()( x.c_str() ); + } + }; + + /* + * 'eqstr' and 'hash_map' usage is based on http://www.sgi.com/tech/stl/hash_map.html + */ + struct eqstr + { + bool operator()(const char* s1, const char* s2) const + { + return strcmp(s1, s2) == 0; + } + }; + + typedef hash_map< const char*, int, hash< const char* >, eqstr > hash_map_charptr_to_int; + + typedef hash_map< string, int, std_string_hash > hash_map_string_to_int; + + typedef hash_set < string, std_string_hash > hash_set_string ; +} + +#endif +