NSCL DDAS 12.2-009
Support for XIA DDAS at FRIB
ReferenceCountedBuffer.h
Go to the documentation of this file.
1/*
2 This software is Copyright by the Board of Trustees of Michigan
3 State University (c) Copyright 2017.
4
5 You may use this software under the terms of the GNU public license
6 (GPL). The terms of this license are described at:
7
8 http://www.gnu.org/licenses/gpl.txt
9
10 Authors:
11 Ron Fox
12 Giordano Cerriza
13 NSCL
14 Michigan State University
15 East Lansing, MI 48824-1321
16*/
17
23#ifndef REFERENCECOUNTEDBUFFER_H
24#define REFERENCECOUNTEDBUFFER_H
25
26#include <cstddef>
27#include <cstdint>
28
30namespace DDASReadout {
31
53 size_t s_size;
54 size_t s_references;
55 void *s_pData;
56
63 ReferenceCountedBuffer(size_t initialSize = 0);
66
67 // Reference count management:
68
70 void reference();
72 void dereference();
79 bool isReferenced();
80
81 // Other:
82
89 void resize(size_t newSize);
90
91 // Syntactical sugar for the most common casts; still nothing to stop
92 // someone from mytyp* p = static_cast<mytyp*>(somebuffer.s_pData);
93
94 operator uint8_t *() { return static_cast<uint8_t *>(s_pData); }
95 operator uint16_t *() { return static_cast<uint16_t *>(s_pData); }
96 operator uint32_t *() { return static_cast<uint32_t *>(s_pData); }
97};
98
99} // namespace DDASReadout
100
101#endif
Definition: BufferArena.cpp:29
A reference-counted buffer with dynamic storage.
Definition: ReferenceCountedBuffer.h:52
void * s_pData
Data pointer.
Definition: ReferenceCountedBuffer.h:55
size_t s_references
Number of references.
Definition: ReferenceCountedBuffer.h:54
void dereference()
Remove a reference to the storage.
Definition: ReferenceCountedBuffer.cpp:75
size_t s_size
Number of bytes of data.
Definition: ReferenceCountedBuffer.h:53
void resize(size_t newSize)
Resize the storage.
Definition: ReferenceCountedBuffer.cpp:88
void reference()
Add a reference to the storage.
Definition: ReferenceCountedBuffer.cpp:69
virtual ~ReferenceCountedBuffer()
Destructor.
Definition: ReferenceCountedBuffer.cpp:54
ReferenceCountedBuffer(size_t initialSize=0)
Construct the buffer.
Definition: ReferenceCountedBuffer.cpp:38
bool isReferenced()
Are there references to the object?
Definition: ReferenceCountedBuffer.cpp:77