symbian-qemu-0.9.1-12/python-2.6.1/Doc/includes/shoddy.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #include <Python.h>
       
     2 
       
     3 typedef struct {
       
     4     PyListObject list;
       
     5     int state;
       
     6 } Shoddy;
       
     7 
       
     8 
       
     9 static PyObject *
       
    10 Shoddy_increment(Shoddy *self, PyObject *unused)
       
    11 {
       
    12     self->state++;
       
    13     return PyInt_FromLong(self->state);
       
    14 }
       
    15 
       
    16 
       
    17 static PyMethodDef Shoddy_methods[] = {
       
    18     {"increment", (PyCFunction)Shoddy_increment, METH_NOARGS,
       
    19      PyDoc_STR("increment state counter")},
       
    20     {NULL,	NULL},
       
    21 };
       
    22 
       
    23 static int
       
    24 Shoddy_init(Shoddy *self, PyObject *args, PyObject *kwds)
       
    25 {
       
    26     if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
       
    27         return -1;
       
    28     self->state = 0;
       
    29     return 0;
       
    30 }
       
    31 
       
    32 
       
    33 static PyTypeObject ShoddyType = {
       
    34     PyObject_HEAD_INIT(NULL)
       
    35     0,                       /* ob_size */
       
    36     "shoddy.Shoddy",         /* tp_name */
       
    37     sizeof(Shoddy),          /* tp_basicsize */
       
    38     0,                       /* tp_itemsize */
       
    39     0,                       /* tp_dealloc */
       
    40     0,                       /* tp_print */
       
    41     0,                       /* tp_getattr */
       
    42     0,                       /* tp_setattr */
       
    43     0,                       /* tp_compare */
       
    44     0,                       /* tp_repr */
       
    45     0,                       /* tp_as_number */
       
    46     0,                       /* tp_as_sequence */
       
    47     0,                       /* tp_as_mapping */
       
    48     0,                       /* tp_hash */
       
    49     0,                       /* tp_call */
       
    50     0,                       /* tp_str */
       
    51     0,                       /* tp_getattro */
       
    52     0,                       /* tp_setattro */
       
    53     0,                       /* tp_as_buffer */
       
    54     Py_TPFLAGS_DEFAULT |
       
    55       Py_TPFLAGS_BASETYPE,   /* tp_flags */
       
    56     0,                       /* tp_doc */
       
    57     0,                       /* tp_traverse */
       
    58     0,                       /* tp_clear */
       
    59     0,                       /* tp_richcompare */
       
    60     0,                       /* tp_weaklistoffset */
       
    61     0,                       /* tp_iter */
       
    62     0,                       /* tp_iternext */
       
    63     Shoddy_methods,          /* tp_methods */
       
    64     0,                       /* tp_members */
       
    65     0,                       /* tp_getset */
       
    66     0,                       /* tp_base */
       
    67     0,                       /* tp_dict */
       
    68     0,                       /* tp_descr_get */
       
    69     0,                       /* tp_descr_set */
       
    70     0,                       /* tp_dictoffset */
       
    71     (initproc)Shoddy_init,   /* tp_init */
       
    72     0,                       /* tp_alloc */
       
    73     0,                       /* tp_new */
       
    74 };
       
    75 
       
    76 PyMODINIT_FUNC
       
    77 initshoddy(void)
       
    78 {
       
    79     PyObject *m;
       
    80 
       
    81     ShoddyType.tp_base = &PyList_Type;
       
    82     if (PyType_Ready(&ShoddyType) < 0)
       
    83         return;
       
    84 
       
    85     m = Py_InitModule3("shoddy", NULL, "Shoddy module");
       
    86     if (m == NULL)
       
    87         return;
       
    88 
       
    89     Py_INCREF(&ShoddyType);
       
    90     PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType);
       
    91 }