53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* See http://www.python-ldap.org/ for details.
 | |
|  * $Id: LDAPObject.h,v 1.10 2009/04/17 12:19:09 stroeder Exp $ */
 | |
| 
 | |
| #ifndef __h_LDAPObject 
 | |
| #define __h_LDAPObject 
 | |
| 
 | |
| #include "common.h"
 | |
| 
 | |
| #include "lber.h"
 | |
| #include "ldap.h"
 | |
| #if LDAP_API_VERSION < 2000
 | |
| #error Current python-ldap requires OpenLDAP 2.x
 | |
| #endif
 | |
| 
 | |
| #if PYTHON_API_VERSION < 1007
 | |
| typedef PyObject*	_threadstate;
 | |
| #else
 | |
| typedef PyThreadState*	_threadstate;
 | |
| #endif
 | |
| 
 | |
| typedef struct {
 | |
|         PyObject_HEAD
 | |
| 	LDAP* ldap;
 | |
| 	_threadstate	_save; /* for thread saving on referrals */
 | |
| 	int valid;
 | |
| } LDAPObject;
 | |
| 
 | |
| extern PyTypeObject LDAP_Type;
 | |
| #define LDAPObject_Check(v)     ((v)->ob_type == &LDAP_Type)
 | |
| 
 | |
| extern LDAPObject *newLDAPObject( LDAP* );
 | |
| 
 | |
| /* macros to allow thread saving in the context of an LDAP connection */
 | |
| 
 | |
| #define LDAP_BEGIN_ALLOW_THREADS( l )                                   \
 | |
| 	{                                                               \
 | |
| 	  LDAPObject *lo = (l);                                         \
 | |
| 	  if (lo->_save != NULL)                                        \
 | |
| 	  	Py_FatalError( "saving thread twice?" );                \
 | |
| 	  lo->_save = PyEval_SaveThread();                              \
 | |
| 	}
 | |
| 
 | |
| #define LDAP_END_ALLOW_THREADS( l )                                     \
 | |
| 	{                                                               \
 | |
| 	  LDAPObject *lo = (l);                                         \
 | |
| 	  _threadstate _save = lo->_save;                               \
 | |
| 	  lo->_save = NULL;                                             \
 | |
| 	  PyEval_RestoreThread( _save );                                \
 | |
| 	}
 | |
| 
 | |
| #endif /* __h_LDAPObject */
 | |
| 
 | 
