Annotation of gforth/libltdl/ltdl.h, revision 1.1

1.1     ! anton       1: /* ltdl.h -- generic dlopen functions
        !             2: 
        !             3:    Copyright (C) 1998-2000, 2004, 2005,
        !             4:                  2007 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
        !            11: modify it under the terms of the GNU Lesser General Public
        !            12: License as published by the Free Software Foundation; either
        !            13: version 2 of the License, or (at your option) any later version.
        !            14: 
        !            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
        !            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.
        !            19: 
        !            20: GNU Libltdl is distributed in the hope that it will be useful,
        !            21: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            22: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            23: GNU Lesser General Public License for more details.
        !            24: 
        !            25: You should have received a copy of the GNU Lesser General Public
        !            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.
        !            30: */
        !            31: 
        !            32: /* Only include this header file once. */
        !            33: #if !defined(LTDL_H)
        !            34: #define LTDL_H 1
        !            35: 
        !            36: #include <libltdl/lt_system.h>
        !            37: #include <libltdl/lt_error.h>
        !            38: #include <libltdl/lt_dlloader.h>
        !            39: 
        !            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: 
        !            50: typedef        void * lt_dlhandle;     /* A loaded module.  */
        !            51: 
        !            52: /* Initialisation and finalisation functions for libltdl. */
        !            53: LT_SCOPE int       lt_dlinit           (void);
        !            54: LT_SCOPE int       lt_dlexit           (void);
        !            55: 
        !            56: /* Module search path manipulation.  */
        !            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     (
        !            63:                        const char *search_path,
        !            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: 
        !            75: /* Portable libltdl versions of the system dlopen() API. */
        !            76: LT_SCOPE lt_dlhandle lt_dlopen         (const char *filename);
        !            77: LT_SCOPE lt_dlhandle lt_dlopenext      (const char *filename);
        !            78: LT_SCOPE lt_dlhandle lt_dlopenadvise   (const char *filename,
        !            79:                                         lt_dladvise advise);
        !            80: LT_SCOPE void *            lt_dlsym            (lt_dlhandle handle, const char *name);
        !            81: LT_SCOPE const char *lt_dlerror                (void);
        !            82: LT_SCOPE int       lt_dlclose          (lt_dlhandle handle);
        !            83: 
        !            84: 
        !            85: 
        !            86: /* --- PRELOADED MODULE SUPPORT --- */
        !            87: 
        !            88: 
        !            89: /* A preopened symbol. Arrays of this type comprise the exported
        !            90:    symbols for a dlpreopened module. */
        !            91: typedef struct {
        !            92:   const char *name;
        !            93:   void       *address;
        !            94: } lt_dlsymlist;
        !            95: 
        !            96: typedef int lt_dlpreload_callback_func (lt_dlhandle handle);
        !            97: 
        !            98: LT_SCOPE int   lt_dlpreload         (const lt_dlsymlist *preloaded);
        !            99: LT_SCOPE int   lt_dlpreload_default (const lt_dlsymlist *preloaded);
        !           100: LT_SCOPE int   lt_dlpreload_open    (const char *originator,
        !           101:                                      lt_dlpreload_callback_func *func);
        !           102: 
        !           103: #define lt_preloaded_symbols   lt__PROGRAM__LTX_preloaded_symbols
        !           104: #define LTDL_SET_PRELOADED_SYMBOLS()                   LT_STMT_START{  \
        !           105:        extern const lt_dlsymlist lt_preloaded_symbols[];               \
        !           106:        lt_dlpreload_default(lt_preloaded_symbols);                     \
        !           107:                                                        }LT_STMT_END
        !           108: 
        !           109: 
        !           110: 
        !           111: 
        !           112: /* --- MODULE INFORMATION --- */
        !           113: 
        !           114: 
        !           115: /* Associating user data with loaded modules. */
        !           116: typedef void * lt_dlinterface_id;
        !           117: typedef int lt_dlhandle_interface (lt_dlhandle handle, const char *id_string);
        !           118: 
        !           119: LT_SCOPE lt_dlinterface_id lt_dlinterface_register (const char *id_string,
        !           120:                                          lt_dlhandle_interface *iface);
        !           121: LT_SCOPE void  lt_dlinterface_free (lt_dlinterface_id key);
        !           122: LT_SCOPE void *        lt_dlcaller_set_data  (lt_dlinterface_id key,
        !           123:                                          lt_dlhandle handle, void *data);
        !           124: LT_SCOPE void *        lt_dlcaller_get_data  (lt_dlinterface_id key,
        !           125:                                          lt_dlhandle handle);
        !           126: 
        !           127: 
        !           128: /* Read only information pertaining to a loaded module. */
        !           129: typedef        struct {
        !           130:   char *       filename;       /* file name */
        !           131:   char *       name;           /* module name */
        !           132:   int          ref_count;      /* number of times lt_dlopened minus
        !           133:                                   number of times lt_dlclosed. */
        !           134:   unsigned int is_resident:1;  /* module can't be unloaded. */
        !           135:   unsigned int is_symglobal:1; /* module symbols can satisfy
        !           136:                                   subsequently loaded modules.  */
        !           137:   unsigned int is_symlocal:1;  /* module symbols are only available
        !           138:                                   locally. */
        !           139: } lt_dlinfo;
        !           140: 
        !           141: LT_SCOPE const lt_dlinfo *lt_dlgetinfo     (lt_dlhandle handle);
        !           142: 
        !           143: LT_SCOPE lt_dlhandle   lt_dlhandle_iterate (lt_dlinterface_id iface,
        !           144:                                             lt_dlhandle place);
        !           145: LT_SCOPE lt_dlhandle   lt_dlhandle_fetch   (lt_dlinterface_id iface,
        !           146:                                             const char *module_name);
        !           147: LT_SCOPE int           lt_dlhandle_map     (lt_dlinterface_id iface,
        !           148:                                int (*func) (lt_dlhandle handle, void *data),
        !           149:                                void *data);
        !           150: 
        !           151: 
        !           152: 
        !           153: /* Deprecated module residency management API. */
        !           154: LT_SCOPE int       lt_dlmakeresident   (lt_dlhandle handle);
        !           155: LT_SCOPE int       lt_dlisresident     (lt_dlhandle handle);
        !           156: 
        !           157: #define lt_ptr void *
        !           158: 
        !           159: LT_END_C_DECLS
        !           160: 
        !           161: #endif /*!defined(LTDL_H)*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>