OLD | NEW |
---|---|
(Empty) | |
1 #ifndef TEST_VECTOR_OPS_H | |
jvoung (off chromium)
2014/07/18 22:50:40
Add a #define TEST_VECTOR_OPS_H ?
wala
2014/07/18 23:08:23
Woops!! Done.
| |
2 | |
3 #include "vectors.h" | |
4 | |
5 // The VectorOps<> class acts like Vectors<> but also has insertelement, | |
6 // Subzero_insertelement, extractelement, and Subzero_extractelement | |
7 // fields. | |
8 | |
9 template <typename T> struct VectorOps; | |
10 #define FIELD(TYNAME, FIELDNAME) VectorOps<TYNAME>::FIELDNAME | |
11 #define TY(TYNAME) FIELD(TYNAME, Ty) | |
12 #define CASTTY(TYNAME) FIELD(TYNAME, CastTy) | |
13 #define DECLARE_VECTOR_OPS(NAME) \ | |
14 template <> struct VectorOps<NAME> : public Vectors<NAME> { \ | |
15 static Ty (*insertelement)(Ty, CastTy, int32_t); \ | |
16 static CastTy (*extractelement)(Ty, int32_t); \ | |
17 static Ty (*Subzero_insertelement)(Ty, CastTy, int32_t); \ | |
18 static CastTy (*Subzero_extractelement)(Ty, int32_t); \ | |
19 }; \ | |
20 extern "C" { \ | |
21 TY(NAME) insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \ | |
22 TY(NAME) Subzero_insertelement_##NAME(TY(NAME), CASTTY(NAME), int32_t); \ | |
23 CASTTY(NAME) extractelement_##NAME(TY(NAME), int32_t); \ | |
24 CASTTY(NAME) Subzero_extractelement_##NAME(TY(NAME), int32_t); \ | |
25 } \ | |
26 TY(NAME) (*FIELD(NAME, insertelement))(TY(NAME), CASTTY(NAME), int32_t) = \ | |
27 &insertelement_##NAME; \ | |
28 TY(NAME) (*FIELD(NAME, Subzero_insertelement))( \ | |
29 TY(NAME), CASTTY(NAME), int32_t) = &Subzero_insertelement_##NAME; \ | |
30 CASTTY(NAME) (*FIELD(NAME, extractelement))(TY(NAME), int32_t) = \ | |
31 &extractelement_##NAME; \ | |
32 CASTTY(NAME) (*FIELD(NAME, Subzero_extractelement))(TY(NAME), int32_t) = \ | |
33 &Subzero_extractelement_##NAME; | |
34 | |
35 #define X(ty, eltty, castty) DECLARE_VECTOR_OPS(ty) | |
36 VECTOR_TYPE_TABLE | |
37 #undef X | |
38 | |
39 #define X(ty, eltty, numelements) DECLARE_VECTOR_OPS(ty) | |
40 I1_VECTOR_TYPE_TABLE | |
41 #undef X | |
42 | |
43 #endif | |
Jim Stichnoth
2014/07/18 23:45:47
#endif // TEST_VECTOR_OPS_H
wala
2014/07/21 23:45:10
Done.
| |
OLD | NEW |