1 /*
2  * Author: George V. Neville-Neil
3  */
4 
5 #include "Python.h"
6 
7 /* Our stuff... */
8 #include "timing.h"
9 
10 static PyObject *
start_timing(PyObject * self)11 start_timing(PyObject *self)
12 {
13     Py_INCREF(Py_None);
14     BEGINTIMING;
15     return Py_None;
16 }
17 
18 static PyObject *
finish_timing(PyObject * self)19 finish_timing(PyObject *self)
20 {
21     ENDTIMING
22     Py_INCREF(Py_None);
23     return Py_None;
24 }
25 
26 static PyObject *
seconds(PyObject * self)27 seconds(PyObject *self)
28 {
29     return PyInt_FromLong(TIMINGS);
30 }
31 
32 static PyObject *
milli(PyObject * self)33 milli(PyObject *self)
34 {
35     return PyInt_FromLong(TIMINGMS);
36 }
37 
38 static PyObject *
micro(PyObject * self)39 micro(PyObject *self)
40 {
41     return PyInt_FromLong(TIMINGUS);
42 }
43 
44 
45 static PyMethodDef timing_methods[] = {
46     {"start",   (PyCFunction)start_timing, METH_NOARGS},
47     {"finish",  (PyCFunction)finish_timing, METH_NOARGS},
48     {"seconds", (PyCFunction)seconds, METH_NOARGS},
49     {"milli",   (PyCFunction)milli, METH_NOARGS},
50     {"micro",   (PyCFunction)micro, METH_NOARGS},
51     {NULL,      NULL}
52 };
53 
54 
inittiming(void)55 PyMODINIT_FUNC inittiming(void)
56 {
57     if (PyErr_WarnPy3k("the timing module has been removed in "
58                         "Python 3.0; use time.clock() instead", 2) < 0)
59     return;
60 
61     (void)Py_InitModule("timing", timing_methods);
62 }
63