~jfpacker/pyeigen/bugfixes-0.1

« back to all changes in this revision

Viewing changes to source/vector/vector4f.h

  • Committer: Jussi Lepistö
  • Date: 2010-03-20 00:16:13 UTC
  • Revision ID: jussi.lepisto@iki.fi-20100320001613-f08k4wgogq8p7ogf
- Directory structure reorganization
- Matrix inverse & transpose
- Class methods for creating matrices and vectors
- Matrix * vector multiply
- Fix repr for matrix classes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2010 Jussi Lepisto
 
2
 
 
3
#ifndef VECTOR4F_H
 
4
#define VECTOR4F_H
 
5
 
 
6
#include <Python.h>
 
7
#include <Eigen/Core>
 
8
 
 
9
 
 
10
typedef struct
 
11
{
 
12
        PyObject_HEAD
 
13
        Eigen::Vector4f vector;
 
14
} Vector4f;
 
15
 
 
16
extern PyTypeObject Vector4fType;
 
17
 
 
18
// Helpers
 
19
int Vector4f_Check(PyObject* p);
 
20
 
 
21
// Construction
 
22
PyObject* Vector4f_new(PyTypeObject* type, PyObject* args, PyObject* kwds);
 
23
int Vector4f_init(Vector4f* self, PyObject* args, PyObject* kwds);
 
24
void Vector4f_dealloc(Vector4f* self);
 
25
 
 
26
// Properties
 
27
PyObject* Vector4f_get_x(Vector4f* self, void* closure);
 
28
int Vector4f_set_x(Vector4f* self, PyObject* value, void* closure);
 
29
PyObject* Vector4f_get_y(Vector4f* self, void* closure);
 
30
int Vector4f_set_y(Vector4f* self, PyObject* value, void* closure);
 
31
PyObject* Vector4f_get_z(Vector4f* self, void* closure);
 
32
int Vector4f_set_z(Vector4f* self, PyObject* value, void* closure);
 
33
PyObject* Vector4f_get_w(Vector4f* self, void* closure);
 
34
int Vector4f_set_w(Vector4f* self, PyObject* value, void* closure);
 
35
 
 
36
PyObject* Vector4f_get_norm(Vector4f* self, void* closure);
 
37
PyObject* Vector4f_get_norm_sq(Vector4f* self, void* closure);
 
38
PyObject* Vector4f_get_normalized(Vector4f* self, void* closure);
 
39
 
 
40
// Methods
 
41
PyObject* Vector4f_zero(PyTypeObject* cls, PyObject* args);
 
42
PyObject* Vector4f_ones(PyTypeObject* cls, PyObject* args);
 
43
PyObject* Vector4f_constant(PyTypeObject* cls, PyObject* args);
 
44
PyObject* Vector4f_identity(PyTypeObject* cls, PyObject* args);
 
45
PyObject* Vector4f_random(PyTypeObject* cls, PyObject* args);
 
46
PyObject* Vector4f_unit_x(PyTypeObject* cls, PyObject* args);
 
47
PyObject* Vector4f_unit_y(PyTypeObject* cls, PyObject* args);
 
48
PyObject* Vector4f_unit_z(PyTypeObject* cls, PyObject* args);
 
49
PyObject* Vector4f_unit_w(PyTypeObject* cls, PyObject* args);
 
50
 
 
51
PyObject* Vector4f_set(Vector4f* self, PyObject* args);
 
52
PyObject* Vector4f_set_zero(Vector4f* self, PyObject* noargs);
 
53
PyObject* Vector4f_set_ones(Vector4f* self, PyObject* noargs);
 
54
PyObject* Vector4f_set_constant(Vector4f* self, PyObject* args);
 
55
PyObject* Vector4f_set_random(Vector4f* self, PyObject* noargs);
 
56
 
 
57
PyObject* Vector4f_dot(Vector4f* self, PyObject* other);
 
58
 
 
59
PyObject* Vector4f_normalize(Vector4f* self, PyObject* noargs);
 
60
 
 
61
// Number methods
 
62
PyObject* Vector4f_add(PyObject* o1, PyObject* o2);
 
63
PyObject* Vector4f_subtract(PyObject* o1, PyObject* o2);
 
64
PyObject* Vector4f_multiply(PyObject* o1, PyObject* o2);
 
65
PyObject* Vector4f_divide(PyObject* o1, PyObject* o2);
 
66
PyObject* Vector4f_negative(PyObject* o);
 
67
PyObject* Vector4f_inplace_add(PyObject* o1, PyObject* o2);
 
68
PyObject* Vector4f_inplace_subtract(PyObject* o1, PyObject* o2);
 
69
PyObject* Vector4f_inplace_multiply(PyObject* o1, PyObject* o2);
 
70
PyObject* Vector4f_inplace_divide(PyObject* o1, PyObject* o2);
 
71
 
 
72
// Sequence methods
 
73
Py_ssize_t Vector4f_length(Vector4f* self);
 
74
PyObject* Vector4f_item(Vector4f* self, Py_ssize_t index);
 
75
PyObject* Vector4f_slice(Vector4f* self, Py_ssize_t index1,
 
76
        Py_ssize_t index2);
 
77
int Vector4f_ass_item(Vector4f* self, Py_ssize_t index, PyObject* value);
 
78
int Vector4f_ass_slice(Vector4f* self, Py_ssize_t index1, Py_ssize_t index2,
 
79
        PyObject* value);
 
80
 
 
81
// Special methods
 
82
PyObject* Vector4f_repr(Vector4f* self);
 
83
 
 
84
#endif