RAVE
pycompositefactorymanager.h
Go to the documentation of this file.
1/* --------------------------------------------------------------------
2Copyright (C) 2009 Swedish Meteorological and Hydrological Institute, SMHI,
3
4This file is part of RAVE.
5
6RAVE is free software: you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation, either version 3 of the License, or
9(at your option) any later version.
10
11RAVE is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU Lesser General Public License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
17along with RAVE. If not, see <http://www.gnu.org/licenses/>.
18------------------------------------------------------------------------*/
25#ifndef PYCOMPOSITEFACTORYMANAGER_H
26#define PYCOMPOSITEFACTORYMANAGER_H
28
32typedef struct {
33 PyObject_HEAD /*Always has to be on top*/
36
37#define PyCompositeFactoryManager_Type_NUM 0
38
39#define PyCompositeFactoryManager_GetNative_NUM 1
40#define PyCompositeFactoryManager_GetNative_RETURN CompositeFactoryManager_t*
41#define PyCompositeFactoryManager_GetNative_PROTO (PyCompositeFactoryManager*)
42
43#define PyCompositeFactoryManager_New_NUM 2
44#define PyCompositeFactoryManager_New_RETURN PyCompositeFactoryManager*
45#define PyCompositeFactoryManager_New_PROTO (CompositeFactoryManager_t*)
46
47#define PyCompositeFactoryManager_API_pointers 3
48
49#define PyCompositeFactoryManager_CAPSULE_NAME "_compositefactorymanager._C_API"
50
51
52#ifdef PYCOMPOSITEFACTORYMANAGER_MODULE
54extern PyTypeObject PyCompositeFactoryManager_Type;
55
57#define PyCompositeFactoryManager_Check(op) ((op)->ob_type == &PyCompositeFactoryManager_Type)
58
61
64
65#else
67static void **PyCompositeFactoryManager_API;
68
73#define PyCompositeFactoryManager_GetNative \
74 (*(PyCompositeFactoryManager_GetNative_RETURN (*)PyCompositeFactoryManager_GetNative_PROTO) PyCompositeFactoryManager_API[PyCompositeFactoryManager_GetNative_NUM])
75
83#define PyCompositeFactoryManager_New \
84 (*(PyCompositeFactoryManager_New_RETURN (*)PyCompositeFactoryManager_New_PROTO) PyCompositeFactoryManager_API[PyCompositeFactoryManager_New_NUM])
85
89#define PyCompositeFactoryManager_Check(op) \
90 (Py_TYPE(op) == &PyCompositeFactoryManager_Type)
91
92#define PyCompositeFactoryManager_Type (*(PyTypeObject*)PyCompositeFactoryManager_API[PyCompositeFactoryManager_Type_NUM])
93
97#define import_compositefactorymanager() \
98 PyCompositeFactoryManager_API = (void **)PyCapsule_Import(PyCompositeFactoryManager_CAPSULE_NAME, 0);
99
100#endif
101
102
103
104#endif /* PYCOMPOSITEFACTORYMANAGER_H */
Registry for keeping track of available composite generator factories.
struct _CompositeFactoryManager_t CompositeFactoryManager_t
Defines a Composite generator.
Definition compositefactorymanager.h:37
#define PyCompositeFactoryManager_New_PROTO
arguments for New
Definition pycompositefactorymanager.h:45
#define PyCompositeFactoryManager_GetNative_RETURN
return type for GetNative
Definition pycompositefactorymanager.h:40
#define PyCompositeFactoryManager_New_RETURN
return type for New
Definition pycompositefactorymanager.h:44
#define PyCompositeFactoryManager_GetNative_PROTO
arguments for GetNative
Definition pycompositefactorymanager.h:41
#define PyCompositeFactoryManager_GetNative
Returns a pointer to the internal composite, remember to release the reference when done with the obj...
Definition pycompositefactorymanager.h:73
#define PyCompositeFactoryManager_New
Creates a new composite generator instance.
Definition pycompositefactorymanager.h:83
A composite generator.
Definition pycompositefactorymanager.h:32
PyObject_HEAD CompositeFactoryManager_t * manager
the composite generator
Definition pycompositefactorymanager.h:34