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