hackedteam/vector-dropper

View on GitHub
RCSStreamingMelter/lib/Common.h

Summary

Maintainability
Test Coverage
#ifndef Common_h__
#define Common_h__

#include <iomanip>
#include <iostream>
#include <sstream>

#include <boost/filesystem.hpp>
#include <boost/filesystem/path.hpp>
namespace bf = boost::filesystem;

#include "../MelterConfig.h"

#ifdef WIN32
#include <Windows.h>
#else
#include "win32types.h"
#endif

#include "debug.h"

typedef void (*debug_msg_t)(char level, const char* message, ...);

#ifdef __cplusplus
extern "C" {
#endif
debug_msg_t debug_fn();
#ifdef __cplusplus
}
#endif

void set_debug_fn( debug_msg_t fn );

#define DBG_MINPRIO D_EXCESSIVE

#ifdef WIN32
#define __PRETTY_FUNCTION__ __FUNCTION__
#endif

void debugTrace_extended(std::string filename, unsigned int line, std::string function, std::string msg, std::string par);
void debugTrace(char level, const char* message, ...);

#ifdef _DEBUG

#define DBGTRACE(msg, par, pri) do { \
        if ( (unsigned int)pri >= (unsigned int)DBG_MINPRIO ) \
        { \
            std::ostringstream spar; \
            spar << (par); \
            debugTrace_extended(__FILE__, __LINE__, __PRETTY_FUNCTION__, msg, spar.str()); \
        } \
    } while(0)

#define DBGTRACE_HEX(msg, par, pri) do { \
        if ( (unsigned int)pri >= (unsigned int)DBG_MINPRIO ) \
        { \
            std::ostringstream spar; \
            spar << "0x" << hex << (par); \
            debugTrace_extended(__FILE__, __LINE__, __PRETTY_FUNCTION__, msg, spar.str()); \
        } \
    } while (0)

#define DBGTRACE_BUFFER(pri) do { \
        if ( (unsigned int)pri >= (unsigned int)DBG_MINPRIO ) { \
        std::ostringstream spar; \
        spar << "[ " << ( done() ? "true" : "false" ) << hex \
                    << " trig: " << triggeringOffset() \
                    << " curr: " << currentOffset() \
                    << " need: " << neededBytes() \
                    << " aval: " << availableOffset() \
                    << " ]"; \
        debugTrace_extended(__FILE__, __LINE__, __PRETTY_FUNCTION__, spar.str(), ""); \
        } \
    } while (0)

#else
#define DBGTRACE(msg, par, pri)
#define DBGTRACE_HEX(msg, par, pri)
#define DBGTRACE_BUFFER(pri)
#endif

#endif // Common_h__