use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal in project webtools.sourceediting by eclipse.
the class FnSecondsFromTime method seconds_from_time.
/**
* Base-Uri operation.
*
* @param args
* Result from the expressions evaluation.
* @throws DynamicError
* Dynamic error.
* @return Result of fn:base-uri operation.
*/
public static ResultSequence seconds_from_time(Collection args) throws DynamicError {
Collection cargs = Function.convert_arguments(args, expected_args());
ResultSequence arg1 = (ResultSequence) cargs.iterator().next();
if (arg1.empty()) {
return ResultBuffer.EMPTY;
}
XSTime dt = (XSTime) arg1.first();
double res = dt.second();
return new XSDecimal(new BigDecimal(res));
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal in project webtools.sourceediting by eclipse.
the class XSDecimal method mod.
/**
* Mathematical modulus operator between this XSDecimal and the supplied
* ResultSequence. Due to no numeric type promotion or conversion, the
* ResultSequence must be of type XSDecimal.
*
* @param arg
* The ResultSequence to perform a modulus with
* @return A XSDecimal consisting of the result of the mathematical modulus.
*/
public ResultSequence mod(ResultSequence arg) throws DynamicError {
ResultSequence carg = convertResultSequence(arg);
XSDecimal val = (XSDecimal) get_single_type(carg, XSDecimal.class);
// BigDecimal result = _value.remainder(val.getValue());
BigDecimal result = remainder(_value, val.getValue());
return ResultSequenceFactory.create_new(new XSDecimal(result));
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal in project webtools.sourceediting by eclipse.
the class XSDecimal method div.
/**
* Mathematical division operator between this XSDecimal and the supplied
* ResultSequence.
*
* @param arg
* The ResultSequence to perform a division with
* @return A XSDecimal consisting of the result of the mathematical
* division.
*/
public ResultSequence div(ResultSequence arg) throws DynamicError {
ResultSequence carg = convertResultSequence(arg);
XSDecimal val = (XSDecimal) get_single_type(carg, XSDecimal.class);
if (val.zero()) {
throw DynamicError.div_zero(null);
}
BigDecimal result = getValue().divide(val.getValue(), 18, BigDecimal.ROUND_HALF_EVEN);
return ResultSequenceFactory.create_new(new XSDecimal(result));
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal in project webtools.sourceediting by eclipse.
the class XSDecimal method times.
/**
* Mathematical multiplication operator between this XSDecimal and the
* supplied ResultSequence.
*
* @param arg
* The ResultSequence to perform a multiplication with
* @return A XSDecimal consisting of the result of the mathematical
* multiplication.
*/
public ResultSequence times(ResultSequence arg) {
ResultSequence carg = convertResultSequence(arg);
XSDecimal val = (XSDecimal) get_single_type(carg, XSDecimal.class);
BigDecimal result = _value.multiply(val.getValue());
return ResultSequenceFactory.create_new(new XSDecimal(result));
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal in project webtools.sourceediting by eclipse.
the class XSDecimal method idiv.
/**
* Mathematical integer division operator between this XSDecimal and the
* supplied ResultSequence. Due to no numeric type promotion or conversion,
* the ResultSequence must be of type XSDecimal.
*
* @param arg
* The ResultSequence to perform an integer division with
* @return A XSInteger consisting of the result of the mathematical integer
* division.
*/
public ResultSequence idiv(ResultSequence arg) throws DynamicError {
ResultSequence carg = convertResultSequence(arg);
XSDecimal val = (XSDecimal) get_single_type(carg, XSDecimal.class);
if (val.zero())
throw DynamicError.div_zero(null);
BigInteger _ivalue = _value.toBigInteger();
BigInteger ival = val.getValue().toBigInteger();
BigInteger result = _ivalue.divide(ival);
return ResultSequenceFactory.create_new(new XSInteger(result));
}
Aggregations