Cadabra
Computer algebra system for field theory problems
Hash.hh
Go to the documentation of this file.
1 #include "Storage.hh"
2 
3 namespace cadabra
4 {
5  enum HashFlags : unsigned int
6  {
7  HASH_DEFAULT = 0x0,
19  };
20 
21  class Ex_hasher
22  {
23  public:
24  using result_t = size_t;
25  Ex_hasher();
27 
28  result_t operator () (const Ex& ex) const;
29  result_t operator () (Ex::iterator it) const;
30 
32  HashFlags get_flags() const;
35 
36  private:
37  result_t hash(Ex::iterator it, bool toplevel) const;
38  bool flag_set(HashFlags flag) const;
39 
41  };
42 
48 
49  Ex_hasher::result_t hash_ex(Ex::iterator it, HashFlags flags = HASH_DEFAULT);
50  bool hash_compare(Ex::iterator lhs, Ex::iterator rhs, HashFlags flags = HASH_DEFAULT);
51 }
Definition: Hash.hh:21
Basic storage class for symbolic mathemematical expressions.
Definition: Storage.hh:140
void add_flags(HashFlags flags)
Definition: Hash.hh:17
Definition: Hash.hh:12
void set_flags(HashFlags flags)
result_t operator()(const Ex &ex) const
Definition: Hash.cc:31
Definition: Hash.hh:18
Definition: Hash.hh:7
Definition: Hash.hh:11
Ex_hasher()
Definition: Hash.cc:19
HashFlags operator~(HashFlags flags)
Definition: Hash.cc:106
HashFlags & operator|=(HashFlags &lhs, HashFlags rhs)
Definition: Hash.cc:121
Definition: Hash.hh:15
size_t result_t
Definition: Hash.hh:24
Ex_hasher::result_t hash_ex(Ex::iterator it, HashFlags flags)
Definition: Hash.cc:131
Ex rhs(Ex_ptr ex)
Definition: py_ex.cc:305
HashFlags
Definition: Hash.hh:5
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Algorithm.cc:1045
Definition: Hash.hh:9
HashFlags & operator&=(HashFlags &lhs, HashFlags rhs)
Definition: Hash.cc:126
Definition: Hash.hh:16
HashFlags get_flags() const
Definition: Hash.hh:13
HashFlags operator&(HashFlags lhs, HashFlags rhs)
Definition: Hash.cc:116
Definition: Hash.hh:14
bool hash_compare(Ex::iterator lhs, Ex::iterator rhs, HashFlags flags)
Definition: Hash.cc:137
HashFlags flags
Definition: Hash.hh:40
bool flag_set(HashFlags flag) const
Definition: Hash.cc:99
HashFlags operator|(HashFlags lhs, HashFlags rhs)
Definition: Hash.cc:111
void remove_flags(HashFlags flags)
Ex lhs(Ex_ptr ex)
Definition: py_ex.cc:293
result_t hash(Ex::iterator it, bool toplevel) const
Definition: Hash.cc:41