Datatypes There are five datatypes in COOL: string (STR), number (NUM), object (OBJ), list (LIST), and error (ERR). No type checking is done by COOL at compile-time. At run-time, if a type mismatch occurs in an operator or system function, E_TYPE is raised. String (STR) ------------ Strings are enclosed in doublequotes ("). The following are examples of string constants: "foo" "The rain in spain.\n" "They call me \"The Woodmaster\", son." String variables are declared as follows: Number (NUM) ------------ Numbers are long integers (typically in the range -2^31 to 2^31 - 1). Object ID (OBJ) --------------- Object ID's consist of two parts: the ID, and the servername. The following are values of type OBJ: #5@joemud #10@fredmud If the object in question is on the local MUD, the server part may be omitted: #7 represents object #7 on the local MUD. The value #-1 is a special value, usually meaning 'nothing' or some kind of error condition. List (LIST) ----------- Lists are heterogenous, ordered collections of other datatypes. They can be manipulated as unordered sets, using the set_add() and set_remove() functions, or as ordered lists, using list_insert(), list_append(), list_assign(). and list_delete(). Typically lists are used to store things like the contents of a room (a list of OBJ), or a list of methods on an object (a list of STR). The elements of a list are enclosed by braces, and separated by commas. The following are examples of lists: {} (the empty list) {1, 2, 3} {"abc", "def", "ghi"} { {1, 2}, {3, 4}, {5, 6} } (a list of lists) {1, "abc", #3} (a heterogenous list) Error (ERR) ----------- Error values store the result of an operation. The following is a list of the current errors and their meanings: E_TYPE Type mismatch E_RANGE Range error E_INVIND Invalid indirection E_DIV Division by zero E_MAXREC Maximum recursion exceeded E_METHODNF Method not found E_VARNF Variable not found E_FOR For variable not a list E_SERVERNF Server not found E_SERVERDN Server down E_OBJNF Object not found E_MESSAGE Message unparseable E_TIMEOUT Timed out E_STACKOVR Stack overflow E_STACKUND Stack underflow E_PERM Permission denied E_INTERNAL Internal error