/* This file was generated by makeexn */
#ifndef _MZEXN_DEFINES
#define _MZEXN_DEFINES

enum {
  MZEXN,
  MZEXN_USER,
  MZEXN_VARIABLE,
  MZEXN_APPLICATION,
  MZEXN_APPLICATION_ARITY,
  MZEXN_APPLICATION_TYPE,
  MZEXN_APPLICATION_MISMATCH,
  MZEXN_APPLICATION_DIVIDE_BY_ZERO,
  MZEXN_APPLICATION_CONTINUATION,
  MZEXN_SYNTAX,
  MZEXN_READ,
  MZEXN_READ_EOF,
  MZEXN_READ_NON_CHAR,
  MZEXN_I_O,
  MZEXN_I_O_PORT,
  MZEXN_I_O_PORT_READ,
  MZEXN_I_O_PORT_WRITE,
  MZEXN_I_O_PORT_CLOSED,
  MZEXN_I_O_FILESYSTEM,
  MZEXN_I_O_TCP,
  MZEXN_THREAD,
  MZEXN_MODULE,
  MZEXN_BREAK,
  MZEXN_SPECIAL_COMMENT,
  MZEXN_MISC,
  MZEXN_MISC_UNSUPPORTED,
  MZEXN_MISC_OUT_OF_MEMORY,
  MZEXN_OTHER
};

#endif

#ifdef _MZEXN_TABLE

#define MZEXN_MAXARGS 7

#ifdef GLOBAL_EXN_ARRAY
static exn_rec exn_table[] = {
  { 2, NULL, NULL, 0, NULL, -1 },
  { 2, NULL, NULL, 0, NULL, 0 },
  { 3, NULL, NULL, 0, NULL, 0 },
  { 3, NULL, NULL, 0, NULL, 0 },
  { 4, NULL, NULL, 0, NULL, 3 },
  { 4, NULL, NULL, 0, NULL, 3 },
  { 3, NULL, NULL, 0, NULL, 3 },
  { 3, NULL, NULL, 0, NULL, 3 },
  { 3, NULL, NULL, 0, NULL, 3 },
  { 5, NULL, NULL, 0, NULL, 0 },
  { 7, NULL, NULL, 0, NULL, 0 },
  { 7, NULL, NULL, 0, NULL, 10 },
  { 7, NULL, NULL, 0, NULL, 10 },
  { 2, NULL, NULL, 0, NULL, 0 },
  { 3, NULL, NULL, 0, NULL, 13 },
  { 3, NULL, NULL, 0, NULL, 14 },
  { 3, NULL, NULL, 0, NULL, 14 },
  { 3, NULL, NULL, 0, NULL, 14 },
  { 4, NULL, NULL, 0, NULL, 13 },
  { 2, NULL, NULL, 0, NULL, 13 },
  { 2, NULL, NULL, 0, NULL, 0 },
  { 2, NULL, NULL, 0, NULL, 0 },
  { 3, NULL, NULL, 0, NULL, 0 },
  { 3, NULL, NULL, 0, NULL, 0 },
  { 2, NULL, NULL, 0, NULL, 0 },
  { 2, NULL, NULL, 0, NULL, 24 },
  { 2, NULL, NULL, 0, NULL, 24 }
};
#else
static exn_rec *exn_table;
#endif

#endif

#ifdef _MZEXN_PRESETUP

#ifndef GLOBAL_EXN_ARRAY
  exn_table = (exn_rec *)scheme_malloc(sizeof(exn_rec) * MZEXN_OTHER);
  exn_table[MZEXN].args = 2;
  exn_table[MZEXN_USER].args = 2;
  exn_table[MZEXN_VARIABLE].args = 3;
  exn_table[MZEXN_APPLICATION].args = 3;
  exn_table[MZEXN_APPLICATION_ARITY].args = 4;
  exn_table[MZEXN_APPLICATION_TYPE].args = 4;
  exn_table[MZEXN_APPLICATION_MISMATCH].args = 3;
  exn_table[MZEXN_APPLICATION_DIVIDE_BY_ZERO].args = 3;
  exn_table[MZEXN_APPLICATION_CONTINUATION].args = 3;
  exn_table[MZEXN_SYNTAX].args = 5;
  exn_table[MZEXN_READ].args = 7;
  exn_table[MZEXN_READ_EOF].args = 7;
  exn_table[MZEXN_READ_NON_CHAR].args = 7;
  exn_table[MZEXN_I_O].args = 2;
  exn_table[MZEXN_I_O_PORT].args = 3;
  exn_table[MZEXN_I_O_PORT_READ].args = 3;
  exn_table[MZEXN_I_O_PORT_WRITE].args = 3;
  exn_table[MZEXN_I_O_PORT_CLOSED].args = 3;
  exn_table[MZEXN_I_O_FILESYSTEM].args = 4;
  exn_table[MZEXN_I_O_TCP].args = 2;
  exn_table[MZEXN_THREAD].args = 2;
  exn_table[MZEXN_MODULE].args = 2;
  exn_table[MZEXN_BREAK].args = 3;
  exn_table[MZEXN_SPECIAL_COMMENT].args = 3;
  exn_table[MZEXN_MISC].args = 2;
  exn_table[MZEXN_MISC_UNSUPPORTED].args = 2;
  exn_table[MZEXN_MISC_OUT_OF_MEMORY].args = 2;
#endif

#endif

#ifdef _MZEXN_DECL_FIELDS

