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