hp2FEM  0.1
include/acdp/acstack.h
00001 #ifndef ACSTACK_H
00002 #define ACSTACK_H
00003 
00004 #include "acdp.h"
00005 
00006 /*
00007  ** definicao de uma pilha generica - Salgado - 08/93
00008  */
00009 
00010 /*
00011  ** Os metodos da classe estao no arquivo acStack.CPP
00012  */
00013 
00014 class acNodeStack
00015 {
00016         friend class acStack;
00017 
00018 private:
00019         acNodeStack *next;    // pointer para o proximo no'
00020         void        *dados;   // pointer para os dados
00021 };
00022 
00023 class acStack
00024 {
00025 protected:
00026         acNodeStack *Head;             // inicio da pilha
00027         int         SizeDados;         // numero de bytes dos dados
00028 
00029 public:
00030 
00031         /********************************************
00032          * Construtor e destrutor da pilha generica *
00033          ********************************************/
00034 
00035         /*
00036          ** Construtor
00037          **
00038          ** Formas de uso:
00039          **
00040          **  acStack Stack;
00041          **      Cria sem nada.
00042          **
00043          **  acStack Stack(sizeof(tipo));
00044          **      Cria pilha e armazena tamanho dos dados.
00045          **
00046          */
00047         acStack()
00048         {
00049                 Head = 0;
00050                 SizeDados = 0;
00051         }
00052 
00053         acStack(int s)
00054         {
00055                 Head = 0;
00056                 SizeDados = s;
00057         }
00058 
00059         /*
00060          ** Destrutor
00061          **
00062          ** Deleta os elementos da pilha
00063          */
00064         ~acStack()
00065         {
00066                 Clear();
00067         }
00068 
00069         /*
00070          ** Funcao para inserir um no'.
00071          ** Deve-se passar um pointer para os dados a serem inseridos.
00072          ** Erros =  0 - nao alocou memoria
00073          **       = -1 - nao inicializada (sem tamanho dos dados)
00074          */
00075         int Push(void *a);
00076 
00077         /*
00078          ** Funcao para retirar um no'.
00079          ** Deve-se passar um pointer para uma area existente
00080          ** Erros = 0 - pilha vazia
00081          */
00082         int Pop(void *a);
00083 
00084         /*
00085          ** Faz uma copia do dado no topo da pilha
00086          ** Deve-se passar um pointer para uma area existente
00087          ** Erros = 0 - pilha vazia
00088          */
00089         int Copy(void *a);
00090 
00091         /*
00092          ** Funcao para limpar uma pilha
00093          */
00094         void Clear();
00095 
00096         /*
00097          ** Funcao para inicializar pilha sem parametros
00098          */
00099         void SetStackData(int s)
00100         {
00101                 Head = 0;
00102                 SizeDados = s;
00103         }
00104 
00105         /*
00106          ** funcao para verificar existencia de pilha
00107          */
00108         int Exist()
00109         {
00110                 return(Head != 0);
00111         }
00112 };
00113 
00114 #endif
 All Classes Files Functions Variables Typedefs Friends Defines