Annotation of sql/pgsql/libltdl/ltdl.h, revision 1.3

1.1       parser      1: /* ltdl.h -- generic dlopen functions
                      2: 
1.3     ! moko        3:    Copyright (C) 1998-2000, 2004, 2005,
        !             4:                  2007, 2008 Free Software Foundation, Inc.
        !             5:    Written by Thomas Tanner, 1998
        !             6: 
        !             7:    NOTE: The canonical source of this file is maintained with the
        !             8:    GNU Libtool package.  Report bugs to bug-libtool@gnu.org.
        !             9: 
        !            10: GNU Libltdl is free software; you can redistribute it and/or
1.2       paf        11: modify it under the terms of the GNU Lesser General Public
1.1       parser     12: License as published by the Free Software Foundation; either
                     13: version 2 of the License, or (at your option) any later version.
                     14: 
1.2       paf        15: As a special exception to the GNU Lesser General Public License,
                     16: if you distribute this file as part of a program or library that
1.3     ! moko       17: is built using GNU Libtool, you may include this file under the
        !            18: same distribution terms that you use for the rest of that program.
1.1       parser     19: 
1.3     ! moko       20: GNU Libltdl is distributed in the hope that it will be useful,
1.1       parser     21: but WITHOUT ANY WARRANTY; without even the implied warranty of
1.3     ! moko       22: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            23: GNU Lesser General Public License for more details.
1.1       parser     24: 
1.2       paf        25: You should have received a copy of the GNU Lesser General Public
1.3     ! moko       26: License along with GNU Libltdl; see the file COPYING.LIB.  If not, a
        !            27: copy can be downloaded from  http://www.gnu.org/licenses/lgpl.html,
        !            28: or obtained by writing to the Free Software Foundation, Inc.,
        !            29: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1.1       parser     30: */
                     31: 
                     32: /* Only include this header file once. */
1.3     ! moko       33: #if !defined(LTDL_H)
1.2       paf        34: #define LTDL_H 1
1.1       parser     35: 
1.3     ! moko       36: #include <libltdl/lt_system.h>
        !            37: #include <libltdl/lt_error.h>
        !            38: #include <libltdl/lt_dlloader.h>
1.1       parser     39: 
1.2       paf        40: LT_BEGIN_C_DECLS
                     41: 
                     42: 
                     43: /* LT_STRLEN can be used safely on NULL pointers.  */
                     44: #define LT_STRLEN(s)   (((s) && (s)[0]) ? strlen (s) : 0)
                     45: 
                     46: 
                     47: /* --- DYNAMIC MODULE LOADING API --- */
                     48: 
                     49: 
1.3     ! moko       50: typedef        struct lt__handle *lt_dlhandle; /* A loaded module.  */
1.2       paf        51: 
                     52: /* Initialisation and finalisation functions for libltdl. */
1.3     ! moko       53: LT_SCOPE int       lt_dlinit           (void);
        !            54: LT_SCOPE int       lt_dlexit           (void);
1.2       paf        55: 
                     56: /* Module search path manipulation.  */
1.3     ! moko       57: LT_SCOPE int       lt_dladdsearchdir    (const char *search_dir);
        !            58: LT_SCOPE int       lt_dlinsertsearchdir (const char *before,
        !            59:                                                  const char *search_dir);
        !            60: LT_SCOPE int       lt_dlsetsearchpath   (const char *search_path);
        !            61: LT_SCOPE const char *lt_dlgetsearchpath         (void);
        !            62: LT_SCOPE int       lt_dlforeachfile     (
1.2       paf        63:                        const char *search_path,
1.3     ! moko       64:                        int (*func) (const char *filename, void *data),
        !            65:                        void *data);
        !            66: 
        !            67: /* User module loading advisors.  */
        !            68: LT_SCOPE int       lt_dladvise_init     (lt_dladvise *advise);
        !            69: LT_SCOPE int       lt_dladvise_destroy  (lt_dladvise *advise);
        !            70: LT_SCOPE int       lt_dladvise_ext      (lt_dladvise *advise);
        !            71: LT_SCOPE int       lt_dladvise_resident (lt_dladvise *advise);
        !            72: LT_SCOPE int       lt_dladvise_local    (lt_dladvise *advise);
        !            73: LT_SCOPE int       lt_dladvise_global   (lt_dladvise *advise);
        !            74: LT_SCOPE int       lt_dladvise_preload  (lt_dladvise *advise);
1.2       paf        75: 
                     76: /* Portable libltdl versions of the system dlopen() API. */
1.3     ! moko       77: LT_SCOPE lt_dlhandle lt_dlopen         (const char *filename);
        !            78: LT_SCOPE lt_dlhandle lt_dlopenext      (const char *filename);
        !            79: LT_SCOPE lt_dlhandle lt_dlopenadvise   (const char *filename,
        !            80:                                         lt_dladvise advise);
        !            81: LT_SCOPE void *            lt_dlsym            (lt_dlhandle handle, const char *name);
        !            82: LT_SCOPE const char *lt_dlerror                (void);
        !            83: LT_SCOPE int       lt_dlclose          (lt_dlhandle handle);
