LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Friends | List of all members
lsst::afw::fits::MemFileManager Class Reference

Lifetime-management for memory that goes into FITS memory files. More...

#include <fits.h>

Public Member Functions

 MemFileManager ()
 Construct a MemFileManager with no initial memory buffer.
 
 MemFileManager (std::size_t len)
 Construct a MemFileManager with (len) bytes of initial memory.
 
 MemFileManager (void *ptr, std::size_t len)
 Construct a MemFileManager that references and does not manage external memory.
 
void reset ()
 Return the manager to the same state it would be if default-constructed.
 
void reset (std::size_t len)
 Set the size of the internal memory buffer, freeing the current buffer if necessary.
 
void reset (void *ptr, std::size_t len)
 Set the internal memory buffer to an manually-managed external block.
 
 ~MemFileManager ()
 
 MemFileManager (const MemFileManager &)=delete
 
MemFileManageroperator= (const MemFileManager &)=delete
 
 MemFileManager (MemFileManager &&)=delete
 
MemFileManageroperator= (MemFileManager &&)=delete
 
void * getData () const
 Return the buffer.
 
std::size_t getLength () const
 Return the buffer length.
 

Friends

class Fits
 

Detailed Description

Lifetime-management for memory that goes into FITS memory files.

Definition at line 125 of file fits.h.

Constructor & Destructor Documentation

◆ MemFileManager() [1/5]

lsst::afw::fits::MemFileManager::MemFileManager ( )
inline

Construct a MemFileManager with no initial memory buffer.

The manager will still free the memory when it goes out of scope, but all allocation and reallocation will be performed by cfitsio as needed.

Definition at line 133 of file fits.h.

133: _ptr(nullptr), _len(0), _managed(true) {}

◆ MemFileManager() [2/5]

lsst::afw::fits::MemFileManager::MemFileManager ( std::size_t len)
inlineexplicit

Construct a MemFileManager with (len) bytes of initial memory.

The manager will free the memory when it goes out of scope, and cfitsio will be allowed to reallocate the internal memory as needed.

Definition at line 141 of file fits.h.

141: _ptr(nullptr), _len(0), _managed(true) { reset(len); }
void reset()
Return the manager to the same state it would be if default-constructed.
Definition fits.cc:486

◆ MemFileManager() [3/5]

lsst::afw::fits::MemFileManager::MemFileManager ( void * ptr,
std::size_t len )
inline

Construct a MemFileManager that references and does not manage external memory.

The manager will not manage the given pointer, and it will not allow cfitsio to do so either. The user must provide enough initial memory and is responsible for freeing it manually after the FITS file has been closed.

Definition at line 150 of file fits.h.

150: _ptr(ptr), _len(len), _managed(false) {}
std::uint64_t * ptr
Definition RangeSet.cc:95

◆ ~MemFileManager()

lsst::afw::fits::MemFileManager::~MemFileManager ( )
inline

Definition at line 184 of file fits.h.

184{ reset(); }

◆ MemFileManager() [4/5]

lsst::afw::fits::MemFileManager::MemFileManager ( const MemFileManager & )
delete

◆ MemFileManager() [5/5]

lsst::afw::fits::MemFileManager::MemFileManager ( MemFileManager && )
delete

Member Function Documentation

◆ getData()

void * lsst::afw::fits::MemFileManager::getData ( ) const
inline

Return the buffer.

Definition at line 195 of file fits.h.

195{ return _ptr; }

◆ getLength()

std::size_t lsst::afw::fits::MemFileManager::getLength ( ) const
inline

Return the buffer length.

Definition at line 198 of file fits.h.

198{ return _len; }

◆ operator=() [1/2]

MemFileManager & lsst::afw::fits::MemFileManager::operator= ( const MemFileManager & )
delete

◆ operator=() [2/2]

MemFileManager & lsst::afw::fits::MemFileManager::operator= ( MemFileManager && )
delete

◆ reset() [1/3]

void lsst::afw::fits::MemFileManager::reset ( )

Return the manager to the same state it would be if default-constructed.

This must not be called while a FITS file that uses this memory is open.

Definition at line 486 of file fits.cc.

486 {
487 if (_managed) std::free(_ptr);
488 _ptr = nullptr;
489 _len = 0;
490 _managed = true;
491}
T free(T... args)

◆ reset() [2/3]

void lsst::afw::fits::MemFileManager::reset ( std::size_t len)

Set the size of the internal memory buffer, freeing the current buffer if necessary.

This must not be called while a FITS file that uses this memory is open.

Memory allocated with this overload of reset can be reallocated by cfitsio and will be freed when the manager goes out of scope or is reset.

Definition at line 493 of file fits.cc.

493 {
494 reset();
495 _ptr = std::malloc(len);
496 _len = len;
497 _managed = true;
498}
T malloc(T... args)

◆ reset() [3/3]

void lsst::afw::fits::MemFileManager::reset ( void * ptr,
std::size_t len )
inline

Set the internal memory buffer to an manually-managed external block.

This must not be called while a FITS file that uses this memory is open.

Memory passed to this overload of reset cannot be reallocated by cfitsio and will not be freed when the manager goes out of scope or is reset.

Definition at line 177 of file fits.h.

177 {
178 reset();
179 _ptr = ptr;
180 _len = len;
181 _managed = false;
182 }

Friends And Related Symbol Documentation

◆ Fits

friend class Fits
friend

Definition at line 201 of file fits.h.


The documentation for this class was generated from the following files: