source: OGRE/trunk/ogre_dependencies/Dependencies/include/zzip/__hints.h @ 692

Revision 692, 4.6 KB checked in by mattausch, 19 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1#ifndef __ZZIP_INTERNAL_HINTS_H
2#define __ZZIP_INTERNAL_HINTS_H
3#include <zzip/conf.h>
4
5#ifndef ZZIP_GNUC_ATLEAST
6# if defined __GNUC__ && defined __GNUC_MINOR__
7# define ZZIP_GNUC_ATLEAST(_M_,_N_) \
8        ((__GNUC__ << 10) + __GNUC_MINOR__ >= ((_M_) << 10) + (_N_))
9# elif defined __GNUC__
10# define ZZIP_GNUC_ATLEAST(_M_,_N_) \
11        ((__GNUC__ << 10) >= ((_M_) << 10))
12# else
13# define ZZIP_GNUC_ATLEAST(_M_, _N_) 0
14# endif
15#endif
16
17#ifndef ZZIP_GNUC_EXTENSION
18# if ZZIP_GNUC_ATLEAST(2,8)
19# define ZZIP_GNUC_EXTENSION __extension__
20# else
21# define ZZIP_GNUC_EXTENSION
22# endif
23#endif
24
25/* func has no side effects, return value depends only on params and globals */
26#ifndef ZZIP_GNUC_PURE
27# if ZZIP_GNUC_ATLEAST(2,8)
28# define ZZIP_GNUC_PURE __attribute__((__pure__))
29# else
30# define ZZIP_GNUC_PURE
31# endif
32#endif
33
34/* func has no side effects, return value depends only on params */
35#ifndef ZZIP_GNUC_CONST
36# if ZZIP_GNUC_ATLEAST(2,4)
37# define ZZIP_GNUC_CONST __attribute__((__const__))
38# else
39# define ZZIP_GNUC_CONST
40# endif
41#endif
42
43/* typename / variable / function possibly unused */
44#ifndef ZZIP_GNUC_UNUSED
45# if ZZIP_GNUC_ATLEAST(2,4)
46# define ZZIP_GNUC_UNUSED __attribute__((__unused__))
47# else
48# define ZZIP_GNUC_UNUSED
49# endif
50#endif
51
52/* obvious. btw, a noreturn-func should return void */
53#ifndef ZZIP_GNUC_NORETURN
54# if ZZIP_GNUC_ATLEAST(2,5)
55# define ZZIP_GNUC_NORETURN __attribute__((__noreturn__))
56# else
57# define ZZIP_GNUC_NORETURN
58# endif
59#endif
60
61/* omit function from profiling with -finstrument-functions */
62#ifndef ZZIP_GNUC_NO_INSTRUMENT
63# if ZZIP_GNUC_ATLEAST(2,4)
64# define ZZIP_GNUC_NO_INSTRUMENT __attribute__((__no_instrument_function__))
65# else
66# define ZZIP_GNUC_NO_INSTRUMENT
67# endif
68#endif
69
70/* all pointer args must not be null, and allow optimiztons based on the fact*/
71#ifndef ZZIP_GNUC_NONNULL
72# if ZZIP_GNUC_ATLEAST(3,1)
73# define ZZIP_GNUC_NONNULL __attribute__((nonnull))
74# else
75# define ZZIP_GNUC_NONNULL
76# endif
77#endif
78
79/* the function can not throw - the libc function are usually nothrow */
80#ifndef ZZIP_GNUC_NOTHROW
81# if ZZIP_GNUC_ATLEAST(3,2)
82# define ZZIP_GNUC_NOTHROW __attribute__((nothrow))
83# else
84# define ZZIP_GNUC_NOTHROW
85# endif
86#endif
87
88/* typename / function / variable is obsolete but still listed in headers */
89#ifndef ZZIP_GNUC_DEPRECATED
90# if ZZIP_GNUC_ATLEAST(3,1)
91# define ZZIP_GNUC_DEPRECATED __attribute__((deprecated))
92# else
93# define ZZIP_GNUC_DEPRECATED
94# endif
95#endif
96
97/* resolve references to this function during pre-linking the libary */
98#ifndef ZZIP_GNUC_LIB_PROTECTED
99# if ZZIP_GNUC_ATLEAST(3,1)
100# define ZZIP_GNUC_LIB_PROTECTED __attribute__((visiblity("protected")))
101# else
102# define ZZIP_GNUC_LIB_PROTECTED
103# endif
104#endif
105
106/* func shall only be usable within the same lib (so, no entry in lib symtab)*/
107#ifndef ZZIP_GNUC_LIB_PRIVATE
108# if ZZIP_GNUC_ATLEAST(3,1)
109# define ZZIP_GNUC_LIB_PRIVATE __attribute__((visiblity("hidden")))
110# else
111# define ZZIP_GNUC_LIB_PRIVATE
112# endif
113#endif
114
115/* ... and not even passed as a function pointer reference to outside the lib*/
116#ifndef ZZIP_GNUC_LIB_INTERNAL
117# if ZZIP_GNUC_ATLEAST(3,1)
118# define ZZIP_GNUC_LIB_INTERNAL __attribute__((visiblity("internal")))
119# else
120# define ZZIP_GNUC_LIB_INTERNAL
121# endif
122#endif
123
124
125#ifndef ZZIP_GNUC_FORMAT
126# if ZZIP_GNUC_ATLEAST(2,4)
127# define ZZIP_GNUC_FORMAT(_X_) __attribute__((__format_arg__(_X_)))
128# else
129# define ZZIP_GNUC_FORMAT(_X_)
130# endif
131#endif
132
133#ifndef ZZIP_GNUC_SCANF
134# if ZZIP_GNUC_ATLEAST(2,4)
135# define ZZIP_GNUC_SCANF(_S_,_X_) __attribute__((__scanf__(_S_,_X_)))
136# else
137# define ZZIP_GNUC_SCANF(_S_,_X_)
138# endif
139#endif
140
141#ifndef ZZIP_GNUC_PRINTF
142# if ZZIP_GNUC_ATLEAST(2,4)
143# define ZZIP_GNUC_PRINTF(_S_,_X_) __attribute__((__printf__(_S_,_X_)))
144# else
145# define ZZIP_GNUC_PRINTF(_S_,_X_)
146# endif
147#endif
148
149#ifndef ZZIP_FUNCTION
150# if ZZIP_GNUC_ATLEAST(2,6)
151# define ZZIP_FUNC             __FUNCTION__
152# define ZZIP_FUNCTION         __FUNCTION__
153# elif  defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
154# define ZZIP_FUNC             __func__
155# define ZZIP_FUNCTION         ""
156# else   
157# define ZZIP_FUNC             0
158# define ZZIP_FUNCTION         ""
159# endif 
160#endif
161
162#ifndef ZZIP_STRING
163#define ZZIP_STRING(_X_)   ZZIP_STRING_(_X_)
164#define ZZIP_STRING_(_Y_)  #_Y_
165#endif
166
167#ifndef ZZIP_DIM
168#define ZZIP_DIM(_A_)  (sizeof(_A_) / sizeof ((_A_)[0]))
169#endif
170
171#if !(defined ZZIP_FOR1 && defined ZZIP_END1)
172# if defined sun || defined __sun__
173# define ZZIP_FOR1  if (1)
174# define ZZIP_END1  else (void)0
175# else
176# define ZZIP_FOR1  do
177# define ZZIP_END1  while (0)
178# endif
179#endif
180
181#ifndef ZZIP_BRANCH_OVER
182# if ZZIP_GNUC_ATLEAST(2,96)
183# define ZZIP_BRANCH_OVER(_X_) __builtin_expect((_X_),0)
184# else
185# define ZZIP_BRANCH_OVER(_X_) (_X_)
186# endif
187#endif
188
189#endif
Note: See TracBrowser for help on using the repository browser.