HiRep 0.1
Loading...
Searching...
No Matches
generics.h
1/***************************************************************************\
2* Copyright (c) 2023, Sofie Martins, Claudio Pica *
3* All rights reserved. *
4\***************************************************************************/
5
6#ifndef GENERICS_H
7#define GENERICS_H
8
9#include <string.h>
10
11// Construct suffixed function names
12#define CONCAT(_name, _suffix) _name##_suffix
13#define _F_NAME(_name, _suffix) CONCAT(_name, _suffix)
14#define _FUNC(_type, _name, _suffix, _args) _type _F_NAME(_name, _suffix) _args
15
16// Construct suffixed function names with additional _gpu suffix
17#define _CONCAT_GPU(_name, _suffix) _name##_suffix##_gpu
18#define _GPU_F_NAME(_name, _suffix) _CONCAT_GPU(_name, _suffix)
19#define _GPU_FUNC(_type, _name, _suffix, _args) _type _GPU_F_NAME(_name, _suffix) _args
20
21// Construct number of sites from geom type
22#define _NUMBER_OF_SITES(type, _geom) (type)->CONCAT(gsize_, _geom)
23
24// Construct number of buffers from geom type
25#define _NUMBER_OF_BUFFERS(type, _geom) (type)->CONCAT(nbuffers_, _geom)
26
27// Construct number of copies from geom type (old geometry)
28#ifndef WITH_NEW_GEOMETRY
29#define _NUMBER_OF_COPIES(type, _geom) (type)->CONCAT(ncopies_, _geom)
30#endif
31
32#endif