~jfpacker/pyeigen/bugfixes-0.1

« back to all changes in this revision

Viewing changes to source/vector3f.cpp

  • Committer: Jussi Lepistö
  • Date: 2010-03-17 07:54:55 UTC
  • Revision ID: jussi.lepisto@iki.fi-20100317075455-2fi6jhrevga1nh55
- Cleanup
- setup.py metadata
- Changed a few Vector3f methods to properties

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
#include <Eigen/Array>
6
6
#include <Eigen/Geometry>
7
7
 
 
8
#include "macros.h"
 
9
 
 
10
 
8
11
// Structures
9
12
PyGetSetDef Vector3f_getset[] = {
10
 
        {"x", (getter)Vector3f_getx, (setter)Vector3f_setx, "x", NULL},
11
 
        {"y", (getter)Vector3f_gety, (setter)Vector3f_sety, "y", NULL},
12
 
        {"z", (getter)Vector3f_getz, (setter)Vector3f_setz, "z", NULL},
 
13
        {"x", (getter)Vector3f_get_x, (setter)Vector3f_set_x, "", NULL},
 
14
        {"y", (getter)Vector3f_get_y, (setter)Vector3f_set_y, "", NULL},
 
15
        {"z", (getter)Vector3f_get_z, (setter)Vector3f_set_z, "", NULL},
 
16
 
 
17
        {"norm",                (getter)Vector3f_get_norm,                      NULL, "", NULL},
 
18
        {"norm_sq",             (getter)Vector3f_get_norm_sq,           NULL, "", NULL},
 
19
        {"normalized",  (getter)Vector3f_get_normalized,        NULL, "", NULL},
 
20
 
13
21
        {NULL}
14
22
};
15
23
 
30
38
        {"cross",                       (PyCFunction)Vector3f_cross,            METH_O,
31
39
         ""},
32
40
 
33
 
        {"norm",                        (PyCFunction)Vector3f_norm,                     METH_NOARGS,
34
 
         ""},
35
 
        {"norm_sq",                     (PyCFunction)Vector3f_norm_sq,          METH_NOARGS,
36
 
         ""},
37
 
        {"normalized",          (PyCFunction)Vector3f_normalized,       METH_NOARGS,
38
 
         ""},
39
41
        {"normalize",           (PyCFunction)Vector3f_normalize,        METH_NOARGS,
40
42
         ""},
41
43
 
89
91
        "pyeigen.Vector3f",                             // tp_name
90
92
        sizeof(Vector3f),                               // tp_basicsize
91
93
        0,                                                              // tp_itemsize
92
 
        (destructor)Vector3f_dealloc,   // tp_dealloc
 
94
        0,                                                              // tp_dealloc
93
95
        0,                                                              // tp_print
94
96
        0,                                                              // tp_getattr
95
97
        0,                                                              // tp_setattr
143
145
}
144
146
 
145
147
// Construction
146
 
PyObject* Vector3f_new(PyTypeObject* type, PyObject* args,
147
 
        PyObject* kwds)
 
148
PyObject* Vector3f_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
148
149
{
149
 
        Vector3f* self = (Vector3f*)type->tp_alloc(type, 0);
150
 
        return (PyObject*)self;
 
150
        return type->tp_alloc(type, 0);
151
151
}
152
152
 
153
153
int Vector3f_init(Vector3f* self, PyObject* args, PyObject* kwds)
158
158
        return 0;
159
159
}
160
160
 
161
 
void Vector3f_dealloc(Vector3f* self)
162
 
{
163
 
        self->ob_type->tp_free((PyObject*)self);
164
 
}
165
 
 
166
161
// Properties
167
 
PyObject* Vector3f_getx(Vector3f* self, void* closure)
 
162
PyObject* Vector3f_get_x(Vector3f* self, void* closure)
168
163
{
169
164
        return PyFloat_FromDouble(self->vector.x());
170
165
}
171
166
 
172
 
int Vector3f_setx(Vector3f* self, PyObject* value, void* closure)
 
167
int Vector3f_set_x(Vector3f* self, PyObject* value, void* closure)
173
168
{
174
169
        self->vector.x() = (float)PyFloat_AsDouble(value);
175
170
        if(PyErr_Occurred() != NULL)
178
173
        return 0;
179
174
}
180
175
 
181
 
PyObject* Vector3f_gety(Vector3f* self, void* closure)
 
176
PyObject* Vector3f_get_y(Vector3f* self, void* closure)
182
177
{
183
178
        return PyFloat_FromDouble(self->vector.y());
184
179
}
185
180
 
186
 
int Vector3f_sety(Vector3f* self, PyObject* value, void* closure)
 
181
int Vector3f_set_y(Vector3f* self, PyObject* value, void* closure)
187
182
{
188
183
        self->vector.y() = (float)PyFloat_AsDouble(value);
189
184
        if(PyErr_Occurred() != NULL)
192
187
        return 0;
193
188
}
194
189
 
195
 
PyObject* Vector3f_getz(Vector3f* self, void* closure)
 
190
PyObject* Vector3f_get_z(Vector3f* self, void* closure)
196
191
{
197
192
        return PyFloat_FromDouble(self->vector.z());
198
193
}
199
194
 
200
 
int Vector3f_setz(Vector3f* self, PyObject* value, void* closure)
 
195
int Vector3f_set_z(Vector3f* self, PyObject* value, void* closure)
201
196
{
202
197
        self->vector.z() = (float)PyFloat_AsDouble(value);
203
198
        if(PyErr_Occurred() != NULL)
206
201
        return 0;
207
202
}
208
203
 
 
204
PyObject* Vector3f_get_norm(Vector3f* self, void* closure)
 
205
{
 
206
        return PyFloat_FromDouble(self->vector.norm());
 
207
}
 
208
 
 
209
PyObject* Vector3f_get_norm_sq(Vector3f* self, void* closure)
 
210
{
 
211
        return PyFloat_FromDouble(self->vector.squaredNorm());
 
212
}
 
213
 
 
214
PyObject* Vector3f_get_normalized(Vector3f* self, void* closure)
 
215
{
 
216
        Vector3f* result = PyObject_New(Vector3f, &Vector3fType);
 
217
        if(result != NULL)
 
218
                result->vector = self->vector.normalized();
 
219
 
 
220
        return (PyObject*)result;
 
221
}
 
222
 
209
223
// Methods
210
224
PyObject* Vector3f_set(Vector3f* self, PyObject* args)
211
225
{
275
289
        return (PyObject*)result;
276
290
}
277
291
 
278
 
PyObject* Vector3f_norm(Vector3f* self, PyObject* noargs)
279
 
{
280
 
        return PyFloat_FromDouble(self->vector.norm());
281
 
}
282
 
 
283
 
PyObject* Vector3f_norm_sq(Vector3f* self, PyObject* noargs)
284
 
{
285
 
        return PyFloat_FromDouble(self->vector.squaredNorm());
286
 
}
287
 
 
288
 
PyObject* Vector3f_normalized(Vector3f* self, PyObject* noargs)
289
 
{
290
 
        Vector3f* result = PyObject_New(Vector3f, &Vector3fType);
291
 
        if(result != NULL)
292
 
                result->vector = self->vector.normalized();
293
 
 
294
 
        return (PyObject*)result;
295
 
}
296
 
 
297
292
PyObject* Vector3f_normalize(Vector3f* self, PyObject* noargs)
298
293
{
299
294
        self->vector.normalize();