Advertisement
Guest User

Untitled

a guest
Feb 24th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 2.07 KB | None | 0 0
  1. void al_inicio()
  2. {
  3. stdout.printf("\nComenzamos...\n");
  4. }
  5.  
  6. void al_final()
  7. {
  8. stdout.printf("\nAcabamos...\n");
  9. }
  10.  
  11. void al_final2()
  12. {
  13. stdout.printf("\nAcabamos de verdad...\n");
  14. }
  15.  
  16. void on_overflow(string name, int element)
  17. {
  18.     stdout.printf("Stack overflow %s index = %d\n", name, element);
  19. }
  20.  
  21. void on_underflow(string name, int element)
  22. {
  23.     stdout.printf("Stack underflow %s index = %d\n", name, element);
  24. }
  25.  
  26. namespace Hada
  27. {
  28.     class Stack
  29.     {
  30.         /**
  31.         * Nombre de la pila.
  32.         */
  33.         private string name;
  34.         /**
  35.         * Lista de elementos.
  36.         */
  37.         private List<int> stack;
  38.         /**
  39.         * Tamaño de la pila.
  40.         */
  41.         private static const int SIZE = 10;
  42.         /**
  43.         * Valor devuelto cuando se intenta extaer
  44.         * un elemento de la pila vacía.
  45.         */
  46.         private const int kERROR = -100;
  47.         /**
  48.         * Señales invocadas.
  49.         */
  50.         public signal void stack_underflow(string name, int element);
  51.         public signal void stack_overflow(string name, int element);
  52.  
  53.         /**
  54.         * Constructor de clase.
  55.         * @paran string name Nombre de la pila.
  56.         */
  57.         public Stack(string name)
  58.         {
  59.             stack_overflow.connect(on_overflow);
  60.             stack_underflow.connect(on_underflow);
  61.  
  62.             this.name = name;
  63.             stack = new List<int>();
  64.         }
  65.  
  66.         /**
  67.         * Añade un elemento a la pila. Si la pila ya
  68.         * está llena, lanza la señal stack_overflow();
  69.         */
  70.         public void push(int i)
  71.         {
  72.             if (stack.length() < SIZE)
  73.                 stack.append(i);
  74.             else
  75.                 stack_overflow(name, SIZE + 1);
  76.         }
  77.  
  78.         public int pop()
  79.         {
  80.             int i;
  81.             if (stack.length() > 0)
  82.             {
  83.                 i = stack.last().data;
  84.                 stack.remove_link(stack.last());
  85.             }
  86.             else
  87.             {
  88.                 stack_underflow(name, 0);
  89.                 i = kERROR;
  90.             }
  91.             return i;
  92.         }
  93.     }
  94.  
  95.     class Application: GLib.Object
  96.     {
  97.         public signal void on_init();
  98.         public signal void on_end();
  99.  
  100.         public Application(string name)
  101.         {
  102.             m_name = name;
  103.  
  104.             on_init.connect(al_inicio);
  105.             on_end.connect(al_final);
  106.             on_end.connect(al_final2);
  107.         }
  108.  
  109.         public void run()
  110.         {
  111.             on_init();
  112.         }
  113.  
  114.         public void quit()
  115.         {
  116.             on_end();
  117.         }
  118.  
  119.         private string m_name;
  120.         }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement