Manicore
Library to implement schemes on n-dimensionnal manifolds.
Macros
preprocessor.hpp File Reference

Implement a while loop on the preprocessor. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define EMPTY()
 
#define DEFER(id)   id EMPTY()
 
#define OBSTRUCT(id)   id DEFER(EMPTY)()
 
#define EXPAND(...)   __VA_ARGS__
 
#define EVAL(...)   EVAL1(EVAL1(EVAL1(__VA_ARGS__)))
 
#define EVAL1(...)   EVAL2(EVAL2(EVAL2(__VA_ARGS__)))
 
#define EVAL2(...)   EVAL3(EVAL3(EVAL3(__VA_ARGS__)))
 
#define EVAL3(...)   EVAL4(EVAL4(EVAL4(__VA_ARGS__)))
 
#define EVAL4(...)   EVAL5(EVAL5(EVAL5(__VA_ARGS__)))
 
#define EVAL5(...)   __VA_ARGS__
 
#define CAT(a, ...)   PRIMITIVE_CAT(a, __VA_ARGS__)
 
#define PRIMITIVE_CAT(a, ...)   a ## __VA_ARGS__
 
#define CHECK_N(x, n, ...)   n
 
#define CHECK(...)   CHECK_N(__VA_ARGS__, 0,)
 
#define NOT(x)   CHECK(PRIMITIVE_CAT(NOT_, x))
 
#define NOT_0   ~, 1,
 
#define COMPL(b)   PRIMITIVE_CAT(COMPL_, b)
 
#define COMPL_0   1
 
#define COMPL_1   0
 
#define BOOL(x)   COMPL(NOT(x))
 
#define IIF(c)   PRIMITIVE_CAT(IIF_, c)
 
#define IIF_0(t, ...)   __VA_ARGS__
 
#define IIF_1(t, ...)   t
 
#define IF(c)   IIF(BOOL(c))
 
#define WHILE(pred, op, cont, ...)
 
#define WHILE_INDIRECT()   WHILE
 
#define IS_0(x)   CHECK(PRIMITIVE_CAT(IS_0_, x))
 
#define IS_0_0   ~, 1,
 
#define IS_1(x)   CHECK(PRIMITIVE_CAT(IS_1_, x))
 
#define IS_1_1   ~, 1,
 
#define IIF_ELSE_2(c)   PRIMITIVE_CAT(IIF_ELSE_2_, c)
 
#define IIF_ELSE_2_0(t1, t2, f1, f2, ...)   f1, f2
 
#define IIF_ELSE_2_1(t1, t2, f1, f2, ...)   t1, t2
 
#define IF_ELSE_2(c)   IIF_ELSE_2(BOOL(c))
 
#define DEC(x)   PRIMITIVE_CAT(DEC_, x)
 
#define DEC_0   0
 
#define DEC_1   0
 
#define DEC_2   1
 
#define DEC_3   2
 
#define DEC_4   3
 
#define DEC_5   4
 
#define DEC_6   5
 
#define DEC_7   6
 
#define DEC_8   7
 
#define DEC_9   8
 
#define DEC_10   9
 
#define DEC_11   10
 
#define DEC_12   11
 
#define DEC_13   12
 
#define DEC_14   13
 
#define DEC_15   14
 
#define DEC_16   15
 
#define DEC_17   16
 
#define DEC_18   17
 
#define DEC_19   18
 
#define DEC_20   19
 
#define DEC_21   20
 
#define DEC_22   21
 
#define DEC_23   22
 
#define DEC_24   23
 
#define DEC_25   24
 
#define DEC_26   25
 
#define DEC_27   26
 
#define DEC_28   27
 
#define DEC_29   28
 
#define DEC_30   29
 
#define DEC_31   30
 
#define DEC_32   31
 
#define DEC_33   32
 
#define DEC_34   33
 
#define DEC_35   34
 
#define DEC_36   35
 
#define DEC_37   36
 
#define DEC_38   37
 
#define DEC_39   38
 
#define DEC_40   39
 
#define DEC_41   40
 
#define DEC_42   41
 
#define DEC_43   42
 
#define DEC_44   43
 
#define DEC_45   44
 
#define DEC_46   45
 
#define DEC_47   46
 
#define DEC_48   47
 
#define DEC_49   48
 
#define DEC_50   49
 
#define DEC_51   50
 
#define DEC_52   51
 
#define DEC_53   52
 
#define DEC_54   53
 
#define DEC_55   54
 
#define DEC_56   55
 
