/* Do not modify this file -- it is automatically generated! */

#include "debugtools.h"

#define DEBUG_CLASS_COUNT __DBCL_COUNT

static const char * const debug_cl_name[] = { "fixme", "err", "warn", "trace" };

char dbch_accel[] = "\003accel";
char dbch_advapi[] = "\003advapi";
char dbch_animate[] = "\003animate";
char dbch_aspi[] = "\003aspi";
char dbch_atom[] = "\003atom";
char dbch_avifile[] = "\003avifile";
char dbch_bitblt[] = "\003bitblt";
char dbch_bitmap[] = "\003bitmap";
char dbch_caret[] = "\003caret";
char dbch_cdrom[] = "\003cdrom";
char dbch_class[] = "\003class";
char dbch_clipboard[] = "\003clipboard";
char dbch_clipping[] = "\003clipping";
char dbch_combo[] = "\003combo";
char dbch_comboex[] = "\003comboex";
char dbch_comm[] = "\003comm";
char dbch_commctrl[] = "\003commctrl";
char dbch_commdlg[] = "\003commdlg";
char dbch_console[] = "\003console";
char dbch_crtdll[] = "\003crtdll";
char dbch_cursor[] = "\003cursor";
char dbch_datetime[] = "\003datetime";
char dbch_dc[] = "\003dc";
char dbch_ddeml[] = "\003ddeml";
char dbch_ddraw[] = "\003ddraw";
char dbch_debug[] = "\003debug";
char dbch_debugstr[] = "\003debugstr";
char dbch_delayhlp[] = "\003delayhlp";
char dbch_dialog[] = "\003dialog";
char dbch_dinput[] = "\003dinput";
char dbch_dll[] = "\003dll";
char dbch_dosfs[] = "\003dosfs";
char dbch_dosmem[] = "\003dosmem";
char dbch_dplay[] = "\003dplay";
char dbch_driver[] = "\003driver";
char dbch_dsound[] = "\003dsound";
char dbch_edit[] = "\003edit";
char dbch_elfdll[] = "\003elfdll";
char dbch_enhmetafile[] = "\003enhmetafile";
char dbch_event[] = "\003event";
char dbch_exec[] = "\003exec";
char dbch_file[] = "\003file";
char dbch_fixup[] = "\003fixup";
char dbch_font[] = "\003font";
char dbch_gdi[] = "\003gdi";
char dbch_global[] = "\003global";
char dbch_graphics[] = "\003graphics";
char dbch_header[] = "\003header";
char dbch_heap[] = "\003heap";
char dbch_hook[] = "\003hook";
char dbch_hotkey[] = "\003hotkey";
char dbch_icmp[] = "\003icmp";
char dbch_icon[] = "\003icon";
char dbch_imagehlp[] = "\003imagehlp";
char dbch_imagelist[] = "\003imagelist";
char dbch_imm[] = "\003imm";
char dbch_int[] = "\003int";
char dbch_int10[] = "\003int10";
char dbch_int16[] = "\003int16";
char dbch_int17[] = "\003int17";
char dbch_int19[] = "\003int19";
char dbch_int21[] = "\003int21";
char dbch_int31[] = "\003int31";
char dbch_io[] = "\003io";
char dbch_ipaddress[] = "\003ipaddress";
char dbch_joystick[] = "\003joystick";
char dbch_key[] = "\003key";
char dbch_keyboard[] = "\003keyboard";
char dbch_ldt[] = "\003ldt";
char dbch_listbox[] = "\003listbox";
char dbch_listview[] = "\003listview";
char dbch_local[] = "\003local";
char dbch_mci[] = "\003mci";
char dbch_mcianim[] = "\003mcianim";
char dbch_mciavi[] = "\003mciavi";
char dbch_mcicda[] = "\003mcicda";
char dbch_mcimidi[] = "\003mcimidi";
char dbch_mciwave[] = "\003mciwave";
char dbch_mdi[] = "\003mdi";
char dbch_menu[] = "\003menu";
char dbch_message[] = "\003message";
char dbch_metafile[] = "\003metafile";
char dbch_midi[] = "\003midi";
char dbch_mmaux[] = "\003mmaux";
char dbch_mmio[] = "\003mmio";
char dbch_mmsys[] = "\003mmsys";
char dbch_mmtime[] = "\003mmtime";
char dbch_module[] = "\003module";
char dbch_monthcal[] = "\003monthcal";
char dbch_mpr[] = "\003mpr";
char dbch_msacm[] = "\003msacm";
char dbch_msg[] = "\003msg";
char dbch_msvideo[] = "\003msvideo";
char dbch_nativefont[] = "\003nativefont";
char dbch_nonclient[] = "\003nonclient";
char dbch_ntdll[] = "\003ntdll";
char dbch_odbc[] = "\003odbc";
char dbch_ole[] = "\003ole";
char dbch_opengl[] = "\003opengl";
char dbch_pager[] = "\003pager";
char dbch_palette[] = "\003palette";
char dbch_pidl[] = "\003pidl";
char dbch_print[] = "\003print";
char dbch_process[] = "\003process";
char dbch_profile[] = "\003profile";
char dbch_progress[] = "\003progress";
char dbch_prop[] = "\003prop";
char dbch_propsheet[] = "\003propsheet";
char dbch_psapi[] = "\003psapi";
char dbch_psdrv[] = "\003psdrv";
char dbch_ras[] = "\003ras";
char dbch_rebar[] = "\003rebar";
char dbch_reg[] = "\003reg";
char dbch_region[] = "\003region";
char dbch_relay[] = "\003relay";
char dbch_resource[] = "\003resource";
char dbch_richedit[] = "\003richedit";
char dbch_scroll[] = "\003scroll";
char dbch_segment[] = "\003segment";
char dbch_seh[] = "\003seh";
char dbch_selector[] = "\003selector";
char dbch_sendmsg[] = "\003sendmsg";
char dbch_server[] = "\003server";
char dbch_setupapi[] = "\003setupapi";
char dbch_setupx[] = "\003setupx";
char dbch_shell[] = "\003shell";
char dbch_snoop[] = "\003snoop";
char dbch_sound[] = "\003sound";
char dbch_static[] = "\003static";
char dbch_statusbar[] = "\003statusbar";
char dbch_storage[] = "\003storage";
char dbch_stress[] = "\003stress";
char dbch_string[] = "\003string";
char dbch_syscolor[] = "\003syscolor";
char dbch_system[] = "\003system";
char dbch_tab[] = "\003tab";
char dbch_tape[] = "\003tape";
char dbch_tapi[] = "\003tapi";
char dbch_task[] = "\003task";
char dbch_text[] = "\003text";
char dbch_thread[] = "\003thread";
char dbch_thunk[] = "\003thunk";
char dbch_timer[] = "\003timer";
char dbch_toolbar[] = "\003toolbar";
char dbch_toolhelp[] = "\003toolhelp";
char dbch_tooltips[] = "\003tooltips";
char dbch_trackbar[] = "\003trackbar";
char dbch_treeview[] = "\003treeview";
char dbch_ttydrv[] = "\003ttydrv";
char dbch_tweak[] = "\003tweak";
char dbch_typelib[] = "\003typelib";
char dbch_updown[] = "\003updown";
char dbch_ver[] = "\003ver";
char dbch_virtual[] = "\003virtual";
char dbch_vxd[] = "\003vxd";
char dbch_wave[] = "\003wave";
char dbch_win[] = "\003win";
char dbch_win16drv[] = "\003win16drv";
char dbch_win32[] = "\003win32";
char dbch_wing[] = "\003wing";
char dbch_wininet[] = "\003wininet";
char dbch_winsock[] = "\003winsock";
char dbch_winspool[] = "\003winspool";
char dbch_wnet[] = "\003wnet";
char dbch_x11[] = "\003x11";
char dbch_x11drv[] = "\003x11drv";

