18ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com/*
28ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * Copyright 2012 The Android Open Source Project
38ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com *
48ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * Use of this source code is governed by a BSD-style license that can be
58ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * found in the LICENSE file.
68ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com */
78ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
88ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#ifndef ANDROID_CUTILS_COMPILER_H
98ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#define ANDROID_CUTILS_COMPILER_H
108ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
118ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com/*
128ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * helps the compiler's optimizer predicting branches
138ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com */
148ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
158ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#ifdef __cplusplus
168ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#   define CC_LIKELY( exp )    (__builtin_expect( !!(exp), true ))
178ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#   define CC_UNLIKELY( exp )  (__builtin_expect( !!(exp), false ))
188ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#else
198ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#   define CC_LIKELY( exp )    (__builtin_expect( !!(exp), 1 ))
208ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#   define CC_UNLIKELY( exp )  (__builtin_expect( !!(exp), 0 ))
218ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#endif
228ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
238ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com/**
248ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * exports marked symbols
258ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com *
268ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * if used on a C++ class declaration, this macro must be inserted
278ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * after the "class" keyword. For instance:
288ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com *
298ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * template <typename TYPE>
308ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com * class ANDROID_API Singleton { }
318ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com */
328ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
338ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#define ANDROID_API __attribute__((visibility("default")))
348ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com
358ffb7046cb789ade4dde1ad588fb8ae995fd3f9ajvanverth@google.com#endif // ANDROID_CUTILS_COMPILER_H
36