1.2       paf        84: 
                     85: 
                     86: 
                     87: /* --- PRELOADED MODULE SUPPORT --- */
                     88: 
                     89: 
                     90: /* A preopened symbol. Arrays of this type comprise the exported
                     91:    symbols for a dlpreopened module. */
1.1       parser     92: typedef struct {
1.2       paf        93:   const char *name;
1.3     ! moko       94:   void       *address;
1.1       parser     95: } lt_dlsymlist;
                     96: 
1.3     ! moko       97: typedef int lt_dlpreload_callback_func (lt_dlhandle handle);
        !            98: 
        !            99: LT_SCOPE int   lt_dlpreload         (const lt_dlsymlist *preloaded);
        !           100: LT_SCOPE int   lt_dlpreload_default (const lt_dlsymlist *preloaded);
        !           101: LT_SCOPE int   lt_dlpreload_open    (const char *originator,
        !           102:                                      lt_dlpreload_callback_func *func);
        !           103: 
        !           104: #define lt_preloaded_symbols   lt__PROGRAM__LTX_preloaded_symbols
        !           105: /* Ensure C linkage.  */
        !           106: extern LT_DLSYM_CONST lt_dlsymlist lt__PROGRAM__LTX_preloaded_symbols[];
        !           107: 
        !           108: #define LTDL_SET_PRELOADED_SYMBOLS() \
        !           109:        lt_dlpreload_default(lt_preloaded_symbols)
1.2       paf       110: 
                    111: 
                    112: 
                    113: 
                    114: /* --- MODULE INFORMATION --- */
                    115: 
                    116: 
1.3     ! moko      117: /* Associating user data with loaded modules. */
        !           118: typedef void * lt_dlinterface_id;
        !           119: typedef int lt_dlhandle_interface (lt_dlhandle handle, const char *id_string);
        !           120: 
        !           121: LT_SCOPE lt_dlinterface_id lt_dlinterface_register (const char *id_string,
        !           122:                                          lt_dlhandle_interface *iface);
        !           123: LT_SCOPE void  lt_dlinterface_free (lt_dlinterface_id key);
        !           124: LT_SCOPE void *        lt_dlcaller_set_data  (lt_dlinterface_id key,
        !           125:                                          lt_dlhandle handle, void *data);
        !           126: LT_SCOPE void *        lt_dlcaller_get_data  (lt_dlinterface_id key,
        !           127:                                          lt_dlhandle handle);
        !           128: 
        !           129: 
1.2       paf       130: /* Read only information pertaining to a loaded module. */
                    131: typedef        struct {
1.3     ! moko      132:   char *       filename;       /* file name */
        !           133:   char *       name;           /* module name */
        !           134:   int          ref_count;      /* number of times lt_dlopened minus
1.2       paf       135:                                   number of times lt_dlclosed. */
1.3     ! moko      136:   unsigned int is_resident:1;  /* module can't be unloaded. */
        !           137:   unsigned int is_symglobal:1; /* module symbols can satisfy
        !           138:                                   subsequently loaded modules.  */
        !           139:   unsigned int is_symlocal:1;  /* module symbols are only available
        !           140:                                   locally. */
1.2       paf       141: } lt_dlinfo;
                    142: 
1.3     ! moko      143: LT_SCOPE const lt_dlinfo *lt_dlgetinfo     (lt_dlhandle handle);
1.2       paf       144: 
1.3     ! moko      145: LT_SCOPE lt_dlhandle   lt_dlhandle_iterate (lt_dlinterface_id iface,
        !           146:                                             lt_dlhandle place);
        !           147: LT_SCOPE lt_dlhandle   lt_dlhandle_fetch   (lt_dlinterface_id iface,
        !           148:                                             const char *module_name);
        !           149: LT_SCOPE int           lt_dlhandle_map     (lt_dlinterface_id iface,
        !           150:                                int (*func) (lt_dlhandle handle, void *data),
        !           151:                                void *data);
1.2       paf       152: 
                    153: 
                    154: 
1.3     ! moko      155: /* Deprecated module residency management API. */
        !           156: LT_SCOPE int       lt_dlmakeresident   (lt_dlhandle handle);
        !           157: LT_SCOPE int       lt_dlisresident     (lt_dlhandle handle);
1.2       paf       158: 
1.3     ! moko      159: #define lt_ptr void *
1.1       parser    160: 
1.2       paf       161: LT_END_C_DECLS
1.1       parser    162: 
1.3     ! moko      163: #endif /*!defined(LTDL_H)*/

E-mail: