Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void al_inicio()
- {
- stdout.printf("\nComenzamos...\n");
- }
- void al_final()
- {
- stdout.printf("\nAcabamos...\n");
- }
- void al_final2()
- {
- stdout.printf("\nAcabamos de verdad...\n");
- }
- void on_overflow(string name, int element)
- {
- stdout.printf("Stack overflow %s index = %d\n", name, element);
- }
- void on_underflow(string name, int element)
- {
- stdout.printf("Stack underflow %s index = %d\n", name, element);
- }
- namespace Hada
- {
- class Stack
- {
- /**
- * Nombre de la pila.
- */
- private string name;
- /**
- * Lista de elementos.
- */
- private List<int> stack;
- /**
- * Tamaño de la pila.
- */
- private static const int SIZE = 10;
- /**
- * Valor devuelto cuando se intenta extaer
- * un elemento de la pila vacía.
- */
- private const int kERROR = -100;
- /**
- * Señales invocadas.
- */
- public signal void stack_underflow(string name, int element);
- public signal void stack_overflow(string name, int element);
- /**
- * Constructor de clase.
- * @paran string name Nombre de la pila.
- */
- public Stack(string name)
- {
- stack_overflow.connect(on_overflow);
- stack_underflow.connect(on_underflow);
- this.name = name;
- stack = new List<int>();
- }
- /**
- * Añade un elemento a la pila. Si la pila ya
- * está llena, lanza la señal stack_overflow();
- */
- public void push(int i)
- {
- if (stack.length() < SIZE)
- stack.append(i);
- else
- stack_overflow(name, SIZE + 1);
- }
- public int pop()
- {
- int i;
- if (stack.length() > 0)
- {
- i = stack.last().data;
- stack.remove_link(stack.last());
- }
- else
- {
- stack_underflow(name, 0);
- i = kERROR;
- }
- return i;
- }
- }
- class Application: GLib.Object
- {
- public signal void on_init();
- public signal void on_end();
- public Application(string name)
- {
- m_name = name;
- on_init.connect(al_inicio);
- on_end.connect(al_final);
- on_end.connect(al_final2);
- }
- public void run()
- {
- on_init();
- }
- public void quit()
- {
- on_end();
- }
- private string m_name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement