File: PyBSP_API.h

package info (click to toggle)
python-scientific 2.8-4
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 6,456 kB
  • sloc: python: 16,436; ansic: 4,379; makefile: 141; sh: 18; csh: 1
file content (151 lines) | stat: -rw-r--r-- 4,554 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * C API functions
 */

#define PyBSP_Sync_RET void
#define PyBSP_Sync_PROTO Py_PROTO((void))
#define PyBSP_Sync_NUM 0

#define PyBSP_SetTagSize_RET void
#define PyBSP_SetTagSize_PROTO Py_PROTO((int *tag_nbytes))
#define PyBSP_SetTagSize_NUM 1

#define PyBSP_Send_RET void
#define PyBSP_Send_PROTO Py_PROTO((int pid, const void *tag, const void *payload, int payload_nbytes))
#define PyBSP_Send_NUM 2

#define PyBSP_QSize_RET void
#define PyBSP_QSize_PROTO Py_PROTO((int *nmessages, int *accum_nbytes))
#define PyBSP_QSize_NUM 3

#define PyBSP_GetTag_RET void
#define PyBSP_GetTag_PROTO Py_PROTO((int *status, void *tag))
#define PyBSP_GetTag_NUM 4

#define PyBSP_Move_RET void
#define PyBSP_Move_PROTO Py_PROTO((void *payload, int reception_nbytes))
#define PyBSP_Move_NUM 5

#define PyBSP_HPMove_RET int
#define PyBSP_HPMove_PROTO Py_PROTO((void **tag_ptr, void **payload_ptr))
#define PyBSP_HPMove_NUM 6

#define PyBSP_SendString_RET int
#define PyBSP_SendString_PROTO Py_PROTO((PyStringObject *string, int dest_pid))
#define PyBSP_SendString_NUM 7

#define PyBSP_SendArray_RET int
#define PyBSP_SendArray_PROTO Py_PROTO((PyArrayObject *array, int dest_pid))
#define PyBSP_SendArray_NUM 8

#define PyBSP_NumberOfObjects_RET int
#define PyBSP_NumberOfObjects_PROTO Py_PROTO((void))
#define PyBSP_NumberOfObjects_NUM 9

#define PyBSP_ReceiveObject_RET PyObject *
#define PyBSP_ReceiveObject_PROTO Py_PROTO((void))
#define PyBSP_ReceiveObject_NUM 10

#define PyBSP_API_pointers 11

#ifdef _BSP_MODULE

static PyBSP_Sync_RET PyBSP_Sync PyBSP_Sync_PROTO;

static PyBSP_SetTagSize_RET PyBSP_SetTagSize PyBSP_SetTagSize_PROTO;

static PyBSP_Send_RET PyBSP_Send PyBSP_Send_PROTO;

static PyBSP_QSize_RET PyBSP_QSize PyBSP_QSize_PROTO;

static PyBSP_GetTag_RET PyBSP_GetTag PyBSP_GetTag_PROTO;

static PyBSP_Move_RET PyBSP_Move PyBSP_Move_PROTO;

static PyBSP_HPMove_RET PyBSP_HPMove PyBSP_HPMove_PROTO;

static PyBSP_SendString_RET PyBSP_SendString PyBSP_SendString_PROTO;

static PyBSP_SendArray_RET PyBSP_SendArray PyBSP_SendArray_PROTO;

static PyBSP_NumberOfObjects_RET PyBSP_NumberOfObjects PyBSP_NumberOfObjects_PROTO;

static PyBSP_ReceiveObject_RET PyBSP_ReceiveObject PyBSP_ReceiveObject_PROTO;

#define set_PyBSP_API_pointers(){ \
   PyBSP_API[PyBSP_Sync_NUM] = (void *)&PyBSP_Sync; \
   PyBSP_API[PyBSP_SetTagSize_NUM] = (void *)&PyBSP_SetTagSize; \
   PyBSP_API[PyBSP_Send_NUM] = (void *)&PyBSP_Send; \
   PyBSP_API[PyBSP_QSize_NUM] = (void *)&PyBSP_QSize; \
   PyBSP_API[PyBSP_GetTag_NUM] = (void *)&PyBSP_GetTag; \
   PyBSP_API[PyBSP_Move_NUM] = (void *)&PyBSP_Move; \
   PyBSP_API[PyBSP_HPMove_NUM] = (void *)&PyBSP_HPMove; \
   PyBSP_API[PyBSP_SendString_NUM] = (void *)&PyBSP_SendString; \
   PyBSP_API[PyBSP_SendArray_NUM] = (void *)&PyBSP_SendArray; \
   PyBSP_API[PyBSP_NumberOfObjects_NUM] = (void *)&PyBSP_NumberOfObjects; \
   PyBSP_API[PyBSP_ReceiveObject_NUM] = (void *)&PyBSP_ReceiveObject; \
}

#else

static void **PyBSP_API;

#define PyBSP_Sync \
  (*(PyBSP_Sync_RET (*)PyBSP_Sync_PROTO) \
   PyBSP_API[PyBSP_Sync_NUM])

#define PyBSP_SetTagSize \
  (*(PyBSP_SetTagSize_RET (*)PyBSP_SetTagSize_PROTO) \
   PyBSP_API[PyBSP_SetTagSize_NUM])

#define PyBSP_Send \
  (*(PyBSP_Send_RET (*)PyBSP_Send_PROTO) \
   PyBSP_API[PyBSP_Send_NUM])

#define PyBSP_QSize \
  (*(PyBSP_QSize_RET (*)PyBSP_QSize_PROTO) \
   PyBSP_API[PyBSP_QSize_NUM])

#define PyBSP_GetTag \
  (*(PyBSP_GetTag_RET (*)PyBSP_GetTag_PROTO) \
   PyBSP_API[PyBSP_GetTag_NUM])

#define PyBSP_Move \
  (*(PyBSP_Move_RET (*)PyBSP_Move_PROTO) \
   PyBSP_API[PyBSP_Move_NUM])

#define PyBSP_HPMove \
  (*(PyBSP_HPMove_RET (*)PyBSP_HPMove_PROTO) \
   PyBSP_API[PyBSP_HPMove_NUM])

#define PyBSP_SendString \
  (*(PyBSP_SendString_RET (*)PyBSP_SendString_PROTO) \
   PyBSP_API[PyBSP_SendString_NUM])

#define PyBSP_SendArray \
  (*(PyBSP_SendArray_RET (*)PyBSP_SendArray_PROTO) \
   PyBSP_API[PyBSP_SendArray_NUM])

#define PyBSP_NumberOfObjects \
  (*(PyBSP_NumberOfObjects_RET (*)PyBSP_NumberOfObjects_PROTO) \
   PyBSP_API[PyBSP_NumberOfObjects_NUM])

#define PyBSP_ReceiveObject \
  (*(PyBSP_ReceiveObject_RET (*)PyBSP_ReceiveObject_PROTO) \
   PyBSP_API[PyBSP_ReceiveObject_NUM])



#define import_bsplib() \
{ \
  PyObject *module = PyImport_ImportModule("Scientific.BSPlib"); \
  if (module != NULL) { \
    PyObject *module_dict = PyModule_GetDict(module); \
    PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
    if (PyCObject_Check(c_api_object)) { \
      PyBSP_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
    } \
  } \
}

#endif