smats
0.0.1
Satisfability Modulo Arithmetic Theories Symbols
Loading...
Searching...
No Matches
definitions.h
1
7
#pragma once
8
20
#define GENERIC_ARITHMETIC_OPERATOR_DECLARATION(lhs_type, op, rhs_type) lhs_type operator op(const rhs_type o);
31
#define ARITHMETIC_OPERATOR_DECLARATION(type, op) GENERIC_ARITHMETIC_OPERATOR_DECLARATION(type, op, type)
45
#define GENERIC_ARITHMETIC_OPERATORS_DECLARATION(lhs_type, rhs_type) \
46
GENERIC_ARITHMETIC_OPERATOR_DECLARATION(lhs_type, +=, rhs_type) \
47
GENERIC_ARITHMETIC_OPERATOR_DECLARATION(lhs_type, -=, rhs_type) \
48
GENERIC_ARITHMETIC_OPERATOR_DECLARATION(lhs_type, *=, rhs_type) \
49
GENERIC_ARITHMETIC_OPERATOR_DECLARATION(lhs_type, /=, rhs_type)
62
#define ARITHMETIC_OPERATORS_DECLARATION(type) GENERIC_ARITHMETIC_OPERATORS_DECLARATION(type, type)
78
#define GENERIC_ARITHMETIC_OPERATOR_DEFINITION(lhs_type, op, rhs_type) \
79
lhs_type operator op(const rhs_type o) const { \
80
lhs_type temp(*this); \
81
temp op## = o; \
82
return temp; \
83
}
98
#define ARITHMETIC_OPERATOR_DEFINITION(type, op) GENERIC_ARITHMETIC_OPERATOR_DEFINITION(type, op, type &)
113
#define GENERIC_ARITHMETIC_OPERATORS_DEFINITION(lhs_type, rhs_type) \
114
GENERIC_ARITHMETIC_OPERATOR_DEFINITION(lhs_type, +, rhs_type) \
115
GENERIC_ARITHMETIC_OPERATOR_DEFINITION(lhs_type, -, rhs_type) \
116
GENERIC_ARITHMETIC_OPERATOR_DEFINITION(lhs_type, *, rhs_type) \
117
GENERIC_ARITHMETIC_OPERATOR_DEFINITION(lhs_type, /, rhs_type)
131
#define ARITHMETIC_OPERATORS_DEFINITION(type) GENERIC_ARITHMETIC_OPERATORS_DEFINITION(type, type &)
145
#define GENERIC_ARITHMETIC_OPERATORS(lhs_type, rhs_type) \
146
GENERIC_ARITHMETIC_OPERATORS_DECLARATION(lhs_type &, rhs_type) \
147
GENERIC_ARITHMETIC_OPERATORS_DEFINITION(lhs_type, rhs_type)
161
#define ARITHMETIC_OPERATORS(type) \
162
ARITHMETIC_OPERATORS_DECLARATION(type &) \
163
ARITHMETIC_OPERATORS_DEFINITION(type)
164
175
#define EXPLICIT_TEMPLATE_INSTANTIATION(c, t) template class c<t>
176
189
#define EXPLICIT_TEMPLATE_INSTANTIATION_NUMERIC(c) \
190
EXPLICIT_TEMPLATE_INSTANTIATION(c, int); \
191
EXPLICIT_TEMPLATE_INSTANTIATION(c, long); \
192
EXPLICIT_TEMPLATE_INSTANTIATION(c, float); \
193
EXPLICIT_TEMPLATE_INSTANTIATION(c, double)
194
205
#define EXTERNAL_TEMPLATE_INSTANTIATION(c, t) extern template class c<t>
206
219
#define EXTERNAL_TEMPLATE_INSTANTIATION_NUMERIC(c) \
220
EXTERNAL_TEMPLATE_INSTANTIATION(c, int); \
221
EXTERNAL_TEMPLATE_INSTANTIATION(c, long); \
222
EXTERNAL_TEMPLATE_INSTANTIATION(c, float); \
223
EXTERNAL_TEMPLATE_INSTANTIATION(c, double)
smats
util
definitions.h
Generated by
1.11.0