2008-12-19 01:22:07 +00:00
/*
Unix SMB / CIFS implementation .
2010-12-12 17:44:04 +01:00
Python interface to ldb .
2008-12-19 01:22:07 +00:00
Copyright ( C ) 2007 - 2008 Jelmer Vernooij < jelmer @ samba . org >
* * NOTE ! The following LGPL license applies to the ldb
* * library . This does NOT imply that all of Samba is released
* * under the LGPL
This library is free software ; you can redistribute it and / or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation ; either
version 3 of the License , or ( at your option ) any later version .
This library is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public
License along with this library ; if not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef _PYLDB_H_
# define _PYLDB_H_
2009-04-23 11:23:06 +02:00
# include <talloc.h>
2008-12-19 01:22:07 +00:00
2008-12-23 05:07:29 +01:00
typedef struct {
PyObject_HEAD
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_context * ldb_ctx ;
2008-12-23 05:07:29 +01:00
} PyLdbObject ;
# define PyLdb_AsLdbContext(pyobj) ((PyLdbObject *)pyobj)->ldb_ctx
2008-12-21 00:24:54 +01:00
# define PyLdb_Check(ob) PyObject_TypeCheck(ob, &PyLdb)
2008-12-19 01:22:07 +00:00
2008-12-23 05:07:29 +01:00
typedef struct {
PyObject_HEAD
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_dn * dn ;
2008-12-23 05:07:29 +01:00
} PyLdbDnObject ;
2008-12-19 01:22:07 +00:00
PyObject * PyLdbDn_FromDn ( struct ldb_dn * ) ;
2008-12-19 16:08:35 +00:00
bool PyObject_AsDn ( TALLOC_CTX * mem_ctx , PyObject * object , struct ldb_context * ldb_ctx , struct ldb_dn * * dn ) ;
2008-12-23 05:07:29 +01:00
# define PyLdbDn_AsDn(pyobj) ((PyLdbDnObject *)pyobj)->dn
2008-12-19 01:22:07 +00:00
# define PyLdbDn_Check(ob) PyObject_TypeCheck(ob, &PyLdbDn)
2008-12-23 05:07:29 +01:00
typedef struct {
PyObject_HEAD
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_message * msg ;
2008-12-23 05:07:29 +01:00
} PyLdbMessageObject ;
2008-12-19 01:22:07 +00:00
# define PyLdbMessage_Check(ob) PyObject_TypeCheck(ob, &PyLdbMessage)
2008-12-23 05:07:29 +01:00
# define PyLdbMessage_AsMessage(pyobj) ((PyLdbMessageObject *)pyobj)->msg
2008-12-19 01:22:07 +00:00
2008-12-23 05:07:29 +01:00
typedef struct {
PyObject_HEAD
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_module * mod ;
2008-12-23 05:07:29 +01:00
} PyLdbModuleObject ;
# define PyLdbModule_AsModule(pyobj) ((PyLdbModuleObject *)pyobj)->mod
2008-12-19 01:22:07 +00:00
2008-12-23 05:07:29 +01:00
typedef struct {
2010-12-30 20:11:59 +01:00
PyObject_HEAD
2008-12-23 05:07:29 +01:00
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_message_element * el ;
2008-12-23 05:07:29 +01:00
} PyLdbMessageElementObject ;
# define PyLdbMessageElement_AsMessageElement(pyobj) ((PyLdbMessageElementObject *)pyobj)->el
2008-12-19 16:08:35 +00:00
# define PyLdbMessageElement_Check(ob) PyObject_TypeCheck(ob, &PyLdbMessageElement)
2008-12-23 05:07:29 +01:00
typedef struct {
PyObject_HEAD
TALLOC_CTX * mem_ctx ;
2010-04-20 15:33:00 +10:00
struct ldb_parse_tree * tree ;
2008-12-23 05:07:29 +01:00
} PyLdbTreeObject ;
# define PyLdbTree_AsTree(pyobj) ((PyLdbTreeObject *)pyobj)->tree
2008-12-19 16:08:35 +00:00
2009-04-23 01:21:47 +02:00
# define PyErr_LDB_ERROR_IS_ERR_RAISE(err,ret,ldb) \
2008-12-19 16:08:35 +00:00
if ( ret ! = LDB_SUCCESS ) { \
2009-04-23 01:21:47 +02:00
PyErr_SetLdbError ( err , ret , ldb ) ; \
2008-12-19 16:08:35 +00:00
return NULL ; \
}
2009-04-23 01:21:47 +02:00
/* Picked out of thin air. To do this properly, we should probably have some part of the
* errors in LDB be allocated to bindings ? */
# define LDB_ERR_PYTHON_EXCEPTION 142
2008-12-19 01:22:07 +00:00
# endif /* _PYLDB_H_ */