MtasFunctionParserFunctionBasic.java
package mtas.parser.function.util;
import java.io.IOException;
import java.util.ArrayList;
import mtas.codec.util.CodecUtil;
import mtas.parser.function.ParseException;
/**
* The Class MtasFunctionParserFunctionBasic.
*/
public class MtasFunctionParserFunctionBasic
extends MtasFunctionParserFunction {
/** The first type. */
private String firstType;
/** The first id. */
private int firstId;
/** The tmp parser longs. */
private ArrayList<MtasFunctionParserFunction> tmpParserLongs = new ArrayList<>();
/** The tmp parser doubles. */
private ArrayList<MtasFunctionParserFunction> tmpParserDoubles = new ArrayList<>();
/** The tmp constant longs. */
private ArrayList<Long> tmpConstantLongs = new ArrayList<>();
/** The tmp constant doubles. */
private ArrayList<Double> tmpConstantDoubles = new ArrayList<>();
/** The number. */
private int number;
/** The operator list. */
private String[] operatorList;
/** The type list. */
private String[] typeList;
/** The id list. */
private int[] idList;
/** The tmp operator list. */
private ArrayList<String> tmpOperatorList = new ArrayList<>();
/** The tmp type list. */
private ArrayList<String> tmpTypeList = new ArrayList<>();
/** The tmp id list. */
private ArrayList<Integer> tmpIdList = new ArrayList<>();
/** The Constant BASIC_OPERATOR_ADD. */
public static final String BASIC_OPERATOR_ADD = "add";
/** The Constant BASIC_OPERATOR_SUBTRACT. */
public static final String BASIC_OPERATOR_SUBTRACT = "subtract";
/** The Constant BASIC_OPERATOR_MULTIPLY. */
public static final String BASIC_OPERATOR_MULTIPLY = "multiply";
/** The Constant BASIC_OPERATOR_DIVIDE. */
public static final String BASIC_OPERATOR_DIVIDE = "divide";
/** The Constant BASIC_OPERATOR_POWER. */
public static final String BASIC_OPERATOR_POWER = "power";
/**
* Instantiates a new mtas function parser function basic.
*
* @param item the item
* @throws ParseException the parse exception
*/
public MtasFunctionParserFunctionBasic(MtasFunctionParserItem item)
throws ParseException {
sumRule = true;
String type = item.getType();
MtasFunctionParserFunction parser;
firstType = type;
degree = item.getDegree();
switch (type) {
case MtasFunctionParserItem.TYPE_N:
firstId = 0;
dataType = CodecUtil.DATA_TYPE_LONG;
needPositions = true;
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
firstId = tmpConstantLongs.size();
dataType = CodecUtil.DATA_TYPE_LONG;
tmpConstantLongs.add(item.getValueLong());
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
firstId = tmpConstantDoubles.size();
dataType = CodecUtil.DATA_TYPE_DOUBLE;
tmpConstantDoubles.add(item.getValueDouble());
break;
case MtasFunctionParserItem.TYPE_ARGUMENT:
firstType = type;
firstId = item.getId();
dataType = CodecUtil.DATA_TYPE_LONG;
needArgument.add(item.getId());
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
parser = item.getParser();
parser.close();
if (parser.getType().equals(CodecUtil.DATA_TYPE_LONG)) {
firstId = tmpParserLongs.size();
tmpParserLongs.add(parser);
sumRule = parser.sumRule();
dataType = CodecUtil.DATA_TYPE_LONG;
needPositions = needPositions ? needPositions : parser.needPositions();
needArgument.addAll(parser.needArgument);
} else {
throw new ParseException("incorrect dataType");
}
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
parser = item.getParser();
parser.close();
if (parser.getType().equals(CodecUtil.DATA_TYPE_DOUBLE)) {
firstId = tmpParserDoubles.size();
tmpParserDoubles.add(parser);
sumRule = parser.sumRule();
dataType = CodecUtil.DATA_TYPE_DOUBLE;
needPositions = needPositions ? needPositions : parser.needPositions();
needArgument.addAll(parser.needArgument);
} else {
throw new ParseException("incorrect dataType");
}
break;
default:
throw new ParseException("unknown type");
}
}
/*
* (non-Javadoc)
*
* @see mtas.parser.function.util.MtasFunctionParserFunction#close()
*/
@Override
public void close() throws ParseException {
if (!defined()) {
super.close();
if (!tmpParserLongs.isEmpty()) {
parserLongs = new MtasFunctionParserFunction[tmpParserLongs.size()];
parserLongs = tmpParserLongs.toArray(parserLongs);
}
if (!tmpParserDoubles.isEmpty()) {
parserDoubles = new MtasFunctionParserFunction[tmpParserDoubles.size()];
parserDoubles = tmpParserDoubles.toArray(parserDoubles);
}
if (!tmpConstantLongs.isEmpty()) {
constantLongs = new long[tmpConstantLongs.size()];
for (int i = 0; i < tmpConstantLongs.size(); i++) {
constantLongs[i] = tmpConstantLongs.get(i);
}
}
if (!tmpConstantDoubles.isEmpty()) {
constantDoubles = new Double[tmpConstantDoubles.size()];
for (int i = 0; i < tmpConstantDoubles.size(); i++) {
constantDoubles[i] = tmpConstantDoubles.get(i);
}
}
if (firstType == null) {
throw new ParseException("incorrect definition: no firstType");
}
if (!tmpOperatorList.isEmpty()) {
number = tmpOperatorList.size();
if ((tmpTypeList.size() != number) || (tmpIdList.size() != number)) {
throw new ParseException("incorrect definition additional items");
} else {
operatorList = new String[number];
operatorList = tmpOperatorList.toArray(operatorList);
typeList = new String[number];
typeList = tmpTypeList.toArray(typeList);
idList = new int[number];
for (int i = 0; i < number; i++) {
idList[i] = tmpIdList.get(i).intValue();
}
}
} else {
number = 0;
operatorList = null;
typeList = null;
idList = null;
}
}
}
/**
* Adds the.
*
* @param item the item
* @throws ParseException the parse exception
*/
public void add(MtasFunctionParserItem item) throws ParseException {
basic(BASIC_OPERATOR_ADD, item);
}
/**
* Subtract.
*
* @param item the item
* @throws ParseException the parse exception
*/
public void subtract(MtasFunctionParserItem item) throws ParseException {
basic(BASIC_OPERATOR_SUBTRACT, item);
}
/**
* Multiply.
*
* @param item the item
* @throws ParseException the parse exception
*/
public void multiply(MtasFunctionParserItem item) throws ParseException {
basic(BASIC_OPERATOR_MULTIPLY, item);
}
/**
* Divide.
*
* @param item the item
* @throws ParseException the parse exception
*/
public void divide(MtasFunctionParserItem item) throws ParseException {
basic(BASIC_OPERATOR_DIVIDE, item);
}
/**
* Power.
*
* @param item the item
* @throws ParseException the parse exception
*/
public void power(MtasFunctionParserItem item) throws ParseException {
basic(BASIC_OPERATOR_POWER, item);
}
/**
* Basic.
*
* @param operator the operator
* @param item the item
* @throws ParseException the parse exception
*/
private void basic(String operator, MtasFunctionParserItem item)
throws ParseException {
if (!defined()) {
String type = item.getType();
MtasFunctionParserFunction parser;
tmpOperatorList.add(operator);
if (operator.equals(BASIC_OPERATOR_DIVIDE)) {
dataType = CodecUtil.DATA_TYPE_DOUBLE;
}
switch (type) {
case MtasFunctionParserItem.TYPE_N:
tmpTypeList.add(type);
tmpIdList.add(0);
needPositions = true;
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (degree < 0) {
sumRule = false;
degree = null;
} else if (degree > 0) {
sumRule = false;
}
} else if (operator.equals(BASIC_OPERATOR_POWER) && (degree != 0)) {
sumRule = false;
degree = null;
}
}
break;
case MtasFunctionParserItem.TYPE_ARGUMENT:
tmpTypeList.add(type);
tmpIdList.add(item.getId());
needArgument.add(item.getId());
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (degree != 1) {
sumRule = false;
}
if (degree >= 0) {
degree = Math.max(degree, 1);
} else {
degree = null;
}
} else if (operator.equals(BASIC_OPERATOR_MULTIPLY)) {
if (degree != 0) {
sumRule = false;
}
degree += 1;
} else if (operator.equals(BASIC_OPERATOR_DIVIDE)) {
sumRule = false;
degree -= 1;
} else if (operator.equals(BASIC_OPERATOR_POWER)) {
sumRule = false;
degree = null;
}
}
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
tmpTypeList.add(type);
tmpIdList.add(tmpConstantLongs.size());
tmpConstantLongs.add(item.getValueLong());
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (degree < 0) {
sumRule = false;
degree = null;
} else if (degree > 0) {
sumRule = false;
}
} else if (operator.equals(BASIC_OPERATOR_POWER) && (degree != 0)) {
sumRule = false;
degree = null;
}
}
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
tmpTypeList.add(type);
tmpIdList.add(tmpConstantDoubles.size());
dataType = CodecUtil.DATA_TYPE_DOUBLE;
tmpConstantDoubles.add(item.getValueDouble());
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (degree < 0) {
sumRule = false;
degree = null;
} else if (degree > 0) {
sumRule = false;
}
} else if (operator.equals(BASIC_OPERATOR_POWER) && (degree != 0)) {
sumRule = false;
degree = null;
}
}
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
tmpTypeList.add(type);
tmpIdList.add(tmpParserLongs.size());
parser = item.getParser();
parser.close();
tmpParserLongs.add(parser);
sumRule = sumRule ? parser.sumRule() : false;
needPositions = needPositions ? needPositions : parser.needPositions();
needArgument.addAll(parser.needArgument);
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (!parser.degree.equals(degree)) {
sumRule = false;
if (degree < 0) {
degree = null;
} else {
degree = Math.max(degree, parser.degree);
}
}
} else if (operator.equals(BASIC_OPERATOR_MULTIPLY)) {
if (degree != 0 || parser.degree != 0) {
sumRule = false;
}
degree += parser.degree;
} else if (operator.equals(BASIC_OPERATOR_POWER) && (degree != 0)) {
sumRule = false;
degree = null;
}
}
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
tmpTypeList.add(type);
tmpIdList.add(tmpParserDoubles.size());
dataType = CodecUtil.DATA_TYPE_DOUBLE;
parser = item.getParser();
parser.close();
tmpParserDoubles.add(parser);
sumRule = sumRule ? parser.sumRule() : false;
needPositions = needPositions ? needPositions : parser.needPositions();
needArgument.addAll(parser.needArgument);
if (sumRule && degree != null) {
if (operator.equals(BASIC_OPERATOR_ADD)
|| operator.equals(BASIC_OPERATOR_SUBTRACT)) {
if (!parser.degree.equals(degree)) {
sumRule = false;
if (degree < 0) {
degree = null;
} else {
degree = Math.max(degree, parser.degree);
}
}
} else if (operator.equals(BASIC_OPERATOR_MULTIPLY)) {
if (degree != 0 || parser.degree != 0) {
sumRule = false;
}
degree += parser.degree;
} else if (operator.equals(BASIC_OPERATOR_POWER) && (degree != 0)) {
sumRule = false;
degree = null;
}
}
break;
default:
throw new ParseException("incorrect type");
}
} else {
throw new ParseException("already defined");
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.parser.function.util.MtasFunctionParserFunction#getValueDouble(long[],
* long)
*/
@Override
public double getValueDouble(long[] args, long n) throws IOException {
double sum;
switch (firstType) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum = args[firstId];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum = parserDoubles[firstId].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum = parserLongs[firstId].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum = constantDoubles[firstId];
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum = constantLongs[firstId];
break;
case MtasFunctionParserItem.TYPE_N:
sum = n;
break;
default:
throw new IOException("no first value");
}
for (int i = 0; i < number; i++) {
switch (operatorList[i]) {
case BASIC_OPERATOR_ADD:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum += args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum += parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum += parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum += constantDoubles[idList[i]];
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum += constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum += n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_SUBTRACT:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum -= args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum -= parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum -= parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum -= constantDoubles[idList[i]];
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum -= constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum -= n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_MULTIPLY:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum *= args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum *= parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum *= parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum *= constantDoubles[idList[i]];
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum *= constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum *= n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_DIVIDE:
double v;
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
v = args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
v = parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
v = parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
v = constantDoubles[idList[i]];
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
v = constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
v = n;
break;
default:
throw new IOException("unknown type");
}
if (v != 0) {
sum /= v;
} else {
throw new IOException("division by zero");
}
break;
case BASIC_OPERATOR_POWER:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum = Math.pow(sum, args[idList[i]]);
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum = Math.pow(sum, parserDoubles[idList[i]].getValueDouble(args, n));
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum = Math.pow(sum, parserLongs[idList[i]].getValueLong(args, n));
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum = Math.pow(sum, constantDoubles[idList[i]]);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum = Math.pow(sum, constantLongs[idList[i]]);
break;
case MtasFunctionParserItem.TYPE_N:
sum = Math.pow(sum, n);
break;
default:
throw new IOException("unknown type");
}
break;
default:
throw new IOException("unknown operator");
}
}
return sum;
}
/*
* (non-Javadoc)
*
* @see
* mtas.parser.function.util.MtasFunctionParserFunction#getValueLong(long[],
* long)
*/
@Override
public long getValueLong(long[] args, long n) throws IOException {
try {
long sum;
switch (firstType) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum = args[firstId];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum = (long) parserDoubles[firstId].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum = parserLongs[firstId].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum = constantDoubles[firstId].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum = constantLongs[firstId];
break;
case MtasFunctionParserItem.TYPE_N:
sum = n;
break;
default:
throw new IOException("no first value");
}
for (int i = 0; i < number; i++) {
switch (operatorList[i]) {
case BASIC_OPERATOR_ADD:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum += args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum += (long) parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum += parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum += constantDoubles[idList[i]].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum += constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum += n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_SUBTRACT:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum -= args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum -= (long) parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum -= parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum -= constantDoubles[idList[i]].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum -= constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum -= n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_MULTIPLY:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum *= args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum *= (long) parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum *= parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum *= constantDoubles[idList[i]].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum *= constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum *= n;
break;
default:
throw new IOException("unknown type");
}
break;
case BASIC_OPERATOR_DIVIDE:
long v;
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
v = args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
v = (long) parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
v = parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
v = constantDoubles[idList[i]].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
v = constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
v = n;
break;
default:
throw new IOException("unknown type");
}
if (v != 0) {
sum /= v;
} else {
throw new IOException("division by zero");
}
break;
case BASIC_OPERATOR_POWER:
switch (typeList[i]) {
case MtasFunctionParserItem.TYPE_ARGUMENT:
sum = sum ^ args[idList[i]];
break;
case MtasFunctionParserItem.TYPE_PARSER_DOUBLE:
sum = sum ^ (long) parserDoubles[idList[i]].getValueDouble(args, n);
break;
case MtasFunctionParserItem.TYPE_PARSER_LONG:
sum = sum ^ parserLongs[idList[i]].getValueLong(args, n);
break;
case MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE:
sum = sum ^ constantDoubles[idList[i]].longValue();
break;
case MtasFunctionParserItem.TYPE_CONSTANT_LONG:
sum = sum ^ constantLongs[idList[i]];
break;
case MtasFunctionParserItem.TYPE_N:
sum = sum ^ n;
break;
default:
throw new IOException("unknown type");
}
break;
default:
throw new IOException("unknown operator");
}
}
return sum;
} catch (java.lang.ArithmeticException e) {
throw new IOException(e);
}
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
if (firstType != null) {
StringBuilder text = new StringBuilder(toString(firstType, firstId));
for (int i = 0; i < tmpOperatorList.size(); i++) {
String operator = tmpOperatorList.get(i);
if (operator.equals(BASIC_OPERATOR_ADD)) {
text.append(" + ");
} else if (operator.equals(BASIC_OPERATOR_SUBTRACT)) {
text.append(" - ");
} else if (operator.equals(BASIC_OPERATOR_MULTIPLY)) {
text.append(" * ");
} else if (operator.equals(BASIC_OPERATOR_DIVIDE)) {
text.append(" / ");
} else if (operator.equals(BASIC_OPERATOR_POWER)) {
text.append(" ^ ");
} else {
text.append(" ? ");
}
text.append(toString(tmpTypeList.get(i), tmpIdList.get(i)));
}
return text.toString();
} else {
return "?";
}
}
/**
* To string.
*
* @param type the type
* @param id the id
* @return the string
*/
private String toString(String type, int id) {
if (type.equals(MtasFunctionParserItem.TYPE_CONSTANT_LONG)) {
return tmpConstantLongs.get(id).toString();
} else if (type.equals(MtasFunctionParserItem.TYPE_CONSTANT_DOUBLE)) {
return tmpConstantDoubles.get(id).toString();
} else if (type.equals(MtasFunctionParserItem.TYPE_PARSER_LONG)) {
return "(" + tmpParserLongs.get(id).toString() + ")";
} else if (type.equals(MtasFunctionParserItem.TYPE_PARSER_DOUBLE)) {
return "(" + tmpParserDoubles.get(id).toString() + ")";
} else if (type.equals(MtasFunctionParserItem.TYPE_ARGUMENT)) {
return "$q" + id;
} else if (type.equals(MtasFunctionParserItem.TYPE_N)) {
return "$n";
} else {
return "..";
}
}
}