00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "stdlib.h"
00017 #include "PyObjectPlus.h"
00018
00019
00020
00021
00022
00023 PyTypeObject PyObjectPlus::Type = {
00024 PyObject_HEAD_INIT(&PyType_Type)
00025 0,
00026 "PyObjectPlus",
00027 sizeof(PyObjectPlus),
00028 0,
00029
00030 PyDestructor,
00031 0,
00032 __getattr,
00033 __setattr,
00034 0,
00035 __repr,
00036 0,
00037 0,
00038 0,
00039 0,
00040 0,
00041 };
00042
00043
00044
00045
00046 PyMethodDef PyObjectPlus::Methods[] = {
00047 {"isA", (PyCFunction) sPy_isA, Py_NEWARGS},
00048 {NULL, NULL}
00049 };
00050
00051
00052
00053
00054 PyParentObject PyObjectPlus::Parents[] = {&PyObjectPlus::Type, NULL};
00055
00056
00057
00058
00059 PyObject *PyObjectPlus::_getattr(char *attr)
00060 {
00061
00062
00063
00064 return Py_FindMethod(Methods, this, attr);
00065 }
00066
00067 int PyObjectPlus::_setattr(char *attr, PyObject *value)
00068 {
00069
00070 return 1;
00071 }
00072
00073
00074
00075
00076 PyObject *PyObjectPlus::_repr(void)
00077 {
00078 Py_Error(PyExc_SystemError, "Representation not overridden by object.");
00079 }
00080
00081
00082
00083
00084 bool PyObjectPlus::isA(PyTypeObject *T)
00085 {
00086 return isA(T->tp_name);
00087 }
00088
00089
00090 bool PyObjectPlus::isA(const char *mytypename)
00091 {
00092 int i;
00093 PyParentObject P;
00094 PyParentObject *Ps = GetParents();
00095
00096
00097
00098
00099 return false;
00100 }
00101
00102 PyObject *PyObjectPlus::Py_isA(PyObject *args)
00103 {
00104 char *mytypename;
00105 Py_Try(PyArg_ParseTuple(args, "s", &mytypename));
00106 if(isA(mytypename))
00107 {Py_INCREF(Py_True); return Py_True;}
00108 else
00109 {Py_INCREF(Py_False); return Py_False;};
00110 }