package jscl; import org.solovyev.common.math.MathRegistry; import java.math.BigInteger; import javax.annotation.Nonnull; import jscl.math.function.Function; import jscl.math.function.IConstant; import jscl.math.operator.Operator; public interface MathContext { @Nonnull MathRegistry<Function> getFunctionsRegistry(); @Nonnull MathRegistry<Operator> getOperatorsRegistry(); @Nonnull MathRegistry<IConstant> getConstantsRegistry(); @Nonnull MathRegistry<Operator> getPostfixFunctionsRegistry(); @Nonnull AngleUnit getAngleUnits(); void setAngleUnits(@Nonnull AngleUnit defaultAngleUnits); @Nonnull NumeralBase getNumeralBase(); // OUTPUT NUMBER FORMATTING // todo serso: maybe gather all formatting data in one object? void setNumeralBase(@Nonnull NumeralBase numeralBase); void setPrecision(int precision); void setGroupingSeparator(char separator); @Nonnull String format(double value); String format(@Nonnull BigInteger value); @Nonnull String format(double value, @Nonnull NumeralBase nb); @Nonnull String format(@Nonnull String value, @Nonnull NumeralBase nb); void setNotation(int notation); }