LSSTApplications  19.0.0-11-g2ce9f25+4,20.0.0+1,20.0.0+10,20.0.0+11,20.0.0+13,20.0.0+2,20.0.0+3,20.0.0+4,20.0.0+6,20.0.0-1-g10df615+10,20.0.0-1-g253301a+5,20.0.0-1-g596936a+11,20.0.0-1-g8a53f90+1,20.0.0-1-gc96f8cb+12,20.0.0-1-gd1c87d7+1,20.0.0-17-g41c5faf,20.0.0-2-g04cfba9+4,20.0.0-2-gd11eeda,20.0.0-2-gec03fae+3,20.0.0-3-g082faa5+1,20.0.0-3-gbdbfa727+3,20.0.0-3-gc53c7b6,20.0.0-4-gde602ef96+4,20.0.0-4-ge48a6ca+6,20.0.0-4-ge987224+1,20.0.0-8-g7eef53f7+7,20.0.0-9-g8e1b333,w.2020.28
LSSTDataManagementBasePackage
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. More...
 
 MemFileManager (std::size_t len)
 Construct a MemFileManager with (len) bytes of initial memory. More...
 
 MemFileManager (void *ptr, std::size_t len)
 Construct a MemFileManager that references and does not manage external memory. More...
 
void reset ()
 Return the manager to the same state it would be if default-constructed. More...
 
void reset (std::size_t len)
 Set the size of the internal memory buffer, freeing the current buffer if necessary. More...
 
void reset (void *ptr, std::size_t len)
 Set the internal memory buffer to an manually-managed external block. More...
 
 ~MemFileManager ()
 
 MemFileManager (const MemFileManager &)=delete
 
MemFileManageroperator= (const MemFileManager &)=delete
 
 MemFileManager (MemFileManager &&)=delete
 
MemFileManageroperator= (MemFileManager &&)=delete
 
void * getData () const
 Return the buffer. More...
 
std::size_t getLength () const
 Return the buffer length. More...
 

Friends

class Fits
 

Detailed Description

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

Definition at line 121 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 129 of file fits.h.

129 : _ptr(0), _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 137 of file fits.h.

137 : _ptr(0), _len(0), _managed(true) { reset(len); }

◆ 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 146 of file fits.h.

146 : _ptr(ptr), _len(len), _managed(false) {}

◆ ~MemFileManager()

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

Definition at line 180 of file fits.h.

180 { 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 191 of file fits.h.

191 { return _ptr; }

◆ getLength()

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

Return the buffer length.

Definition at line 194 of file fits.h.

194 { 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 475 of file fits.cc.

475  {
476  if (_managed) std::free(_ptr);
477  _ptr = 0;
478  _len = 0;
479  _managed = true;
480 }

◆ 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 482 of file fits.cc.

482  {
483  reset();
484  _ptr = std::malloc(len);
485  _len = len;
486  _managed = true;
487 }

◆ 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 173 of file fits.h.

173  {
174  reset();
175  _ptr = ptr;
176  _len = len;
177  _managed = false;
178  }

Friends And Related Function Documentation

◆ Fits

friend class Fits
friend

Definition at line 197 of file fits.h.


The documentation for this class was generated from the following files:
lsst::afw::fits::MemFileManager::reset
void reset()
Return the manager to the same state it would be if default-constructed.
Definition: fits.cc:475
ptr
uint64_t * ptr
Definition: RangeSet.cc:88
std::free
T free(T... args)
std::malloc
T malloc(T... args)