static const char *MZEXN_FIELDS[2] = { "message", "continuation-marks" };
static const char *MZEXN_VARIABLE_FIELDS[1] = { "id" };
static const char *MZEXN_APPLICATION_FIELDS[1] = { "value" };
static const char *MZEXN_APPLICATION_ARITY_FIELDS[1] = { "expected" };
static const char *MZEXN_APPLICATION_TYPE_FIELDS[1] = { "expected" };
static const char *MZEXN_SYNTAX_FIELDS[3] = { "expr", "form", "module" };
static const char *MZEXN_READ_FIELDS[5] = { "source", "line", "column", "position", "span" };
static const char *MZEXN_I_O_PORT_FIELDS[1] = { "port" };
static const char *MZEXN_I_O_FILESYSTEM_FIELDS[2] = { "pathname", "detail" };
static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" };
static const char *MZEXN_SPECIAL_COMMENT_FIELDS[1] = { "width" };

#endif

#ifdef _MZEXN_SETUP

  SETUP_STRUCT(MZEXN, NULL, "exn", 2, MZEXN_FIELDS)
  SETUP_STRUCT(MZEXN_USER, EXN_PARENT(MZEXN), "exn:user", 0, NULL)
  SETUP_STRUCT(MZEXN_VARIABLE, EXN_PARENT(MZEXN), "exn:variable", 1, MZEXN_VARIABLE_FIELDS)
  SETUP_STRUCT(MZEXN_APPLICATION, EXN_PARENT(MZEXN), "exn:application", 1, MZEXN_APPLICATION_FIELDS)
  SETUP_STRUCT(MZEXN_APPLICATION_ARITY, EXN_PARENT(MZEXN_APPLICATION), "exn:application:arity", 1, MZEXN_APPLICATION_ARITY_FIELDS)
  SETUP_STRUCT(MZEXN_APPLICATION_TYPE, EXN_PARENT(MZEXN_APPLICATION), "exn:application:type", 1, MZEXN_APPLICATION_TYPE_FIELDS)
  SETUP_STRUCT(MZEXN_APPLICATION_MISMATCH, EXN_PARENT(MZEXN_APPLICATION), "exn:application:mismatch", 0, NULL)
  SETUP_STRUCT(MZEXN_APPLICATION_DIVIDE_BY_ZERO, EXN_PARENT(MZEXN_APPLICATION), "exn:application:divide-by-zero", 0, NULL)
  SETUP_STRUCT(MZEXN_APPLICATION_CONTINUATION, EXN_PARENT(MZEXN_APPLICATION), "exn:application:continuation", 0, NULL)
  SETUP_STRUCT(MZEXN_SYNTAX, EXN_PARENT(MZEXN), "exn:syntax", 3, MZEXN_SYNTAX_FIELDS)
  SETUP_STRUCT(MZEXN_READ, EXN_PARENT(MZEXN), "exn:read", 5, MZEXN_READ_FIELDS)
  SETUP_STRUCT(MZEXN_READ_EOF, EXN_PARENT(MZEXN_READ), "exn:read:eof", 0, NULL)
  SETUP_STRUCT(MZEXN_READ_NON_CHAR, EXN_PARENT(MZEXN_READ), "exn:read:non-char", 0, NULL)
  SETUP_STRUCT(MZEXN_I_O, EXN_PARENT(MZEXN), "exn:i/o", 0, NULL)
  SETUP_STRUCT(MZEXN_I_O_PORT, EXN_PARENT(MZEXN_I_O), "exn:i/o:port", 1, MZEXN_I_O_PORT_FIELDS)
  SETUP_STRUCT(MZEXN_I_O_PORT_READ, EXN_PARENT(MZEXN_I_O_PORT), "exn:i/o:port:read", 0, NULL)
  SETUP_STRUCT(MZEXN_I_O_PORT_WRITE, EXN_PARENT(MZEXN_I_O_PORT), "exn:i/o:port:write", 0, NULL)
  SETUP_STRUCT(MZEXN_I_O_PORT_CLOSED, EXN_PARENT(MZEXN_I_O_PORT), "exn:i/o:port:closed", 0, NULL)
  SETUP_STRUCT(MZEXN_I_O_FILESYSTEM, EXN_PARENT(MZEXN_I_O), "exn:i/o:filesystem", 2, MZEXN_I_O_FILESYSTEM_FIELDS)
  SETUP_STRUCT(MZEXN_I_O_TCP, EXN_PARENT(MZEXN_I_O), "exn:i/o:tcp", 0, NULL)
  SETUP_STRUCT(MZEXN_THREAD, EXN_PARENT(MZEXN), "exn:thread", 0, NULL)
  SETUP_STRUCT(MZEXN_MODULE, EXN_PARENT(MZEXN), "exn:module", 0, NULL)
  SETUP_STRUCT(MZEXN_BREAK, EXN_PARENT(MZEXN), "exn:break", 1, MZEXN_BREAK_FIELDS)
  SETUP_STRUCT(MZEXN_SPECIAL_COMMENT, EXN_PARENT(MZEXN), "exn:special-comment", 1, MZEXN_SPECIAL_COMMENT_FIELDS)
  SETUP_STRUCT(MZEXN_MISC, EXN_PARENT(MZEXN), "exn:misc", 0, NULL)
  SETUP_STRUCT(MZEXN_MISC_UNSUPPORTED, EXN_PARENT(MZEXN_MISC), "exn:misc:unsupported", 0, NULL)
  SETUP_STRUCT(MZEXN_MISC_OUT_OF_MEMORY, EXN_PARENT(MZEXN_MISC), "exn:misc:out-of-memory", 0, NULL)

#endif
