Changeset b8080e1 in sasview for src/sas/sascalc/calculator/c_extensions/sld2i_module.c
- Timestamp:
- Aug 29, 2018 10:01:23 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 9463ca2
- Parents:
- ce30949
- git-author:
- Piotr Rozyczko <rozyczko@…> (08/29/18 09:59:56)
- git-committer:
- Piotr Rozyczko <rozyczko@…> (08/29/18 10:01:23)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/c_extensions/sld2i_module.c
rf54e82cf rb8080e1 35 35 void 36 36 del_sld2i(PyObject *obj){ 37 #if PY_MAJOR_VERSION < 3 38 GenI* sld2i = (GenI *)obj; 39 #else 37 40 GenI* sld2i = (GenI *)(PyCapsule_GetPointer(obj, "GenI")); 41 #endif 38 42 PyMem_Free((void *)sld2i); 39 43 } … … 51 55 PyObject *mz_val_obj; 52 56 PyObject *vol_pix_obj; 53 Py_ssize_t n_x; 54 //PyObject rlimit_obj; 55 //PyObject npoints_obj; 56 //PyObject nrbins_obj; 57 //PyObject nphibins_obj; 58 int n_pix; 57 Py_ssize_t n_x, n_y, n_z, n_sld, n_mx, n_my, n_mz, n_vol_pix; 58 int is_avg; 59 59 double* x_val; 60 60 double* y_val; … … 68 68 double outspin; 69 69 double stheta; 70 GenI *sld2i; 71 72 if (!PyArg_ParseTuple(args, "iOOOOOOOOddd", &n_pix, &x_val_obj, &y_val_obj, &z_val_obj, &sldn_val_obj, &mx_val_obj, &my_val_obj, &mz_val_obj, &vol_pix_obj, &inspin, &outspin, &stheta)) return NULL; 73 OUTVECTOR(x_val_obj, x_val, n_x); 74 OUTVECTOR(y_val_obj, y_val, n_x); 75 OUTVECTOR(z_val_obj, z_val, n_x); 76 OUTVECTOR(sldn_val_obj, sldn_val, n_x); 77 OUTVECTOR(mx_val_obj, mx_val, n_x); 78 OUTVECTOR(my_val_obj, my_val, n_x); 79 OUTVECTOR(mz_val_obj, mz_val, n_x); 80 OUTVECTOR(vol_pix_obj, vol_pix, n_x); 81 sld2i = PyMem_Malloc(sizeof(GenI)); 70 PyObject *obj; 71 GenI* sld2i; 72 73 //printf("new GenI\n"); 74 if (!PyArg_ParseTuple(args, "iOOOOOOOOddd", &is_avg, &x_val_obj, &y_val_obj, &z_val_obj, &sldn_val_obj, &mx_val_obj, &my_val_obj, &mz_val_obj, &vol_pix_obj, &inspin, &outspin, &stheta)) return NULL; 75 INVECTOR(x_val_obj, x_val, n_x); 76 INVECTOR(y_val_obj, y_val, n_y); 77 INVECTOR(z_val_obj, z_val, n_z); 78 INVECTOR(sldn_val_obj, sldn_val, n_sld); 79 INVECTOR(mx_val_obj, mx_val, n_mx); 80 INVECTOR(my_val_obj, my_val, n_my); 81 INVECTOR(mz_val_obj, mz_val, n_mz); 82 INVECTOR(vol_pix_obj, vol_pix, n_vol_pix); 83 sld2i = PyMem_Malloc(sizeof(GenI)); 84 //printf("sldi:%p\n", sld2i); 82 85 if (sld2i != NULL) { 83 initGenI(sld2i, n_pix,x_val,y_val,z_val,sldn_val,mx_val,my_val,mz_val,vol_pix,inspin,outspin,stheta);86 initGenI(sld2i,is_avg,(int)n_x,x_val,y_val,z_val,sldn_val,mx_val,my_val,mz_val,vol_pix,inspin,outspin,stheta); 84 87 } 85 return PyCapsule_New(sld2i, "GenI", del_sld2i); 88 obj = PyCapsule_New(sld2i, "GenI", del_sld2i); 89 //printf("constructed %p\n", obj); 90 return obj; 86 91 } 87 92 … … 90 95 */ 91 96 PyObject * genicom_inputXY(PyObject *self, PyObject *args) { 92 int npoints;97 PyObject *gen_obj; 93 98 PyObject *qx_obj; 99 PyObject *qy_obj; 100 PyObject *I_out_obj; 101 Py_ssize_t n_qx, n_qy, n_out; 94 102 double *qx; 95 PyObject *qy_obj;96 103 double *qy; 97 PyObject *I_out_obj;98 Py_ssize_t n_out;99 104 double *I_out; 100 PyObject *gen_obj; 101 GenI *sld2i; 102 103 if (!PyArg_ParseTuple(args, "OiOOO", &gen_obj, &npoints, &qx_obj, &qy_obj, &I_out_obj)) return NULL; 104 OUTVECTOR(qx_obj, qx, n_out); 105 OUTVECTOR(qy_obj, qy, n_out); 105 GenI* sld2i; 106 107 //printf("in genicom_inputXY\n"); 108 if (!PyArg_ParseTuple(args, "OOOO", &gen_obj, &qx_obj, &qy_obj, &I_out_obj)) return NULL; 109 sld2i = (GenI *)PyCapsule_GetPointer(gen_obj, "GenI"); 110 INVECTOR(qx_obj, qx, n_qx); 111 INVECTOR(qy_obj, qy, n_qy); 106 112 OUTVECTOR(I_out_obj, I_out, n_out); 113 //printf("qx, qy, I_out: %d %d %d, %d %d %d\n", qx, qy, I_out, n_qx, n_qy, n_out); 107 114 108 115 // Sanity check 109 //if(n_in!=n_out) return Py_BuildValue("i",-1); 110 111 // Set the array pointers 112 sld2i = (GenI *)PyCapsule_GetPointer(gen_obj, "GenI"); 113 114 genicomXY(sld2i, npoints, qx, qy, I_out); 116 //if(n_q!=n_out) return Py_BuildValue("i",-1); 117 118 genicomXY(sld2i, (int)n_qx, qx, qy, I_out); 119 //printf("done calc\n"); 115 120 //return PyCObject_FromVoidPtr(s, del_genicom); 116 121 return Py_BuildValue("i",1); … … 121 126 */ 122 127 PyObject * genicom_input(PyObject *self, PyObject *args) { 123 int npoints;128 PyObject *gen_obj; 124 129 PyObject *q_obj; 130 PyObject *I_out_obj; 131 Py_ssize_t n_q, n_out; 125 132 double *q; 126 PyObject *I_out_obj;127 Py_ssize_t n_out;128 133 double *I_out; 129 PyObject *gen_obj;130 134 GenI *sld2i; 131 135 132 if (!PyArg_ParseTuple(args, "OiOO", &gen_obj, &npoints, &q_obj, &I_out_obj)) return NULL; 133 OUTVECTOR(q_obj, q, n_out); 136 if (!PyArg_ParseTuple(args, "OOO", &gen_obj, &q_obj, &I_out_obj)) return NULL; 137 sld2i = (GenI *)PyCapsule_GetPointer(gen_obj, "GenI"); 138 INVECTOR(q_obj, q, n_q); 134 139 OUTVECTOR(I_out_obj, I_out, n_out); 135 140 136 141 // Sanity check 137 //if(n_in!=n_out) return Py_BuildValue("i",-1); 138 139 // Set the array pointers 140 sld2i = (GenI *)PyCapsule_GetPointer(gen_obj, "GenI"); 141 142 genicom(sld2i, npoints, q, I_out); 143 //return PyCObject_FromVoidPtr(s, del_genicom); 142 //if (n_q!=n_out) return Py_BuildValue("i",-1); 143 144 genicom(sld2i, (int)n_q, q, I_out); 144 145 return Py_BuildValue("i",1); 145 146 }
Note: See TracChangeset
for help on using the changeset viewer.