pupnp (libupnp) snapshot from SourceForge: git clone git://pupnp.git.sourceforge...
[igd2-for-linux:pandonghui1211s-igd2-for-linux.git] / pupnp_branch-1.6.x / upnp / inc / UpnpGlobal.h
1
2
3 #ifndef UPNPGLOBAL_H
4 #define UPNPGLOBAL_H
5
6
7 /*!
8  * \file
9  *
10  * \brief Defines constants that for some reason are not defined on some systems.
11  */
12
13
14 #if defined MYLIB_LARGEFILE_SENSITIVE && _FILE_OFFSET_BITS+0 != 64
15         #if defined __GNUC__
16                 #warning libupnp requires largefile mode - use AC_SYS_LARGEFILE
17         #else
18                 #error  libupnp requires largefile mode - use AC_SYS_LARGEFILE
19         #endif
20 #endif 
21
22
23 #ifdef WIN32
24         /*
25          * EXPORT_SPEC
26          */
27         #ifdef UPNP_STATIC_LIB
28                 #define EXPORT_SPEC
29         #else /* UPNP_STATIC_LIB */
30                 #ifdef LIBUPNP_EXPORTS
31                         /*! set up declspec for dll export to make functions
32                          * visible to library users */
33                         #define EXPORT_SPEC __declspec(dllexport)
34                 #else /* LIBUPNP_EXPORTS */
35                         #define EXPORT_SPEC __declspec(dllimport)
36                 #endif /* LIBUPNP_EXPORTS */
37         #endif /* UPNP_STATIC_LIB */
38
39
40         /*
41          * UPNP_INLINE
42          * PRId64
43          * PRIzu
44          */
45         #ifdef UPNP_USE_MSVCPP
46                 /* define some things the M$ VC++ doesn't know */
47                 #define UPNP_INLINE
48                 typedef __int64 int64_t;
49                 #define PRId64 "I64d"
50                 #define PRIzu "lu"
51         #endif /* UPNP_USE_MSVCPP */
52
53
54         #ifdef UPNP_USE_BCBPP
55                 /* define some things Borland Builder doesn't know */
56                 #define UPNP_INLINE inline
57                 typedef __int64 int64_t;
58                 #warning The Borland C compiler is probably broken on PRId64,
59                 #warning please someone provide a proper fix here
60                 #define PRId64 "I64d"
61                 #define PRIzu "zu"
62         #endif /* UPNP_USE_BCBPP */
63
64
65         #ifdef __GNUC__
66                 #define UPNP_INLINE inline
67
68                 /* Note with PRIzu that in the case of Mingw32, it's the MS C
69                  * runtime printf which ends up getting called, not the glibc
70                  * printf, so it genuinely doesn't have "zu"
71                  */
72                 #define PRIzu "lu"
73         #endif /* __GNUC__ */
74 #else
75         /*! 
76          * \brief Export functions on WIN32 DLLs.
77          *
78          * Every funtion that belongs to the library API must use this
79          * definition upon declaration or it will not be exported on WIN32
80          * DLLs.
81          */
82         #define EXPORT_SPEC
83
84         /*!
85          * \brief Declares an inline function.
86          *
87          * Surprisingly, there are some compilers that do not understand the
88          * inline keyword. This definition makes the use of this keyword
89          * portable to these systems.
90          */
91         #define UPNP_INLINE inline
92         
93         /*!
94          * \brief Supply the PRId64 printf() macro.
95          *
96          * MSVC still does not know about this.
97          */
98         /* #define PRId64 PRId64 */
99
100         /*!
101          * \brief Supply the PRIzu printf() macro.
102          *
103          * This macro was invented so that we can live a little longer with
104          * MSVC lack of C99. "z" is the correct printf() size specifier for
105          * the size_t type.
106          */
107         #define PRIzu "zu"
108 #endif
109
110
111 /*
112  * Defining this macro here gives some interesting information about unused
113  * functions in the code. Of course, this should never go uncommented on a
114  * release.
115  */
116 /*#define inline*/
117
118
119 #endif /* UPNPGLOBAL_H */
120