next up previous contents index
Next: 2.11.9 systemdict Up: 2.11 Dictionary reference Previous: 2.11.7 outputsdict   Contents   Index


2.11.8 sprintsdict

The sprintsdict dictionary is primarily used to support sprints , but its contents may be of use to an application that wishes to extend or modify syntactical printing.

There is an entry in sprintsdict for each Onyx type. If there is a syntactically valid representation for an object and the recursion depth is greater than 0, the corresponding operator creates a string that syntactically represents the object. Otherwise, a string with a non-syntictical representation of the object is created, except for booleans, integers, names, nulls, reals, and strings, for which the results are always syntactical. If the recursion depth is greater than 0, the operators will recursively convert any contained objects.

The implementation of sprints is useful in illustrating a useful method of doing type-dependent operations:

$sprints {
        1 idup type $sprintsdict load exch get eval
} def

Table 2.9: sprintsdict summary
Input(s)
Op/Proc/Var
Output(s)
Description
array depth
arraytype
string
Create syntactical string from array.
boolean depth
booleantype
string
Create syntactical string from boolean.
class depth
classtype
string
Create syntactical string from class.
condition depth
conditiontype
string
Create syntactical string from condition.
dict depth
dicttype
string
Create syntactical string from dict.
file depth
filetype
string
Create syntactical string from file.
fino depth
finotype
string
Create syntactical string from fino.
handle depth
handletype
string
Create syntactical string from handle.
instance depth
instancetype
string
Create syntactical string from instance.
integer depth
integertype
string
Create syntactical string from integer.
mark depth
marktype
string
Create syntactical string from mark.
mutex depth
mutextype
string
Create syntactical string from mutex.
name depth
nametype
string
Create syntactical string from name.
null depth
nulltype
string
Create syntactical string from null.
operator depth
operatortype
string
Create syntactical string from operator.
pmark depth
pmarktype
string
Create syntactical string from pmark.
real depth
realtype
string
Create syntactical string from real.
regex depth
regextype
string
Create syntactical string from regex.
regsub depth
regsubtype
string
Create syntactical string from regsub.
stack depth
stacktype
string
Create syntactical string from stack.
string depth
stringtype
string
Create syntactical string from string.
thread depth
threadtype
string
Create syntactical string from thread.

