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