#define DEBUG_CHANNEL_COUNT 166

static char * const debug_channels[DEBUG_CHANNEL_COUNT] = {
    dbch_accel,
    dbch_advapi,
    dbch_animate,
    dbch_aspi,
    dbch_atom,
    dbch_avifile,
    dbch_bitblt,
    dbch_bitmap,
    dbch_caret,
    dbch_cdrom,
    dbch_class,
    dbch_clipboard,
    dbch_clipping,
    dbch_combo,
    dbch_comboex,
    dbch_comm,
    dbch_commctrl,
    dbch_commdlg,
    dbch_console,
    dbch_crtdll,
    dbch_cursor,
    dbch_datetime,
    dbch_dc,
    dbch_ddeml,
    dbch_ddraw,
    dbch_debug,
    dbch_debugstr,
    dbch_delayhlp,
    dbch_dialog,
    dbch_dinput,
    dbch_dll,
    dbch_dosfs,
    dbch_dosmem,
    dbch_dplay,
    dbch_driver,
    dbch_dsound,
    dbch_edit,
    dbch_elfdll,
    dbch_enhmetafile,
    dbch_event,
    dbch_exec,
    dbch_file,
    dbch_fixup,
    dbch_font,
    dbch_gdi,
    dbch_global,
    dbch_graphics,
    dbch_header,
    dbch_heap,
    dbch_hook,
    dbch_hotkey,
    dbch_icmp,
    dbch_icon,
    dbch_imagehlp,
    dbch_imagelist,
    dbch_imm,
    dbch_int,
    dbch_int10,
    dbch_int16,
    dbch_int17,
    dbch_int19,
    dbch_int21,
    dbch_int31,
    dbch_io,
    dbch_ipaddress,
    dbch_joystick,
    dbch_key,
    dbch_keyboard,
    dbch_ldt,
    dbch_listbox,
    dbch_listview,
    dbch_local,
    dbch_mci,
    dbch_mcianim,
    dbch_mciavi,
    dbch_mcicda,
    dbch_mcimidi,
    dbch_mciwave,
    dbch_mdi,
    dbch_menu,
    dbch_message,
    dbch_metafile,
    dbch_midi,
    dbch_mmaux,
    dbch_mmio,
    dbch_mmsys,
    dbch_mmtime,
    dbch_module,
    dbch_monthcal,
    dbch_mpr,
    dbch_msacm,
    dbch_msg,
    dbch_msvideo,
    dbch_nativefont,
    dbch_nonclient,
    dbch_ntdll,
    dbch_odbc,
    dbch_ole,
    dbch_opengl,
    dbch_pager,
    dbch_palette,
    dbch_pidl,
    dbch_print,
    dbch_process,
    dbch_profile,
    dbch_progress,
    dbch_prop,
    dbch_propsheet,
    dbch_psapi,
    dbch_psdrv,
    dbch_ras,
    dbch_rebar,
    dbch_reg,
    dbch_region,
    dbch_relay,
    dbch_resource,
    dbch_richedit,
    dbch_scroll,
    dbch_segment,
    dbch_seh,
    dbch_selector,
    dbch_sendmsg,
    dbch_server,
    dbch_setupapi,
    dbch_setupx,
    dbch_shell,
    dbch_snoop,
    dbch_sound,
    dbch_static,
    dbch_statusbar,
    dbch_storage,
    dbch_stress,
    dbch_string,
    dbch_syscolor,
    dbch_system,
    dbch_tab,
    dbch_tape,
    dbch_tapi,
    dbch_task,
    dbch_text,
    dbch_thread,
    dbch_thunk,
    dbch_timer,
    dbch_toolbar,
    dbch_toolhelp,
    dbch_tooltips,
    dbch_trackbar,
    dbch_treeview,
    dbch_ttydrv,
    dbch_tweak,
    dbch_typelib,
    dbch_updown,
    dbch_ver,
    dbch_virtual,
    dbch_vxd,
    dbch_wave,
    dbch_win,
    dbch_win16drv,
    dbch_win32,
    dbch_wing,
    dbch_wininet,
    dbch_winsock,
    dbch_winspool,
    dbch_wnet,
    dbch_x11,
    dbch_x11drv
};

int dbg_header_err( const char *dbg_channel, const char *func )
{
    return dbg_printf( "err:%s:%s ", dbg_channel + 1, func );
}

int dbg_header_fixme( const char *dbg_channel, const char *func )
{
    return dbg_printf( "fixme:%s:%s ", dbg_channel + 1, func );
}

int dbg_header_warn( const char *dbg_channel, const char *func )
{
    return dbg_printf( "warn:%s:%s ", dbg_channel + 1, func );
}

int dbg_header_trace( const char *dbg_channel, const char *func )
{
    return dbg_printf( "trace:%s:%s ", dbg_channel + 1, func );
}
