MCPcopy Create free account
hub / github.com/NanoComp/meep / vec2py

Function vec2py

python/typemap_utils.cpp:127–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127static PyObject *vec2py(const meep::vec &v, bool newobj = false) {
128 SWIG_PYTHON_THREAD_SCOPED_BLOCK;
129 // Return value: New reference
130 double x = 0, y = 0, z = 0;
131
132 switch (v.dim) {
133 case meep::D1: z = v.z(); break;
134 case meep::D2:
135 x = v.x();
136 y = v.y();
137 break;
138 case meep::D3:
139 x = v.x();
140 y = v.y();
141 z = v.z();
142 break;
143 case meep::Dcyl:
144 x = v.r();
145 z = v.z();
146 break;
147 }
148
149 if (newobj) {
150 PyObject *v3_class = py_vector3_object();
151 PyObject *args = Py_BuildValue("(d,d,d)", x, y, z);
152 PyObject *res = PyObject_Call(v3_class, args, NULL);
153
154 Py_DECREF(args);
155
156 return res;
157 }
158 else {
159 if (py_callback_v3 == NULL) {
160 PyObject *v3_class = py_vector3_object();
161 PyObject *args = PyTuple_New(0);
162 py_callback_v3 = PyObject_Call(v3_class, args, NULL);
163
164 Py_DECREF(args);
165 }
166
167 PyObject *pyx = PyFloat_FromDouble(x);
168 PyObject *pyy = PyFloat_FromDouble(y);
169 PyObject *pyz = PyFloat_FromDouble(z);
170
171 PyObject_SetAttrString(py_callback_v3, "x", pyx);
172 PyObject_SetAttrString(py_callback_v3, "y", pyy);
173 PyObject_SetAttrString(py_callback_v3, "z", pyz);
174
175 Py_DECREF(pyx);
176 Py_DECREF(pyy);
177 Py_DECREF(pyz);
178
179 Py_INCREF(py_callback_v3);
180 return py_callback_v3;
181 };
182}
183
184static void py_user_material_func_wrap(vector3 x, void *user_data, medium_struct *medium) {

Callers 3

py_epsilon_func_wrapFunction · 0.85
susceptibility_to_py_objFunction · 0.85

Calls 5

py_vector3_objectFunction · 0.85
zMethod · 0.45
xMethod · 0.45
yMethod · 0.45
rMethod · 0.45

Tested by

no test coverage detected