Bitcoin Core  25.99.0
P2P Digital Currency
Public Member Functions | Protected Attributes | List of all members
AutoFile Class Reference

Non-refcounted RAII wrapper for FILE*. More...

#include <streams.h>

Inheritance diagram for AutoFile:
[legend]

Public Member Functions

 AutoFile (std::FILE *file, std::vector< std::byte > data_xor={})
 
 ~AutoFile ()
 
 AutoFile (const AutoFile &)=delete
 
AutoFileoperator= (const AutoFile &)=delete
 
bool feof () const
 
int fclose ()
 
std::FILE * release ()
 Get wrapped FILE* with transfer of ownership. More...
 
std::FILE * Get () const
 Get wrapped FILE* without transfer of ownership. More...
 
bool IsNull () const
 Return true if the wrapped FILE* is nullptr, false otherwise. More...
 
std::size_t detail_fread (Span< std::byte > dst)
 Implementation detail, only used internally. More...
 
void read (Span< std::byte > dst)
 
void ignore (size_t nSize)
 
void write (Span< const std::byte > src)
 
template<typename T >
AutoFileoperator<< (const T &obj)
 
template<typename T >
AutoFileoperator>> (T &&obj)
 

Protected Attributes

std::FILE * m_file
 
const std::vector< std::byte > m_xor
 

Detailed Description

Non-refcounted RAII wrapper for FILE*.

Will automatically close the file when it goes out of scope if not null. If you're returning the file pointer, return file.release(). If you need to close the file early, use file.fclose() instead of fclose(file).

Definition at line 470 of file streams.h.

Constructor & Destructor Documentation

◆ AutoFile() [1/2]

AutoFile::AutoFile ( std::FILE *  file,
std::vector< std::byte >  data_xor = {} 
)
inlineexplicit

Definition at line 477 of file streams.h.

◆ ~AutoFile()

AutoFile::~AutoFile ( )
inline

Definition at line 479 of file streams.h.

Here is the call graph for this function:

◆ AutoFile() [2/2]

AutoFile::AutoFile ( const AutoFile )
delete

Member Function Documentation

◆ detail_fread()

std::size_t AutoFile::detail_fread ( Span< std::byte >  dst)

Implementation detail, only used internally.

Definition at line 10 of file streams.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fclose()

int AutoFile::fclose ( )
inline

Definition at line 487 of file streams.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ feof()

bool AutoFile::feof ( ) const
inline

Definition at line 485 of file streams.h.

Here is the caller graph for this function:

◆ Get()

std::FILE* AutoFile::Get ( ) const
inline

Get wrapped FILE* without transfer of ownership.

Note
Ownership of the FILE* will remain with this class. Use this only if the scope of the AutoFile outlives use of the passed pointer.

Definition at line 508 of file streams.h.

◆ ignore()

void AutoFile::ignore ( size_t  nSize)

Definition at line 31 of file streams.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsNull()

bool AutoFile::IsNull ( ) const
inline

Return true if the wrapped FILE* is nullptr, false otherwise.

Definition at line 512 of file streams.h.

◆ operator<<()

template<typename T >
AutoFile& AutoFile::operator<< ( const T obj)
inline

Definition at line 525 of file streams.h.

Here is the call graph for this function:

◆ operator=()

AutoFile& AutoFile::operator= ( const AutoFile )
delete

◆ operator>>()

template<typename T >
AutoFile& AutoFile::operator>> ( T &&  obj)
inline

Definition at line 532 of file streams.h.

Here is the call graph for this function:

◆ read()

void AutoFile::read ( Span< std::byte >  dst)

Definition at line 24 of file streams.cpp.

Here is the call graph for this function:

◆ release()

std::FILE* AutoFile::release ( )
inline

Get wrapped FILE* with transfer of ownership.

Note
This will invalidate the AutoFile object, and makes it the responsibility of the caller of this function to clean up the returned FILE*.

Definition at line 497 of file streams.h.

Here is the caller graph for this function:

◆ write()

void AutoFile::write ( Span< const std::byte >  src)

Definition at line 44 of file streams.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ m_file

std::FILE* AutoFile::m_file
protected

Definition at line 473 of file streams.h.

◆ m_xor

const std::vector<std::byte> AutoFile::m_xor
protected

Definition at line 474 of file streams.h.


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