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 */
 | 
						|
 |