1 #ifndef MPFQ_LAYER_H_ 2 #define MPFQ_LAYER_H_ 3 // pragma no prototypes 4 5 #if defined(MPFQ_FAKE_HPP_) && defined(MPFQ_LAYER_H_) 6 #error "mpfq_layer.h and mpfq_fake.hpp are incomaptible" 7 #endif 8 9 // IWYU pragma: begin_exports 10 #include "mpfq/mpfq.h" 11 12 #if defined(SELECT_MPFQ_LAYER_u64k1) || defined(SELECT_MPFQ_LAYER_u64) 13 #include "mpfq/mpfq_u64k1.h" 14 #ifdef __cplusplus 15 #include "mpfq/mpfq_u64k1.hpp" 16 #endif /* __cplusplus */ 17 #elif defined(SELECT_MPFQ_LAYER_u64k2) 18 #include "mpfq/mpfq_u64k2.h" 19 #ifdef __cplusplus 20 #include "mpfq/mpfq_u64k2.hpp" 21 #endif /* __cplusplus */ 22 #elif defined(SELECT_MPFQ_LAYER_u64k3) 23 #include "mpfq/mpfq_u64k3.h" 24 #ifdef __cplusplus 25 #include "mpfq/mpfq_u64k3.hpp" 26 #endif /* __cplusplus */ 27 #elif defined(SELECT_MPFQ_LAYER_u64k4) 28 #include "mpfq/mpfq_u64k4.h" 29 #ifdef __cplusplus 30 #include "mpfq/mpfq_u64k4.hpp" 31 #endif /* __cplusplus */ 32 #elif defined(SELECT_MPFQ_LAYER_m128) 33 #include "mpfq/mpfq_m128.h" 34 #ifdef __cplusplus 35 #include "mpfq/mpfq_m128.hpp" 36 #endif /* __cplusplus */ 37 #elif defined(SELECT_MPFQ_LAYER_p16) /* This is really the first non-gf2 try */ 38 #define NOT_OVER_GF2 39 #include "mpfq/mpfq_p16.h" 40 #ifdef __cplusplus 41 #include "mpfq/mpfq_p16.hpp" 42 #endif /* __cplusplus */ 43 44 /* In reality we don't have everything configured for the moment. Update 45 * CMakeLists.txt when the need for other moduli arises */ 46 47 #elif defined(SELECT_MPFQ_LAYER_p_1) 48 #define NOT_OVER_GF2 49 #include "mpfq/mpfq_p_1.h" 50 #ifdef __cplusplus 51 #include "mpfq/mpfq_p_1.hpp" 52 #endif /* __cplusplus */ 53 #elif defined(SELECT_MPFQ_LAYER_p_2) 54 #define NOT_OVER_GF2 55 #include "mpfq/mpfq_p_2.h" 56 #ifdef __cplusplus 57 #include "mpfq/mpfq_p_2.hpp" 58 #endif /* __cplusplus */ 59 #elif defined(SELECT_MPFQ_LAYER_p_3) 60 #define NOT_OVER_GF2 61 #include "mpfq/mpfq_p_3.h" 62 #ifdef __cplusplus 63 #include "mpfq/mpfq_p_3.hpp" 64 #endif /* __cplusplus */ 65 #elif defined(SELECT_MPFQ_LAYER_p_4) 66 #define NOT_OVER_GF2 67 #include "mpfq/mpfq_p_4.h" 68 #ifdef __cplusplus 69 #include "mpfq/mpfq_p_4.hpp" 70 #endif /* __cplusplus */ 71 #elif defined(SELECT_MPFQ_LAYER_p_5) 72 #define NOT_OVER_GF2 73 #include "mpfq/mpfq_p_5.h" 74 #ifdef __cplusplus 75 #include "mpfq/mpfq_p_5.hpp" 76 #endif /* __cplusplus */ 77 #elif defined(SELECT_MPFQ_LAYER_p_6) 78 #define NOT_OVER_GF2 79 #include "mpfq/mpfq_p_6.h" 80 #ifdef __cplusplus 81 #include "mpfq/mpfq_p_6.hpp" 82 #endif /* __cplusplus */ 83 #elif defined(SELECT_MPFQ_LAYER_p_7) 84 #define NOT_OVER_GF2 85 #include "mpfq/mpfq_p_7.h" 86 #ifdef __cplusplus 87 #include "mpfq/mpfq_p_7.hpp" 88 #endif /* __cplusplus */ 89 #elif defined(SELECT_MPFQ_LAYER_p_8) 90 #define NOT_OVER_GF2 91 #include "mpfq/mpfq_p_8.h" 92 #ifdef __cplusplus 93 #include "mpfq/mpfq_p_8.hpp" 94 #endif /* __cplusplus */ 95 #elif defined(SELECT_MPFQ_LAYER_p_9) 96 #define NOT_OVER_GF2 97 #include "mpfq/mpfq_p_9.h" 98 #ifdef __cplusplus 99 #include "mpfq/mpfq_p_9.hpp" 100 #endif /* __cplusplus */ 101 #elif defined(SELECT_MPFQ_LAYER_p_10) 102 #define NOT_OVER_GF2 103 #include "mpfq/mpfq_p_10.h" 104 #ifdef __cplusplus 105 #include "mpfq/mpfq_p_10.hpp" 106 #endif /* __cplusplus */ 107 #elif defined(SELECT_MPFQ_LAYER_p_11) 108 #define NOT_OVER_GF2 109 #include "mpfq/mpfq_p_11.h" 110 #ifdef __cplusplus 111 #include "mpfq/mpfq_p_11.hpp" 112 #endif /* __cplusplus */ 113 #elif defined(SELECT_MPFQ_LAYER_p_12) 114 #define NOT_OVER_GF2 115 #include "mpfq/mpfq_p_12.h" 116 #ifdef __cplusplus 117 #include "mpfq/mpfq_p_12.hpp" 118 #endif /* __cplusplus */ 119 #elif defined(SELECT_MPFQ_LAYER_p_13) 120 #define NOT_OVER_GF2 121 #include "mpfq/mpfq_p_13.h" 122 #ifdef __cplusplus 123 #include "mpfq/mpfq_p_13.hpp" 124 #endif /* __cplusplus */ 125 #elif defined(SELECT_MPFQ_LAYER_p_14) 126 #define NOT_OVER_GF2 127 #include "mpfq/mpfq_p_14.h" 128 #ifdef __cplusplus 129 #include "mpfq/mpfq_p_14.hpp" 130 #endif /* __cplusplus */ 131 #elif defined(SELECT_MPFQ_LAYER_p_15) 132 #define NOT_OVER_GF2 133 #include "mpfq/mpfq_p_15.h" 134 #ifdef __cplusplus 135 #include "mpfq/mpfq_p_15.hpp" 136 #endif /* __cplusplus */ 137 #elif defined(SELECT_MPFQ_LAYER_pz) 138 #define NOT_OVER_GF2 139 #include "mpfq/mpfq_pz.h" 140 #ifdef __cplusplus 141 #include "mpfq/mpfq_pz.hpp" 142 #endif /* __cplusplus */ 143 #else 144 // #warning "Using default selection for abase" 145 #error "argh. This code must be compiled with some SELECT_MPFQ_LAYER_ macro defined" 146 // #include "mpfq/mpfq_u64.h" 147 #endif 148 149 /* This is used as a shorthand throughout in order to ease the access to 150 * the _primary_ abase. Other abases have to be accessed via the OO 151 * interface. 152 */ 153 #include "mpfq/mpfq_name_ab.h" 154 // IWYU pragma: end_exports 155 156 #endif /* MPFQ_LAYER_H_ */ 157