summaryrefslogtreecommitdiff
path: root/include/grail-bits.h
diff options
context:
space:
mode:
authorJussi Pakkanen <jussi.pakkanen@canonical.com>2011-04-28 14:46:17 +0200
committerHenrik Rydberg <rydberg@euromail.se>2011-04-28 15:19:03 +0200
commit753f11f3881eac51da49c5bb2c2eebc99bd47410 (patch)
treeb3a5906f6751116efd26fdd6951e7d2f82f0b38f /include/grail-bits.h
parentb2a967eea554fce9fdec21f5e19c9608406f530c (diff)
Use visibility macros instead of symbol map
Signed-off-by: Jussi Pakkanen <jussi.pakkanen@canonical.com> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'include/grail-bits.h')
-rw-r--r--include/grail-bits.h33
1 files changed, 28 insertions, 5 deletions
diff --git a/include/grail-bits.h b/include/grail-bits.h
index c151c11..dfe5367 100644
--- a/include/grail-bits.h
+++ b/include/grail-bits.h
@@ -27,6 +27,26 @@
27extern "C" { 27extern "C" {
28#endif 28#endif
29 29
30/* Macros that set symbol visibilities in shared libraries properly.
31 * Adapted from http://gcc.gnu.org/wiki/Visibility
32 */
33
34#if defined _WIN32 || defined __CYGWIN__
35 #ifdef BUILDING_GRAIL
36 #define GRAIL_PUBLIC __declspec(dllexport)
37 #else
38 #define GRAIL_PUBLIC __declspec(dllimport)
39 #endif
40 #define GRAIL_PRIVATE
41#else
42 #if defined __GNUC__
43 #define GRAIL_PUBLIC __attribute__ ((visibility("default")))
44 #define GRAIL_PRIVATE __attribute__ ((visibility("hidden")))
45 #else
46 #error "Unsupported compiler."
47 #endif
48#endif
49
30typedef unsigned char grail_mask_t; 50typedef unsigned char grail_mask_t;
31 51
32static inline void grail_mask_set(grail_mask_t *mask, int i) 52static inline void grail_mask_set(grail_mask_t *mask, int i)
@@ -52,12 +72,15 @@ static inline int grail_mask_get(const grail_mask_t *mask, int i)
52 return (mask[i >> 3] >> (i & 7)) & 1; 72 return (mask[i >> 3] >> (i & 7)) & 1;
53} 73}
54 74
55void grail_mask_set_mask(grail_mask_t *a, const grail_mask_t *b, int bytes); 75void GRAIL_PUBLIC grail_mask_set_mask(grail_mask_t *a, const grail_mask_t *b,
56void grail_mask_clear_mask(grail_mask_t *a, const grail_mask_t *b, int bytes); 76 int bytes);
77void GRAIL_PUBLIC grail_mask_clear_mask(grail_mask_t *a, const grail_mask_t *b,
78 int bytes);
57 79
58int grail_mask_count(const grail_mask_t *mask, int bytes); 80int GRAIL_PUBLIC grail_mask_count(const grail_mask_t *mask, int bytes);
59int grail_mask_get_first(const grail_mask_t *mask, int bytes); 81int GRAIL_PUBLIC grail_mask_get_first(const grail_mask_t *mask, int bytes);
60int grail_mask_get_next(int i, const grail_mask_t *mask, int bytes); 82int GRAIL_PUBLIC grail_mask_get_next(int i, const grail_mask_t *mask,
83 int bytes);
61 84
62#define grail_mask_foreach(i, mask, bytes) \ 85#define grail_mask_foreach(i, mask, bytes) \
63 for (i = grail_mask_get_first(mask, bytes); \ 86 for (i = grail_mask_get_first(mask, bytes); \