blob: 56c623c42bf39421ffb86c67ff17b105c4614d17 [file] [log] [blame]
jvanverth@google.com8ffb7042012-12-13 19:53:18 +00001/*
2 * Copyright 2012 The Android Open Source Project
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef ANDROID_CUTILS_COMPILER_H
9#define ANDROID_CUTILS_COMPILER_H
10
11/*
12 * helps the compiler's optimizer predicting branches
13 */
14
15#ifdef __cplusplus
16# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), true ))
17# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), false ))
18#else
19# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), 1 ))
20# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), 0 ))
21#endif
22
23/**
24 * exports marked symbols
25 *
26 * if used on a C++ class declaration, this macro must be inserted
27 * after the "class" keyword. For instance:
28 *
29 * template <typename TYPE>
30 * class ANDROID_API Singleton { }
31 */
32
33#define ANDROID_API __attribute__((visibility("default")))
34
35#endif // ANDROID_CUTILS_COMPILER_H