MODE: INLINE
#include <panda/log/multi.h>

namespace xs {
    template <> struct Typemap<MultiLogger::Channel> : TypemapBase<MultiLogger::Channel> {
        static MultiLogger::Channel in (const Hash& h) {
            auto ret = MultiLogger::Channel(xs::in<ILoggerSP>(h.fetch("logger")));
            Sv val;
            if ((val = h.fetch("min_level"))) ret.min_level = xs::in<Level>(val);
            if ((val = h.fetch("formatter"))) ret.formatter = xs::in<IFormatterSP>(val);
            if ((val = h.fetch("format")) && val.defined()) {
                auto fmt = xs::in<string_view>(val);
                if (fmt.length()) ret.formatter = new PatternFormatter(fmt);
            }
            return ret;
        }
    };

    template <> struct Typemap<MultiLogger*> : Typemap<ILogger*, MultiLogger*> {
        static string package () { return "XLog::Multi"; }
    };
}

MODULE = XLog                PACKAGE = XLog::Multi
PROTOTYPES: DISABLE

BOOT {
    Stash(__PACKAGE__).inherit("XLog::ILogger");
}

MultiLogger* MultiLogger::new (MultiLogger::Channels list)