You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
5.3 KiB
D
193 lines
5.3 KiB
D
/*
|
|
Monster - an advanced game scripting language
|
|
Copyright (C) 2007-2009 Nicolay Korslund
|
|
Email: <korslund@gmail.com>
|
|
WWW: http://monster.snaptoad.com/
|
|
|
|
This file (options.d) is part of the Monster script language
|
|
package.
|
|
|
|
Monster is distributed as free software: you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License
|
|
version 3, as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
version 3 along with this program. If not, see
|
|
http://www.gnu.org/licenses/ .
|
|
|
|
*/
|
|
|
|
module monster.options;
|
|
|
|
/*
|
|
The purpose of this file is to set compile time options for the
|
|
Monster library - including compiler, VM and modules. This allows
|
|
the user to customize the language in various ways to fit each
|
|
project individually.
|
|
|
|
For changes to take effect, you must recompile and reinstall the
|
|
library.
|
|
|
|
If you have suggestions for additional options and ways to customize
|
|
the language, let us know!
|
|
*/
|
|
|
|
static:
|
|
const:
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
Language options
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// Set to false to make the entire language case insensitive. Affects
|
|
// all identifier and keyword matching. (Not implemented yet!)
|
|
bool caseSensitive = true;
|
|
|
|
// Include the case-insensitive string (and character) operators =i=,
|
|
// =I=, !=i= and !=I=.
|
|
bool ciStringOps = true;
|
|
|
|
// Skip lines beginning with a hash character '#'
|
|
bool skipHashes = true;
|
|
|
|
// Do we allow implicit downcasting of classes? Downcasting means
|
|
// casting from a parent class to a child class. The actual object
|
|
// type is checked at runtime. In any case you can always downcast
|
|
// explicitly, using ClassName(obj).
|
|
bool implicitDowncast = true;
|
|
|
|
// Allow implicit conversion from float to int (and similar
|
|
// conversions). If false, you must use explicit casting,
|
|
// ie. int(value)
|
|
bool implicitTruncate = false;
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
VM options
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// Whether to add the current working directory to the VFS at
|
|
// startup. If false, you must add your own directories (using
|
|
// vm.addPath) or your own VFS implementations, otherwise the library
|
|
// will not be able to find any script files.
|
|
bool vmAddCWD = false;
|
|
|
|
// Maximum stack size. Prevents stack overflow through infinite
|
|
// recursion and other bugs.
|
|
int maxStack = 100;
|
|
|
|
// Maximum function stack size
|
|
int maxFStack = 100;
|
|
|
|
// Whether we should limit the number of instructions that execute()
|
|
// can run at once. Enabling this will prevent infinite loops.
|
|
bool enableExecLimit = true;
|
|
|
|
// Maximum number of instructions to allow in each call to execute()
|
|
// (if enableExecLimit is true)
|
|
long execLimit = 10000000;
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
Debugging options
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// If true, set the log output to standard out. If false, logging is
|
|
// disabled by default and must be activated (through monster.vm.dbg)
|
|
// at runtime.
|
|
bool defaultLogToStdout = false;
|
|
|
|
// If true, all function stack operations (pushes and pops) are logged
|
|
// with dbg.log(), and all logged messages are indented according to
|
|
// the current fstack level.
|
|
bool logFStack = true;
|
|
|
|
// If true, log when threads are put into the background/forground.
|
|
bool logThreads = true;
|
|
|
|
// The following options control more low-level debugging. Most of
|
|
// these will enable tracing of various internal function calls and
|
|
// parameters directly to stdout.
|
|
|
|
// Trace the thread system
|
|
bool traceThreads = false;
|
|
|
|
// Trace scope lookups
|
|
bool traceLookups = false;
|
|
|
|
// Trace resolve() calls
|
|
bool traceResolve = false;
|
|
|
|
// Print completed output from the assembler
|
|
bool printAsmOutput = false;
|
|
|
|
// Trace VM opcode execution
|
|
bool traceVMOps = false;
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
Optimization options
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// Enable assembler optimizations
|
|
bool optimizeAsm = true;
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
Modules
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// Load modules at startup? If false, you can still load modules
|
|
// manually using monster.modules.all.initAllModules().
|
|
bool loadModules = true;
|
|
|
|
// List of modules to load when initAllModules is called (and at
|
|
// startup if loadModules is true.)
|
|
char[] moduleList = "io math timer frames random thread";
|
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************
|
|
|
|
|
|
Timer module
|
|
|
|
|
|
*********************************************************/
|
|
|
|
// When true, idle function sleep() uses the system clock. When false,
|
|
// the time is only updated manually when the user calls vm.frame().
|
|
// The system clock is fine for small applications, but the manual
|
|
// method is much more optimized. It is highly recommended to use
|
|
// vm.frame() manually for games and other projects that use a
|
|
// rendering loop.
|
|
bool timer_useClock = false;
|