Loading...
Searching...
No Matches
python_macro.h
Go to the documentation of this file.
1#ifndef _BBM_PYTHON_MACRO_H_
2#define _BBM_PYTHON_MACRO_H_
3
4#include "util/macro_util.h"
5#include "python/py_core.h"
6#include "python/py_bsdf.h"
7
8/***********************************************************************/
9/*! \file python_macro.h
10 \brief Shorthand definitions for a python modules
11
12 Expects BBM_NAME and BBM_CONFIG are set. Usage:
13
14 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.c}
15 #include "bbm.h"
16 BBM_PYTHON_<EMBED_>MODULE
17 {
18 BBM_PYTHON_CORE
19 #include "export/bbm_python.h"
20 #include "bbm.h"
21 #include "export/clear_export.h"
22 }
23 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24
25 The generated module is named <BBM_NAME>_<BBM_CONFIG>. The difference
26 between BBM_PYTHON_MODULE and BBM_PYTHON_EMBED_MODULE is that the former
27 generates a dynamic library (that can be imported in python) while the
28 latter one embeds the module in the resulting executable.
29************************************************************************/
30
31/************* Check Existence of BBM_CONFIG and BBM_NAME **************/
32#ifndef BBM_CONFIG
33 #error Fatal Error: missing configuration name (-DBBM_CONFIG=<name>)
34#endif /* BBM_CONFIG */
35
36#ifndef BBM_NAME
37 #error Fatal Error: missing library name (-DBBM_NAME=<name>)
38#endif /* BBM_NAME */
39/***********************************************************************/
40
41//! \brief concat the BBM_NAME and BBM_CONFIG
42#define BBM_PYTHON_MODULE_NAME BBM_CALL(_BBM_UCAT, BBM_NAME, BBM_CONFIG)
43#define _BBM_UCAT(a, b) a ## _ ## b
44
45//! \brief Create a python module (dynamic library) named BBM_PYTHON_MODULE_NAME
46#define BBM_PYTHON_MODULE BBM_CALL(PYBIND11_MODULE, BBM_PYTHON_MODULE_NAME, m)
47
48//! \brief Create a python module (embedded in the object file) named BBN_PYTHON_MODULE_NAME
49#define BBM_PYTHON_EMBED_MODULE BBM_CALL(PYBIND11_EMBEDDED_MODULE, BBM_PYTHON_MODULE_NAME, m)
50
51//! \brief Import the core bbm python functionality
52#define BBM_PYTHON_CORE bbm::python::core<bbm::BBM_CONFIG>(m);
53
54#endif /* _BBM_PYTHON_MACRO_H_ */
General macro utilities.
Export a BSDF model to python.
Export of core classes to python.