svn commit: samba r26567 - in branches/SAMBA_4_0: . source/lib/ldb source/lib/ldb/tests/python

jelmer at samba.org jelmer at samba.org
Sat Dec 22 14:28:48 GMT 2007


Author: jelmer
Date: 2007-12-22 14:28:45 +0000 (Sat, 22 Dec 2007)
New Revision: 26567

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26567

Log:
Allow registering new ldb modules from python.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/ldb/ldb.i
   branches/SAMBA_4_0/source/lib/ldb/ldb.py
   branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c
   branches/SAMBA_4_0/source/lib/ldb/tests/python/api.py


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/ldb/ldb.i
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb.i	2007-12-22 05:11:21 UTC (rev 26566)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb.i	2007-12-22 14:28:45 UTC (rev 26567)
@@ -34,6 +34,7 @@
 #include "talloc.h"
 #include "ldb.h"
 #include "ldb_errors.h"
+#include "ldb_private.h"
 
 typedef struct ldb_message ldb_msg;
 typedef struct ldb_context ldb;
@@ -425,16 +426,18 @@
  * Wrap ldb functions 
  */
 
+
+%typemap(out) ldb_error {
+    if ($1 != LDB_SUCCESS) {
+        PyErr_SetObject(PyExc_LdbError, Py_BuildValue("(i,s)", $1, ldb_strerror($1)));
+        SWIG_fail;
+    }
+    $result = Py_None;
+};
+
 %rename(Ldb) ldb_context;
 /* Top-level ldb operations */
 typedef struct ldb_context {
-    %typemap(out) ldb_error {
-        if ($1 != LDB_SUCCESS) {
-            PyErr_SetObject(PyExc_LdbError, Py_BuildValue("(i,s)", $1, ldb_strerror($1)));
-            SWIG_fail;
-        }
-        $result = Py_None;
-    };
     %extend {
         ldb(const char *url=NULL, unsigned int flags = 0, 
             const char *options[] = NULL)
@@ -572,3 +575,12 @@
 
 %rename(string_to_time) ldb_string_to_time;
 time_t ldb_string_to_time(const char *s);
+
+%typemap(in) const struct ldb_module_ops * {
+    $1 = talloc_zero(talloc_autofree_context(), struct ldb_module_ops);
+
+    $1->name = PyObject_GetAttrString($input, "name");
+}
+
+%rename(register_module) ldb_register_module;
+ldb_error ldb_register_module(const struct ldb_module_ops *);

Modified: branches/SAMBA_4_0/source/lib/ldb/ldb.py
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb.py	2007-12-22 05:11:21 UTC (rev 26566)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb.py	2007-12-22 14:28:45 UTC (rev 26567)
@@ -195,5 +195,6 @@
 valid_attr_name = _ldb.valid_attr_name
 timestring = _ldb.timestring
 string_to_time = _ldb.string_to_time
+register_module = _ldb.register_module
 
 

Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c	2007-12-22 05:11:21 UTC (rev 26566)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_wrap.c	2007-12-22 14:28:45 UTC (rev 26567)
@@ -2467,20 +2467,21 @@
 #define SWIGTYPE_p_ldb_ldif swig_types[5]
 #define SWIGTYPE_p_ldb_message swig_types[6]
 #define SWIGTYPE_p_ldb_message_element swig_types[7]
-#define SWIGTYPE_p_ldb_result swig_types[8]
-#define SWIGTYPE_p_long_long swig_types[9]
-#define SWIGTYPE_p_p_char swig_types[10]
-#define SWIGTYPE_p_p_ldb_result swig_types[11]
-#define SWIGTYPE_p_short swig_types[12]
-#define SWIGTYPE_p_signed_char swig_types[13]
-#define SWIGTYPE_p_unsigned_char swig_types[14]
-#define SWIGTYPE_p_unsigned_int swig_types[15]
-#define SWIGTYPE_p_unsigned_long swig_types[16]
-#define SWIGTYPE_p_unsigned_long_long swig_types[17]
-#define SWIGTYPE_p_unsigned_short swig_types[18]
-#define SWIGTYPE_p_void swig_types[19]
-static swig_type_info *swig_types[21];
-static swig_module_info swig_module = {swig_types, 20, 0, 0, 0, 0};
+#define SWIGTYPE_p_ldb_module_ops swig_types[8]
+#define SWIGTYPE_p_ldb_result swig_types[9]
+#define SWIGTYPE_p_long_long swig_types[10]
+#define SWIGTYPE_p_p_char swig_types[11]
+#define SWIGTYPE_p_p_ldb_result swig_types[12]
+#define SWIGTYPE_p_short swig_types[13]
+#define SWIGTYPE_p_signed_char swig_types[14]
+#define SWIGTYPE_p_unsigned_char swig_types[15]
+#define SWIGTYPE_p_unsigned_int swig_types[16]
+#define SWIGTYPE_p_unsigned_long swig_types[17]
+#define SWIGTYPE_p_unsigned_long_long swig_types[18]
+#define SWIGTYPE_p_unsigned_short swig_types[19]
+#define SWIGTYPE_p_void swig_types[20]
+static swig_type_info *swig_types[22];
+static swig_module_info swig_module = {swig_types, 21, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -2526,6 +2527,7 @@
 #include "talloc.h"
 #include "ldb.h"
 #include "ldb_errors.h"
+#include "ldb_private.h"
 
 typedef struct ldb_message ldb_msg;
 typedef struct ldb_context ldb;
@@ -5379,6 +5381,35 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_register_module(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  struct ldb_module_ops *arg1 = (struct ldb_module_ops *) 0 ;
+  ldb_error result;
+  PyObject * obj0 = 0 ;
+  char *  kwnames[] = {
+    (char *)"arg1", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:register_module",kwnames,&obj0)) SWIG_fail;
+  {
+    arg1 = talloc_zero(talloc_autofree_context(), struct ldb_module_ops);
+    
+    arg1->name = PyObject_GetAttrString(obj0, "name");
+  }
+  result = ldb_register_module((struct ldb_module_ops const *)arg1);
+  {
+    if (result != 0) {
+      PyErr_SetObject(PyExc_LdbError, Py_BuildValue("(i,s)", result, ldb_strerror(result)));
+      SWIG_fail;
+    }
+    resultobj = Py_None;
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 static PyMethodDef SwigMethods[] = {
 	 { (char *)"new_Dn", (PyCFunction) _wrap_new_Dn, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"delete_Dn", (PyCFunction)_wrap_delete_Dn, METH_O, NULL},
@@ -5447,6 +5478,7 @@
 	 { (char *)"valid_attr_name", (PyCFunction) _wrap_valid_attr_name, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"timestring", (PyCFunction) _wrap_timestring, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"string_to_time", (PyCFunction) _wrap_string_to_time, METH_VARARGS | METH_KEYWORDS, NULL},
+	 { (char *)"register_module", (PyCFunction) _wrap_register_module, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { NULL, NULL, 0, NULL }
 };
 
@@ -5461,6 +5493,7 @@
 static swig_type_info _swigt__p_ldb_ldif = {"_p_ldb_ldif", "struct ldb_ldif *|ldb_ldif *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ldb_message = {"_p_ldb_message", "ldb_msg *|struct ldb_message *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ldb_message_element = {"_p_ldb_message_element", "struct ldb_message_element *|ldb_msg_element *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_ldb_module_ops = {"_p_ldb_module_ops", "struct ldb_module_ops *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ldb_result = {"_p_ldb_result", "struct ldb_result *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_long_long = {"_p_long_long", "int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
@@ -5483,6 +5516,7 @@
   &_swigt__p_ldb_ldif,
   &_swigt__p_ldb_message,
   &_swigt__p_ldb_message_element,
+  &_swigt__p_ldb_module_ops,
   &_swigt__p_ldb_result,
   &_swigt__p_long_long,
   &_swigt__p_p_char,
@@ -5505,6 +5539,7 @@
 static swig_cast_info _swigc__p_ldb_ldif[] = {  {&_swigt__p_ldb_ldif, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ldb_message[] = {  {&_swigt__p_ldb_message, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ldb_message_element[] = {  {&_swigt__p_ldb_message_element, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ldb_module_ops[] = {  {&_swigt__p_ldb_module_ops, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ldb_result[] = {  {&_swigt__p_ldb_result, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_long_long[] = {  {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
@@ -5527,6 +5562,7 @@
   _swigc__p_ldb_ldif,
   _swigc__p_ldb_message,
   _swigc__p_ldb_message_element,
+  _swigc__p_ldb_module_ops,
   _swigc__p_ldb_result,
   _swigc__p_long_long,
   _swigc__p_p_char,

Modified: branches/SAMBA_4_0/source/lib/ldb/tests/python/api.py
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/tests/python/api.py	2007-12-22 05:11:21 UTC (rev 26566)
+++ branches/SAMBA_4_0/source/lib/ldb/tests/python/api.py	2007-12-22 14:28:45 UTC (rev 26567)
@@ -364,3 +364,11 @@
     def test_create_iterable(self):
         x = ldb.MessageElement(["foo"])
         self.assertEquals(["foo"], list(x))
+
+class ExampleModule:
+    name = "example"
+
+class ModuleTests(unittest.TestCase):
+    def test_register_module(self):
+        ldb.register_module(ExampleModule())
+



More information about the samba-cvs mailing list