Lines Matching defs:extensions

44  * Object extensions
46 * We only support two types -- connection and operation extensions.
58 } extensions[SLAPI_X_EXT_MAX];
63 void **extensions;
109 assert( extensionhandle < registered_extensions.extensions[objecttype].count );
111 assert( registered_extensions.extensions[objecttype].constructors != NULL );
112 constructor = registered_extensions.extensions[objecttype].constructors[extensionhandle];
114 assert( eblock->extensions[extensionhandle] == NULL );
117 eblock->extensions[extensionhandle] = (*constructor)( object, parent );
119 eblock->extensions[extensionhandle] = NULL;
128 assert( extensionhandle < registered_extensions.extensions[objecttype].count );
130 if ( eblock->extensions[extensionhandle] != NULL ) {
131 assert( registered_extensions.extensions[objecttype].destructors != NULL );
132 destructor = registered_extensions.extensions[objecttype].destructors[extensionhandle];
134 (*destructor)( eblock->extensions[extensionhandle], object, parent );
136 eblock->extensions[extensionhandle] = NULL;
149 if ( extensionhandle < registered_extensions.extensions[objecttype].count ) {
150 return eblock->extensions[extensionhandle];
165 if ( extensionhandle < registered_extensions.extensions[objecttype].count ) {
170 eblock->extensions[extensionhandle] = extension;
196 re = &registered_extensions.extensions[*objecttype];
201 /* can't add new extensions after objects have been created */
255 if ( registered_extensions.extensions[objecttype].active == 0 ) {
257 * once we've created some extensions, no new extensions can
260 registered_extensions.extensions[objecttype].active = 1;
266 if ( registered_extensions.extensions[objecttype].count ) {
267 eblock->extensions = (void **)slapi_ch_calloc( registered_extensions.extensions[objecttype].count, sizeof(void *) );
268 for ( i = 0; i < registered_extensions.extensions[objecttype].count; i++ ) {
272 eblock->extensions = NULL;
303 if ( eblock != NULL && eblock->extensions != NULL ) {
304 for ( i = registered_extensions.extensions[objecttype].count - 1; i >= 0; --i ) {
308 slapi_ch_free( (void **)&eblock->extensions );
327 if ( eblock->extensions == NULL ) {
328 /* no extensions */
332 for ( i = registered_extensions.extensions[objecttype].count - 1; i >= 0; --i ) {
336 for ( i = 0; i < registered_extensions.extensions[objecttype].count; i++ ) {