/*
	Little Smalltalk

	The following very common commands are given a concise description
	in bytecodes.

*/

static char *unspecial[] = {"new", "isNil", "notNil", "size", "class",
	"value", "first", "next", "print", "printString",
	"strictlyPositive", "currentKey", "not",

	/* after the first 16 - which should be the most common
	messages, order doesn't make as much difference so we
	might as well list things in alphabetical order */

	"abs",
	"asArray", 
	"asFloat", 
	"asString", 
	"asSymbol", 
	"block",
	"compareError", 
	"copy", 
	"current",
	"deepCopy",
	"exp", 
	"findLast",
	"firstKey",
	"gamma", 
	"isEmpty",
	"isLowercase",
	"isUppercase",
	"last",
	"lastKey",
	"ln", 
	"newProcess",
	"not", 
	"opError",
	"read",
	"removeError",
	"removeFirst",
	"removeLast",
	"resume",
	"rounded", 
	"shallowCopy", 
	"sqrt",
	"squared", 
	"state",
	"superClass",
	"truncated", 
	"unblock",
	"x", 
	"y", 
	0};

# define VALUECMD	5
# define PRNTCMD	8

static char *binspecial[] = {"new:", "at:", "to:", "do:", "value:",
	"==", "~~", "timesRepeat:", "whileTrue:", "whileFalse:",
	"ifTrue:", "ifFalse:", "error:", "add:", 
	"/", "coerce:",

	"^", 
	",", 
	"//",
	"addAll:", 
	"addAllLast:", 
	"addFirst:", 
	"addLast:", 
	"binaryDo:", 
	"checkBucket:",
	"collect:",
	"deepCopy:", 
	"gcd:", 
	"getList:",
	"hashNumber:",
	"includes:", 
	"inRange:", 
	"keysDo:", 
	"log:", 
	"maxtype:", 
	"newProcessWith:",
	"occurrencesOf:",
	"raisedTo:",
	"reject:",
	"remove:", 
	"removeKey:", 
	"respondsTo:",
	"reverseDo:",
	"roundTo:", 
	"select:",
	"shallowCopy:", 
	"sort:", 
	"termErr:",
	"truncateTo:",
	"write:",
	"x:", 
	"y:", 
	"includesKey:",
	0};

static char *arithspecial[] = {"+", "-", "*", "\\\\",
	"bitShift:", "bitAnd:", "bitOr:",
	"<", "<=", "=", "~=", ">=", ">", 
	"rem:", "quo:", "min:", "max:", 
	0};

static char *keyspecial[] = {"at:put:", "ifTrue:ifFalse:", "ifFalse:ifTrue:",
	"value:value:", "to:by:", "at:ifAbsent:",
	"indexOf:ifAbsent:", "inject:into:", 
	"remove:ifAbsent:", "removeKey:ifAbsent:", 
	"between:and:", 
	"findFirst:ifAbsent:", "findLast:ifAbsent:",
	"equals:startingAt:",
	"findAssociation:inList:",
	"detect:ifAbsent:",
	0};

/*	The classes included in the standard prelude
	also have a very concise description in bytecode representation
*/

static char *classpecial[] = {"Array", "ArrayedCollection", 
	"Bag", "Block", "Boolean", "ByteArray",
	"Char", "Class", "Collection", "Complex",
	"Dictionary", "False", "File", "Float",
	"Integer", "Interpreter", "Interval",
	"KeyedCollection", "List", "Magnitude", "Number",
	"Object", "OrderedCollection", "Point",
	"Radian", "Random",
	"SequenceableCollection", "Set", "String", "Symbol",
	"True", "UndefinedObject",
	0 };
