dEngine
Simple 2D C++ game engine
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
nanolog::NanoLogLine Class Reference

#include <NanoLog.h>

Classes

struct  string_literal_t
 

Public Member Functions

 NanoLogLine (LogLevel level, char const *file, char const *function, uint32_t line)
 
 ~NanoLogLine ()
 
 NanoLogLine (NanoLogLine &&)=default
 
NanoLogLineoperator= (NanoLogLine &&)=default
 
void stringify (std::ostream &os)
 
NanoLogLineoperator<< (char arg)
 
NanoLogLineoperator<< (int32_t arg)
 
NanoLogLineoperator<< (uint32_t arg)
 
NanoLogLineoperator<< (int64_t arg)
 
NanoLogLineoperator<< (uint64_t arg)
 
NanoLogLineoperator<< (double arg)
 
NanoLogLineoperator<< (std::string const &arg)
 
template<size_t N>
NanoLogLineoperator<< (const char(&arg)[N])
 
template<typename Arg >
std::enable_if< std::is_same< Arg, char const *>::value, NanoLogLine &>::type operator<< (Arg const &arg)
 
template<typename Arg >
std::enable_if< std::is_same< Arg, char *>::value, NanoLogLine &>::type operator<< (Arg const &arg)
 

Private Member Functions

char * buffer ()
 
template<typename Arg >
void encode (Arg arg)
 
template<typename Arg >
void encode (Arg arg, uint8_t type_id)
 
void encode (char *arg)
 
void encode (char const *arg)
 
void encode (string_literal_t arg)
 
void encode_c_string (char const *arg, size_t length)
 
void resize_buffer_if_needed (size_t additional_bytes)
 
void stringify (std::ostream &os, char *start, char const *const end)
 

Private Attributes

size_t m_bytes_used
 
size_t m_buffer_size
 
std::unique_ptr< char [] > m_heap_buffer
 
char m_stack_buffer [256 - 2 *sizeof(size_t) - sizeof(decltype(m_heap_buffer)) - 8]
 

Constructor & Destructor Documentation

◆ NanoLogLine() [1/2]

nanolog::NanoLogLine::NanoLogLine ( LogLevel  level,
char const *  file,
char const *  function,
uint32_t  line 
)

◆ ~NanoLogLine()

nanolog::NanoLogLine::~NanoLogLine ( )
default

Referenced by NanoLogLine().

◆ NanoLogLine() [2/2]

nanolog::NanoLogLine::NanoLogLine ( NanoLogLine &&  )
default

Member Function Documentation

◆ buffer()

char * nanolog::NanoLogLine::buffer ( )
private

Referenced by encode_c_string().

◆ encode() [1/5]

template<typename Arg >
void nanolog::NanoLogLine::encode ( Arg  arg)
private

◆ encode() [2/5]

template<typename Arg >
void nanolog::NanoLogLine::encode ( Arg  arg,
uint8_t  type_id 
)
private

◆ encode() [3/5]

void nanolog::NanoLogLine::encode ( char *  arg)
private

◆ encode() [4/5]

void nanolog::NanoLogLine::encode ( char const *  arg)
private

◆ encode() [5/5]

void nanolog::NanoLogLine::encode ( string_literal_t  arg)
private

◆ encode_c_string()

void nanolog::NanoLogLine::encode_c_string ( char const *  arg,
size_t  length 
)
private

Referenced by encode(), and operator<<().

◆ operator<<() [1/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( char  arg)

◆ operator<<() [2/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( int32_t  arg)

◆ operator<<() [3/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( uint32_t  arg)

◆ operator<<() [4/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( int64_t  arg)

◆ operator<<() [5/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( uint64_t  arg)

◆ operator<<() [6/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( double  arg)

◆ operator<<() [7/10]

NanoLogLine & nanolog::NanoLogLine::operator<< ( std::string const &  arg)

◆ operator<<() [8/10]

template<size_t N>
NanoLogLine& nanolog::NanoLogLine::operator<< ( const char(&)  arg[N])
inline

◆ operator<<() [9/10]

template<typename Arg >
std::enable_if< std::is_same < Arg, char const * >::value, NanoLogLine& >::type nanolog::NanoLogLine::operator<< ( Arg const &  arg)
inline

◆ operator<<() [10/10]

template<typename Arg >
std::enable_if< std::is_same < Arg, char * >::value, NanoLogLine& >::type nanolog::NanoLogLine::operator<< ( Arg const &  arg)
inline

◆ operator=()

NanoLogLine& nanolog::NanoLogLine::operator= ( NanoLogLine &&  )
default

◆ resize_buffer_if_needed()

void nanolog::NanoLogLine::resize_buffer_if_needed ( size_t  additional_bytes)
private

Referenced by encode_c_string().

◆ stringify() [1/2]

void nanolog::NanoLogLine::stringify ( std::ostream &  os)

◆ stringify() [2/2]

void nanolog::NanoLogLine::stringify ( std::ostream &  os,
char *  start,
char const *const  end 
)
private

Member Data Documentation

◆ m_buffer_size

size_t nanolog::NanoLogLine::m_buffer_size
private

Referenced by resize_buffer_if_needed().

◆ m_bytes_used

size_t nanolog::NanoLogLine::m_bytes_used
private

◆ m_heap_buffer

std::unique_ptr< char [] > nanolog::NanoLogLine::m_heap_buffer
private

◆ m_stack_buffer

char nanolog::NanoLogLine::m_stack_buffer[256 - 2 *sizeof(size_t) - sizeof(decltype(m_heap_buffer)) - 8]
private