Newer
Older
Import / research / signals-slots / src / core / dump.h
#ifndef DUMP_H
#define DUMP_H


#include <stdio.h>


class Dumpable
{
public:
    virtual const char *className() const = 0;
    virtual const char *dump() const = 0;
};


inline void dumpVariable(const char *name, const Dumpable &var)
{
    printf("%s %s = %s;\n", var.className(), name, var.dump());
}


#define DUMP(x) \
    dumpVariable(#x, x);


#define DEFINE_DUMP_VARIABLE_FUNCTION(type, pat) \
    inline void dumpVariable(const char *name, type x) \
    { \
        printf(#type " %s = " pat ";\n", name, x); \
    }


DEFINE_DUMP_VARIABLE_FUNCTION(char, "'%c'")
DEFINE_DUMP_VARIABLE_FUNCTION(signed char, "'%c'")
DEFINE_DUMP_VARIABLE_FUNCTION(unsigned char, "'%c'")
DEFINE_DUMP_VARIABLE_FUNCTION(int, "%d")
DEFINE_DUMP_VARIABLE_FUNCTION(unsigned int, "%d")
DEFINE_DUMP_VARIABLE_FUNCTION(short, "%d")
DEFINE_DUMP_VARIABLE_FUNCTION(unsigned short, "%d")
DEFINE_DUMP_VARIABLE_FUNCTION(long, "%ld")
DEFINE_DUMP_VARIABLE_FUNCTION(unsigned long, "%ld")
DEFINE_DUMP_VARIABLE_FUNCTION(float, "%f")
DEFINE_DUMP_VARIABLE_FUNCTION(double, "%lf")
DEFINE_DUMP_VARIABLE_FUNCTION(const char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(const signed char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(const unsigned char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(signed char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(unsigned char*, "\"%s\"")
DEFINE_DUMP_VARIABLE_FUNCTION(void*, "0x%08x")


#endif // DUMP_H