1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /******************************************************************************* 18 * @file LV_Macros.h 19 * @par NXP Software 20 * @brief Macros definition for Smartphone team 21 *******************************************************************************/ 22 23 #ifndef LV_MACROS_H 24 #define LV_MACROS_H 25 26 /*------------*/ 27 /* INCLUDES */ 28 /*------------*/ 29 #include "M4OSA_Memory.h" 30 #include "M4OSA_Debug.h" 31 32 /****************************************************************************** 33 * 34 * CHECK_PTR(fct, p, err, errValue) 35 * @note This macro checks the value p. If it is NULL, it sets the variable err 36 * to errValue and jumps to the label <fct>_cleanUp. A trace is displayed 37 * signalling the error, the function name and the line number. 38 * 39 ******************************************************************************/ 40 #define CHECK_PTR(fct, p, err, errValue) \ 41 { \ 42 if(M4OSA_NULL == (p)) \ 43 { \ 44 (err) = (errValue) ; \ 45 M4OSA_TRACE1_1((M4OSA_Char*)"" #fct "(L%d): " #p " is NULL, returning " #errValue "",__LINE__) ; \ 46 goto fct##_cleanUp; \ 47 } \ 48 } 49 50 /****************************************************************************** 51 * 52 * CHECK_ERR(fct, err) 53 * @note This macro checks the value err. If it is not NULL, a trace is displayed 54 * signalling the error, the function name and the line number. The macro 55 * jumps to the label <fct>_cleanUp. 56 * 57 ******************************************************************************/ 58 #define CHECK_ERR(fct, err) \ 59 { \ 60 if(M4NO_ERROR != (err)) \ 61 { \ 62 M4OSA_TRACE1_2((M4OSA_Char*)"!!! " #fct "(L%d): ERROR 0x%.8x returned",\ 63 __LINE__,err) ; \ 64 goto fct##_cleanUp; \ 65 } \ 66 } 67 68 69 /****************************************************************************** 70 * 71 * CHECK_ERR(fct, err) 72 * @note This macro compares a current state with a state value. If they are different, 73 * err is set to M4ERR_STATE. 74 * A trace is displayed signalling the error, the function name and the line number. 75 * The macro jumps to the label <fct>_cleanUp. 76 * 77 ******************************************************************************/ 78 #define CHECK_STATE(fct, stateValue, state) \ 79 { \ 80 if((stateValue) != (state)) \ 81 { \ 82 M4OSA_TRACE1_1("" #fct " called in bad state %d", state) ; \ 83 (err) = M4ERR_STATE ; \ 84 goto fct##_cleanUp; \ 85 } \ 86 } 87 88 /****************************************************************************** 89 * 90 * SAFE_FREE(p) 91 * @note This macro checks the value of p is not NULL. If it is NULL, it does 92 * nothing. Else, p is de allocated and set to NULL. 93 * 94 ******************************************************************************/ 95 #define SAFE_FREE(p) \ 96 { \ 97 if(M4OSA_NULL != (p)) \ 98 { \ 99 free((p)) ; \ 100 (p) = M4OSA_NULL ; \ 101 } \ 102 } 103 104 105 106 #endif /*--- LV_MACROS_H ---*/ 107 108