Nodo clase. Más...
#include <classNode.h>
Métodos públicos | |
| classNode (classNode *node) | |
| classNode (runNode *id, runNode *body, runNode *extends=NULL) | |
| void | run () |
| runNode * | newcall (runNode *params) |
| sTable * | insideTable () const |
| classNode * | getExtendClass () |
| runNode * | getID () |
| string | name () |
| runNode * | getMethod (runNode *key) |
| refNode * | getMethodRef (runNode *key) |
| void | setMethod (runNode *key, runNode *func) |
| runNode * | getFromStatic (runNode *key) |
| void | setFromStatic (runNode *key, runNode *val) |
| runNode * | toObject () |
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 () |
Otros miembros heredados | |
Métodos públicos estáticos heredados desde runNode | |
| static bool | compare (runNode *node1, runNode *node2, int op=0) |
Nodo clase.
Un nodo clase representa la definición de una clase. Una clase es una estructura funcional utilizada en la programación orientada a objetos.
Un nodo clase sirve como interfaz para definir y manipular las clases en ejecución.
Todo nodo clase tiene un contexto de tablas de símbolos donde se referencia a los atributos y métodos de la misma.
Para inicializar un nodo clase se precisa del identificador de la misma y un cuerpo.
El cuerpo de la clase consiste en una serie de sentencias, que por limitaciones de gramática sólo pueden ser declaraciones de funciones o variables.
La ejecución de un nodo clase se corresponde con la declaración de la misma. Primero crea una referencia a si misma en la tabla de clases activa. Luego crea un nuevo contexto de tablas de símbolos, que usará de forma interna. Para finalizar cambia el contexto activo al interno y se lleva a cabo la ejecución del cuerpo.
Los nodos funciones declarados en el cuerpo de la clase serán referenciados desde la tabla de funciones de la clase y son considerados los métodos de la misma. De igual forma las variables son referenciadas mediante la tabla de variables y son consideradas como los atributos.
Una determinada clase puede extender a otra, lo que significa que heredará sus métodos y atributos.
Los nodos clase presentan un mecanismo para crear nuevas instancias de los mismos denominadas objetos. Este mecanismo es utilizado por nodos como el nodo "nueva instancia" (
Las clases disponen de un contexto interno con tablas para funciones y variables que será aplicables a los objetos como atributos y métodos. Además disponen de un contexto estático que guarda los métodos y atributos aplicables a la propia clase.
| classNode::classNode | ( | classNode * | node | ) |
Constructor copia. Crea un nodo clase a partir de otro. Para ello referencia al cuerpo y al identificador del nodo clase dado, y copia la tabla de símbolos interna.
Constructor que inicializa un nodo clase a partir de un nodo identificador y un nodo cuerpo.
| id | Identificador de la clase. |
| body | Cuerpo de la clase. |
| extends | Clase de la que extiende si es el caso. |
|
inline |
Obtiene la clase padre con la que fue inicializada.
Obtiene un método estático de la clase a partir de una clave.
| key | Nombre del método. |
|
inline |
Obtiene el identificador con el que fue inicializada.
A partir de una clave obtiene el método cuyo identificador se corresponde con la misma. Si no existe se devuelve NULL.
| key | Nombre del método. |
A partir de una clave obtiene la referencia al método cuyo identificador se corresponde con la misma. Si no existe se devuelve NULL.
| key | Nombre del método. |
|
inline |
Devuelve el contexto interno del nodo clase.
|
inline |
Obtiene el identificador de la clase como una cadena de caracteres.
Crea y devuelve una instancia de la clase. Para ello copia la tabla de variables del contexto de la clase en un nodo objeto, y busca una función en la tabla de funciones correspondiente al nombre de la clase. Esta función, considerada constructor, será ejecutada con los parámetros indicados.
|
virtual |
Lleva a cabo la ejecución del nodo clase correspondiente a la declaración de la misma. Para ello crea una referencia en la tabla de clases activa a si misma, genera el contexto interno, y luego, tras cambiar el contexto en uso, ejecuta el cuerpo.
Implementa runNode.
Asocia una función como método estático de la clase con el identificador dado.
| key | Clave que se utilizará como identificador. |
| func | Función que se asociará como método estático. |
Asocia una función como método de la clase con el identificador dado.
| key | Clave que se utilizará como identificador. |
| func | Función que se asociará como método. |
| runNode * classNode::toObject | ( | ) |
Devuelve un objeto con una tabla de símbolos correspondiente a la tabla de variables de la clase. Además asocia la clase al objeto.