faiss/c_api/gpu/macros_impl.h

44 lines
1.6 KiB
C

/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD+Patents license found in the
* LICENSE file in the root directory of this source tree.
*/
// Copyright 2004-present Facebook. All Rights Reserved.
// -*- c++ -*-
#ifndef GPU_MACROS_IMPL_H
#define GPU_MACROS_IMPL_H
#include "../macros_impl.h"
#undef DEFINE_GETTER
#define DEFINE_GETTER(clazz, ty, name) \
ty faiss_ ## clazz ## _ ## name (const Faiss ## clazz *obj) { \
return static_cast< ty >( \
reinterpret_cast< const faiss::gpu::clazz *>(obj)-> name \
); \
}
#undef DEFINE_SETTER
#define DEFINE_SETTER(clazz, ty, name) \
void faiss_ ## clazz ## _set_ ## name (Faiss ## clazz *obj, ty val) { \
reinterpret_cast< faiss::gpu::clazz *>(obj)-> name = val; \
}
#undef DEFINE_SETTER_STATIC
#define DEFINE_SETTER_STATIC(clazz, ty_to, ty_from, name) \
void faiss_ ## clazz ## _set_ ## name (Faiss ## clazz *obj, ty_from val) { \
reinterpret_cast< faiss::gpu::clazz *>(obj)-> name = \
static_cast< ty_to >(val); \
}
#undef DEFINE_DESTRUCTOR
#define DEFINE_DESTRUCTOR(clazz) \
void faiss_ ## clazz ## _free (Faiss ## clazz *obj) { \
delete reinterpret_cast<faiss::gpu::clazz *>(obj); \
}
#endif