2 Unix SMB/CIFS implementation.
6 Copyright (C) 2005,2006 Tim Potter <tpot@samba.org>
7 Copyright (C) 2006 Simo Sorce <idra@samba.org>
9 ** NOTE! The following LGPL license applies to the ldb
10 ** library. This does NOT imply that all of Samba is released
13 This library is free software; you can redistribute it and/or
14 modify it under the terms of the GNU Lesser General Public
15 License as published by the Free Software Foundation; either
16 version 2 of the License, or (at your option) any later version.
18 This library is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 Lesser General Public License for more details.
23 You should have received a copy of the GNU Lesser General Public
24 License along with this library; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32 /* Some typedefs to help swig along */
34 typedef unsigned char uint8_t;
35 typedef unsigned long long uint64_t;
36 typedef long long int64_t;
40 #include "lib/ldb/include/ldb.h"
41 #include "lib/talloc/talloc.h"
46 %include "exception.i"
49 * Wrap struct ldb_context
52 /* The ldb functions will crash if a NULL ldb context is passed so
53 catch this before it happens. */
55 %typemap(check) struct ldb_context* {
57 SWIG_exception(SWIG_ValueError,
58 "ldb context must be non-NULL");
65 /* Use talloc_init() to create a parameter to pass to ldb_init(). Don't
66 forget to free it using talloc_free() afterwards. */
68 TALLOC_CTX *talloc_init(char *name);
69 int talloc_free(TALLOC_CTX *ptr);
75 %typemap(in) struct ldb_val * (struct ldb_val temp) {
77 if (!PyString_Check($input)) {
78 PyErr_SetString(PyExc_TypeError, "string arg expected");
81 $1->length = PyString_Size($input);
82 $1->data = PyString_AsString($input);
85 %typemap(out) struct ldb_val * {
86 if ($1->data == NULL && $1->length == 0) {
90 $result = PyString_FromStringAndSize($1->data, $1->length);
94 enum ldb_scope {LDB_SCOPE_DEFAULT=-1,
100 * Wrap struct ldb_result
103 %typemap(in, numinputs=0) struct ldb_result **OUT (struct ldb_result *temp_ldb_result) {
104 $1 = &temp_ldb_result;
107 %typemap(argout) struct ldb_result ** {
108 resultobj = SWIG_NewPointerObj(*$1, SWIGTYPE_p_ldb_result, 0);
111 %types(struct ldb_result *);
114 * Wrap struct ldb_message_element
117 %array_functions(struct ldb_val, ldb_val_array);
119 struct ldb_message_element {
122 unsigned int num_values;
123 struct ldb_val *values;
127 * Wrap struct ldb_message
130 %array_functions(struct ldb_message_element, ldb_message_element_array);
134 unsigned int num_elements;
135 struct ldb_message_element *elements;
140 * Wrap struct ldb_result
143 %array_functions(struct ldb_message *, ldb_message_ptr_array);
147 struct ldb_message **msgs;
149 struct ldb_control **controls;
156 struct ldb_context *ldb_init(TALLOC_CTX *mem_ctx);
158 const char *ldb_errstring(struct ldb_context *ldb);
160 int ldb_connect(struct ldb_context *ldb, const char *url, unsigned int flags, const char *options[]);
162 int ldb_search(struct ldb_context *ldb, const struct ldb_dn *base, enum ldb_scope scope, const char *expression, const char * const *attrs, struct ldb_result **OUT);
164 int ldb_delete(struct ldb_context *ldb, const struct ldb_dn *dn);
166 int ldb_rename(struct ldb_context *ldb, const struct ldb_dn *olddn, const struct ldb_dn *newdn);
168 int ldb_add(struct ldb_context *ldb, const struct ldb_message *message);
170 struct ldb_message *ldb_msg_new(void *mem_ctx);
171 struct ldb_message_element *ldb_msg_find_element(const struct ldb_message *msg, const char *attr_name);
172 int ldb_msg_add_value(struct ldb_message *msg, const char *attr_name, const struct ldb_val *val);