/* File : BindNames.h
 *
 * $Project:         BindNames
 *
 * $Module Id:         
 * $Original Author:   Robert Hardy
 * $Date Started:      Mon Aug  8 1994
 *
 * $Revision: 1.1 $
 *
 * $State: Exp $
 *
 * $Locker:  $
 *
 * $Log: BindNames.h-v $
 * Revision 1.1  1995/08/08  02:27:15  Bob
 * Initial revision
 * 
 *
 *
 */


typedef struct Arg_List
{
	char *arg_type;
	char *arg_value;
} ARG_LIST;

/* Macros */


#define CADDR(x)	(   (BPTR)(  ( (ULONG)x ) >> 2  )   )
#define NAMEDIR		"SYS:Names"
#define FreeStr(s)	free(s)

#define BIT(x)			(1 << (x))

#define BNF_REMOVE		BIT(0)
#define BNF_TEST		BIT(1)
#define BNF_VERBOSE		BIT(2)
#define BNF_ONEFILE		BIT(3)

/* The "-rr" option doesn't like NewList, bit it's real simple.  WHEN can
   we have inline functions.... */
#define nNewList(l)	{ (l)->lh_Head     = (struct Node *)&(l)->lh_Tail; \
			  (l)->lh_TailPred = (struct Node *)&(l)->lh_Head; \
			  (l)->lh_Tail     = NULL;	    \
			}

/* ====================================================================== */

/* Global variables */

#define NULL 	0L
#define NIL 	((void *)0L)
#define TRUE	1
#define FALSE	0
#define EQUAL	0
#define private	static

typedef enum
{
	AO_NORMAL, AO_DEFER, AO_ADD, AO_PATH,
	
} ASSIGN_OPTION;

struct NameNode
{
	struct Node node;
	struct NameNode *parent;
	struct List children;
	char *path;
	ASSIGN_OPTION Option;	/* RWH - Added this to allow new assign types */

};


extern short Icon_Launch( int argc, char **argv,
            		ARG_LIST *program_args, short num_to_init );
extern void Icon_Finish(void);

