
#ifndef squid_h_INCLUDED
#define squid_h_INCLUDED

#ifndef pmax
#ifndef decmips
#ifndef mips
#define HAVE_USLEEP
#endif
#endif
#endif

#ifndef rt
#define HAVE_VARARGS
#include <varargs.h>
#define va_begin(list,lastarg) va_start(list)
#else 
#include <stdarg.h>
#define va_dcl
#define va_alist ...
#define va_begin(list,lastarg) va_start(list,lastarg)
#endif

#define Pixmap long			/* Hack hack hack */
					/* (I really really REALLY don't want to 
					   include all the X11 header files yet) */

enum sq_type {
  sq_call,				/* Things that you might see at top-level */
  sq_if,
  sq_tick,
  sq_ticks,
  sq_kill,
  sq_return,
  sq_show,
  sq_statements,
  sq_wait,
  sq_while,

  sq_int_const,				/* Things that go inside expressions */
  sq_str_const,
  sq_iden,
  sq_not,  
  sq_plus,				/*   binary operations */
  sq_minus,
  sq_times,
  sq_divby,
  sq_lt,
  sq_gt,
  sq_eq,
  sq_lteq,
  sq_gteq,
  sq_noteq,
  sq_or,
  sq_and,
  
  sq_bind,				/*   assignment operator */
  sq_start,
  sq_bitmap,
  sq_sequence,

  sq_formals,				/* Things that appear here and there */
  sq_actuals,
};

    
typedef struct squid {
  enum sq_type type;
  struct squid *arg1, *arg2, *arg3, *next;
  int lineno;
} *Squid;


typedef struct bitmap {
  int width, height;
  int x_hot, y_hot;
  char *bits;
  Pixmap pixmap;			/* or NULL if not yet converted to pixmap */
} *Bitmap;

#undef Pixmap				/* Unhack unhack unhack */

extern Squid the_program;

#endif




