blob: e7a6e00181de5ea6822ccb498dced436d08a0938 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// The contents of this file are subject to the Mozilla Public License
// Version 1.1 (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.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// License for the specific language governing rights and limitations
// under the License.
//
// The Original Code is MP4v2.
//
// The Initial Developer of the Original Code is David Byron.
// Portions created by David Byron are Copyright (C) 2009, 2010, 2011.
// All Rights Reserved.
//
// Contributors:
// David Byron, dbyron@dbyron.com
//
///////////////////////////////////////////////////////////////////////////////
#ifndef MP4V2_IMPL_LOG_H
#define MP4V2_IMPL_LOG_H
namespace mp4v2 { namespace impl {
///////////////////////////////////////////////////////////////////////////////
/**
* Handle logging either to standard out or to a callback
* function
*/
class MP4V2_EXPORT Log {
private:
MP4LogLevel _verbosity;
static MP4LogCallback _cb_func;
public:
const MP4LogLevel& verbosity;
public:
Log( MP4LogLevel = MP4_LOG_NONE );
virtual ~Log();
static void setLogCallback ( MP4LogCallback );
void setVerbosity ( MP4LogLevel );
void errorf ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void warningf ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void infof ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void verbose1f ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void verbose2f ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void verbose3f ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void verbose4f ( const char* format, ... ) MP4V2_WFORMAT_PRINTF(2,3);
void dump ( uint8_t indent,
MP4LogLevel verbosity_,
const char* format, ... ) MP4V2_WFORMAT_PRINTF(4,5);
void vdump ( uint8_t indent,
MP4LogLevel verbosity_,
const char* format, va_list ap );
void printf ( MP4LogLevel verbosity_,
const char* format, ... ) MP4V2_WFORMAT_PRINTF(3,4);
void vprintf ( MP4LogLevel verbosity_,
const char* format, va_list ap );
void hexDump ( uint8_t indent,
MP4LogLevel verbosity_,
const uint8_t* pBytes,
uint32_t numBytes,
const char* format, ... ) MP4V2_WFORMAT_PRINTF(6,7);
void errorf ( const Exception& x );
private:
Log ( const Log &src );
Log &operator= ( const Log &src );
};
/**
* A global (at least to mp4v2) log object for code that
* needs to log something but doesn't otherwise have access
* to one
*/
extern Log log;
///////////////////////////////////////////////////////////////////////////////
}} // namespace mp4v2::impl
#endif // MP4V2_IMPL_LOG_H