
extern PyTypeObject PyCode_Type;
extern PyTypeObject PyDictIter_Type;
extern PyTypeObject PyFrame_Type;

#include "header-py.h"	/* XXX debug only */
#include "rpmal-py.h"	/* XXX debug only */
#include "rpmds-py.h"	/* XXX debug only */
#include "rpmfd-py.h"	/* XXX debug only */
#include "rpmfi-py.h"	/* XXX debug only */
#include "rpmmi-py.h"	/* XXX debug only */
#include "rpmps-py.h"	/* XXX debug only */
#include "rpmmacro-py.h"	/* XXX debug only */
#include "rpmte-py.h"	/* XXX debug only */
#include "rpmts-py.h"	/* XXX debug only */

/**
 */
static const char * lbl(void * s)
{
    PyObject * o = s;

    if (o == NULL)	return "null";

    if (o == Py_None)	return "None";


    if (o->ob_type == &PyType_Type)	return o->ob_type->tp_name;

    if (o->ob_type == &PyBaseObject_Type)	return "BaseObj";
    if (o->ob_type == &PyBuffer_Type)	return "Buffer";
    if (o->ob_type == &PyCFunction_Type)	return "CFunction";
    if (o->ob_type == &PyCObject_Type)	return "CObject";
    if (o->ob_type == &PyCell_Type)	return "Cell";
    if (o->ob_type == &PyClass_Type)	return "Class";
    if (o->ob_type == &PyClassMethod_Type)	return "ClassMethod";
    if (o->ob_type == &PyStaticMethod_Type)	return "StaticMethod";
    if (o->ob_type == &PyCode_Type)	return "Code";
    if (o->ob_type == &PyComplex_Type)	return "Complex";
    if (o->ob_type == &PyDict_Type)	return "Dict";
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 4
    if (o->ob_type == &PyDictIter_Type)	return "DictIter";
#endif
    if (o->ob_type == &PyFile_Type)	return "File";
    if (o->ob_type == &PyFloat_Type)	return "Float";
    if (o->ob_type == &PyFrame_Type)	return "Frame";
    if (o->ob_type == &PyFunction_Type)	return "Function";
    if (o->ob_type == &PyInstance_Type)	return "Instance";
    if (o->ob_type == &PyInt_Type)	return "Int";
    if (o->ob_type == &PyList_Type)	return "List";
    if (o->ob_type == &PyLong_Type)	return "Long";
    if (o->ob_type == &PyMethod_Type)	return "Method";
    if (o->ob_type == &PyWrapperDescr_Type)	return "WrapperDescr";
    if (o->ob_type == &PyProperty_Type)	return "Property";
    if (o->ob_type == &PyModule_Type)	return "Module";
    if (o->ob_type == &PyRange_Type)	return "Range";
    if (o->ob_type == &PySeqIter_Type)	return "SeqIter";
    if (o->ob_type == &PyCallIter_Type)	return "CallIter";
    if (o->ob_type == &PySlice_Type)	return "Slice";
    if (o->ob_type == &PyString_Type)	return "String";
    if (o->ob_type == &PySuper_Type)	return "Super";
    if (o->ob_type == &PyTuple_Type)	return "Tuple";
    if (o->ob_type == &PyType_Type)	return "Type";
    if (o->ob_type == &PyUnicode_Type)	return "Unicode";

    if (o->ob_type == &hdr_Type)	return "hdr";
    if (o->ob_type == &rpmal_Type)	return "rpmal";
    if (o->ob_type == &rpmds_Type)	return "rpmds";
    if (o->ob_type == &rpmfd_Type)	return "rpmfd";
    if (o->ob_type == &rpmfi_Type)	return "rpmfi";
    if (o->ob_type == &rpmfts_Type)	return "rpmfts";
    if (o->ob_type == &rpmmi_Type)	return "rpmmi";
    if (o->ob_type == &rpmps_Type)	return "rpmps";
    if (o->ob_type == &rpmte_Type)	return "rpmte";
    if (o->ob_type == &rpmts_Type)	return "rpmts";

    return "Unknown";
}