#define DEC_57   56
 
#define DEC_58   57
 
#define DEC_59   58
 
#define DEC_60   59
 
#define DEC_61   60
 
#define DEC_62   61
 
#define DEC_63   62
 
#define DEC_64   63
 
#define DEC_65   64
 
#define DEC_66   65
 
#define DEC_67   66
 
#define DEC_68   67
 
#define DEC_69   68
 
#define DEC_70   69
 
#define DEC_71   70
 
#define DEC_72   71
 
#define DEC_73   72
 
#define DEC_74   73
 
#define DEC_75   74
 
#define DEC_76   75
 
#define DEC_77   76
 
#define DEC_78   77
 
#define DEC_79   78
 
#define DEC_80   79
 
#define DEC_81   80
 
#define DEC_82   81
 
#define DEC_83   82
 
#define DEC_84   83
 
#define DEC_85   84
 
#define DEC_86   85
 
#define DEC_87   86
 
#define DEC_88   87
 
#define DEC_89   88
 
#define DEC_90   89
 
#define DEC_91   90
 
#define DEC_92   91
 
#define DEC_93   92
 
#define DEC_94   93
 
#define DEC_95   94
 
#define DEC_96   95
 
#define DEC_97   96
 
#define DEC_98   97
 
#define DEC_99   98
 
#define DEC_100   99
 
#define DEC_101   100
 
#define DEC_102   101
 
#define DEC_103   102
 
#define DEC_104   103
 
#define DEC_105   104
 
#define DEC_106   105
 
#define DEC_107   106
 
#define DEC_108   107
 
#define DEC_109   108
 
#define DEC_110   109
 
#define DEC_111   110
 
#define DEC_112   111
 
#define DEC_113   112
 
#define DEC_114   113
 
#define DEC_115   114
 
#define DEC_116   115
 
#define DEC_117   116
 
#define DEC_118   117
 
#define DEC_119   118
 
#define DEC_120   119
 
#define DEC_121   120
 
#define DEC_122   121
 
#define DEC_123   122
 
#define DEC_124   123
 
#define DEC_125   124
 
#define DEC_126   125
 
#define DEC_127   126
 
#define DEC_128   127
 
#define DEC_129   128
 
#define DEC_130   129
 
#define DEC_131   130
 
#define DEC_132   131
 
#define DEC_133   132
 
#define DEC_134   133
 
#define DEC_135   134
 
#define DEC_136   135
 
#define DEC_137   136
 
#define DEC_138   137
 
#define DEC_139   138
 
#define DEC_140   139
 
#define DEC_141   140
 
#define DEC_142   141
 
#define DEC_143   142
 
#define DEC_144   143
 
#define DEC_145   144
 
#define DEC_146   145
 
#define DEC_147   146
 
#define DEC_148   147
 
#define DEC_149   148
 
#define DEC_150   149
 
#define DEC_151   150
 
#define DEC_152   151
 
#define DEC_153   152
 
#define DEC_154   153
 
#define DEC_155   154
 
#define DEC_156   155
 
#define DEC_157   156
 
#define DEC_158   157
 
#define DEC_159   158
 
#define DEC_160   159
 
#define DEC_161   160
 
#define DEC_162   161
 
#define DEC_163   162
 
#define DEC_164   163
 
#define DEC_165   164
 
#define DEC_166   165
 
#define DEC_167   166
 
#define DEC_168   167
 
#define DEC_169   168
 
#define DEC_170   169
 
#define DEC_171   170
 
#define DEC_172   171
 
#define DEC_173   172
 
#define DEC_174   173
 
#define DEC_175   174
 
#define DEC_176   175
 
#define DEC_177   176
 
#define DEC_178   177
 
#define DEC_179   178
 
#define DEC_180   179
 
#define DEC_181   180
 
#define DEC_182   181
 
#define DEC_183   182
 
#define DEC_184   183
 
#define DEC_185   184
 
#define DEC_186   185
 
#define DEC_187   186
 
#define DEC_188   187
 
#define DEC_189   188
 
#define DEC_190   189
 
#define DEC_191   190
 
#define DEC_192   191
 
#define DEC_193   192
 
#define DEC_194   193
 
#define DEC_195   194
 
#define DEC_196   195
 
#define DEC_197   196
 
#define DEC_198   197
 
#define DEC_199   198
 
#define DEC_200   199
 
#define DEC_201   200
 
#define DEC_202   201
 
#define DEC_203   202
 
#define DEC_204   203
 
#define DEC_205   204
 
