| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DayaBay::RawBuffer Class Reference

#include <RawBuffer.h>

Inheritance diagram for DayaBay::RawBuffer:

[legend]
List of all members.

Public Member Functions

 RawBuffer ()
 RawBuffer (unsigned int *buffer, bool isOwner=false, unsigned int bufferSize=0)
 RawBuffer (DayaBay::RawBuffer &buffer, bool adopt=false)
virtual ~RawBuffer ()
unsigned int * buffer () const
unsigned int bufferSize () const
bool isOwner () const
void setOwner (bool isOwner=true)
virtual bool isValid () const
unsigned int * getPointer (const unsigned int &line) const
unsigned int getValue (const unsigned int &line, const unsigned int &firstBit=0, const unsigned int &bitLength=32) const
char * getString (const unsigned int &line, const unsigned int &byteOffset=0) const

Private Attributes

unsigned int * m_buffer
unsigned int m_bufferSize
bool m_isOwner

Detailed Description

Definition at line 12 of file RawBuffer.h.


Constructor & Destructor Documentation

DayaBay::RawBuffer::RawBuffer (  ) 

Definition at line 5 of file RawBuffer.cc.

00006   : m_buffer(0),
00007     m_bufferSize(0),
00008     m_isOwner(false)
00009 {
00010   // Default constructor
00011 }

DayaBay::RawBuffer::RawBuffer ( unsigned int *  buffer,
bool  isOwner = false,
unsigned int  bufferSize = 0 
)

Definition at line 13 of file RawBuffer.cc.

00016   : m_buffer(buffer),
00017     m_bufferSize(bufferSize),
00018     m_isOwner(isOwner)
00019 {
00020   // Standard constructor
00021 }

DayaBay::RawBuffer::RawBuffer ( DayaBay::RawBuffer buffer,
bool  adopt = false 
)

Definition at line 23 of file RawBuffer.cc.

00025   : m_buffer(0),
00026     m_bufferSize(0),
00027     m_isOwner(false)
00028 {
00029   // Construct from another RawBuffer
00030   // If adopt==true, then take over ownership of the 
00031   // memory buffer (if the input buffer is the current owner)
00032   m_buffer = buffer.buffer();
00033   m_isOwner = false;
00034   m_bufferSize = buffer.bufferSize();
00035   if(adopt && buffer.isOwner()){
00036     // Make new RawBuffer the owner of this memory
00037     m_isOwner = true;
00038     buffer.setOwner(false);
00039   }
00040 }

DayaBay::RawBuffer::~RawBuffer (  )  [virtual]

Definition at line 43 of file RawBuffer.cc.

00044 {
00045   // Destructor
00046   if(m_isOwner && m_buffer) free(m_buffer);
00047   m_buffer=0;
00048   m_bufferSize=0;
00049   m_isOwner=false;
00050 }


Member Function Documentation

unsigned int * DayaBay::RawBuffer::buffer (  )  const

Definition at line 52 of file RawBuffer.cc.

00053 {
00054   // Return the pointer to the internal memory buffer
00055   return m_buffer;
00056 }

unsigned int DayaBay::RawBuffer::bufferSize (  )  const

Definition at line 58 of file RawBuffer.cc.

00059 {
00060   // Return the allocated size of the internal memory buffer, if known
00061   return m_bufferSize;
00062 }

bool DayaBay::RawBuffer::isOwner (  )  const

Definition at line 64 of file RawBuffer.cc.

00065 {
00066   // Does this RawBuffer own this memory buffer?
00067   return m_isOwner;
00068 }

void DayaBay::RawBuffer::setOwner ( bool  isOwner = true  ) 

Definition at line 70 of file RawBuffer.cc.

00070                                                     {
00071   m_isOwner = isOwner;
00072 }

bool DayaBay::RawBuffer::isValid (  )  const [virtual]

Definition at line 74 of file RawBuffer.cc.

00075 {
00076   // Does this RawBuffer contain data?
00077   return (m_buffer != 0);
00078 }

unsigned int * DayaBay::RawBuffer::getPointer ( const unsigned int &  line  )  const

Definition at line 80 of file RawBuffer.cc.

00081 {
00082   // Return a pointer to a specific line in the data block
00083   if(m_bufferSize>0 && line>=m_bufferSize) return 0;
00084   return (m_buffer + line);
00085 }

unsigned int DayaBay::RawBuffer::getValue ( const unsigned int &  line,
const unsigned int &  firstBit = 0,
const unsigned int &  bitLength = 32 
) const

Definition at line 87 of file RawBuffer.cc.

00090 {
00091   // Read a value from the memory buffer
00092   // line = line number in the memory block (line = integer length)
00093   // firstBit = first bit to read (max=31)
00094   // bitLength =  length of bits to read (max=32)
00095   if(bitLength>32 || firstBit>31) return 0;
00096   unsigned int* pointer = this->getPointer(line);
00097   if(!pointer) return 0;
00098   // Catch request for full line
00099   if(firstBit==0 && bitLength==32) return *pointer;
00100   // Prepare bit mask
00101   unsigned int oneBit = 0x1;
00102   unsigned int mask = 0;
00103   for(unsigned int shift=0; shift<bitLength; shift++) 
00104     mask += (oneBit << shift);
00105   // Shift value, mask, and return
00106   return (*pointer >> firstBit) & mask;
00107 }

char * DayaBay::RawBuffer::getString ( const unsigned int &  line,
const unsigned int &  byteOffset = 0 
) const

Definition at line 109 of file RawBuffer.cc.

00111 {
00112   // Return a char pointer to a specific byte in the data block
00113   // line = line number in the memory block (line = integer length)
00114   // byteOffset = offset if string starts at an uneven byte position (max=3)
00115   if(byteOffset>3) return 0;
00116   unsigned int* pointer = this->getPointer(line);
00117   if(!pointer) return 0;
00118   return (char*)(pointer + byteOffset);
00119 }


Member Data Documentation

unsigned int* DayaBay::RawBuffer::m_buffer [private]

Definition at line 32 of file RawBuffer.h.

unsigned int DayaBay::RawBuffer::m_bufferSize [private]

Definition at line 33 of file RawBuffer.h.

bool DayaBay::RawBuffer::m_isOwner [private]

Definition at line 34 of file RawBuffer.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:07:27 2011 for RawData by doxygen 1.4.7