1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.millscript.millscript.functions;
22
23 import org.millscript.millscript.tools.FormatPrint;
24 import org.millscript.millscript.vm.Machine;
25
26 import java.io.PrintWriter;
27 import java.io.Writer;
28
29 /**
30 * This class implements the basic functionality required for MillScript's
31 * <code>showLim</code> functions.
32 */
33 abstract class BasicShowLimFunction extends Function {
34
35 /**
36 * Performs the basic showLim function. The basic showLim function consists
37 * of displaying the specified number of arguments from the specified
38 * machine in a programmer oriented fashion, but limitied to a fixed number
39 * of characters.
40 *
41 * @param mc the machine to obtain arguments from
42 * @param nargs the number of arguments to get
43 * @param newline indicates whether a newline should be displayed after
44 * everything is shown
45 */
46 protected void basicApply( final Machine mc, final int nargs, final boolean newline ) {
47 if ( nargs == 2 ) {
48 final int lim = mc.popInt();
49 final Object arg = mc.popObject();
50 final Writer sw = new ShortStringWriter( lim );
51 final PrintWriter pw = new PrintWriter( sw, true );
52 FormatPrint.show( pw, arg );
53 pw.flush();
54 if ( newline ) {
55 System.out.println( sw.toString() );
56 } else {
57 System.out.print( sw.toString() );
58 System.out.flush();
59 }
60 } else {
61 checkNargs( mc, 2, nargs );
62 }
63 }
64
65 }