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