#define DEC_206   205
 
#define DEC_207   206
 
#define DEC_208   207
 
#define DEC_209   208
 
#define DEC_210   209
 
#define DEC_211   210
 
#define DEC_212   211
 
#define DEC_213   212
 
#define DEC_214   213
 
#define DEC_215   214
 
#define DEC_216   215
 
#define DEC_217   216
 
#define DEC_218   217
 
#define DEC_219   218
 
#define DEC_220   219
 
#define DEC_221   220
 
#define DEC_222   221
 
#define DEC_223   222
 
#define DEC_224   223
 
#define DEC_225   224
 
#define DEC_226   225
 
#define DEC_227   226
 
#define DEC_228   227
 
#define DEC_229   228
 
#define DEC_230   229
 
#define DEC_231   230
 
#define DEC_232   231
 
#define DEC_233   232
 
#define DEC_234   233
 
#define DEC_235   234
 
#define DEC_236   235
 
#define DEC_237   236
 
#define DEC_238   237
 
#define DEC_239   238
 
#define DEC_240   239
 
#define DEC_241   240
 
#define DEC_242   241
 
#define DEC_243   242
 
#define DEC_244   243
 
#define DEC_245   244
 
#define DEC_246   245
 
#define DEC_247   246
 
#define DEC_248   247
 
#define DEC_249   248
 
#define DEC_250   249
 
#define DEC_251   250
 
#define DEC_252   251
 
#define DEC_253   252
 
#define DEC_254   253
 
#define DEC_255   254
 
#define DEC_256   255
 
#define DEC_257   256
 

Detailed Description

Implement a while loop on the preprocessor.

This is used to generate the explicit instantiations, which must be done at global scope

Macro Definition Documentation

◆ BOOL

#define BOOL (   x)    COMPL(NOT(x))

◆ CAT

#define CAT (   a,
  ... 
)    PRIMITIVE_CAT(a, __VA_ARGS__)

◆ CHECK

#define CHECK (   ...)    CHECK_N(__VA_ARGS__, 0,)

◆ CHECK_N

#define CHECK_N (   x,
  n,
  ... 
)    n

◆ COMPL

#define COMPL (   b)    PRIMITIVE_CAT(COMPL_, b)

◆ COMPL_0

#define COMPL_0   1

◆ COMPL_1

#define COMPL_1   0

◆ DEC

#define DEC (   x)    PRIMITIVE_CAT(DEC_, x)

◆ DEC_0

#define DEC_0   0

◆ DEC_1

#define DEC_1   0

◆ DEC_10

#define DEC_10   9

◆ DEC_100

#define DEC_100   99

◆ DEC_101

#define DEC_101   100

◆ DEC_102

#define DEC_102   101

◆ DEC_103

#define DEC_103   102

◆ DEC_104

#define DEC_104   103

◆ DEC_105

#define DEC_105   104

◆ DEC_106

#define DEC_106   105

◆ DEC_107

#define DEC_107   106

◆ DEC_108

#define DEC_108   107

◆ DEC_109

#define DEC_109   108

◆ DEC_11

#define DEC_11   10

◆ DEC_110

#define DEC_110   109

◆ DEC_111

#define DEC_111   110

◆ DEC_112

#define DEC_112   111

◆ DEC_113

#define DEC_113   112

◆ DEC_114

#define DEC_114   113

◆ DEC_115

#define DEC_115   114

◆ DEC_116

#define DEC_116   115

◆ DEC_117

#define DEC_117   116

◆ DEC_118

#define DEC_118   117

◆ DEC_119

#define DEC_119   118

◆ DEC_12

#define DEC_12   11

◆ DEC_120

#define DEC_120   119

◆ DEC_121

#define DEC_121   120

◆ DEC_122

#define DEC_122   121

◆ DEC_123

#define DEC_123   122

◆ DEC_124

#define DEC_124   123

◆ DEC_125

#define DEC_125   124

◆ DEC_126

#define DEC_126   125

◆ DEC_127

#define DEC_127   126

◆ DEC_128

#define DEC_128   127

◆ DEC_129

#define DEC_129   128

◆ DEC_13

#define DEC_13   12

◆ DEC_130

#define DEC_130   129

◆ DEC_131

#define DEC_131   130

◆ DEC_132

#define DEC_132   131

◆ DEC_133

#define DEC_133   132

◆ DEC_134

#define DEC_134   133

◆ DEC_135

#define DEC_135   134

◆ DEC_136

#define DEC_136   135

◆ DEC_137

