/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*******************************************************************************
* @file LV_Macros.h
* @par NXP Software
* @brief Macros definition for Smartphone team
*******************************************************************************/
#ifndef LV_MACROS_H
#define LV_MACROS_H
/*------------*/
/* INCLUDES */
/*------------*/
#include "M4OSA_Memory.h"
#include "M4OSA_Debug.h"
/******************************************************************************
*
* CHECK_PTR(fct, p, err, errValue)
* @note This macro checks the value p. If it is NULL, it sets the variable err
* to errValue and jumps to the label <fct>_cleanUp. A trace is displayed
* signalling the error, the function name and the line number.
*
******************************************************************************/
#define CHECK_PTR(fct, p, err, errValue) \
{ \
if(M4OSA_NULL == (p)) \
{ \
(err) = (errValue) ; \
M4OSA_TRACE1_1((M4OSA_Char*)"" #fct "(L%d): " #p " is NULL, returning " #errValue "",__LINE__) ; \
goto fct##_cleanUp; \
} \
}
/******************************************************************************
*
* CHECK_ERR(fct, err)
* @note This macro checks the value err. If it is not NULL, a trace is displayed
* signalling the error, the function name and the line number. The macro
* jumps to the label <fct>_cleanUp.
*
******************************************************************************/
#define CHECK_ERR(fct, err) \
{ \
if(M4NO_ERROR != (err)) \
{ \
M4OSA_TRACE1_2((M4OSA_Char*)"!!! " #fct "(L%d): ERROR 0x%.8x returned",\
__LINE__,err) ; \
goto fct##_cleanUp; \
} \
}
/******************************************************************************
*
* CHECK_ERR(fct, err)
* @note This macro compares a current state with a state value. If they are different,
* err is set to M4ERR_STATE.
* A trace is displayed signalling the error, the function name and the line number.
* The macro jumps to the label <fct>_cleanUp.
*
******************************************************************************/
#define CHECK_STATE(fct, stateValue, state) \
{ \
if((stateValue) != (state)) \
{ \
M4OSA_TRACE1_1("" #fct " called in bad state %d", state) ; \
(err) = M4ERR_STATE ; \
goto fct##_cleanUp; \
} \
}
/******************************************************************************
*
* SAFE_FREE(p)
* @note This macro checks the value of p is not NULL. If it is NULL, it does
* nothing. Else, p is de allocated and set to NULL.
*
******************************************************************************/
#define SAFE_FREE(p) \
{ \
if(M4OSA_NULL != (p)) \
{ \
free((p)) ; \
(p) = M4OSA_NULL ; \
} \
}
#endif /*--- LV_MACROS_H ---*/