fbmuck-6.05/auto/
fbmuck-6.05/contrib/jresolver/
fbmuck-6.05/contrib/jresolver/org/
fbmuck-6.05/contrib/jresolver/org/fuzzball/
fbmuck-6.05/docs/devel/
fbmuck-6.05/game/
fbmuck-6.05/game/logs/
fbmuck-6.05/game/muf/
fbmuck-6.05/scripts/
fbmuck-6.05/src_docs/
/* $Header: /cvsroot/fbmuck/fbmuck/include/match.h,v 1.4 2003/04/07 18:37:00 cutevixy Exp $
 * $Log: match.h,v $
 * Revision 1.4  2003/04/07 18:37:00  cutevixy
 * Changed struct match_data and match_exits to not partially match Xpress exits unless specifically matching exits, or partial exit matching is requested in the match_data struct.
 *
 * Revision 1.3  2000/07/18 18:18:19  winged
 * Various fixes to support warning-free compiling with -Wall -Wstrict-prototypes -Wno-format -- added single-inclusion capability to all headers.
 *
 * Revision 1.2  2000/03/29 12:21:01  revar
 * Reformatted all code into consistent format.
 * 	Tabs are 4 spaces.
 * 	Indents are one tab.
 * 	Braces are generally K&R style.
 * Added ARRAY_DIFF, ARRAY_INTERSECT and ARRAY_UNION to man.txt.
 * Rewrote restart script as a bourne shell script.
 *
 * Revision 1.1.1.1  1999/12/12 07:28:13  revar
 * Initial Sourceforge checkin, fb6.00a29
 *
 * Revision 1.1.1.1  1999/12/12 07:28:13  foxen
 * Initial FB6 CVS checkin.
 *
 * Revision 1.1  1996/06/17 17:29:45  foxen
 * Initial revision
 *
 * Revision 5.12  1994/01/06  03:18:09  foxen
 * Version 5.12
 *
 * Revision 5.1  1993/12/17  00:35:54  foxen
 * initial revision.
 *
 * Revision 1.4  90/08/27  14:08:45  rearl
 * Added match_home()
 * 
 * Revision 1.3  90/08/05  03:22:47  rearl
 * Redid match routines!
 * 
 * Revision 1.2  90/07/19  23:14:41  casie
 * Removed log comments from top.
 * 
 * 
 */

#ifndef _MATCH_H
#define _MATCH_H

#include "copyright.h"
#include "db.h"

struct match_data {
	dbref exact_match;			/* holds result of exact match */
	int check_keys;				/* if non-zero, check for keys */
	dbref last_match;			/* holds result of last match */
	int match_count;			/* holds total number of inexact matches */
	dbref match_who;			/* player used for me, here, and messages */
	dbref match_from;			/* object which is being matched around */
	int match_descr;			/* descriptor initiating the match */
	const char *match_name;		/* name to match */
	int preferred_type;			/* preferred type */
	int longest_match;			/* longest matched string */
	int match_level;			/* the highest priority level so far */
	int block_equals;			/* block matching of same name exits */
	int partial_exits;			/* if non-zero, allow exits to match partially */
};

/* match functions */
/* Usage: init_match(descr, player, name, type); match_this(); match_that(); ... */
/* Then get value from match_result() */

/* initialize matcher */
extern void init_match(int descr, dbref player, const char *name, int type,

					   struct match_data *md);
extern void init_match_check_keys(int descr, dbref player, const char *name, int type,

								  struct match_data *md);

/* match (LOOKUP_TOKEN)player */
extern void match_player(struct match_data *md);

/* match (REGISTERED_TOKEN)program */
extern dbref find_registered_obj(dbref player, const char *name);
extern void match_registered(struct match_data *md);

/* match (NUMBER_TOKEN)number */
extern void match_absolute(struct match_data *md);

extern void match_me(struct match_data *md);

extern void match_here(struct match_data *md);

extern void match_home(struct match_data *md);

/* match something player is carrying */
extern void match_possession(struct match_data *md);

/* match something in the same room as player */
extern void match_neighbor(struct match_data *md);

/* match an exit from player's room */
extern void match_room_exits(dbref loc, struct match_data *md);

/* match an action attached to a room object */
extern void match_roomobj_actions(struct match_data *md);

/* match an action attached to an object in inventory */
extern void match_invobj_actions(struct match_data *md);

/* match an action attached to a player */
extern void match_player_actions(struct match_data *md);

/* match 4 above */
extern void match_all_exits(struct match_data *md);

/* only used for rmatch */
extern void match_rmatch(dbref, struct match_data *md);

/* all of the above, except only Wizards do match_absolute and match_player */
extern void match_everything(struct match_data *md);

/* return match results */
extern dbref match_result(struct match_data *md);	/* returns AMBIGUOUS for

													   multiple inexacts */
extern dbref last_match_result(struct match_data *md);	/* returns last

														   result */

#define NOMATCH_MESSAGE "I don't see that here."
#define AMBIGUOUS_MESSAGE "I don't know which one you mean!"

extern dbref noisy_match_result(struct match_data *md);

				/* wrapper for match_result */
				/* noisily notifies player */
				/* returns matched object or NOTHING */

#endif /* _MATCH_H */