16 #ifndef __H2D_TRAVERSE_H
17 #define __H2D_TRAVERSE_H
19 #include "hermes_common.h"
65 static const uint64_t ONE = (uint64_t) 1 << 63;
78 class HERMES_API
Traverse :
public Hermes::Mixins::Loggable
93 void operator=(
const State * other);
94 void push_transform(
int son,
int i,
bool is_triangle =
false);
95 uint64_t get_transform(
int i);
112 State* get_next_state(
int* top_by_ref = NULL,
int* id_by_ref = NULL);
113 int get_num_states(Hermes::vector<const Mesh*> meshes);
114 inline Element* get_base()
const {
return base; }
116 void init_transforms(State* s,
int i);
136 State* push_state(
int* top_by_ref = NULL);
137 void set_boundary_info(State* s);
139 uint64_t init_idx(
Rect* cr,
Rect* er);
141 void free_state(State* state);
146 template<
typename T>
friend class Adapt;
150 template<
typename T>
friend class Filter;
152 template<
typename T>
friend class Global;