arithOpNode.h
Ir a la documentación de este archivo.
1 //arithOpNode.h
2 //-------------------------------------------------------------------------------------------
3 /*
4  * Fco. Javier Bohórquez Ogalla
5  * 75766599-E
6  * Puerto Real (Cádiz)
7  * powersgame@gmail.com
8  */
9 //-------------------------------------------------------------------------------------------
10 
11 //-------------------------------------------------------------------------------------------
12 /*
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26  * MA 02110-1301, USA.
27  */
28 //-------------------------------------------------------------------------------------------
29 
30 //-------------------------------------------------------------------------------------------
39 //-------------------------------------------------------------------------------------------------------
40 
41 //-------------------------------------------------------------------------------------------------------
42 #ifndef _RUN_OPERATORS_ARITHOPNODE_
43 #define _RUN_OPERATORS_ARITHOPNODE_
44 
45 #include "../tree/typeNode.h"
46 //------------------------------------------------------------------------------------------------------
47 
48 //-------------------------------------------------------------------------------------------------------
60 class addNode :
61  public arithNode {
62  public:
68  addNode (runNode* node1, runNode* node2);
74  void run ();
81  static num do_add (runNode *op1, runNode *op2);
82  private:
83  runNode *node1_, *node2_;
84 };
85 //----------------------------------------------------------------------
86 
87 //----------------------------------------------------------------------
99 class subNode :
100  public arithNode {
101  public:
107  subNode (runNode* node1, runNode*node2);
114  void run ();
121  static num do_sub (runNode *op1, runNode *op2);
122 
123  private:
124  runNode *node1_, *node2_;
125 };
126 //----------------------------------------------------------------------
127 
128 //----------------------------------------------------------------------
140 class prodNode :
141  public arithNode {
142  public:
149  prodNode (runNode* node1, runNode* node2);
155  void run ();
156 
163  static num do_prod (runNode *op1, runNode *op2);
164  private:
165  runNode *node1_, *node2_;
166 };
167 //----------------------------------------------------------------------
168 
169 //----------------------------------------------------------------------
181 class divNode :
182  public arithNode {
183  public:
189  divNode (runNode* node1, runNode* node2);
195  void run ();
202  static num do_div (runNode *op1, runNode *op2);
203  private:
204  runNode *node1_, *node2_;
205 };
206 //----------------------------------------------------------------------
207 
208 //----------------------------------------------------------------------
220 class powNode :
221  public arithNode {
222  public:
228  powNode (runNode* node1, runNode* node2);
234  void run ();
241  static num do_pow (runNode *op1, runNode *op2);
242  private:
243  runNode *node1_, *node2_;
244 };
245 //----------------------------------------------------------------------
246 
247 //----------------------------------------------------------------------
259 class sqrtNode :
260  public arithNode {
261  public:
266  sqrtNode (runNode* node);
272  void run ();
276  static num do_sqrt (runNode *op);
277  private:
278  runNode *node_;
279 };
280 //----------------------------------------------------------------------
281 
282 //----------------------------------------------------------------------
294 class modNode :
295  public arithNode {
296  public:
303  modNode (runNode* node1, runNode* node2);
309  void run ();
316  static num do_mod (runNode *op1, runNode *op2);
317  private:
318  runNode *node1_, *node2_;
319 };
320 //----------------------------------------------------------------------
321 
322 //----------------------------------------------------------------------
334 class incasigNode :
335  public arithNode {
336  public:
341  incasigNode (runNode* node);
347  void run ();
348  private:
349  runNode *node_;
350 };
351 //----------------------------------------------------------------------
352 
353 //----------------------------------------------------------------------
364 class asigincNode :
365  public arithNode {
366  public:
371  asigincNode (runNode* node);
377  void run ();
378  private:
379  runNode *node_;
380 };
381 //----------------------------------------------------------------------
382 
383 //----------------------------------------------------------------------
395 class decasigNode :
396  public arithNode {
397  public:
402  decasigNode (runNode* node);
408  void run ();
409  private:
410  runNode *node_;
411 };
412 //----------------------------------------------------------------------
413 
414 //----------------------------------------------------------------------
425 class asigdecNode :
426  public arithNode {
427  public:
432  asigdecNode (runNode* node);
438  void run ();
439  private:
440  runNode *node_;
441 };
442 //----------------------------------------------------------------------
443 
444 //----------------------------------------------------------------------
445 
463 class sizeNode :
464  public arithNode {
465  public:
470  sizeNode (runNode* node);
475  void run ();
481  static num do_size (runNode* node);
482  private:
483  runNode *node_;
484 };
485 //-------------------------------------------------------------------------------------------------------
486 
487 //-------------------------------------------------------------------------------------------------------
488 #endif
489 //-------------------------------------------------------------------------------------------------------
490 //Fco. Javier Bohórquez Ogalla
Nodo operador diferencia.
Definition: arithOpNode.h:99
void run()
Definition: arithOpNode.cpp:222
static num do_pow(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:186
void run()
Definition: arithOpNode.cpp:104
asigincNode(runNode *node)
Definition: arithOpNode.cpp:284
prodNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:100
static num do_sub(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:93
void run()
Definition: arithOpNode.cpp:254
sqrtNode(runNode *node)
Definition: arithOpNode.cpp:193
Nodo operador decremento y asignación.
Definition: arithOpNode.h:395
asigdecNode(runNode *node)
Definition: arithOpNode.cpp:356
sizeNode(runNode *node)
Definition: arithOpNode.cpp:393
static num do_div(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:153
Nodos aritméticos.
Definition: expNode.h:351
static num do_prod(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:125
Nodo operador incremento y asignación.
Definition: arithOpNode.h:334
Nodo operador de tamaño.
Definition: arithOpNode.h:463
static num do_add(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:62
void run()
Definition: arithOpNode.cpp:136
incasigNode(runNode *node)
Definition: arithOpNode.cpp:251
void run()
Definition: arithOpNode.cpp:42
divNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:132
void run()
Definition: arithOpNode.cpp:73
void run()
Definition: arithOpNode.cpp:359
Nodo ejecutable.
Definition: runTree.h:123
static num do_sqrt(runNode *op)
Definition: arithOpNode.cpp:211
subNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:69
Nodo operador módulo.
Definition: arithOpNode.h:294
powNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:162
Nodo operador potencia.
Definition: arithOpNode.h:220
decasigNode(runNode *node)
Definition: arithOpNode.cpp:319
Nodo operador suma.
Definition: arithOpNode.h:60
static num do_size(runNode *node)
Definition: arithOpNode.cpp:411
void run()
Definition: arithOpNode.cpp:196
void run()
Definition: arithOpNode.cpp:287
void run()
Definition: arithOpNode.cpp:166
addNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:38
Nodo operador asignación y decremento.
Definition: arithOpNode.h:425
Nodo operador división.
Definition: arithOpNode.h:181
Nodo operador producto.
Definition: arithOpNode.h:140
void run()
Definition: arithOpNode.cpp:322
static num do_mod(runNode *op1, runNode *op2)
Definition: arithOpNode.cpp:242
Nodo operador raíz cuadrada.
Definition: arithOpNode.h:259
Nodo operador asignación e incremento.
Definition: arithOpNode.h:364
void run()
Definition: arithOpNode.cpp:396
modNode(runNode *node1, runNode *node2)
Definition: arithOpNode.cpp:218