|
@@ -61,6 +61,14 @@ static PyObject* RRClass_toWire(s_RRClass* self, PyObject* args);
|
|
|
static PyObject* RRClass_getCode(s_RRClass* self);
|
|
|
static PyObject* RRClass_richcmp(s_RRClass* self, s_RRClass* other, int op);
|
|
|
|
|
|
+// Static function for direct class creation
|
|
|
+static PyObject* RRClass_IN(s_RRClass *self);
|
|
|
+static PyObject* RRClass_CH(s_RRClass *self);
|
|
|
+static PyObject* RRClass_HS(s_RRClass *self);
|
|
|
+static PyObject* RRClass_NONE(s_RRClass *self);
|
|
|
+static PyObject* RRClass_ANY(s_RRClass *self);
|
|
|
+
|
|
|
+
|
|
|
// This list contains the actual set of functions we have in
|
|
|
// python. Each entry has
|
|
|
// 1. Python method name
|
|
@@ -79,6 +87,11 @@ static PyMethodDef RRClass_methods[] = {
|
|
|
"returned" },
|
|
|
{ "get_code", (PyCFunction)RRClass_getCode, METH_NOARGS,
|
|
|
"Returns the class code as an integer" },
|
|
|
+ { "IN", (PyCFunction)RRClass_IN, METH_NOARGS | METH_STATIC, "Creates an IN RRClass" },
|
|
|
+ { "CH", (PyCFunction)RRClass_CH, METH_NOARGS | METH_STATIC, "Creates a CH RRClass" },
|
|
|
+ { "HS", (PyCFunction)RRClass_HS, METH_NOARGS | METH_STATIC, "Creates an HS RRClass" },
|
|
|
+ { "NONE", (PyCFunction)RRClass_NONE, METH_NOARGS | METH_STATIC, "Creates a NONE RRClass" },
|
|
|
+ { "ANY", (PyCFunction)RRClass_ANY, METH_NOARGS | METH_STATIC, "Creates an ANY RRClass" },
|
|
|
{ NULL, NULL, 0, NULL }
|
|
|
};
|
|
|
|
|
@@ -289,6 +302,71 @@ RRClass_richcmp(s_RRClass* self, s_RRClass* other, int op)
|
|
|
else
|
|
|
Py_RETURN_FALSE;
|
|
|
}
|
|
|
+
|
|
|
+static PyObject* RRClass_IN(s_RRClass *self UNUSED_PARAM)
|
|
|
+{
|
|
|
+ s_RRClass* ret = PyObject_New(s_RRClass, &rrclass_type);
|
|
|
+ if (ret != NULL) {
|
|
|
+ ret->rrclass = new RRClass(RRClass::IN());
|
|
|
+ if (ret->rrclass == NULL) {
|
|
|
+ Py_DECREF(ret);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (PyObject*) ret;
|
|
|
+}
|
|
|
+
|
|
|
+static PyObject* RRClass_CH(s_RRClass *self UNUSED_PARAM)
|
|
|
+{
|
|
|
+ s_RRClass* ret = PyObject_New(s_RRClass, &rrclass_type);
|
|
|
+ if (ret != NULL) {
|
|
|
+ ret->rrclass = new RRClass(RRClass::CH());
|
|
|
+ if (ret->rrclass == NULL) {
|
|
|
+ Py_DECREF(ret);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (PyObject*) ret;
|
|
|
+}
|
|
|
+
|
|
|
+static PyObject* RRClass_HS(s_RRClass *self UNUSED_PARAM)
|
|
|
+{
|
|
|
+ s_RRClass* ret = PyObject_New(s_RRClass, &rrclass_type);
|
|
|
+ if (ret != NULL) {
|
|
|
+ ret->rrclass = new RRClass(RRClass::HS());
|
|
|
+ if (ret->rrclass == NULL) {
|
|
|
+ Py_DECREF(ret);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (PyObject*) ret;
|
|
|
+}
|
|
|
+
|
|
|
+static PyObject* RRClass_NONE(s_RRClass *self UNUSED_PARAM)
|
|
|
+{
|
|
|
+ s_RRClass* ret = PyObject_New(s_RRClass, &rrclass_type);
|
|
|
+ if (ret != NULL) {
|
|
|
+ ret->rrclass = new RRClass(RRClass::NONE());
|
|
|
+ if (ret->rrclass == NULL) {
|
|
|
+ Py_DECREF(ret);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (PyObject*) ret;
|
|
|
+}
|
|
|
+
|
|
|
+static PyObject* RRClass_ANY(s_RRClass *self UNUSED_PARAM)
|
|
|
+{
|
|
|
+ s_RRClass* ret = PyObject_New(s_RRClass, &rrclass_type);
|
|
|
+ if (ret != NULL) {
|
|
|
+ ret->rrclass = new RRClass(RRClass::ANY());
|
|
|
+ if (ret->rrclass == NULL) {
|
|
|
+ Py_DECREF(ret);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (PyObject*) ret;
|
|
|
+}
|
|
|
// end of RRClass
|
|
|
|
|
|
|