home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pcmagazi / 1992 / 04 / buffer.cpp < prev    next >
C/C++ Source or Header  |  1992-02-05  |  1KB  |  82 lines

  1. // buffer.cpp RHS 11/1/91
  2.  
  3. #include"buffer.h"
  4.  
  5. Buffer::Buffer(int size)
  6.     {
  7.     buffer = NULL;
  8.     attribute = 0;
  9.     recno = 0L;
  10.     Init(size);
  11.     }
  12.  
  13. char *Buffer::Init(int size)
  14.     {
  15.     if(buffer)
  16.         delete buffer;
  17.     buffer = new char[size+1];
  18.     return buffer;
  19.     }
  20.  
  21. Buffer::~Buffer(void)
  22.     {
  23.     if(buffer)
  24.         delete buffer;
  25.     }
  26.  
  27. BufMgr::BufMgr(void)
  28.     {
  29.     numbufs = 0;
  30.     Buffers = NULL;
  31.     }
  32.  
  33. int BufMgr::Init(int num, int size)
  34.     {
  35.     if(Buffers && numbufs)
  36.         delete [numbufs]Buffers;
  37.     numbufs = num;
  38.     Buffers = (Buffer **)new Buffer*[numbufs];
  39.     if(!Buffers)
  40.         return 0;
  41.  
  42.     bufsize = size;
  43.     int i;
  44.     for(i = 0; i < numbufs; i++)
  45.         Buffers[i] = new Buffer(bufsize);
  46.     return numbufs;
  47.     }
  48.  
  49. BufMgr::~BufMgr(void)
  50.     {
  51.     if(Buffers)
  52.         delete[numbufs]Buffers;
  53.     }
  54.  
  55.  
  56. #if defined(MAIN)
  57. #include<stdio.h>
  58. void main(void)
  59.     {
  60.     BufMgr b;
  61.  
  62.     b.Init(40,50);
  63.     int i;
  64.  
  65.     for(i = 0; i < 40; i++)
  66.         {
  67.         sprintf(b[i]->buffer,"This is buffer number %02d!",i);
  68.         b[i]->attribute = i;
  69.         b[i]->recno = i*1L;
  70.         }
  71.  
  72.     for(i = 0; i < 40; i++)
  73.         printf("%s  @ %p Attribute=%02d  Recno=%02ld\n",
  74.             &b[i]->buffer,
  75.             b[i]->buffer,
  76.             b[i]->attribute,
  77.             b[i]->recno);
  78.     }
  79. #endif
  80.  
  81.  
  82.