Nodo de sentencia de iteración ágil. Más...

#include <loopStmtNode.h>

Diagrama de herencias de iloopNode
runNode

Métodos públicos

 iloopNode (runNode *iter, runNode *stmt, runNode *id=NULL, runNode *second_id=NULL, runNode *inc=NULL)
 
void run ()
 
- Métodos públicos heredados desde runNode
 runNode (string str)
 
 runNode ()
 
virtual void addRef ()
 
virtual void rmRef ()
 
virtual bool is_print () const
 
virtual bool is_runlist () const
 
virtual bool is_string () const
 
string getPtrString ()
 

Métodos públicos estáticos

static runNodeget_ielement ()
 
static runNodeget_ielement_n (int i)
 
static runNodeset_ielement (runNode *node)
 
static runNodepush_ielement (runNode *node)
 
static runNodepop_ielement ()
 
static void push_level ()
 
static void pop_level ()
 
- Métodos públicos estáticos heredados desde runNode
static bool compare (runNode *node1, runNode *node2, int op=0)
 

Descripción detallada

Nodo de sentencia de iteración ágil.

Esta sentencia permite iterar un conjunto de elementos de forma simple y rápida. Para ello solo precisa de un elemento a iterar y un bloque de sentencias.

Internamente el valor de cada iteración es introducido en una estructura de datos y podrá ser consultado desde el bloque de sentencias mediante el uso del nodo

Ver también
getiNode . Esta estructura se organiza por niveles, cada uno de los cuales contendrá una pila de valores. Con cada sentencia iterativa ágil anidada se añadirá un elemento a la pila del nivel actual, y con cada llamada a función se incrementará el nivel en uso.

El conjunto sobre el que se itera dependerá del tipo de dato obtenido al evaluar la expresión conjunto:

  • Booleano: Se itera hasta que se evalúa como falso. En cada iteración se asigna el entero correspondiente al número de la misma.
  • Numérico: Si es positivo se itera desde cero hasta el valor sin incluirlo. Si es negativo no se itera.
  • Cadena de caracteres: Se itera por cada carácter en la cadena.
  • Array: Se itera por cada elemento en el array.

Se podrá indicar un identificador para referenciar al valor y la clave generada en cada iteración. Además se podrá dar una expresión de incremento que será ejecutada en cada iteración.

Documentación del constructor y destructor

iloopNode::iloopNode ( runNode iter,
runNode stmt,
runNode id = NULL,
runNode second_id = NULL,
runNode inc = NULL 
)

Constructor de la clase.

Parámetros
iterNodo que hace de conjunto sobre el que iterar.
stmtNodo que representa el bloque de sentencias que se ejecutarán en cada iteración.
idNodo identificador para el valor.
second_idNodo identificador para la clave.
incNodo que representa la expresión de incremento.

Documentación de las funciones miembro

runNode * iloopNode::get_ielement ( )
static

Obtiene valor encima de la pila iloop

Devuelve
Valor cima de la pila
runNode * iloopNode::get_ielement_n ( int  i)
static

Obtiene valor indicado de la pila iloop

Parámetros
iProfundidad de la pila
Devuelve
Valor de la pila determinado
runNode * iloopNode::pop_ielement ( )
static

Saca un elemento de la pila

Devuelve
Elemento sacado de la pila.
void iloopNode::pop_level ( )
static

Elimina un nivel de pilas iloop

runNode * iloopNode::push_ielement ( runNode node)
static

Introduce un nuevo valor en la cima de la pila

Parámetros
nodeNodo ha introducir en la pila
Devuelve
Anterior valor en la cima
void iloopNode::push_level ( )
static

Crea un nuevo nivel de pilas iloop

void iloopNode::run ( )
virtual

Método que ejecuta el nodo. Ejecuta el bloque de sentencias para cada elemento en el conjunto. Introduciendo el elemento en el nivel actual de la pila iloop.

Implementa runNode.

runNode * iloopNode::set_ielement ( runNode node)
static

Cambia el valor en la cima de la pila

Parámetros
nodeNuevo valor de la cima de la pila
Devuelve
Valor anterior

La documentación para esta clase fue generada a partir de los siguientes ficheros:
  • trunk/src/run/stmts/loopStmtNode.h
  • trunk/src/run/stmts/loopStmtNode.cpp