Chromium Code Reviews| 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 |