41 lines
1 KiB
Go
41 lines
1 KiB
Go
// Copyright 2010 The postscript-go Authors. All rights reserved.
|
|
// created: 13/12/2010 by Laurent Le Goff
|
|
|
|
package postscript
|
|
|
|
type OperatorFunc func(interpreter *Interpreter)
|
|
|
|
type PrimitiveOperator struct {
|
|
f OperatorFunc
|
|
}
|
|
|
|
func NewOperator(f OperatorFunc) *PrimitiveOperator {
|
|
return &PrimitiveOperator{f}
|
|
}
|
|
|
|
func (o *PrimitiveOperator) Execute(interpreter *Interpreter) {
|
|
o.f(interpreter)
|
|
}
|
|
|
|
func save(interpreter *Interpreter) {
|
|
interpreter.Push("VM Snapshot")
|
|
}
|
|
|
|
func restore(interpreter *Interpreter) {
|
|
interpreter.Pop()
|
|
}
|
|
|
|
func initSystemOperators(interpreter *Interpreter) {
|
|
interpreter.SystemDefine("save", NewOperator(save))
|
|
interpreter.SystemDefine("restore", NewOperator(restore))
|
|
initStackOperator(interpreter)
|
|
initMathOperators(interpreter)
|
|
initArrayOperators(interpreter)
|
|
initDictionaryOperators(interpreter)
|
|
initRelationalOperators(interpreter)
|
|
initControlOperators(interpreter)
|
|
initMiscellaneousOperators(interpreter)
|
|
initDrawingOperators(interpreter)
|
|
|
|
initConflictingOperators(interpreter)
|
|
}
|