Annotation of parser3/src/lib/ltdl/libltdl/lt__private.h, revision 1.1

1.1     ! moko        1: /* lt__private.h -- internal apis for libltdl
        !             2: 
        !             3:    Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
        !             4:    Written by Gary V. Vaughan, 2004
        !             5: 
        !             6:    NOTE: The canonical source of this file is maintained with the
        !             7:    GNU Libtool package.  Report bugs to bug-libtool@gnu.org.
        !             8: 
        !             9: This library is free software; you can redistribute it and/or
        !            10: modify it under the terms of the GNU Lesser General Public
        !            11: License as published by the Free Software Foundation; either
        !            12: version 2 of the License, or (at your option) any later version.
        !            13: 
        !            14: As a special exception to the GNU Lesser General Public License,
        !            15: if you distribute this file as part of a program or library that
        !            16: is built using GNU libtool, you may include this file under the
        !            17: same distribution terms that you use for the rest of that program.
        !            18: 
        !            19: GNU Libltdl is distributed in the hope that it will be useful,
        !            20: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            21: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            22: GNU Lesser General Public License for more details.
        !            23: 
        !            24: You should have received a copy of the GNU Lesser General Public
        !            25: License along with GNU Libltdl; see the file COPYING.LIB.  If not, a
        !            26: copy con be downloaded from http://www.gnu.org/licenses/lgpl.html,
        !            27: or obtained by writing to the Free Software Foundation, Inc.,
        !            28: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
        !            29: */
        !            30: 
        !            31: #if !defined(LT__PRIVATE_H)
        !            32: #define LT__PRIVATE_H 1
        !            33: 
        !            34: #if defined(LT_CONFIG_H)
        !            35: #  include LT_CONFIG_H
        !            36: #else
        !            37: #  include <config.h>
        !            38: #endif
        !            39: 
        !            40: #include <stdio.h>
        !            41: #include <ctype.h>
        !            42: #include <assert.h>
        !            43: #include <errno.h>
        !            44: #include <string.h>
        !            45: 
        !            46: #if defined(HAVE_UNISTD_H)
        !            47: #  include <unistd.h>
        !            48: #endif
        !            49: 
        !            50: /* Import internal interfaces...  */
        !            51: #include "lt__alloc.h"
        !            52: #include "lt__dirent.h"
        !            53: #include "lt__strl.h"
        !            54: #include "lt__glibc.h"
        !            55: 
        !            56: /* ...and all exported interfaces.  */
        !            57: #include "ltdl.h"
        !            58: 
        !            59: #if defined(WITH_DMALLOC)
        !            60: #  include <dmalloc.h>
        !            61: #endif
        !            62: 
        !            63: /* DLL building support on win32 hosts;  mostly to workaround their
        !            64:    ridiculous implementation of data symbol exporting. */
        !            65: #ifndef LT_GLOBAL_DATA
        !            66: # if defined(__WINDOWS__) || defined(__CYGWIN__)
        !            67: #  if defined(DLL_EXPORT)      /* defined by libtool (if required) */
        !            68: #   define LT_GLOBAL_DATA      __declspec(dllexport)
        !            69: #  endif
        !            70: # endif
        !            71: # ifndef LT_GLOBAL_DATA
        !            72: #  define LT_GLOBAL_DATA       /* static linking or !__WINDOWS__ */
        !            73: # endif
        !            74: #endif
        !            75: 
        !            76: #ifndef __attribute__
        !            77: # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
        !            78: #  define __attribute__(x)
        !            79: # endif
        !            80: #endif
        !            81: 
        !            82: #ifndef LT__UNUSED
        !            83: # define LT__UNUSED __attribute__ ((__unused__))
        !            84: #endif
        !            85: 
        !            86: 
        !            87: LT_BEGIN_C_DECLS
        !            88: 
        !            89: #if !defined(errno)
        !            90: extern int errno;
        !            91: #endif
        !            92: 
        !            93: LT_SCOPE void  lt__alloc_die_callback (void);
        !            94: 
        !            95: 
        !            96: /* For readability:  */
        !            97: #define strneq(s1, s2) (strcmp((s1), (s2)) != 0)
        !            98: #define streq(s1, s2)  (!strcmp((s1), (s2)))
        !            99: 
        !           100: 
        !           101: 
        !           102: /* --- OPAQUE STRUCTURES DECLARED IN LTDL.H --- */
        !           103: 
        !           104: /* This type is used for the array of interface data sets in each handler. */
        !           105: typedef struct {
        !           106:   lt_dlinterface_id    key;
        !           107:   void *               data;
        !           108: } lt_interface_data;
        !           109: 
        !           110: struct lt__handle {
        !           111:   lt_dlhandle          next;
        !           112:   const lt_dlvtable *  vtable;         /* dlopening interface */
        !           113:   lt_dlinfo            info;           /* user visible fields */
        !           114:   int                  depcount;       /* number of dependencies */
        !           115:   lt_dlhandle *                deplibs;        /* dependencies */
        !           116:   lt_module            module;         /* system module handle */
        !           117:   void *               system;         /* system specific data */
        !           118:   lt_interface_data *  interface_data; /* per caller associated data */
        !           119:   int                  flags;          /* various boolean stats */
        !           120: };
        !           121: 
        !           122: struct lt__advise {
        !           123:   unsigned int try_ext:1;      /* try system library extensions.  */
        !           124:   unsigned int is_resident:1;  /* module can't be unloaded. */
        !           125:   unsigned int is_symglobal:1; /* module symbols can satisfy
        !           126:                                   subsequently loaded modules.  */
        !           127:   unsigned int is_symlocal:1;  /* module symbols are only available
        !           128:                                   locally. */
        !           129:   unsigned int try_preload_only:1;/* only preloaded modules will be tried. */
        !           130: };
        !           131: 
        !           132: /* --- ERROR HANDLING --- */
        !           133: 
        !           134: /* Extract the diagnostic strings from the error table macro in the same
        !           135:    order as the enumerated indices in lt_error.h. */
        !           136: 
        !           137: #define LT__STRERROR(name)     lt__error_string(LT_CONC(LT_ERROR_,name))
        !           138: 
        !           139: #define LT__GETERROR(lvalue)         (lvalue) = lt__get_last_error()
        !           140: #define LT__SETERRORSTR(errormsg)     lt__set_last_error(errormsg)
        !           141: #define LT__SETERROR(errorcode)              LT__SETERRORSTR(LT__STRERROR(errorcode))
        !           142: 
        !           143: LT_SCOPE const char *lt__error_string  (int errorcode);
        !           144: LT_SCOPE const char *lt__get_last_error        (void);
        !           145: LT_SCOPE const char *lt__set_last_error        (const char *errormsg);
        !           146: 
        !           147: LT_END_C_DECLS
        !           148: 
        !           149: #endif /*!defined(LT__PRIVATE_H)*/

E-mail: