/*	SCCS Id: @(#)trampoli.c 	3.1	93/01/18	  */
/* Copyright (c) 1989 - 1993 by Norm Meluch and Stephen Spackman  */
/* NetHack may be freely redistributed.  See license for details. */

#include "hack.h"

/****************************************************************************/
/*									    */
/*	This file contains a series of definitions of "one liner"	    */
/*	functions corresponding to *all* functions that NetHack calls	    */
/*	via pointers.							    */
/*	     IF ANY CALLS TO FUNCTIONS VIA POINTERS ARE ADDED		    */
/*	     TO THE CODE, AN ENTRY FOR THE FUNCTION CALLED MUST		    */
/*	     BE ADDED TO THIS FILE AND TO TRAMPOLI.H.			    */
/*	This mess is necessary for the Microsoft Compiler implementation    */
/*	of overlaid code (v5.1 - 6.0ax).				    */
/*									    */
/*	The original function (eg foo) has been #defined to be foo_	    */
/*	via double inclusion of trampoli.h in hack.h, and		    */
/*	now the definition of foo is placed in this file calling foo	    */
/*	directly.  This module is _never_ placed in an overlay so	    */
/*	calls via pointers to these functions will not cause difficulties.  */
/*									    */
/*	This leads to what could be called a "trampoline" effect, and	    */
/*	hence the silly name for these files. :-)			    */
/*									    */
/****************************************************************************/

#ifdef OVERLAY

/* ### apply.c ### */
#undef dig
#undef doapply
#undef dojump
#undef dorub

int dig()     { return dig_();     }
int doapply() { return doapply_(); }
int dojump()  { return dojump_();  }
int dorub()   { return dorub_();   }


/* ### cmd.c ### */
#undef doextcmd
#undef doextlist
#undef doprev_message

#ifdef POLYSELF
#undef domonability
#endif /* POLYSELF */

#ifdef EXPLORE_MODE
#undef enter_explore_mode

int enter_explore_mode() { return enter_explore_mode_(); }
#endif

#undef timed_occupation

#if defined(WIZARD) || defined(EXPLORE_MODE)
#undef wiz_attributes
#endif

#ifdef WIZARD
#undef wiz_detect
#undef wiz_genesis
#undef wiz_identify
#undef wiz_level_tele
#undef wiz_map
#undef wiz_where
#undef wiz_wish
#endif

int doextcmd()         { return doextcmd_();         }
int doextlist()        { return doextlist_();        }
int doprev_message()   { return doprev_message_();   }

#ifdef POLYSELF
int domonability()     { return domonability_();     }
#endif /* POLYSELF */

int timed_occupation() { return timed_occupation_(); }

#if defined(WIZARD) || defined(EXPLORE_MODE)
int wiz_attributes()   { return wiz_attributes_();   }
#endif

#ifdef WIZARD
int wiz_detect()       { return wiz_detect_();       }
int wiz_genesis()      { return wiz_genesis_();      }
int wiz_identify()     { return wiz_identify_();     }
int wiz_level_tele()   { return wiz_level_tele_();   }
int wiz_map()          { return wiz_map_();          }
int wiz_where()        { return wiz_where_();        }
int wiz_wish()         { return wiz_wish_();         }
#endif


/* ### do.c ### */
#undef doddrop
#undef dodown
#undef dodrop
#undef donull
#undef doup
#undef dowipe
#undef drop
#undef wipeoff

int doddrop()             { return doddrop_(); }
int dodown()              { return dodown_();  }
int dodrop()              { return dodrop_();  }
int donull()              { return donull_();  }
int doup()                { return doup_();    }
int dowipe()              { return dowipe_();  }
int drop(obj)
register struct obj *obj; { return drop_(obj); }
int wipeoff()             { return wipeoff_(); }


/* ### do_name.c ### */
#undef ddocall
#undef do_mname

int ddocall()  { return ddocall_();  }
int do_mname() { return do_mname_(); } 


/* ### do_wear.c ### */
#undef Armor_off
#undef Boots_off
#undef Gloves_off
#undef Helmet_off
#undef Armor_on
#undef Boots_on
#undef Gloves_on
#undef Helmet_on
#undef doddoremarm
#undef doputon
#undef doremring
#undef dotakeoff
#undef dowear
#undef select_off
#undef take_off

int Armor_off()   { return Armor_off_();   }
int Boots_off()   { return Boots_off_();   }
int Gloves_off()  { return Gloves_off_();  }
int Helmet_off()  { return Helmet_off_();  }
int Armor_on()    { return Armor_on_();    }
int Boots_on()    { return Boots_on_();    }
int Gloves_on()   { return Gloves_on_();   }
int Helmet_on()   { return Helmet_on_();   }
int doddoremarm() { return doddoremarm_(); }
int doputon()     { return doputon_();     }
int doremring()   { return doremring_();   }
int dotakeoff()   { return dotakeoff_();   }
int dowear()      { return dowear_();      }
int select_off(otmp) struct obj *otmp; { return select_off_(otmp); }
int take_off()    { return take_off_();    }


/* ### dogmove ### */
#undef wantdoor

void wantdoor(x, y, dummy)
int x, y; genericptr_t dummy; { return wantdoor_(x, y, dummy); }


/* ### dokick.c ### */
#undef dokick

int dokick() { return dokick_(); }


/* ### dothrow.c ### */
#undef dothrow

int dothrow() { return dothrow_(); }


/* ### eat.c ### */
#undef Hear_again
#undef eatmdone
#undef doeat
#undef eatfood
#undef opentin
#undef unfaint

int Hear_again()  { return Hear_again_(); }
int eatmdone()    { return eatmdone_();   }
int doeat()       { return doeat_();      }
int eatfood()     { return eatfood_();    }
int opentin()     { return opentin_();    }
int unfaint()     { return unfaint_();    }


/* ### end.c ### */
#undef done1
#undef done2
#undef hangup
#undef done_intr

#if defined(UNIX) || defined(VMS)
#undef done_hangup
#endif /* UNIX || VMS */

int done1()     { return done1_();     }
int done2()     { return done2_();     }
int hangup()    { return hangup_();    }
int done_intr() { return done_intr_(); }

#if defined(UNIX) || defined(VMS)
int done_hangup() { return done_hangup_(); }
#endif /* UNIX || VMS */


/* ### engrave.c ### */
#undef doengrave

int doengrave() { return doengrave_(); }


/* ### fountain.c ### */
#undef gush

void gush(x, y, poolcnt)
int x, y; genericptr_t poolcnt; { return gush_(x, y, poolcnt); }


/* ### hack.c ### */
#undef dopickup
#undef identify

int dopickup() { return dopickup_(); }
int identify(otmp) struct obj *otmp; { return identify_(otmp); }


/* ### invent.c ### */
#undef ckunpaid
#undef ddoinv
#undef dolook
#undef dopramulet
#undef doprarm
#undef doprgold
#undef doprring
#undef doprtool
#undef doprwep
#undef dotypeinv
#undef doorganize

int ckunpaid(obj) struct obj *obj; { return ckunpaid_(obj); }
int ddoinv()     { return ddoinv_();     }
int dolook()     { return dolook_();     }
int dopramulet() { return dopramulet_(); }
int doprarm()    { return doprarm_();    }
int doprgold()   { return doprgold_();   }
int doprring()   { return doprring_();   }
int doprtool()   { return doprtool_();   }
int doprwep()    { return doprwep_();    }
int dotypeinv()  { return dotypeinv_();  }
int doorganize() { return doorganize_(); }


/* ### ioctl.c ### */
#ifdef UNIX
# ifdef SUSPEND
#undef dosuspend

int dosuspend() { return dosuspend_(); }
# endif /* SUSPEND */
#endif /* UNIX */


/* ### lock.c ### */
#undef doclose
#undef doforce
#undef doopen
#undef forcelock
#undef picklock

int doclose()   { return doclose_();   }
int doforce()   { return doforce_();   }
int doopen()    { return doopen_();    }
int forcelock() { return forcelock_(); }
int picklock()  { return picklock_();  }


/* ### mklev.c ### */
#undef do_comp

int do_comp(vx, vy) genericptr_t vx, vy;  { return comp_(vx, vy); }


/* ### mondata.c ### */
/* canseemon() is only called by a macro e_boolean.  If e_boolean ever does
   become a function, this may need to return. */

/* #undef canseemon */

/* boolean canseemon(x) struct monst *x; { return canseemon_(x); } */


/* ### muse.c ### */
#undef mbhitm

int mbhitm(mtmp, otmp) struct monst *mtmp; struct obj *otmp;
	{ return mbhitm_(mtmp, otmp); }


/* ### o_init.c ### */
#undef dodiscovered

int dodiscovered() { return dodiscovered_(); }


/* ### objnam.c ### */
#undef doname
#undef xname

char *doname(obj) struct obj *obj; { return doname_(obj); }
char *xname(obj)  struct obj *obj; { return xname_(obj); }


/* ### options.c ### */
#undef doset
#undef dotogglepickup

int doset()          { return doset_();         }
int dotogglepickup() { return dotogglepickup_(); }


/* ### pager.c ### */
#undef dohelp
#undef dohistory
#undef dowhatdoes
#undef dowhatis
#undef doquickwhatis

int dohelp()        { return dohelp_();        }
int dohistory()     { return dohistory_();     }
int dowhatdoes()    { return dowhatdoes_();    }
int dowhatis()      { return dowhatis_();      }
int doquickwhatis() { return doquickwhatis_(); }


/* ### pcsys.c ### */
#ifdef SHELL
#undef dosh

int dosh()          { return dosh_();          }
#endif /* SHELL */


/* ### pickup.c ### */
#undef ck_bag
#undef doloot
#undef in_container
#undef out_container

int ck_bag(obj) struct obj *obj; { return ck_bag_(obj);  }
int doloot() { return doloot_(); }
int in_container(obj)  struct obj *obj; { return in_container_(obj); }
int out_container(obj) struct obj *obj; { return out_container_(obj); }


/* ### potion.c ### */
#undef dodrink
#undef dodip

int dodrink() { return dodrink_(); }
int dodip()   { return dodip_();   }


/* ### pray.c ### */
#undef doturn
#undef dopray
#undef prayer_done
#undef dosacrifice

int doturn()      { return doturn_();      }
int dopray()      { return dopray_();      }
int prayer_done() { return prayer_done_(); }
int dosacrifice() { return dosacrifice_(); }


/* ### print.c ### */
#undef doredraw

int doredraw()    { return doredraw_(); }


/* ### read.c ### */
#undef doread
#undef set_lit

int doread()		    { return doread_(); }
void set_lit(x, y, val)
int x, y; genericptr_t val; { return set_lit_(x, y, val); }


/* ### save.c ### */
#undef dosave

int dosave() { return dosave_(); }


/* ### search.c ### */
#undef findone
#undef openone
#undef doidtrap
#undef dosearch

void findone(zx, zy, num)
int zx, zy; genericptr_t num; { return findone_(zx, zy, num); }
void openone(zx, zy, num)
int zx, zy; genericptr_t num; { return openone_(zx, zy, num); }
int doidtrap()		      { return doidtrap_(); }
int dosearch()		      { return dosearch_(); }


/* ### shk.c ### */
#undef dopay

int dopay() { return dopay_(); }


/* ### sit.c ### */
#undef dosit

int dosit() { return dosit_(); }


/* ### sounds.c ### */
#undef dotalk

int dotalk() { return dotalk_(); }


/* ### spell.c ### */
#undef learn
#undef docast
#undef dovspell

int learn() { return learn_(); }
int docast()   { return docast_();   }
int dovspell() { return dovspell_(); }


/* ### steal.c ### */
#undef stealarm

int stealarm() { return stealarm_(); }


/* ### trap.c ### */
#undef dotele
#undef dountrap
#undef float_down

int dotele()     { return dotele_();     }
int dountrap()   { return dountrap_();   }
int float_down() { return float_down_(); }


/* ### version.c ### */
#undef doversion
#undef doextversion

int doversion()    { return doversion_();    }
int doextversion() { return doextversion_(); }


/* ### wield.c ### */
#undef dowield

int dowield() { return dowield_(); }


/* ### zap.c ### */
#undef bhitm
#undef bhito
#undef dozap

int bhitm(mtmp, otmp) struct monst *mtmp; struct obj *otmp;
	{ return bhitm_(mtmp, otmp); }
int bhito(obj, otmp) struct obj *obj, *otmp; { return bhito_(obj,  otmp); }
int dozap() { return dozap_(); }

/* 
 * Window Implementation Specific Functions.
 */


/* ### getline.c ### */
#undef tty_getlin
#ifdef COM_COMPL
#undef tty_get_ext_cmd

void tty_get_ext_cmd(bufp)
  char *bufp;			{ tty_get_ext_cmd_(bufp);	}
#endif /* COM_COMPL */
void tty_getlin(query,bufp)
  const char *query; char *bufp;{ tty_getlin_(query,bufp);	}


/* ### termcap.c ### */
#undef tty_nhbell
#undef tty_number_pad
#undef tty_delay_output
#undef tty_start_screen
#undef tty_end_screen

