• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

newmonitor/base/Buffer.cxx (r3879/r3811)

Go to the documentation of this file.
00001 #include "base/Buffer.h"
00002 
00003 #include <stdlib.h>
00004 #include <string.h>
00005 
00006 void base::Buffer::reset()
00007 {
00008    if (fRec!=0) {
00009       if (--fRec->refcnt == 0)
00010          free(fRec);
00011       fRec = 0;
00012    }
00013 }
00014 
00015 void base::Buffer::makecopyof(void* buf, unsigned datalen)
00016 {
00017    reset();
00018 
00019    if ((buf==0) || (datalen==0)) return;
00020 
00021    fRec = (RawDataRec*) malloc(sizeof(RawDataRec) + datalen);
00022 
00023    fRec->reset();
00024 
00025    fRec->refcnt = 1;
00026 
00027    fRec->buf = (char*) fRec + sizeof(RawDataRec);
00028    memcpy(fRec->buf, buf, datalen);
00029 
00030    fRec->datalen = datalen;
00031 }
00032 
00033 void base::Buffer::makereferenceof(void* buf, unsigned datalen)
00034 {
00035    reset();
00036 
00037    if ((buf==0) || (datalen==0)) return;
00038 
00039    fRec = (RawDataRec*) malloc(sizeof(RawDataRec));
00040 
00041    fRec->reset();
00042 
00043    fRec->refcnt = 1;
00044 
00045    fRec->buf = buf;
00046 
00047    fRec->datalen = datalen;
00048 }

Generated on Thu Dec 13 2012 04:52:22 for ROCsoft by  doxygen 1.7.1