view gen/logger.h @ 1442:0a5f7890f327

Adjust some more code that was depending on the function and delegate calling conventions being equal. There's also an instance in `tango.text.convert.Layout` that should be adjusted: {{{ Index: tango/text/convert/Layout.d =================================================================== --- tango/text/convert/Layout.d (revision 4578) +++ tango/text/convert/Layout.d (working copy) -660,8 +660,12 @@ case TypeCode.STRUCT: auto s = cast(TypeInfo_Struct) type; - if (s.xtoString) - return Utf.fromString8 (s.xtoString(p), result); + if (s.xtoString) { + char[] delegate() toString; + toString.ptr = p; + toString.funcptr = cast(char[] function()) s.xtoString; + return Utf.fromString8 (toString(), result); + } goto default; case TypeCode.INTERFACE: }}}
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 31 May 2009 15:27:01 +0200
parents 229e02867307
children 2292878925f4
line wrap: on
line source

#ifndef _llvmd_gen_logger_h_
#define _llvmd_gen_logger_h_

#include "llvm/Support/Streams.h"

#ifndef IS_PRINTF
# ifdef __GNUC__
#  define IS_PRINTF(FMTARG) __attribute((__format__ (__printf__, (FMTARG), (FMTARG)+1) ))
# else
#  define IS_PRINTF(FMTARG)
# endif
#endif

struct Loc;

namespace Logger
{
    void indent();
    void undent();
    llvm::OStream cout();
    void println(const char* fmt, ...) IS_PRINTF(1);
    void print(const char* fmt, ...) IS_PRINTF(1);
    void enable();
    void disable();
    bool enabled();

    void attention(Loc loc, const char* fmt, ...) IS_PRINTF(2);

    struct LoggerScope
    {
        LoggerScope()
        {
            Logger::indent();
        }
        ~LoggerScope()
        {
            Logger::undent();
        }
    };
}

#define LOG_SCOPE    Logger::LoggerScope _logscope;

#define IF_LOG       if (Logger::enabled())

#endif