1/*
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
36