]> git.sur5r.net Git - openldap/blobdiff - include/ldap_cdefs.h
Clarify LDAP_ATTRCHAR
[openldap] / include / ldap_cdefs.h
index 2f7ed6e987491c61bff4efc498be9356baecb136..5de63085699efd2001c2ae08647eb77945113a24 100644 (file)
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2000 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
 /* LDAP C Defines */
 
 #ifndef _LDAP_CDEFS_H
 #define _LDAP_CDEFS_H
 
-#if defined(__cplusplus)
+#if defined(__cplusplus) || defined(c_plusplus)
 #      define LDAP_BEGIN_DECL  extern "C" {
 #      define LDAP_END_DECL    }
 #else
-#      define LDAP_BEGIN_DECL
-#      define LDAP_END_DECL    
+#      define LDAP_BEGIN_DECL  /* begin declarations */
+#      define LDAP_END_DECL    /* end declarations */
 #endif
 
-#if defined(__STDC__) || defined(__cplusplus)
+#if !defined(LDAP_NO_PROTOTYPES) && ( defined(LDAP_NEEDS_PROTOTYPES) || \
+       defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) )
+
        /* ANSI C or C++ */
 #      define LDAP_P(protos)   protos
 #      define LDAP_CONCAT1(x,y)        x ## y
 #      define LDAP_CONCAT(x,y) LDAP_CONCAT1(x,y)
 #      define LDAP_STRING(x)   #x /* stringify without expanding x */
 #      define LDAP_XSTRING(x)  LDAP_STRING(x) /* expand x, then stringify */
-#else /* ! __STDC__ && ! __cplusplus */
+
+#ifndef LDAP_CONST
+#      define LDAP_CONST       const
+#endif
+
+#else /* no prototypes */
+
        /* traditional C */
 #      define LDAP_P(protos)   ()
 #      define LDAP_CONCAT(x,y) x/**/y
 #      define LDAP_STRING(x)   "x"
-#endif /* __STDC__ || __cplusplus */
-
-#ifndef LDAP_F
-#      ifdef _WIN32
-#              define LDAP_F   __declspec( dllexport )
-#      else /* ! _WIN32 */
-#              define LDAP_F   extern
-#      endif /* _WIN32 */
-#endif /* LDAP_FDECL */
+
+#ifndef LDAP_CONST
+#      define LDAP_CONST       /* no const */
+#endif
+
+#endif /* no prototypes */
+
+#if (__GNUC__) * 1000 + (__GNUC_MINOR__) >= 2006
+#      define LDAP_GCCATTR(attrs)      __attribute__(attrs)
+#else
+#      define LDAP_GCCATTR(attrs)
+#endif
+
+
+/* Support for NT dynamic libraries. */
+
+/* LBER library */
+#if defined(LBER_DECL) && defined(_WIN32)
+#      define LBER_F(type)             extern __declspec(LBER_DECL) type
+#      define LBER_V(type)             extern __declspec(LBER_DECL) type
+#else
+#      define LBER_F(type)             extern type
+#      define LBER_V(type)             extern type
+#endif
+
+/* LDAP library */
+#if defined(LDAP_DECL) && defined(_WIN32)
+#      define LDAP_F(type)             extern __declspec(LDAP_DECL) type
+#      define LDAP_V(type)             extern __declspec(LDAP_DECL) type
+#else
+#      define LDAP_F(type)             extern type
+#      define LDAP_V(type)             extern type
+#endif
+
+/*
+ * C library. Mingw32 links with the C run-time library by default,
+ * so the explicit definition of CSTATIC will keep dllimport from
+ * being defined.
+ */
+#if (defined(__MINGW32__) && !defined(CSTATIC) || \
+     defined(_WIN32) && defined(_DLL))
+#      define LDAP_LIBC_F(type)        extern __declspec(dllimport) type
+#      define LDAP_LIBC_V(type)        extern __declspec(dllimport) type
+#else
+#      define LDAP_LIBC_F(type)        extern type
+#      define LDAP_LIBC_V(type)        extern type
+#endif
+
+/* AVL library */
+#if defined(LDAP_AVL_DECL) && defined(_WIN32)
+#      define LDAP_AVL_F(type) extern __declspec(LDAP_AVL_DECL) type
+#      define LDAP_AVL_V(type) extern __declspec(LDAP_AVL_DECL) type
+#else
+#      define LDAP_AVL_F(type) extern type
+#      define LDAP_AVL_V(type) extern type
+#endif
+
+/* LDBM library */
+#if defined(LDAP_LDBM_DECL) && defined(_WIN32)
+#      define LDAP_LDBM_F(type)        extern __declspec(LDAP_LDBM_DECL) type
+#      define LDAP_LDBM_V(type)        extern __declspec(LDAP_LDBM_DECL) type
+#else
+#      define LDAP_LDBM_F(type)        extern type
+#      define LDAP_LDBM_V(type)        extern type
+#endif
+
+/* LDIF library */
+#if defined(LDAP_LDIF_DECL) && defined(_WIN32)
+#      define LDAP_LDIF_F(type)        extern __declspec(LDAP_LDIF_DECL) type
+#      define LDAP_LDIF_V(type)        extern __declspec(LDAP_LDIF_DECL) type
+#else
+#      define LDAP_LDIF_F(type)        extern type
+#      define LDAP_LDIF_V(type)        extern type
+#endif
+
+/* LUNICODE library */
+#if defined(LDAP_LUNICODE_DECL) && defined(_WIN32)
+#      define LDAP_LUNICODE_F(type)    extern __declspec(LDAP_LUNICODE_DECL) type
+#      define LDAP_LUNICODE_V(type)    extern __declspec(LDAP_LUNICODE_DECL) type
+#else
+#      define LDAP_LUNICODE_F(type)    extern type
+#      define LDAP_LUNICODE_V(type)    extern type
+#endif
+
+/* LUTIL library */
+#if defined(LDAP_LUTIL_DECL) && defined(_WIN32)
+#      define LDAP_LUTIL_F(type)       extern __declspec(LDAP_LUTIL_DECL) type
+#      define LDAP_LUTIL_V(type)       extern __declspec(LDAP_LUTIL_DECL) type
+#else
+#      define LDAP_LUTIL_F(type)       extern type
+#      define LDAP_LUTIL_V(type)       extern type
+#endif
+
+/* SLAPD (as a module exporting symbols) */
+#if defined(LDAP_SLAPD_DECL) && defined(_WIN32)
+#      define LDAP_SLAPD_F(type)       extern __declspec(LDAP_SLAPD_DECL) type
+#      define LDAP_SLAPD_V(type)       extern __declspec(LDAP_SLAPD_DECL) type
+#else
+#      define LDAP_SLAPD_F(type)       extern type
+#      define LDAP_SLAPD_V(type)       extern type
+#endif
 
 #endif /* _LDAP_CDEFS_H */