/[svn]/linuxsampler/trunk/src/scriptvm/tree.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/scriptvm/tree.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3581 by schoenebeck, Fri Aug 30 11:40:25 2019 UTC revision 3582 by schoenebeck, Fri Aug 30 12:23:40 2019 UTC
# Line 70  public: Line 70  public:
70  };  };
71  typedef Ref<Unit,Node> UnitRef;  typedef Ref<Unit,Node> UnitRef;
72    
73  class ScalarNumberExpr : virtual public Unit, virtual public VMScalarNumberExpr, virtual public Expression {  class NumberExpr : virtual public Unit, virtual public VMNumberExpr, virtual public Expression {
74  public:  public:
75  };  };
76  typedef Ref<ScalarNumberExpr,Node> ScalarNumberExprRef;  typedef Ref<NumberExpr,Node> NumberExprRef;
77    
78  class IntExpr : virtual public ScalarNumberExpr, virtual public VMIntExpr {  class IntExpr : virtual public NumberExpr, virtual public VMIntExpr {
79  public:  public:
80      ExprType_t exprType() const OVERRIDE { return INT_EXPR; }      ExprType_t exprType() const OVERRIDE { return INT_EXPR; }
81      vmint evalIntToUnitFactor(vmfloat unitFactor);      vmint evalIntToUnitFactor(vmfloat unitFactor);
# Line 83  public: Line 83  public:
83  };  };
84  typedef Ref<IntExpr,Node> IntExprRef;  typedef Ref<IntExpr,Node> IntExprRef;
85    
86  class RealExpr : virtual public ScalarNumberExpr, virtual public VMRealExpr  {  class RealExpr : virtual public NumberExpr, virtual public VMRealExpr  {
87  public:  public:
88      ExprType_t exprType() const OVERRIDE { return REAL_EXPR; }      ExprType_t exprType() const OVERRIDE { return REAL_EXPR; }
89      vmfloat evalRealToUnitFactor(vmfloat unitFactor);      vmfloat evalRealToUnitFactor(vmfloat unitFactor);
# Line 209  protected: Line 209  protected:
209  };  };
210  typedef Ref<Variable,Node> VariableRef;  typedef Ref<Variable,Node> VariableRef;
211    
212  class ScalarNumberVariable : public Variable, virtual public ScalarNumberExpr {  class NumberVariable : public Variable, virtual public NumberExpr {
213      bool polyphonic;      bool polyphonic;
214      bool finalVal;      bool finalVal;
215  protected:  protected:
# Line 219  public: Line 219  public:
219      bool isFinal() const OVERRIDE { return finalVal; }      bool isFinal() const OVERRIDE { return finalVal; }
220      vmfloat unitFactor() const OVERRIDE;      vmfloat unitFactor() const OVERRIDE;
221  protected:  protected:
222      ScalarNumberVariable(const VariableDecl& decl);      NumberVariable(const VariableDecl& decl);
223  };  };
224  typedef Ref<ScalarNumberVariable,Node> ScalarNumberVariableRef;  typedef Ref<NumberVariable,Node> NumberVariableRef;
225    
226  class IntVariable : public ScalarNumberVariable, virtual public IntExpr {  class IntVariable : public NumberVariable, virtual public IntExpr {
227  public:  public:
228      IntVariable(const VariableDecl& decl);      IntVariable(const VariableDecl& decl);
229      void assign(Expression* expr) OVERRIDE;      void assign(Expression* expr) OVERRIDE;
# Line 232  public: Line 232  public:
232  };  };
233  typedef Ref<IntVariable,Node> IntVariableRef;  typedef Ref<IntVariable,Node> IntVariableRef;
234    
235  class RealVariable : public ScalarNumberVariable, virtual public RealExpr {  class RealVariable : public NumberVariable, virtual public RealExpr {
236  public:  public:
237      RealVariable(const VariableDecl& decl);      RealVariable(const VariableDecl& decl);
238      void assign(Expression* expr) OVERRIDE;      void assign(Expression* expr) OVERRIDE;
# Line 436  public: Line 436  public:
436  };  };
437  typedef Ref<BinaryOp,Node> BinaryOpRef;  typedef Ref<BinaryOp,Node> BinaryOpRef;
438    
439  class ScalarNumberBinaryOp : public BinaryOp, virtual public ScalarNumberExpr {  class NumberBinaryOp : public BinaryOp, virtual public NumberExpr {
440  public:  public:
441      ScalarNumberBinaryOp(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : BinaryOp(lhs, rhs) { }      NumberBinaryOp(NumberExprRef lhs, NumberExprRef rhs) : BinaryOp(lhs, rhs) { }
442      bool isFinal() const OVERRIDE;      bool isFinal() const OVERRIDE;
443  };  };
444  typedef Ref<ScalarNumberBinaryOp,Node> ScalarNumberBinaryOpRef;  typedef Ref<NumberBinaryOp,Node> NumberBinaryOpRef;
445    
446  class IntBinaryOp : public ScalarNumberBinaryOp, virtual public IntExpr {  class IntBinaryOp : public NumberBinaryOp, virtual public IntExpr {
447  public:  public:
448      IntBinaryOp(IntExprRef lhs, IntExprRef rhs) : ScalarNumberBinaryOp(lhs, rhs) { }      IntBinaryOp(IntExprRef lhs, IntExprRef rhs) : NumberBinaryOp(lhs, rhs) { }
449  };  };
450  typedef Ref<IntBinaryOp,Node> IntBinaryOpRef;  typedef Ref<IntBinaryOp,Node> IntBinaryOpRef;
451    
452  class VaritypeScalarBinaryOp : public ScalarNumberBinaryOp, virtual public IntExpr, virtual public RealExpr {  class VaritypeScalarBinaryOp : public NumberBinaryOp, virtual public IntExpr, virtual public RealExpr {
453  public:  public:
454      VaritypeScalarBinaryOp(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs) : ScalarNumberBinaryOp(lhs, rhs) { }      VaritypeScalarBinaryOp(NumberExprRef lhs, NumberExprRef rhs) : NumberBinaryOp(lhs, rhs) { }
455      ExprType_t exprType() const OVERRIDE;      ExprType_t exprType() const OVERRIDE;
456      String evalCastToStr() OVERRIDE;      String evalCastToStr() OVERRIDE;
457  };  };
# Line 459  typedef Ref<VaritypeScalarBinaryOp,Node> Line 459  typedef Ref<VaritypeScalarBinaryOp,Node>
459    
460  class Add FINAL : public VaritypeScalarBinaryOp {  class Add FINAL : public VaritypeScalarBinaryOp {
461  public:  public:
462      Add(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs);      Add(NumberExprRef lhs, NumberExprRef rhs);
463      vmint evalInt() OVERRIDE;      vmint evalInt() OVERRIDE;
464      vmfloat evalReal() OVERRIDE;      vmfloat evalReal() OVERRIDE;
465      vmfloat unitFactor() const OVERRIDE;      vmfloat unitFactor() const OVERRIDE;
# Line 469  typedef Ref<Add,Node> AddRef; Line 469  typedef Ref<Add,Node> AddRef;
469    
470  class Sub FINAL : public VaritypeScalarBinaryOp {  class Sub FINAL : public VaritypeScalarBinaryOp {
471  public:  public:
472      Sub(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs);      Sub(NumberExprRef lhs, NumberExprRef rhs);
473      vmint evalInt() OVERRIDE;      vmint evalInt() OVERRIDE;
474      vmfloat evalReal() OVERRIDE;      vmfloat evalReal() OVERRIDE;
475      vmfloat unitFactor() const OVERRIDE;      vmfloat unitFactor() const OVERRIDE;
# Line 479  typedef Ref<Sub,Node> SubRef; Line 479  typedef Ref<Sub,Node> SubRef;
479    
480  class Mul FINAL : public VaritypeScalarBinaryOp {  class Mul FINAL : public VaritypeScalarBinaryOp {
481  public:  public:
482      Mul(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs);      Mul(NumberExprRef lhs, NumberExprRef rhs);
483      vmint evalInt() OVERRIDE;      vmint evalInt() OVERRIDE;
484      vmfloat evalReal() OVERRIDE;      vmfloat evalReal() OVERRIDE;
485      vmfloat unitFactor() const OVERRIDE;      vmfloat unitFactor() const OVERRIDE;
# Line 489  typedef Ref<Mul,Node> MulRef; Line 489  typedef Ref<Mul,Node> MulRef;
489    
490  class Div FINAL : public VaritypeScalarBinaryOp {  class Div FINAL : public VaritypeScalarBinaryOp {
491  public:  public:
492      Div(ScalarNumberExprRef lhs, ScalarNumberExprRef rhs);      Div(NumberExprRef lhs, NumberExprRef rhs);
493      vmint evalInt() OVERRIDE;      vmint evalInt() OVERRIDE;
494      vmfloat evalReal() OVERRIDE;      vmfloat evalReal() OVERRIDE;
495      void dump(int level = 0) OVERRIDE;      void dump(int level = 0) OVERRIDE;
# Line 737  public: Line 737  public:
737  typedef Ref<SyncBlock,Node> SyncBlockRef;  typedef Ref<SyncBlock,Node> SyncBlockRef;
738    
739  class Neg FINAL : virtual public IntExpr, virtual public RealExpr {  class Neg FINAL : virtual public IntExpr, virtual public RealExpr {
740      ScalarNumberExprRef expr;      NumberExprRef expr;
741  public:  public:
742      Neg(ScalarNumberExprRef expr) : Unit(expr->unitType()), expr(expr) { }      Neg(NumberExprRef expr) : Unit(expr->unitType()), expr(expr) { }
743      ExprType_t exprType() const OVERRIDE { return expr->exprType(); }      ExprType_t exprType() const OVERRIDE { return expr->exprType(); }
744      vmint evalInt() OVERRIDE { return (expr) ? -(expr->asInt()->evalInt()) : 0; }      vmint evalInt() OVERRIDE { return (expr) ? -(expr->asInt()->evalInt()) : 0; }
745      vmfloat evalReal() OVERRIDE { return (expr) ? -(expr->asReal()->evalReal()) : vmfloat(0); }      vmfloat evalReal() OVERRIDE { return (expr) ? -(expr->asReal()->evalReal()) : vmfloat(0); }
# Line 851  public: Line 851  public:
851  typedef Ref<BitwiseNot,Node> BitwiseNotRef;  typedef Ref<BitwiseNot,Node> BitwiseNotRef;
852    
853  class Final FINAL : virtual public IntExpr, virtual public RealExpr {  class Final FINAL : virtual public IntExpr, virtual public RealExpr {
854      ScalarNumberExprRef expr;      NumberExprRef expr;
855  public:  public:
856      Final(ScalarNumberExprRef expr) : Unit(expr->unitType()), expr(expr) {}      Final(NumberExprRef expr) : Unit(expr->unitType()), expr(expr) {}
857      ExprType_t exprType() const OVERRIDE { return expr->exprType(); }      ExprType_t exprType() const OVERRIDE { return expr->exprType(); }
858      vmint evalInt() OVERRIDE { return expr->asInt()->evalInt(); }      vmint evalInt() OVERRIDE { return expr->asInt()->evalInt(); }
859      vmfloat evalReal() OVERRIDE { return expr->asReal()->evalReal(); }      vmfloat evalReal() OVERRIDE { return expr->asReal()->evalReal(); }

Legend:
Removed from v.3581  
changed lines
  Added in v.3582

  ViewVC Help
Powered by ViewVC