Changeset 9316609 in sasview for sansmodels/src/sans/models/c_extensions/CCoreShellCylinderModel.c
- Timestamp:
- Oct 28, 2008 3:22:22 PM (16 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, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 92320e5
- Parents:
- 89fef2c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_extensions/CCoreShellCylinderModel.c
rae3ce4e r9316609 1 /** CCoreShellCylinderModel1 /** [PYTHONCLASS] 2 2 * 3 3 * C extension … … 20 20 21 21 /// Error object for raised exceptions 22 static PyObject * CCoreShellCylinderModelError = NULL;22 static PyObject * [PYTHONCLASS]Error = NULL; 23 23 24 24 … … 32 32 /// Model parameters 33 33 CoreShellCylinderParameters model_pars; 34 } CCoreShellCylinderModel;34 } [PYTHONCLASS]; 35 35 36 36 37 37 static void 38 CCoreShellCylinderModel_dealloc(CCoreShellCylinderModel* self)38 [PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 39 39 { 40 40 self->ob_type->tp_free((PyObject*)self); … … 44 44 45 45 static PyObject * 46 CCoreShellCylinderModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds)46 [PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 47 47 { 48 CCoreShellCylinderModel*self;48 [PYTHONCLASS] *self; 49 49 50 self = ( CCoreShellCylinderModel*)type->tp_alloc(type, 0);50 self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 51 51 52 52 return (PyObject *)self; … … 54 54 55 55 static int 56 CCoreShellCylinderModel_init(CCoreShellCylinderModel*self, PyObject *args, PyObject *kwds)56 [PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 57 57 { 58 58 if (self != NULL) { … … 83 83 } 84 84 85 static PyMemberDef CCoreShellCylinderModel_members[] = {86 {"params", T_OBJECT, offsetof( CCoreShellCylinderModel, params), 0,85 static PyMemberDef [PYTHONCLASS]_members[] = { 86 {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 87 87 "Parameters"}, 88 {"log", T_OBJECT, offsetof( CCoreShellCylinderModel, log), 0,88 {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 89 89 "Log"}, 90 90 {NULL} /* Sentinel */ … … 95 95 @return double 96 96 */ 97 double CCoreShellCylinderModel_readDouble(PyObject *p) {97 double [PYTHONCLASS]_readDouble(PyObject *p) { 98 98 if (PyFloat_Check(p)==1) { 99 99 return (double)(((PyFloatObject *)(p))->ob_fval); … … 113 113 * @return: function value 114 114 */ 115 static PyObject * run( CCoreShellCylinderModel*self, PyObject *args) {115 static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 116 116 double q_value, phi_value; 117 117 PyObject* pars; … … 135 135 // Get input and determine whether we have to supply a 1D or 2D return value. 136 136 if ( !PyArg_ParseTuple(args,"O",&pars) ) { 137 PyErr_SetString( CCoreShellCylinderModelError,138 " CCoreShellCylinderModel.run expects a q value.");137 PyErr_SetString([PYTHONCLASS]Error, 138 "[PYTHONCLASS].run expects a q value."); 139 139 return NULL; 140 140 } … … 146 146 npars = PyList_GET_SIZE(pars); 147 147 if(npars!=2) { 148 PyErr_SetString( CCoreShellCylinderModelError,149 " CCoreShellCylinderModel.run expects a double or a list of dimension 2.");148 PyErr_SetString([PYTHONCLASS]Error, 149 "[PYTHONCLASS].run expects a double or a list of dimension 2."); 150 150 return NULL; 151 151 } 152 152 // We have a vector q, get the q and phi values at which 153 153 // to evaluate I(q,phi) 154 q_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,0));155 phi_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,1));154 q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 155 phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 156 156 // Skip zero 157 157 if (q_value==0) { … … 163 163 164 164 // We have a scalar q, we will evaluate I(q) 165 q_value = CCoreShellCylinderModel_readDouble(pars);165 q_value = [PYTHONCLASS]_readDouble(pars); 166 166 167 167 return Py_BuildValue("d",core_shell_cylinder_analytical_1D(&(self->model_pars),q_value)); … … 174 174 * @return: function value 175 175 */ 176 static PyObject * runXY( CCoreShellCylinderModel*self, PyObject *args) {176 static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 177 177 double qx_value, qy_value; 178 178 PyObject* pars; … … 196 196 // Get input and determine whether we have to supply a 1D or 2D return value. 197 197 if ( !PyArg_ParseTuple(args,"O",&pars) ) { 198 PyErr_SetString( CCoreShellCylinderModelError,199 " CCoreShellCylinderModel.run expects a q value.");198 PyErr_SetString([PYTHONCLASS]Error, 199 "[PYTHONCLASS].run expects a q value."); 200 200 return NULL; 201 201 } … … 207 207 npars = PyList_GET_SIZE(pars); 208 208 if(npars!=2) { 209 PyErr_SetString( CCoreShellCylinderModelError,210 " CCoreShellCylinderModel.run expects a double or a list of dimension 2.");209 PyErr_SetString([PYTHONCLASS]Error, 210 "[PYTHONCLASS].run expects a double or a list of dimension 2."); 211 211 return NULL; 212 212 } 213 213 // We have a vector q, get the qx and qy values at which 214 214 // to evaluate I(qx,qy) 215 qx_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,0));216 qy_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,1));215 qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 216 qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 217 217 return Py_BuildValue("d",core_shell_cylinder_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 218 218 … … 220 220 221 221 // We have a scalar q, we will evaluate I(q) 222 qx_value = CCoreShellCylinderModel_readDouble(pars);222 qx_value = [PYTHONCLASS]_readDouble(pars); 223 223 224 224 return Py_BuildValue("d",core_shell_cylinder_analytical_1D(&(self->model_pars),qx_value)); … … 226 226 } 227 227 228 static PyObject * reset( CCoreShellCylinderModel*self, PyObject *args) {228 static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 229 229 230 230 … … 233 233 234 234 235 static PyMethodDef CCoreShellCylinderModel_methods[] = {235 static PyMethodDef [PYTHONCLASS]_methods[] = { 236 236 {"run", (PyCFunction)run , METH_VARARGS, 237 237 "Evaluate the model at a given Q or Q, phi"}, … … 245 245 }; 246 246 247 static PyTypeObject CCoreShellCylinderModelType = {247 static PyTypeObject [PYTHONCLASS]Type = { 248 248 PyObject_HEAD_INIT(NULL) 249 249 0, /*ob_size*/ 250 " CCoreShellCylinderModel", /*tp_name*/251 sizeof( CCoreShellCylinderModel), /*tp_basicsize*/250 "[PYTHONCLASS]", /*tp_name*/ 251 sizeof([PYTHONCLASS]), /*tp_basicsize*/ 252 252 0, /*tp_itemsize*/ 253 (destructor) CCoreShellCylinderModel_dealloc, /*tp_dealloc*/253 (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 254 254 0, /*tp_print*/ 255 255 0, /*tp_getattr*/ … … 267 267 0, /*tp_as_buffer*/ 268 268 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 269 " CCoreShellCylinderModelobjects", /* tp_doc */269 "[PYTHONCLASS] objects", /* tp_doc */ 270 270 0, /* tp_traverse */ 271 271 0, /* tp_clear */ … … 274 274 0, /* tp_iter */ 275 275 0, /* tp_iternext */ 276 CCoreShellCylinderModel_methods, /* tp_methods */277 CCoreShellCylinderModel_members, /* tp_members */276 [PYTHONCLASS]_methods, /* tp_methods */ 277 [PYTHONCLASS]_members, /* tp_members */ 278 278 0, /* tp_getset */ 279 279 0, /* tp_base */ … … 282 282 0, /* tp_descr_set */ 283 283 0, /* tp_dictoffset */ 284 (initproc) CCoreShellCylinderModel_init, /* tp_init */284 (initproc)[PYTHONCLASS]_init, /* tp_init */ 285 285 0, /* tp_alloc */ 286 CCoreShellCylinderModel_new, /* tp_new */286 [PYTHONCLASS]_new, /* tp_new */ 287 287 }; 288 288 … … 296 296 * @param module: module to add the class to 297 297 */ 298 void add CCoreShellCylinderModel(PyObject *module) {298 void add[PYTHONCLASS](PyObject *module) { 299 299 PyObject *d; 300 300 301 if (PyType_Ready(& CCoreShellCylinderModelType) < 0)301 if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 302 302 return; 303 303 304 Py_INCREF(& CCoreShellCylinderModelType);305 PyModule_AddObject(module, " CCoreShellCylinderModel", (PyObject *)&CCoreShellCylinderModelType);304 Py_INCREF(&[PYTHONCLASS]Type); 305 PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 306 306 307 307 d = PyModule_GetDict(module); 308 CCoreShellCylinderModelError = PyErr_NewException("CCoreShellCylinderModel.error", NULL, NULL);309 PyDict_SetItemString(d, " CCoreShellCylinderModelError", CCoreShellCylinderModelError);310 } 311 308 [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 309 PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 310 } 311
Note: See TracChangeset
for help on using the changeset viewer.