package jmathlib.toolbox.io;
import jmathlib.core.tokens.*;
import jmathlib.core.functions.ExternalFunction;
import jmathlib.core.interpreter.GlobalValues;
import java.io.*;
public class savevariables extends ExternalFunction
{
public OperandToken evaluate(Token[] operands, GlobalValues globals)
{
if (getNArgIn(operands) > 1)
throwMathLibException("savevariables: number of arguments > 1");
String file = "." + File.separator + "variables.mlf";
if (getNArgIn(operands) == 1)
{
if (!(operands[0] instanceof CharToken))
throwMathLibException("savevariables: argument must be a string");
file = ((CharToken)operands[0]).toString();
}
globals.getLocalVariables().saveVariables(file);
return null;
} // end eval
}
/*
@GROUP
IO
@SYNTAX
savevariables()
savevariables("name.mlf")
@DOC
saves the variables from the current workspace into a serialized .mlf-file
@EXAMPLES
<programlisting>
savevariables()
</programlisting>
@NOTES
The variables are written as a serialized stream of java objects. Therefor the
format of the .mlf-file is java-specific. The file is also specific to the
versions of MathLib token and classes.
@SEE
loadvariables, csvread, csvwrite
*/