array depth arraytype string:
Input(s):
array:
An array object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of array.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of array.
Example(s):
onyx:0> sprintsdict begin
onyx:0> [1 [2 3] 4]
onyx:1> dup 0 arraytype print `\n' print flush
-array-
onyx:1> dup 1 arraytype print `\n' print flush
[1 -array- 4]
onyx:1> dup 2 arraytype print `\n' print flush
[1 [2 3] 4]
onyx:1>
boolean depth booleantype string:
Input(s):
boolean:
A boolean object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of boolean.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of boolean.
Example(s):
onyx:0> sprintsdict begin
onyx:0> true
onyx:1> dup 0 booleantype print `\n' print flush
true
onyx:1>
class depth classtype string:
Input(s):
class:
A class object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of class.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of class.
Example(s):
onyx:0> sprintsdict begin
onyx:0> vclass
onyx:1> dup 0 classtype print `\n' print flush
-class-
onyx:1> dup 1 classtype print `\n' print flush
-class-
onyx:1>
condition depth conditiontype string:
Input(s):
condition:
A condition object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of condition.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of condition.
Example(s):
onyx:0> sprintsdict begin
onyx:0> condition
onyx:1> dup 0 conditiontype print `\n' print flush
-condition-
onyx:1> dup 1 conditiontype print `\n' print flush
-condition-
onyx:1>
dict depth dicttype string:
Input(s):
dict:
A dict object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of dict.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of dict.
Example(s):
onyx:0> sprintsdict begin
onyx:0> <$a `a' $subdict <$b `b'>>
onyx:1> dup 0 dicttype print `\n' print flush
-dict-
onyx:1> dup 1 dicttype print `\n' print flush
<$subdict -dict- $a `a'>
onyx:1> dup 2 dicttype print `\n' print flush
<$subdict <$b `b'> $a `a'>
onyx:1>
file depth filetype string:
Input(s):
file:
A file object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of file.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of file.
Example(s):
onyx:0> sprintsdict begin
onyx:0> stdout
onyx:1> dup 0 filetype print `\n' print flush
-file-
onyx:1> dup 1 filetype print `\n' print flush
-file-
onyx:1>
fino depth finotype string:
Input(s):
fino:
A fino object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of fino.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of fino.
Example(s):
onyx:0> sprintsdict begin
onyx:0> (
onyx:1> dup 0 finotype print `\n' print flush
-fino-
onyx:1> dup 1 finotype print `\n' print flush
-fino-
onyx:1>
handle depth handletype string:
Input(s):
handle:
A handle object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of handle.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of handle.
Example(s):
The following example is a bit contrived, since there is no way to create a handle object with a stock onyx interpreter. Therefore, imagine that an operator named taggedhandle exists that creates a handle with a tag that is the name ``tagged'', and that an operator named untaggedhandle exists that creates an untagged handle.
onyx:0> sprintsdict begin
onyx:0> taggedhandle
onyx:1> dup 0 handletype print `\n' print flush
=tagged=
onyx:1> 1 handletype print `\n' print flush
=tagged=
onyx:0> untaggedhandle
onyx:1> dup 0 handletype print `\n' print flush
-handle-
onyx:1> 1 handletype print `\n' print flush
-handle-
onyx:0>
instance depth instancetype string:
Input(s):
instance:
An instance object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of instance.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of instance.
Example(s):
onyx:0> sprintsdict begin
onyx:0> vinstance
onyx:1> dup 0 instancetype print `\n' print flush
-instance-
onyx:1> dup 1 instancetype print `\n' print flush
-instance-
onyx:1>
integer depth integertype string:
Input(s):
integer:
An integer object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of integer.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of integer.
Example(s):
onyx:0> sprintsdict begin
onyx:0> 42
onyx:1> dup 0 integertype print `\n' print flush
42
onyx:1> dup 1 integertype print `\n' print flush
42
onyx:1>
mark depth marktype string:
Input(s):
mark:
A mark object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of mark.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of mark.
Example(s):
onyx:0> sprintsdict begin
onyx:0> mark
onyx:1> dup 0 marktype print `\n' print flush
-mark-
onyx:1> dup 1 marktype print `\n' print flush
-mark-
onyx:1>
mutex depth mutextype string:
Input(s):
mutex:
A mutex object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of mutex.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of mutex.
Example(s):
onyx:0> sprintsdict begin
onyx:0> mutex
onyx:1> dup 0 mutextype print `\n' print flush
-mutex-
onyx:1> dup 1 mutextype print `\n' print flush
-mutex-
onyx:1>
name depth nametype string:
Input(s):
name:
A name object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of name.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of name.
Example(s):
onyx:0> sprintsdict begin
onyx:0> $foo
onyx:1> dup 0 nametype print `\n' print flush
$foo
onyx:1> dup 1 nametype print `\n' print flush
$foo
onyx:1>
null depth nulltype string:
Input(s):
null:
A null object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of null.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of null.
Example(s):
onyx:0> sprintsdict begin
onyx:0> null
onyx:1> dup 0 nulltype print `\n' print flush
-null-
onyx:1> dup 1 nulltype print `\n' print flush
-null-
onyx:1>
operator depth operatortype string:
Input(s):
operator:
An operator object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of operator.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of operator.
Example(s):
The following example shows an operator printed out with two leading and trailing dashes. If the interpreter cannot determine the name associated with an operator, as will be the case for custom operators, the operator will be printed as -operator-.
onyx:0> sprintsdict begin
onyx:0> ~realtime
onyx:1> dup 0 operatortype print `\n' print flush
--realtime--
onyx:1> 1 operatortype print `\n' print flush
--realtime--
onyx:0>
pmark depth pmarktype string:
Input(s):
pmark:
A pmark object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of pmark.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of pmark.
Example(s):
onyx:0> sprintsdict begin
onyx:0> { ~x
Error $undefined
ostack: (-pmark- $x)
dstack: (-dict- -dict- -dict- -dict- -dict-)
cstack: ()
estack/istack trace (0..1):
0:      -file-
1:      --start--
onyx:3> pop pop resume
onyx:1> dup 0 pmarktype print `\n' print flush
-pmark-
onyx:1> dup 1 pmarktype print `\n' print flush
-pmark-
onyx:1>
regex depth regextype string:
Input(s):
regex:
A regex object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of regex.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of regex.
Example(s):
onyx:0> sprintsdict begin
onyx:0> `' regex
onyx:1> dup 0 regextype print `\n' print flush
-regex-
onyx:1> dup 1 regextype print `\n' print flush
-regex-
onyx:1>
regsub depth regsubtype string:
Input(s):
regsub:
A regsub object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of regsub.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of regsub.
Example(s):
onyx:0> sprintsdict begin
onyx:0> `' `' regsub
onyx:1> dup 0 regsubtype print `\n' print flush
-regsub-
onyx:1> dup 1 regsubtype print `\n' print flush
-regsub-
onyx:1>
real depth realtype string:
Input(s):
real:
A real object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of real.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of real.
Example(s):
onyx:0> sprintsdict begin
onyx:0> 42.0
onyx:1> dup 0 realtype print `\n' print flush
4.200000e+01
onyx:1> dup 1 realtype print `\n' print flush
4.200000e+01
onyx:1>
stack depth stacktype string:
Input(s):
stack:
A stack object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of stack.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of stack.
Example(s):
onyx:0> sprintsdict begin
onyx:0> (1 (2 3) 4)
onyx:1> dup 0 stacktype print `\n' print flush
-stack-
onyx:1> dup 1 stacktype print `\n' print flush
(1 -stack- 4)
onyx:1> dup 2 stacktype print `\n' print flush
(1 (2 3) 4)
onyx:1>
string depth stringtype string:
Input(s):
string:
A string object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of string.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of string.
Example(s):
onyx:0> sprintsdict begin
onyx:0> `abcd'
onyx:1> dup 0 stringtype print `\n' print flush
`abcd'
onyx:1> dup 1 stringtype print `\n' print flush
`abcd'
onyx:1>
thread depth threadtype string:
Input(s):
thread:
A thread object.
depth:
Recursion depth.
Output(s):
string:
Syntactical string representation of thread.
Error(s):
stackunderflow.
typecheck.
Description:
Create a syntactical string representation of thread.
Example(s):
onyx:0> sprintsdict begin
onyx:0> thread
onyx:1> dup 0 threadtype print `\n' print flush
-thread-
onyx:1> dup 1 threadtype print `\n' print flush
-thread-
onyx:1>


next up previous contents index
Next: 2.11.9 systemdict Up: 2.11 Dictionary reference Previous: 2.11.7 outputsdict   Contents   Index
Jason Evans 2005-03-16