
/*
 * DEFS.H
 *
 *	(C)Copyright 1987 by Matthew Dillon, All Rights Reserved
 *
 *	ARexx support added 03/19/88  -  Kim DeVaughn
 *
 */

#ifndef DEFS_H
#define DEFS_H

#undef PATCH_RXVARS

#include "all.h"
#include "null.h"

/* added for keys */
#ifndef NOT_DEF
#   include "keyhashes.h"
#else
#   define currenthash()
#   define init_kb()
#   define exit_kb()
#endif

/* added for menus */
#ifndef NOT_DEF
#   include "menubase.h"
#else
#   define currentmenu()
#   define do_itemadd do_menuadd
#   define do_delitem do_menudel
#endif

#ifndef VBASE
#   define VBASE void*
#endif

#ifndef MACRO
#   define MACRO void
#endif

/* Added so ActualBlock is const everywhere except block.c */
#ifndef BLOCK_C
#   define NOT_BLOCK_C_CONST const
#else
#   define NOT_BLOCK_C_CONST
#endif

/* do this after all types have been defined */
#undef	DEFUSERCMD
#undef	DEFPROTO
#define DEFUSERCMD(str,nargs,flags,ret,func,param,ext)  extern ret func param;
#define DEFPROTO(ret,func,param)                        extern ret fund param;
#include "commands.h"
#include "prog-protos.h"
#undef DEFUSERCMD
#undef DEFPROTO
#define DEFUSERCMD(str,nargs,flags,ret,func,param,ext)  ret func param ext
#define DEFPROTO(ret,func,param)                        ret fund param

/* asm */
BOOL WildCmp (const char *, const char *);

/* Macros are faster than Functions */
#define alloclptr(lines)    AllocMem ((lines)*sizeof(LINE), 0)
#define allocb(bytes)       AllocMem ((bytes), 0)
#define allocl(lwords)      AllocMem ((lwords)<<2, 0)
#define bmovl(s,d,n)        movmem ((s), (d), (n) << 2)

#define GETLINE(ed,nr)      ((ed)->list[(nr)])
#define SETLINE(ed,nr,ptr)  (ed)->list[(nr)] = (ptr)
#define LENGTH(line)        (strlen((char *)(line)))
#define CONTENTS(line)      ((char *)(line))
#define GETTEXT(ed,nr)      (CONTENTS(GETLINE((ed),(nr))))


#define assert(exp)         if (!(exp)) printf ("%s %d\n", __FILE__, __LINE__), exiterr ("assert failed")

#define  PATHSIZE	256	/* HD added for Requesters */

#define SCROLL_LEFT	0
#define SCROLL_RIGHT	1

#endif /* DEFS_H */

/*#ifdef MALLOC_DEBUG
#include "malloc.h"
#endif*/

extern struct List *pDBase;
#define DBase	  (*pDBase)
