package jmathlib.toolbox.string; /* This file is part or JMathLib * author: 2006/05/16 * */ import jmathlib.core.tokens.*; import jmathlib.core.tokens.numbertokens.*; import jmathlib.core.functions.ExternalFunction; import jmathlib.core.interpreter.GlobalValues; /**An external function for changing strings into numbers */ public class _double extends ExternalFunction { /**returns a matrix of numbers * @param operands[0] = string (e.g. ["hello"]) * @return a matrix of numbers */ public OperandToken evaluate(Token[] operands, GlobalValues globals) { // one operand if (getNArgIn(operands)!=1) throwMathLibException("_double: number of input arguments != 1"); if (operands[0] instanceof CharToken) { // get data from arguments String stringValue = ((CharToken)operands[0]).getValue(); // convert string to array of bytes byte[] b = stringValue.getBytes(); double[][] X = new double[1][b.length]; // convert array of byte to array of double for (int i=0; i<b.length; i++) { X[0][i]= (double)b[i]; } return new DoubleNumberToken( X ); } else if (operands[0] instanceof Int8NumberToken) { Int8NumberToken tok = (Int8NumberToken)operands[0]; DoubleNumberToken d = new DoubleNumberToken( tok.getSize(), null, null); for (int i=0; i<tok.getNumberOfElements(); i++) { d.setValue(i, tok.getValueRe(i), tok.getValueIm(i)); } return d; } else if (operands[0] instanceof UInt8NumberToken) { UInt8NumberToken tok = (UInt8NumberToken)operands[0]; DoubleNumberToken d = new DoubleNumberToken( tok.getSize(), null, null); for (int i=0; i<tok.getNumberOfElements(); i++) { d.setValue(i, tok.getValueRe(i), tok.getValueIm(i)); } return d; } else if (operands[0] instanceof DoubleNumberToken) { return (DoubleNumberToken)operands[0]; } else throwMathLibException("_double: wrong type of argument"); return null; } // end eval } /* @GROUP char @SYNTAX number = str2num( string ) @DOC Convert strings into numbers @EXAMPLES str2num("hello 12") returns [104, 101, 108, 108, 111, 32, 49, 50] @NOTES @SEE num2str, char */