#define DEC_137   136

◆ DEC_138

#define DEC_138   137

◆ DEC_139

#define DEC_139   138

◆ DEC_14

#define DEC_14   13

◆ DEC_140

#define DEC_140   139

◆ DEC_141

#define DEC_141   140

◆ DEC_142

#define DEC_142   141

◆ DEC_143

#define DEC_143   142

◆ DEC_144

#define DEC_144   143

◆ DEC_145

#define DEC_145   144

◆ DEC_146

#define DEC_146   145

◆ DEC_147

#define DEC_147   146

◆ DEC_148

#define DEC_148   147

◆ DEC_149

#define DEC_149   148

◆ DEC_15

#define DEC_15   14

◆ DEC_150

#define DEC_150   149

◆ DEC_151

#define DEC_151   150

◆ DEC_152

#define DEC_152   151

◆ DEC_153

#define DEC_153   152

◆ DEC_154

#define DEC_154   153

◆ DEC_155

#define DEC_155   154

◆ DEC_156

#define DEC_156   155

◆ DEC_157

#define DEC_157   156

◆ DEC_158

#define DEC_158   157

◆ DEC_159

#define DEC_159   158

◆ DEC_16

#define DEC_16   15

◆ DEC_160

#define DEC_160   159

◆ DEC_161

#define DEC_161   160

◆ DEC_162

#define DEC_162   161

◆ DEC_163

#define DEC_163   162

◆ DEC_164

#define DEC_164   163

◆ DEC_165

#define DEC_165   164

◆ DEC_166

#define DEC_166   165

◆ DEC_167

#define DEC_167   166

◆ DEC_168

#define DEC_168   167

◆ DEC_169

#define DEC_169   168

◆ DEC_17

#define DEC_17   16

◆ DEC_170

#define DEC_170   169

◆ DEC_171

#define DEC_171   170

◆ DEC_172

#define DEC_172   171

◆ DEC_173

#define DEC_173   172

◆ DEC_174

#define DEC_174   173

◆ DEC_175

#define DEC_175   174

◆ DEC_176

#define DEC_176   175

◆ DEC_177

#define DEC_177   176

◆ DEC_178

#define DEC_178   177

◆ DEC_179

#define DEC_179   178

◆ DEC_18

#define DEC_18   17

◆ DEC_180

#define DEC_180   179

◆ DEC_181

#define DEC_181   180

◆ DEC_182

#define DEC_182   181

◆ DEC_183

#define DEC_183   182

◆ DEC_184

#define DEC_184   183

◆ DEC_185

#define DEC_185   184

◆ DEC_186

#define DEC_186   185

◆ DEC_187

#define DEC_187   186

◆ DEC_188

#define DEC_188   187

◆ DEC_189

#define DEC_189   188

◆ DEC_19

#define DEC_19   18

◆ DEC_190

#define DEC_190   189

◆ DEC_191

#define DEC_191   190

◆ DEC_192

#define DEC_192   191

◆ DEC_193

#define DEC_193   192

◆ DEC_194

#define DEC_194   193

◆ DEC_195

#define DEC_195   194

◆ DEC_196

#define DEC_196   195

◆ DEC_197

#define DEC_197   196

◆ DEC_198

#define DEC_198   197

◆ DEC_199

#define DEC_199   198

◆ DEC_2

#define DEC_2   1

◆ DEC_20

#define DEC_20   19

◆ DEC_200

#define DEC_200   199

◆ DEC_201

#define DEC_201   200

◆ DEC_202

#define DEC_202   201

◆ DEC_203

#define DEC_203   202

◆ DEC_204

#define DEC_204   203

◆ DEC_205

#define DEC_205   204

◆ DEC_206

#define DEC_206   205

◆ DEC_207

#define DEC_207   206

◆ DEC_208

#define DEC_208   207

◆ DEC_209

#define DEC_209   208

◆ DEC_21

#define DEC_21   20

◆ DEC_210

#define DEC_210   209

◆ DEC_211

#define DEC_211   210

◆ DEC_212

#define DEC_212   211

◆ DEC_213

#define DEC_213   212

◆ DEC_214

#define DEC_214   213

◆ DEC_215

#define DEC_215   214

◆ DEC_216

#define DEC_216   215

◆ DEC_217

#define DEC_217   216

◆ DEC_218

#define DEC_218   217

◆ DEC_219

#define DEC_219   218

◆ DEC_22

#define DEC_22   21

◆ DEC_220

#define DEC_220   219

◆ DEC_221

