// Copyright 2001, FreeHEP. package org.freehep.postscript; /** * PackedArray Operators for PostScript Processor * * @author Mark Donszelmann * @version $Id: PackedArrayOperator.java 8958 2006-09-12 23:37:43Z duns $ */ public class PackedArrayOperator extends PSOperator { public static Class[] operators = { PackedArray.class, SetPacking.class, CurrentPacking.class }; public boolean execute(OperandStack os) { throw new RuntimeException("Cannot execute class: "+getClass()); } } class PackedArray extends PackedArrayOperator { { operandTypes = new Class[] {PSInteger.class}; } // FREEHEP-155: nothing done about InvalidAccess public boolean execute(OperandStack os) { PSInteger n = os.popInteger(); if (n.getValue() < 0) { error(os, new RangeCheck()); } else { PSObject[] a = new PSObject[n.getValue()]; for (int i=n.getValue()-1; i>=0; i--) { PSObject o = os.popObject(); a[i] = o; } os.push(new PSPackedArray(a)); } return true; } } class SetPacking extends PackedArrayOperator { { operandTypes = new Class[] {PSBoolean.class}; } public boolean execute(OperandStack os) { PSBoolean b = os.popBoolean(); os.setPackingMode(b.getValue()); return true; } } class CurrentPacking extends PackedArrayOperator { public boolean execute(OperandStack os) { os.push(os.packingMode()); return true; } }