protected void chain_output(osd_output_channel channel, string msg) { if (m_chain != null) { m_chain.output_callback(channel, msg); } }
protected void chain_output(osd_output_channel channel, string format, params object [] args) //void chain_output(osd_output_channel channel, util::format_argument_pack<std::ostream> const &args) const { if (m_chain != null) { m_chain.output_callback(channel, format, args); } }
//------------------------------------------------- // output_via_delegate - helper to output a // message via a varargs string, so the argptr // can be forwarded onto the given delegate //------------------------------------------------- void output_via_delegate(osd_output_channel channel, string format, params object [] args) { //va_list argptr; // call through to the delegate with the proper parameters //va_start(argptr, format); chain_output(channel, string.Format(format, args)); //va_end(argptr); }
// generic registry of already-checked stuff //bool already_checked(const char *string) { return (m_already_checked.add(string, 1, false) == TMERR_DUPLICATE); } // osd_output interface //------------------------------------------------- // error_output - error message output override //------------------------------------------------- public override void output_callback(osd_output_channel channel, string msg) { string output = ""; switch (channel) { case osd_output_channel.OSD_OUTPUT_CHANNEL_ERROR: // count the error m_errors++; // output the source(driver) device 'tag' build_output_prefix(out output); // generate the string output += msg; m_error_text = output; break; case osd_output_channel.OSD_OUTPUT_CHANNEL_WARNING: // count the error m_warnings++; // output the source(driver) device 'tag' build_output_prefix(out output); // generate the string and output to the original target output += msg; m_warning_text = output; break; case osd_output_channel.OSD_OUTPUT_CHANNEL_VERBOSE: // if we're not verbose, skip it if (!m_print_verbose) { break; } // output the source(driver) device 'tag' build_output_prefix(out output); // generate the string and output to the original target output += msg; m_verbose_text = output; break; default: chain_output(channel, msg); break; } }
// generic registry of already-checked stuff //bool already_checked(const char *string) { return (m_already_checked.add(string, 1, false) == TMERR_DUPLICATE); } // osd_output interface //------------------------------------------------- // error_output - error message output override //------------------------------------------------- public override void output_callback(osd_output_channel channel, string format, params object [] args) //virtual void output_callback(osd_output_channel channel, const util::format_argument_pack<std::ostream> &args) override; { string output = ""; switch (channel) { case osd_output_channel.OSD_OUTPUT_CHANNEL_ERROR: // count the error m_errors++; // output the source(driver) device 'tag' build_output_prefix(ref output); // generate the string util.stream_format(ref output, format, args); m_error_text = m_error_text.append_(output); break; case osd_output_channel.OSD_OUTPUT_CHANNEL_WARNING: // count the error m_warnings++; // output the source(driver) device 'tag' build_output_prefix(ref output); // generate the string and output to the original target util.stream_format(ref output, format, args); m_warning_text = m_warning_text.append_(output); break; case osd_output_channel.OSD_OUTPUT_CHANNEL_VERBOSE: // if we're not verbose, skip it if (!m_print_verbose) { break; } // output the source(driver) device 'tag' build_output_prefix(ref output); // generate the string and output to the original target util.stream_format(ref output, format, args); m_verbose_text = m_verbose_text.append_(output); break; default: chain_output(channel, format, args); break; } }
public abstract void output_callback(osd_output_channel channel, string msg);
public abstract void output_callback(osd_output_channel channel, string format, params object [] args); //virtual void output_callback(osd_output_channel channel, util::format_argument_pack<std::ostream> const &args) = 0;
//------------------------------------------------- // output_via_delegate - helper to output a // message via a varargs string, so the argptr // can be forwarded onto the given delegate //------------------------------------------------- void output_via_delegate(osd_output_channel channel, string fmt, params object [] args) //template <typename Format, typename... Params> void output_via_delegate(osd_output_channel channel, Format &&fmt, Params &&...args); { // call through to the delegate with the proper parameters chain_output(channel, fmt, args); }