20#define IREP_ID_ONE(id) #id,
21#define IREP_ID_TWO(id, str) #str,
23#include "irep_ids.def"
28enum class idt:
unsigned
30#define IREP_ID_ONE(the_id) id_##the_id,
31#define IREP_ID_TWO(the_id, str) id_##the_id,
33#include "irep_ids.def"
28enum class idt:
unsigned {
…};
36#define IREP_ID_ONE(the_id) \
37 const dstringt ID_##the_id=dstringt::make_from_table_index( \
38 static_cast<unsigned>(idt::id_##the_id));
39#define IREP_ID_TWO(the_id, str) \
40 const dstringt ID_##the_id=dstringt::make_from_table_index( \
41 static_cast<unsigned>(idt::id_##the_id));
43#include "irep_ids.def"
54 INVARIANT(
x==i,
"i-th element is inserted at position i");
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
unsigned get(const char *s)
unsigned operator[](const char *s)
const char * irep_ids_table[]
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.