#define DEC_221   220

◆ DEC_222

#define DEC_222   221

◆ DEC_223

#define DEC_223   222

◆ DEC_224

#define DEC_224   223

◆ DEC_225

#define DEC_225   224

◆ DEC_226

#define DEC_226   225

◆ DEC_227

#define DEC_227   226

◆ DEC_228

#define DEC_228   227

◆ DEC_229

#define DEC_229   228

◆ DEC_23

#define DEC_23   22

◆ DEC_230

#define DEC_230   229

◆ DEC_231

#define DEC_231   230

◆ DEC_232

#define DEC_232   231

◆ DEC_233

#define DEC_233   232

◆ DEC_234

#define DEC_234   233

◆ DEC_235

#define DEC_235   234

◆ DEC_236

#define DEC_236   235

◆ DEC_237

#define DEC_237   236

◆ DEC_238

#define DEC_238   237

◆ DEC_239

#define DEC_239   238

◆ DEC_24

#define DEC_24   23

◆ DEC_240

#define DEC_240   239

◆ DEC_241

#define DEC_241   240

◆ DEC_242

#define DEC_242   241

◆ DEC_243

#define DEC_243   242

◆ DEC_244

#define DEC_244   243

◆ DEC_245

#define DEC_245   244

◆ DEC_246

#define DEC_246   245

◆ DEC_247

#define DEC_247   246

◆ DEC_248

#define DEC_248   247

◆ DEC_249

#define DEC_249   248

◆ DEC_25

#define DEC_25   24

◆ DEC_250

#define DEC_250   249

◆ DEC_251

#define DEC_251   250

◆ DEC_252

#define DEC_252   251

◆ DEC_253

#define DEC_253   252

◆ DEC_254

#define DEC_254   253

◆ DEC_255

#define DEC_255   254

◆ DEC_256

#define DEC_256   255

◆ DEC_257

#define DEC_257   256

◆ DEC_26

#define DEC_26   25

◆ DEC_27

#define DEC_27   26

◆ DEC_28

#define DEC_28   27

◆ DEC_29

#define DEC_29   28

◆ DEC_3

#define DEC_3   2

◆ DEC_30

#define DEC_30   29

◆ DEC_31

#define DEC_31   30

◆ DEC_32

#define DEC_32   31

◆ DEC_33

#define DEC_33   32

◆ DEC_34

#define DEC_34   33

◆ DEC_35

#define DEC_35   34

◆ DEC_36

#define DEC_36   35

◆ DEC_37

#define DEC_37   36

◆ DEC_38

#define DEC_38   37

◆ DEC_39

#define DEC_39   38

◆ DEC_4

#define DEC_4   3

◆ DEC_40

#define DEC_40   39

◆ DEC_41

#define DEC_41   40

◆ DEC_42

#define DEC_42   41

◆ DEC_43

#define DEC_43   42

◆ DEC_44

#define DEC_44   43

◆ DEC_45

#define DEC_45   44

◆ DEC_46

#define DEC_46   45

◆ DEC_47

#define DEC_47   46

◆ DEC_48

#define DEC_48   47

◆ DEC_49

#define DEC_49   48

◆ DEC_5

#define DEC_5   4

◆ DEC_50

#define DEC_50   49

◆ DEC_51

#define DEC_51   50

◆ DEC_52

#define DEC_52   51

◆ DEC_53

#define DEC_53   52

◆ DEC_54

#define DEC_54   53

◆ DEC_55

#define DEC_55   54

◆ DEC_56

#define DEC_56   55

◆ DEC_57

#define DEC_57   56

◆ DEC_58

#define DEC_58   57

◆ DEC_59

#define DEC_59   58

◆ DEC_6

#define DEC_6   5

◆ DEC_60

#define DEC_60   59

◆ DEC_61

#define DEC_61   60

◆ DEC_62

#define DEC_62   61

◆ DEC_63

#define DEC_63   62

◆ DEC_64

#define DEC_64   63

◆ DEC_65

#define DEC_65   64

◆ DEC_66

#define DEC_66   65

◆ DEC_67

#define DEC_67   66

◆ DEC_68

#define DEC_68   67

◆ DEC_69

#define DEC_69   68

◆ DEC_7

#define DEC_7   6

◆ DEC_70

#define DEC_70   69

◆ DEC_71

#define DEC_71   70

◆ DEC_72

#define DEC_72   71

◆ DEC_73

#define DEC_73   72

◆ DEC_74

#define DEC_74   73

◆ DEC_75

