103f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao/* 203f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Copyright 2011, The Android Open Source Project 303f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * 403f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 503f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * you may not use this file except in compliance with the License. 603f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * You may obtain a copy of the License at 703f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * 803f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 903f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * 1003f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Unless required by applicable law or agreed to in writing, software 1103f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS, 1203f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1303f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * See the License for the specific language governing permissions and 1403f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * limitations under the License. 1503f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao */ 1603f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao 17ec32227de4dbcb4c684d78716336d803140167beTDYa#ifndef RSL_ASSERT_H 18ec32227de4dbcb4c684d78716336d803140167beTDYa#define RSL_ASSERT_H 19ec32227de4dbcb4c684d78716336d803140167beTDYa 20ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#if defined(__cplusplus) 21ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chienextern "C" { 22ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#endif 23ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien 24ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chienextern void ASSERT_FAILED(char const *file, 25ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien unsigned line, 26ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien char const *expr); 27ec32227de4dbcb4c684d78716336d803140167beTDYa 28ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#if defined(__cplusplus) 29ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien} // extern "C" 30ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#endif 31ec32227de4dbcb4c684d78716336d803140167beTDYa 32ec32227de4dbcb4c684d78716336d803140167beTDYa#ifdef RSL_NDEBUG 33ec32227de4dbcb4c684d78716336d803140167beTDYa 34ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#define rsl_assert(EXPR) \ 35ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien do { } while (0) 36ec32227de4dbcb4c684d78716336d803140167beTDYa 37ec32227de4dbcb4c684d78716336d803140167beTDYa#else 38ec32227de4dbcb4c684d78716336d803140167beTDYa 39ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#define rsl_assert(EXPR) \ 40ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien do { \ 41ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien if (!(EXPR)) { \ 42ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien ASSERT_FAILED(__FILE__, __LINE__, #EXPR); \ 43ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien } \ 44ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien } while (0) 45ec32227de4dbcb4c684d78716336d803140167beTDYa 46ec32227de4dbcb4c684d78716336d803140167beTDYa#endif 47ec32227de4dbcb4c684d78716336d803140167beTDYa 48ec32227de4dbcb4c684d78716336d803140167beTDYa#endif // RSL_ASSERT_H 49