Changeset d04ac05 in sasview for src/sas/sascalc/calculator
- Timestamp:
- Sep 23, 2017 1:47:05 AM (7 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 9e308a3
- Parents:
- 7b50f14
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/c_extensions/sld2i_module.cpp
rb523c0e rd04ac05 5 5 #include <stdio.h> 6 6 #include <sld2i.hh> 7 8 #if PY_MAJOR_VERSION < 3 9 typedef void (*PyCapsule_Destructor)(PyObject *); 10 typedef void (*PyCObject_Destructor)(void *); 11 #define PyCapsule_New(pointer, name, destructor) (PyCObject_FromVoidPtr(pointer, (PyCObject_Destructor)destructor)) 12 #define PyCapsule_GetPointer(capsule, name) (PyCObject_AsVoidPtr(capsule)) 13 #endif 14 7 15 8 16 // Utilities … … 25 33 * Delete a GenI object 26 34 */ 27 void del_sld2i(void *ptr){ 28 GenI* sld2i = static_cast<GenI *>(ptr); 35 void 36 del_sld2i(PyObject *obj){ 37 GenI* sld2i = static_cast<GenI *>(PyCapsule_GetPointer(obj, "GenI")); 29 38 delete sld2i; 30 39 return; … … 71 80 OUTVECTOR(vol_pix_obj, vol_pix, n_x); 72 81 GenI* sld2i = new GenI(n_pix,x_val,y_val,z_val,sldn_val,mx_val,my_val,mz_val,vol_pix,inspin,outspin,stheta); 73 return PyC Object_FromVoidPtr(sld2i, del_sld2i);82 return PyCapsule_New(sld2i, "GenI", del_sld2i); 74 83 } 75 84 … … 97 106 98 107 // Set the array pointers 99 void *temp = PyC Object_AsVoidPtr(gen_obj);108 void *temp = PyCapsule_GetPointer(gen_obj, "GenI"); 100 109 GenI* s = static_cast<GenI *>(temp); 101 110 … … 125 134 126 135 // Set the array pointers 127 void *temp = PyC Object_AsVoidPtr(gen_obj);136 void *temp = PyCapsule_GetPointer(gen_obj, "GenI"); 128 137 GenI* s = static_cast<GenI *>(temp); 129 138 … … 146 155 }; 147 156 148 149 #ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ 150 #define PyMODINIT_FUNC void 157 #define MODULE_DOC "Sld2i C Library" 158 #define MODULE_NAME "sld2i" 159 #define MODULE_INIT2 initsld2i 160 #define MODULE_INIT3 PyInit_reflmodule 161 #define MODULE_METHODS module_methods 162 163 /* ==== boilerplate python 2/3 interface bootstrap ==== */ 164 165 166 #if defined(WIN32) && !defined(__MINGW32__) 167 #define DLL_EXPORT __declspec(dllexport) 168 #else 169 #define DLL_EXPORT 151 170 #endif 152 PyMODINIT_FUNC 153 initsld2i(void) 154 { 155 Py_InitModule3("sld2i", module_methods, "Sld2i module"); 156 } 171 172 #if PY_MAJOR_VERSION >= 3 173 174 DLL_EXPORT PyMODINIT_FUNC MODULE_INIT3(void) 175 { 176 static struct PyModuleDef moduledef = { 177 PyModuleDef_HEAD_INIT, 178 MODULE_NAME, /* m_name */ 179 MODULE_DOC, /* m_doc */ 180 -1, /* m_size */ 181 MODULE_METHODS, /* m_methods */ 182 NULL, /* m_reload */ 183 NULL, /* m_traverse */ 184 NULL, /* m_clear */ 185 NULL, /* m_free */ 186 }; 187 return PyModule_Create(&moduledef); 188 } 189 190 #else /* !PY_MAJOR_VERSION >= 3 */ 191 192 DLL_EXPORT PyMODINIT_FUNC MODULE_INIT2(void) 193 { 194 Py_InitModule4(MODULE_NAME, 195 MODULE_METHODS, 196 MODULE_DOC, 197 0, 198 PYTHON_API_VERSION 199 ); 200 } 201 202 #endif /* !PY_MAJOR_VERSION >= 3 */
Note: See TracChangeset
for help on using the changeset viewer.