12 #ifndef GPU_MACROS_IMPL_H
13 #define GPU_MACROS_IMPL_H
14 #include "../macros_impl.h"
17 #define DEFINE_GETTER(clazz, ty, name) \
18 ty faiss_ ## clazz ## _ ## name (const Faiss ## clazz *obj) { \
19 return static_cast< ty >( \
20 reinterpret_cast< const faiss::gpu::clazz *>(obj)-> name \
25 #define DEFINE_SETTER(clazz, ty, name) \
26 void faiss_ ## clazz ## _set_ ## name (Faiss ## clazz *obj, ty val) { \
27 reinterpret_cast< faiss::gpu::clazz *>(obj)-> name = val; \
30 #undef DEFINE_SETTER_STATIC
31 #define DEFINE_SETTER_STATIC(clazz, ty_to, ty_from, name) \
32 void faiss_ ## clazz ## _set_ ## name (Faiss ## clazz *obj, ty_from val) { \
33 reinterpret_cast< faiss::gpu::clazz *>(obj)-> name = \
34 static_cast< ty_to >(val); \
37 #undef DEFINE_DESTRUCTOR
38 #define DEFINE_DESTRUCTOR(clazz) \
39 void faiss_ ## clazz ## _free (Faiss ## clazz *obj) { \
40 delete reinterpret_cast<faiss::gpu::clazz *>(obj); \