Lines Matching refs:eblock

66 static int get_extension_block(int objecttype, void *object, struct slapi_extension_block **eblock, void **parent)
70 *eblock = ((Connection *)object)->c_extensions;
74 *eblock = ((Operation *)object)->o_hdr->oh_extensions;
82 if ( *eblock == NULL ) {
102 static void new_extension(struct slapi_extension_block *eblock,
114 assert( eblock->extensions[extensionhandle] == NULL );
117 eblock->extensions[extensionhandle] = (*constructor)( object, parent );
119 eblock->extensions[extensionhandle] = NULL;
123 static void free_extension(struct slapi_extension_block *eblock, int objecttype, void *object, void *parent, int extensionhandle )
130 if ( eblock->extensions[extensionhandle] != NULL ) {
134 (*destructor)( eblock->extensions[extensionhandle], object, parent );
136 eblock->extensions[extensionhandle] = NULL;
142 struct slapi_extension_block *eblock;
145 if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) {
150 return eblock->extensions[extensionhandle];
158 struct slapi_extension_block *eblock;
161 if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) {
167 free_extension( eblock, objecttype, object, parent, extensionhandle );
170 eblock->extensions[extensionhandle] = extension;
234 struct slapi_extension_block *eblock;
264 eblock = (struct slapi_extension_block *)slapi_ch_calloc( 1, sizeof(*eblock) );
267 eblock->extensions = (void **)slapi_ch_calloc( registered_extensions.extensions[objecttype].count, sizeof(void *) );
269 new_extension( eblock, objecttype, object, parent, i );
272 eblock->extensions = NULL;
275 *peblock = eblock;
283 struct slapi_extension_block *eblock;
301 eblock = (struct slapi_extension_block *)*peblock;
303 if ( eblock != NULL && eblock->extensions != NULL ) {
305 free_extension( eblock, objecttype, object, parent, i );
308 slapi_ch_free( (void **)&eblock->extensions );
320 struct slapi_extension_block *eblock;
323 if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) {
327 if ( eblock->extensions == NULL ) {
333 free_extension( eblock, objecttype, object, parent, i );
337 new_extension( eblock, objecttype, object, parent, i );