#ifndef _SCHEME_CONFIG_H
#define _SCHEME_CONFIG_H

#define VERSION "Hairspray Queen Enemy"
#define SMALLFEATURE "teeny"
#define FEATURE "teenyscheme"
#define FULLFEATURE "teenyscheme-hairspray-queen-enemy"

// Default values for #define'd symbols

// REPL prompt
#ifndef PROMPT
#define PROMPT "ts> "
#endif

// Path to the initialization / boot file
#ifndef INITFILE
#define INITFILE "init.scm"
#endif

// Path to the Scheme library directory libraries are resolved
// against. E.g. (srfi 160 f64) resolves to LIBDIR/srfi/160/f64.sld
#ifndef LIBDIR
#define LIBDIR "/usr/local/lib/teenyscheme"
#endif

#if USE_NO_FEATURES
#define USE_MATH 0
#define USE_CHAR_CLASSIFIERS 0
#define USE_STRING_PORTS 0
#define USE_ERROR_HOOK 0
#define USE_COLON_HOOK 0
#define USE_DL 0
#define USE_PLIST 0
#define USE_UNICODE 0
#define USE_INIT 0
#endif

// Leave it defined if you want continuations, and also for the Sharp Zaurus.
// Undefine it if you only care about faster speed and not strict Scheme compatibility.
#define USE_SCHEME_STACK


// whether to add support for loading foreign extensions via
// load-extension.
#ifndef USE_DL
#define USE_DL 1
#endif

// If Unicode support is needed
// Adds a utf8proc dependency but provides UTF8<->string procedures
#ifndef USE_UNICODE
#define USE_UNICODE 1
#endif

#if USE_DL
#define USE_INTERFACE 1
#endif

// Whether to inline the init file (init.scm -> init.h)
#ifndef USE_INIT
#define USE_INIT 1
#endif

// If math support is needed
// Many (scheme base) and most (scheme inexact) ops need it
#ifndef USE_MATH
#define USE_MATH 1
#endif

// If char classifiers (like char-alphabetic?) are needed
#ifndef USE_CHAR_CLASSIFIERS
#define USE_CHAR_CLASSIFIERS 1
#endif

// Enable string ports (SRFI 6)
#ifndef USE_STRING_PORTS
#define USE_STRING_PORTS 1
#endif

// Enable symbol plists
#ifndef USE_PLIST
#define USE_PLIST 0
#endif

// To force system errors through user-defined error handling.
// See (error-hook) param.
#ifndef USE_ERROR_HOOK
#define USE_ERROR_HOOK 1
#endif

// Generate interface headers
#ifndef USE_INTERFACE
#define USE_INTERFACE 0
#endif

// Show error line in file
#ifndef SHOW_ERROR_LINE
#define SHOW_ERROR_LINE 1
#endif

// Show all nested frames with their values on error
#ifndef SHOW_ERROR_FRAMES
#define SHOW_ERROR_FRAMES 1
#endif

// Define if DOS/Windows
#ifndef STDIO_ADDS_CR
#define STDIO_ADDS_CR 0
#endif

// Memory limits, by default enough
// for list of over 100k elements
// also controlled by env vars

// How many segments to allocate initially
#ifndef FIRST_CELLSEGS
#define FIRST_CELLSEGS 3
#endif

// TEENYCELLSEGSIZE
#ifndef CELL_SEGSIZE
#define CELL_SEGSIZE    20000
#endif

// TEENYCELLNSEGMENT
#ifndef CELL_NSEGMENT
#define CELL_NSEGMENT   12
#endif

#endif
