package jscl.math.operator;
import jscl.math.Generic;
import jscl.math.GenericVariable;
import jscl.math.JsclVector;
import jscl.math.Variable;
import jscl.math.function.Constant;
import jscl.mathml.MathML;
public abstract class VectorOperator extends Operator {
public VectorOperator(String name, Generic parameter[]) {
super(name, parameter);
}
public void toMathML(MathML element, Object data) {
int exponent = data instanceof Integer ? ((Integer) data).intValue() : 1;
if (exponent == 1) bodyToMathML(element);
else {
MathML e1 = element.element("msup");
MathML e2 = element.element("mfenced");
bodyToMathML(e2);
e1.appendChild(e2);
e2 = element.element("mn");
e2.appendChild(element.text(String.valueOf(exponent)));
e1.appendChild(e2);
element.appendChild(e1);
}
}
protected abstract void bodyToMathML(MathML element);
protected void operator(MathML element, String name) {
Variable variable[] = toVariables((JsclVector) GenericVariable.content(parameters[1]));
MathML e1 = element.element("msub");
new Constant(name).toMathML(e1, null);
MathML e2 = element.element("mrow");
for (int i = 0; i < variable.length; i++) variable[i].expressionValue().toMathML(e2, null);
e1.appendChild(e2);
element.appendChild(e1);
}
}