Go to the documentation of this file.
8#define __BY__DECL_ADT_1(ME) \
10 __BY__DECL_TYPE(ntype) \
11 __BY__DECL_INIT_META(ME)
12#define __BY__DECL_ADT_2(ME, SUPER) __BY__DECL_ADT_3(ME, SUPER, ntype)
13#define __BY__DECL_ADT_3(ME, SUPER, SUPERTYPE) \
14 __BY__DECL_ME_2(ME, SUPER) \
15 __BY__DECL_TYPE(SUPERTYPE) \
16 __BY__DECL_INIT_META(ME)
17#define __BY__DECL_ADT(...) BY_OVERLOAD(__BY__DECL_ADT, __VA_ARGS__)
21#define __BY__DECL_CLASS_1(ME) \
22 __BY__DECL_ADT_1(ME) \
24#define __BY__DECL_CLASS_2(ME, SUPER) \
25 __BY__DECL_ADT_2(ME, SUPER) \
27#define __BY__DECL_CLASS_3(ME, SUPER, SUPERTYPE) \
28 __BY__DECL_ADT_3(ME, SUPER, SUPERTYPE) \
30#define __BY__DECL_CLASS(...) BY_OVERLOAD(__BY__DECL_CLASS, __VA_ARGS__)
35#define __BY__DECL_VISIT_0() __BY__DECL_VISIT_1(super)
36#define __BY__DECL_VISIT_1(SUPER) \
38 using SUPER::accept; \
39 void accept(const visitInfo& i, visitor& v) override; \
42#define __BY__DECL_VISIT(...) BY_OVERLOAD(__BY__DECL_VISIT, __VA_ARGS__)
44#define __BY__DECL_DEF_VISIT_0() __BY__DECL_DEF_VISIT_1(me)
45#define __BY__DECL_DEF_VISIT_1(ME) \
46 void ME::accept(const visitInfo& i, visitor& v) { v.visit(i, *this); }
47#define __BY__DECL_DEF_VISIT(...) BY_OVERLOAD(__BY__DECL_DEF_VISIT, __VA_ARGS__)