// ННГУ, ВМК, Курс "Методы программирования-2", С++, ООП
//
// dataroot.h - Copyright (c) Гергель В.П. 28.07.2000 (06.08)
//
// Динамические структуры данных - базовый (абстрактный) класс - версия 3.2
//   память выделяется динамически или задается методом SetMem

#ifndef __DATAROOT_H
#define __DATAROOT_H

#include "datacom.h"

#define DefMemSize   25  // размер памяти по умолчанию

#define DataEmpty  -101  // СД пуста
#define DataFull   -102  // СД переполнена
#define DataNoMem  -103  // нет памяти

typedef int    TElem;    // тип элемента СД
typedef TElem *PTElem;
typedef int    TData;    // тип значений в СД

enum TMemType { MEM_HOLDER, MEM_RENTER };

class TDataRoot : public TDataCom {
  protected:  // поля
    PTElem pMem;      // память для СД
    int MemSize;      // размер памяти для СД
    int DataCount;    // к-во элементов в СД
    TMemType MemType; // режим управления памятью
  protected:  // методы
    void SetMem ( void *pMem, int Size );       // задание памяти
  public:
   ~TDataRoot ();
    TDataRoot ( int Size=DefMemSize );
    virtual int IsEmpty ( void ) const;         // контроль пустоты СД
    virtual int IsFull  ( void ) const;         // контроль переполнения СД
    virtual void  Put   ( const TData &Val )=0; // добавить значение
    virtual TData Get   ( void )            =0; // извлечь значение
    // служебные методы
    virtual void Print()   = 0;                 // печать значений
    virtual int  IsValid() = 0;                 // тестирование структуры
    // дружественные классы
    friend class TMultiStack;
    friend class TSuperMultiStack;
    friend class TComplexMultiStack;
};
#endif
Хостинг от uCoz