38 #ifndef __GECODE_FLATZINC_SYMBOLTABLE_HH__
39 #define __GECODE_FLATZINC_SYMBOLTABLE_HH__
43 #ifdef GECODE_HAS_UNORDERED_MAP
44 #include <unordered_map>
45 #elif defined(GECODE_HAS_GNU_HASH_MAP)
46 #include <ext/hash_map>
51 namespace Gecode {
namespace FlatZinc {
57 #ifdef GECODE_HAS_UNORDERED_MAP
58 typedef std::unordered_map<std::string,Val> mymap;
59 #elif defined(GECODE_HAS_GNU_HASH_MAP)
62 size_t operator ()(
const std::string&
x)
const {
63 return __gnu_cxx::hash<const char*>()(x.c_str());
66 typedef __gnu_cxx::hash_map<std::string,Val,hashString> mymap;
68 typedef std::map<std::string,Val> mymap;
73 bool put(
const std::string& key,
const Val& val);
75 bool get(
const std::string& key, Val& val)
const;
81 typename mymap::const_iterator
i = m.find(key);
82 bool fresh = (i == m.end());
90 typename mymap::const_iterator
i = m.find(key);
Gecode::IntArgs i(4, 1, 2, 3, 4)
Symbol table mapping identifiers (strings) to values.
bool get(const std::string &key, Val &val) const
Return whether key exists, and set val if it does exist.
bool put(const std::string &key, const Val &val)
Insert val with key.
Node * x
Pointer to corresponding Boolean expression node.
Gecode toplevel namespace