Numworks Epsilon  1.4.1
Graphing Calculator Operating System
store.h
Go to the documentation of this file.
1 #ifndef POINCARE_STORE_H
2 #define POINCARE_STORE_H
3 
4 #include <poincare/expression.h>
5 #include <poincare/symbol.h>
8 
9 namespace Poincare {
10 
11 class Store : public StaticHierarchy<2> {
12 public:
14  Type type() const override;
15  Expression * clone() const override;
16  int polynomialDegree(char symbolName) const override;
17 private:
18  /* Simplification */
19  Expression * shallowReduce(Context& context, AngleUnit angleUnit) override;
20  /* Layout */
21  ExpressionLayout * privateCreateLayout(PrintFloat::Mode floatDisplayMode, ComplexFormat complexFormat) const override;
22  int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override;
23  /* Evalutation */
24  Expression * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate<float>(context, angleUnit); }
25  Expression * privateApproximate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate<double>(context, angleUnit); }
26  template<typename T> Expression * templatedApproximate(Context& context, AngleUnit angleUnit) const;
27 
28  const Symbol * symbol() const { return static_cast<const Symbol *>(operand(1)); }
29  const Expression * value() const { return operand(0); }
30 };
31 
32 }
33 
34 #endif
int polynomialDegree(char symbolName) const override
Definition: store.cpp:23
Type type() const override
Definition: store.cpp:15
Expression * clone() const override
Definition: store.cpp:19
const Expression * operand(int i) const
Definition: expression.cpp:78