#define DEC_75   74

◆ DEC_76

#define DEC_76   75

◆ DEC_77

#define DEC_77   76

◆ DEC_78

#define DEC_78   77

◆ DEC_79

#define DEC_79   78

◆ DEC_8

#define DEC_8   7

◆ DEC_80

#define DEC_80   79

◆ DEC_81

#define DEC_81   80

◆ DEC_82

#define DEC_82   81

◆ DEC_83

#define DEC_83   82

◆ DEC_84

#define DEC_84   83

◆ DEC_85

#define DEC_85   84

◆ DEC_86

#define DEC_86   85

◆ DEC_87

#define DEC_87   86

◆ DEC_88

#define DEC_88   87

◆ DEC_89

#define DEC_89   88

◆ DEC_9

#define DEC_9   8

◆ DEC_90

#define DEC_90   89

◆ DEC_91

#define DEC_91   90

◆ DEC_92

#define DEC_92   91

◆ DEC_93

#define DEC_93   92

◆ DEC_94

#define DEC_94   93

◆ DEC_95

#define DEC_95   94

◆ DEC_96

#define DEC_96   95

◆ DEC_97

#define DEC_97   96

◆ DEC_98

#define DEC_98   97

◆ DEC_99

#define DEC_99   98

◆ DEFER

#define DEFER (   id)    id EMPTY()

◆ EMPTY

#define EMPTY ( )

◆ EVAL

#define EVAL (   ...)    EVAL1(EVAL1(EVAL1(__VA_ARGS__)))

◆ EVAL1

#define EVAL1 (   ...)    EVAL2(EVAL2(EVAL2(__VA_ARGS__)))

◆ EVAL2

#define EVAL2 (   ...)    EVAL3(EVAL3(EVAL3(__VA_ARGS__)))

◆ EVAL3

#define EVAL3 (   ...)    EVAL4(EVAL4(EVAL4(__VA_ARGS__)))

◆ EVAL4

#define EVAL4 (   ...)    EVAL5(EVAL5(EVAL5(__VA_ARGS__)))

◆ EVAL5

#define EVAL5 (   ...)    __VA_ARGS__

◆ EXPAND

#define EXPAND (   ...)    __VA_ARGS__

◆ IF

#define IF (   c)    IIF(BOOL(c))

◆ IF_ELSE_2

#define IF_ELSE_2 (   c)    IIF_ELSE_2(BOOL(c))

◆ IIF

#define IIF (   c)    PRIMITIVE_CAT(IIF_, c)

◆ IIF_0

#define IIF_0 (   t,
  ... 
)    __VA_ARGS__

◆ IIF_1

#define IIF_1 (   t,
  ... 
)    t

◆ IIF_ELSE_2

#define IIF_ELSE_2 (   c)    PRIMITIVE_CAT(IIF_ELSE_2_, c)

◆ IIF_ELSE_2_0

#define IIF_ELSE_2_0 (   t1,
  t2,
  f1,
  f2,
  ... 
)    f1, f2

◆ IIF_ELSE_2_1

#define IIF_ELSE_2_1 (   t1,
  t2,
  f1,
  f2,
  ... 
)    t1, t2

◆ IS_0

#define IS_0 (   x)    CHECK(PRIMITIVE_CAT(IS_0_, x))

◆ IS_0_0

#define IS_0_0   ~, 1,

◆ IS_1

#define IS_1 (   x)    CHECK(PRIMITIVE_CAT(IS_1_, x))

◆ IS_1_1

#define IS_1_1   ~, 1,

◆ NOT

#define NOT (   x)    CHECK(PRIMITIVE_CAT(NOT_, x))

◆ NOT_0

#define NOT_0   ~, 1,

◆ OBSTRUCT

#define OBSTRUCT (   id)    id DEFER(EMPTY)()

◆ PRIMITIVE_CAT

#define PRIMITIVE_CAT (   a,
  ... 
)    a ## __VA_ARGS__

◆ WHILE

#define WHILE (   pred,
  op,
  cont,
  ... 
)
Value:
IF(pred(__VA_ARGS__)) \
( \
op(__VA_ARGS__) \
OBSTRUCT(WHILE_INDIRECT) () \
( \
pred, op, cont, cont(__VA_ARGS__) \
) \
)
#define IF(c)
Definition: preprocessor.hpp:41
#define WHILE_INDIRECT()
Definition: preprocessor.hpp:52

◆ WHILE_INDIRECT

#define WHILE_INDIRECT ( )    WHILE