xc
OpUnario.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // xc utils library; general purpose classes and functions.
4 //
5 // Copyright (C) Luis C. PĂ©rez Tato
6 //
7 // XC utils is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // This software is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program.
19 // If not, see <http://www.gnu.org/licenses/>.
20 //----------------------------------------------------------------------------
21 //OpUnario.h
22 
23 #ifndef OPUNARIO_H
24 #define OPUNARIO_H
25 
26 #include "Operador.h"
27 #include "operator_names.h"
28 
29 class OpUnario: public Operador
30  {
31  public:
32  OpUnario(void) : Operador() {}
33  OpUnario(const int &p): Operador(p) {}
34  OpUnario(const OpUnario &otro): Operador(otro) {}
35  OpUnario &operator=(const OpUnario &otro)
36  {
37  Operador::operator =(otro);
38  return *this;
39  }
40  inline virtual Clase GetClase(void) const
41  { return op_unitario; }
42  inline virtual Posicion GetPosicion(void) const
43  { return prefija; }
44  virtual int GetPrioridad(void) const
45  { return 6; }
46  Rama *operator()(Rama *r) const;
47  };
48 
49 class OpNeg : public OpUnario
50  {
51 
52  public:
53  OpNeg(void) : OpUnario() {}
54  inline virtual const std::string &getName(void) const
55  { return nmbOpNeg; }
56  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
57  virtual Rama Diferencia(const Variable &,const Rama &r) const;
58  };
59 
60 class OpInv : public OpUnario
61  {
62 
63  public:
64  OpInv(void) : OpUnario() {}
65  inline virtual const std::string &getName(void) const
66  { return nmbOpInv; }
67  virtual const Operando &Opera(const Operando *,const Operando *v2=NULL) const;
68  virtual Rama Diferencia(const Variable &,const Rama &r) const;
69  };
70 
71 class OpSign : public OpUnario
72  {
73 
74  public:
75  OpSign(void) : OpUnario() {}
76  inline virtual const std::string &getName(void) const
77  { return nmbOpSign; }
78  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
79  virtual Rama Diferencia(const Variable &,const Rama &) const;
80  };
81 
82 class OpAbs : public OpUnario
83  {
84 
85  public:
86  OpAbs(void) : OpUnario() {}
87  inline virtual const std::string &getName(void) const
88  { return nmbOpAbs; }
89  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
90  virtual Rama Diferencia(const Variable &,const Rama &) const;
91  };
92 
93 class OpSqr : public OpUnario
94  {
95 
96  public:
97  friend class Lexico;
98  OpSqr(void) : OpUnario() {}
99  inline virtual const std::string &getName(void) const
100  { return nmbOpSqr; }
101  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
102  virtual Rama Diferencia(const Variable &,const Rama &r) const;
103  };
104 
105 class OpSqrt : public OpUnario
106  {
107 
108  public:
109  OpSqrt(void) : OpUnario() {}
110  inline virtual const std::string &getName(void) const
111  { return nmbOpSqrt; }
112  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
113  virtual Rama Diferencia(const Variable &,const Rama &r) const;
114  };
115 
116 class OpExp : public OpUnario
117  {
118 
119  public:
120  OpExp(void) : OpUnario() {}
121  inline virtual const std::string &getName(void) const
122  { return nmbOpExp; }
123  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
124  virtual Rama Diferencia(const Variable &,const Rama &r) const;
125  };
126 
128 class OpLn : public OpUnario
129  {
130 
131  public:
132  OpLn(void) : OpUnario() {}
133  inline virtual const std::string &getName(void) const
134  { return nmbOpLn; }
135  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
136  virtual Rama Diferencia(const Variable &,const Rama &r) const;
137  };
138 
139 class OpLg : public OpUnario
140  {
141 
142  public:
143  OpLg(void) : OpUnario() {}
144  inline virtual const std::string &getName(void) const
145  { return nmbOpLg; }
146  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
147  virtual Rama Diferencia(const Variable &,const Rama &r) const;
148  };
149 
150 class OpRound : public OpUnario
151  {
152 
153  public:
154  OpRound(void) : OpUnario() {}
155  inline virtual const std::string &getName(void) const
156  { return nmbOpRound; }
157  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
158  };
159 
160 class OpTrunc : public OpUnario
161  {
162 
163  public:
164  OpTrunc(void) : OpUnario() {}
165  inline virtual const std::string &getName(void) const
166  { return nmbOpTrunc; }
167  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
168  };
169 
170 class OpToNum : public OpUnario
171  {
172 
173  public:
174  OpToNum(void) : OpUnario() {}
175  inline virtual const std::string &getName(void) const
176  { return nmbOpToNum; }
177  virtual const Operando &Opera(const Operando *,const Operando *v2= NULL) const;
178  };
179 #endif
180 
181 
182 
183 
184 
185 
186 
187 
188 
189 
Definition: OpUnario.h:105
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:76
Clase base de los operadores unarios y binarios.
Definition: Operador.h:30
Definition: OpUnario.h:29
Definition: OpUnario.h:60
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:54
Definition: Variable.h:31
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:121
Definition: OpUnario.h:82
Definition: OpUnario.h:139
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:87
Logaritmo neperiano.
Definition: OpUnario.h:128
Operando.
Definition: Operando.h:42
Definition: OpUnario.h:93
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:110
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:133
Definition: Rama.h:33
Definition: OpUnario.h:49
Definition: OpUnario.h:71
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:65
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:99
Definition: OpUnario.h:150
Definition: OpUnario.h:170
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:155
Definition: Lexico.h:42
Definition: OpUnario.h:116
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:175
Definition: OpUnario.h:160
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:165
virtual const std::string & getName(void) const
Return the operand name.
Definition: OpUnario.h:144