• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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