void tty_nhbell()		{ tty_nhbell_(); 		}
void tty_number_pad(state)
  int state;			{ tty_number_pad_(state);	}
void tty_delay_output()		{ tty_delay_output_(); 		}
/* other defs that really should go away (they're tty specific) */
void tty_start_screen()		{ tty_start_screen_(); 		}
void tty_end_screen()		{ tty_end_screen_(); 		}


/* ### topl.c ### */
#undef tty_doprev_message
#undef tty_yn_function

int tty_doprev_message()	{ tty_doprev_message_(); 	}
char tty_yn_function(query,resp,def)
  const char *query, *resp; char def;
				{ tty_yn_function_(query,resp,def); }


/* ### wintty.c ### */
#undef tty_init_nhwindows
#undef tty_player_selection
#undef tty_askname
#undef tty_get_nh_event
#undef tty_exit_nhwindows
#undef tty_suspend_nhwindows
#undef tty_resume_nhwindows
#undef tty_create_nhwindow
#undef tty_clear_nhwindow
#undef tty_display_nhwindow
#undef tty_destroy_nhwindow
#undef tty_curs
#undef tty_putstr
#undef tty_display_file
#undef tty_start_menu
#undef tty_add_menu
#undef tty_end_menu
#undef tty_select_menu
#undef tty_update_inventory
#undef tty_mark_synch
#undef tty_wait_synch
#ifdef CLIPPING
#undef tty_cliparound
#endif
#undef tty_print_glyph
#undef tty_raw_print
#undef tty_raw_print_bold
#undef tty_nhgetch
#undef tty_nh_poskey

void tty_init_nhwindows()	{ tty_init_nhwindows_();	}
void tty_player_selection()	{ tty_player_selection_(); 	}
void tty_askname()		{ tty_askname_(); 		}
void tty_get_nh_event()		{ tty_get_nh_event_(); 		}
void tty_exit_nhwindows(str)
  const char *str;		{ tty_exit_nhwindows_(str);	}
void tty_suspend_nhwindows(str)
  const char *str;		{ tty_suspend_nhwindows_(str);	}
void tty_resume_nhwindows()	{ tty_resume_nhwindows_(); 	}
winid tty_create_nhwindow(type)
  int type;			{ tty_create_nhwindow_(type);	}
void tty_clear_nhwindow(window)
  winid window;			{ tty_clear_nhwindow_(window);	}
void tty_display_nhwindow(window, blocking)
  winid window; boolean blocking;
				{ tty_display_nhwindow_(window,blocking); }
void tty_destroy_nhwindow(window)
  winid window;			{ tty_destroy_nhwindow_(window); }
void tty_curs(window,x,y)
  winid window; int x,y;	{ tty_curs_(window,x,y);	}
void tty_putstr(window,attr,str)
  winid window; int attr; const char *str;
				{ tty_putstr_(window,attr,str); }
void tty_display_file(fname, complain)
  const char *fname; boolean complain;
				{ tty_display_file_(fname,complain); }
void tty_start_menu(window)
  winid window;			{ tty_start_menu_(window);	}
void tty_add_menu(window,ch,attr,str)
  winid window; char ch; int attr; const char *str;
				{ tty_add_menu_(window,ch,attr,str); }
void tty_end_menu(window,ch,str,morestr)
  winid window; char ch; const char *str, *morestr;
				{ tty_end_menu_(window,ch,str,morestr);	}
char tty_select_menu(window)
  winid window;			{ tty_select_menu_(window);	}
void tty_update_inventory()	{ tty_update_inventory_(); 	}
void tty_mark_synch()		{ tty_mark_synch_(); 		}
void tty_wait_synch()		{ tty_wait_synch_(); 		}
#ifdef CLIPPING
void tty_cliparound(x,y)
  int x,y;			{ tty_cliparound_(x,y);		}
#endif
void tty_print_glyph(window,x,y,glyph)
  winid window; xchar x,y; int glyph;
				{ tty_print_glyph_(window,x,y,glyph); }
void tty_raw_print(str)
  const char *str;		{ tty_raw_print_(str); 		}
void tty_raw_print_bold(str)
  const char *str;		{ tty_raw_print_bold_(str); 	}
int tty_nhgetch()		{ tty_nhgetch_(); 		}
int tty_nh_poskey(x,y,pos)
  int *x,*y,*pos;		{ tty_nh_poskey_(x,y,pos);	}

#endif /* OVERLAY */
