static char rcsid[] = "@(#)$Id: mcommon.c,v 1.10 2006/04/09 07:37:42 hurtta Exp $";
/******************************************************************************
* The Elm (ME+) Mail System - $Revision: 1.10 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+elm@posti.FMI.FI>
*****************************************************************************/
#include "def_mcommon.h"
DEBUG_VAR(Debug,__FILE__,"menu");
static void mcommon_st_to_union P_((struct menu_common *m,
union mcommon_union *u));
static void mcommon_st_to_union(m,u)
struct menu_common *m;
union mcommon_union *u;
{
/* Be sure that whole structure is initialized */
if (sizeof (*u) != sizeof (*m))
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_st_to_union",
"size mismatch",0);
u->gen = *m;
if (u->gen.magic != MENU_COMMON_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_st_to_union",
"bad magic",0);
if (u->gen.mtype->magic != MCOMMON_TYPE_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_st_to_union",
"bad type magic",0);
}
int mcommon_get_type(m,idx)
struct menu_common *m;
int idx;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_get_type_it(&u,idx);
}
int mcommon_setf_status(m,idx, t, stat)
struct menu_common *m;
int idx;
enum status_x t;
int stat;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_setf_status_it(&u,idx,t, stat);
}
int mcommon_get_current(m)
struct menu_common *m;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_get_current_it(&u);
}
int mcommon_ison_status(m,idx, t, stat)
struct menu_common *m;
int idx;
enum status_x t;
int stat;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_ison_status_it(&u,idx,t, stat);
}
int mcommon_clearf_status(m,idx, t, stat)
struct menu_common *m;
int idx;
enum status_x t;
int stat;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_clearf_status_it(&u,idx,t, stat);
}
char * mcommon_show_status(m,idx)
struct menu_common *m;
int idx;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_show_status_it(&u,idx);
}
int mcommon_get_count(m)
struct menu_common *m;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_get_count_it(&u);
}
int mcommon_matches(m,idx, meta_pattern)
struct menu_common *m;
int idx;
struct string * meta_pattern;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_matches_it(&u, idx, meta_pattern);
}
int mcommon_get_selected(m)
struct menu_common *m;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_get_selected_it(&u);
}
void mcommon_set_current(m, cur)
struct menu_common *m;
int cur;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
u.gen.mtype->mc_set_current_it(&u, cur);
}
void mcommon_set_selected(m, sel)
struct menu_common *m;
int sel;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
u.gen.mtype->mc_set_selected_it(&u, sel);
}
int mcommon_limit_helper(m,arg,retarr, page)
struct menu_common *m;
struct string *arg;
int **retarr;
struct menu_context *page;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_limit_helper_it(&u,arg,retarr, page);
}
void mcommon_limit_print_help(m,last_selected)
struct menu_common *m;
int last_selected;
{
if (m->magic != MENU_COMMON_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommom_limit_print_help",
"bad magic",0);
if (m->mtype->magic != MCOMMON_TYPE_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommom_limit_print_help",
"bad type magic",0);
m->mtype->mc_limit_print_help_it(last_selected);
}
void mcommon_limit_print_result(m)
struct menu_common *m;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
u.gen.mtype->mc_limit_print_result_it(&u);
}
int mcommon_match_in_text(m, meta_pattern, page,LOC)
struct menu_common *m;
struct string * meta_pattern;
struct menu_context *page;
struct screen_parts *LOC;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
return u.gen.mtype->mc_match_in_text_it(&u, meta_pattern,
page, LOC);
}
void mcommon_screen_print_menu_line(m,idx,page)
struct menu_common *m;
int idx;
struct menu_context *page;
{
union mcommon_union u;
mcommon_st_to_union(m,&u);
u.gen.mtype->mc_screen_print_it_line(&u,idx,page);
}
CONST struct string * mcommon_give_item(m,I)
struct menu_common *m;
enum mcommon_item I;
{
if (m->magic != MENU_COMMON_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_give_item",
"bad magic",0);
if (m->mtype->magic != MCOMMON_TYPE_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_give_item",
"bad type magic",0);
return m->mtype->mc_give_item_it(I);
}
struct string * mcommon_title(m)
struct menu_common *m;
{
union mcommon_union u;
if (m->magic != MENU_COMMON_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_title",
"bad magic",0);
if (m->mtype->magic != MCOMMON_TYPE_magic)
panic("MENU COMMON PANIC",__FILE__,__LINE__,"mcommon_title",
"bad type magic",0);
mcommon_st_to_union(m,&u);
return m->mtype->mc_title_it(&u);
}
/*
* Local Variables:
* mode:c
* c-basic-offset:4
* buffer-file-coding-system: iso-8859-1
* End:
*/
syntax highlighted by Code2HTML, v. 0.9.1