Update contrib.
2 * LIBOIL - Library of Optimized Inner Loops
3 * Copyright (c) 2007 David A. Schleef <ds@schleef.org>
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
28 #ifndef _LIBOIL_UTILS_H_
29 #define _LIBOIL_UTILS_H_
31 #include <liboil/liboil-stdint.h>
40 typedef unsigned int oil_bool;
42 #ifdef OIL_ENABLE_UNSTABLE_API
44 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
45 #define DIVIDE_ROUND_UP(a,b) (((a) + (b) - 1)/(b))
47 #define MIN(a,b) ((a)<(b) ? (a) : (b))
50 #define MAX(a,b) ((a)>(b) ? (a) : (b))
53 #define CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
55 #define ROUND_UP_SHIFT(x,y) (((x) + (1<<(y)) - 1)>>(y))
56 #define ROUND_UP_POW2(x,y) (((x) + (1<<(y)) - 1)&((~0)<<(y)))
57 #define ROUND_UP_2(x) ROUND_UP_POW2(x,1)
58 #define ROUND_UP_4(x) ROUND_UP_POW2(x,2)
59 #define ROUND_UP_8(x) ROUND_UP_POW2(x,3)
60 #define ROUND_SHIFT(x,y) (((x) + (1<<((y)-1)))>>(y))
64 #if defined(__GNUC__) && defined(__GNUC_MINOR__)
65 #define OIL_GNUC_PREREQ(maj, min) \
66 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
68 #define OIL_GNUC_PREREQ(maj, min) 0
71 #if OIL_GNUC_PREREQ(3,3) && defined(__ELF__)
72 #define OIL_INTERNAL __attribute__ ((visibility ("internal")))
78 #define OIL_BEGIN_DECLS extern "C" {
79 #define OIL_END_DECLS }
81 #define OIL_BEGIN_DECLS
87 #define OIL_EXPORT __declspec(dllexport) extern
89 #define OIL_EXPORT __declspec(dllimport) extern
91 #else /* not _MSC_VER */
92 #define OIL_EXPORT extern
97 #ifdef OIL_ENABLE_UNSTABLE_API
99 int get_file_int (const char *file, int *value);
100 char * get_file (const char *file);
101 char * get_cpuinfo_line (char *cpuinfo, const char *tag);
102 char * _strndup (const char *s, int n);
103 char ** strsplit (char *s);
104 char * get_tag_value (char *s, const char *tag);