esp8266-std/ESP8266_RTOS_SDK/include/nopoll/nopoll_log.h

114 lines
3.6 KiB
C

/*
* LibNoPoll: A websocket library
* Copyright (C) 2013 Advanced Software Production Line, S.L.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*
* You may find a copy of the license under this software is released
* at COPYING file. This is LGPL software: you are welcome to develop
* proprietary applications using this library without any royalty or
* fee but returning back any change, improvement or addition in the
* form of source code, project image, documentation patches, etc.
*
* For commercial support on build Websocket enabled solutions
* contact us:
*
* Postal address:
* Advanced Software Production Line, S.L.
* Edificio Alius A, Oficina 102,
* C/ Antonio Suarez Nº 10,
* Alcalá de Henares 28802 Madrid
* Spain
*
* Email address:
* info@aspl.es - http://www.aspl.es/nopoll
*/
#ifndef __NOPOLL_LOG_H__
#define __NOPOLL_LOG_H__
#include <nopoll_decl.h>
#include <nopoll_handlers.h>
BEGIN_C_DECLS
/**
* \addtogroup nopoll_log_module
* @{
*/
nopoll_bool nopoll_log_is_enabled (noPollCtx * ctx);
nopoll_bool nopoll_log_color_is_enabled (noPollCtx * ctx);
void nopoll_log_enable (noPollCtx * ctx, nopoll_bool value);
void nopoll_log_color_enable (noPollCtx * ctx, nopoll_bool value);
void nopoll_log_set_handler (noPollCtx * ctx, noPollLogHandler handler, noPollPtr user_data);
/* include this at this place to load GNU extensions */
#if defined(__GNUC__)
# ifndef _GNU_SOURCE
# define _GNU_SOURCE
# endif
# define __function_name__ __PRETTY_FUNCTION__
# define __line__ __LINE__
# define __file__ __FILE__
#elif defined(_MSC_VER)
# define __function_name__ __FUNCDNAME__
# define __line__ __LINE__
# define __file__ __FILE__
#else
/* unknown compiler */
#define __function_name__ ""
#define __line__ 0
#define __file__ ""
#endif
#if defined(SHOW_DEBUG_LOG)
# define nopoll_log(ctx,level,message, ...) do{__nopoll_log(ctx, __function_name__, __file__, __line__, level, message, ##__VA_ARGS__);}while(0)
#else
# if defined(NOPOLL_OS_WIN32) && !( defined (__GNUC__) || _MSC_VER >= 1400)
/* default case where '...' is not supported but log is still
* disabled */
# define nopoll_log __nopoll_log
# else
# define nopoll_log(ctx, level, message, ...) /* nothing */
# endif
#endif
/**
* @internal The following definition allows to find printf like wrong
* argument passing to nopoll_log function. To activate the depuration
* just add the following to local nopoll_config.h file:
*
* #define SHOW_FORMAT_BUGS (1)
*/
#if defined(SHOW_FORMAT_BUGS)
# undef nopoll_log
# define nopoll_log(ctx,level,message, ...) do{printf (message, ##__VA_ARGS__);}while(0)
#endif
void __nopoll_log (noPollCtx * ctx, const char * function_name, const char * file, int line, noPollDebugLevel level, const char * message, ...);
/* @} */
END_C_DECLS
#endif