pupene  0.2.0
Namespaces | Classes | Typedefs | Enumerations | Functions
pupene Namespace Reference

Namespaces

 detect
 
 fns
 

Classes

struct  binary_reader_pup
 
struct  binary_writer_pup
 
class  BinaryPupper
 
class  DebugPupper
 This pupper wraps another pupper, logging each call to Wrapped::begin(), Wrapped::pup() and wrapped::end(). More...
 
struct  is_detected
 
struct  is_detected< Trait, std::void_t< Trait< Args... > >, Args... >
 
class  JsonReader
 
class  JsonWriter
 
struct  Meta
 Holds name and type of objects. More...
 
class  NullPupper
 Does nothing by itself. More...
 
class  Pupper
 Base class for working with puppable types. More...
 

Typedefs

using BinaryReader = BinaryPupper< std::istream, binary_reader_pup >
 
using BinaryWriter = BinaryPupper< std::ostream, binary_writer_pup >
 
template<typename T >
using enable_if_not_puppable = typename std::enable_if_t<!is_puppable< T >()>
 
template<typename T >
using enable_if_pup_iterable = typename std::enable_if_t< is_pup_iterable< T >()>
 
template<typename T >
using enable_if_puppable = typename std::enable_if_t< is_puppable< T >()>
 
template<typename T >
using enable_if_puppable_container = typename std::enable_if_t< is_pup_container< T >()>
 
template<typename T >
using enable_if_puppable_map = typename std::enable_if_t< is_map< T >()>
 
using Type = Meta::Type
 

Enumerations

enum  PupPolicy { PupPolicy::pup_object, PupPolicy::consume_object }
 Controls an object's pup() behavior. More...
 

Functions

DebugPupper< NullPupperdebug_pupper (std::ostream &out=std::cout)
 DebugPupper wrapping a NullPupper. More...
 
template<typename Pupper >
DebugPupper< Pupperdebug_pupper (Pupper &pupper, std::ostream &out)
 Wraps existing pupper in a DebugPupper. More...
 
template<typename P , typename T >
void do_pup (P &&pupper, T &obj, bool debug)
 
template<typename T >
from_binary (std::istream &in, bool debug=false)
 
template<typename T >
from_json (std::istream &in, bool debug=false)
 
template<typename T >
from_json (const std::string &s, bool debug=false)
 
template<typename T >
constexpr bool is_map ()
 
template<typename T >
constexpr bool is_pup_container ()
 
template<typename P , typename T >
constexpr bool is_pup_impl ()
 
template<typename T >
constexpr bool is_pup_iterable ()
 
template<typename T >
constexpr bool is_puppable ()
 
std::ostream & operator<< (std::ostream &out, const JsonReader &reader)
 
std::ostream & operator<< (std::ostream &out, const Meta &meta)
 
template<typename T >
void to_binary (T &obj, std::ostream &out, bool debug=false)
 
template<typename T >
std::string to_debug (T &object)
 Returns a string representation of object. More...
 
template<typename T >
std::string to_debug (const T &object)
 Returns a string representation of object. More...
 
template<typename T >
void to_json (T &obj, std::ostream &out, bool debug=false)
 
template<typename T >
std::string to_json (T &obj, bool debug=false)
 

Typedef Documentation

◆ BinaryReader

using pupene::BinaryReader = typedef BinaryPupper<std::istream, binary_reader_pup>

Definition at line 61 of file binary-puppers.h.

◆ BinaryWriter

using pupene::BinaryWriter = typedef BinaryPupper<std::ostream, binary_writer_pup>

Definition at line 60 of file binary-puppers.h.

◆ enable_if_not_puppable

template<typename T >
using pupene::enable_if_not_puppable = typedef typename std::enable_if_t<!is_puppable<T>()>

Definition at line 116 of file traits.h.

◆ enable_if_pup_iterable

template<typename T >
using pupene::enable_if_pup_iterable = typedef typename std::enable_if_t<is_pup_iterable<T>()>

Definition at line 107 of file traits.h.

◆ enable_if_puppable

template<typename T >
using pupene::enable_if_puppable = typedef typename std::enable_if_t<is_puppable<T>()>

Definition at line 113 of file traits.h.

◆ enable_if_puppable_container

template<typename T >
using pupene::enable_if_puppable_container = typedef typename std::enable_if_t<is_pup_container<T>()>

Definition at line 110 of file traits.h.

◆ enable_if_puppable_map

template<typename T >
using pupene::enable_if_puppable_map = typedef typename std::enable_if_t<is_map<T>()>

Definition at line 119 of file traits.h.

◆ Type

using pupene::Type = typedef Meta::Type

Definition at line 7 of file util.h.

Enumeration Type Documentation

◆ PupPolicy

enum pupene::PupPolicy
strong

Controls an object's pup() behavior.

It's possible for a Pupper to opt-out of invoking pup on its members.

See also
pupene::fns::begin
pupene::fns::pup_object
Enumerator
pup_object 

pup object using its component pup functions

consume_object 

Pupper deals with object as-is, no associated pup functions will be invoked.

Definition at line 17 of file pupper.h.

Function Documentation

◆ debug_pupper() [1/2]

DebugPupper< NullPupper > pupene::debug_pupper ( std::ostream &  out)

DebugPupper wrapping a NullPupper.

Definition at line 5 of file debug.cpp.

Referenced by to_debug().

◆ debug_pupper() [2/2]

template<typename Pupper >
DebugPupper<Pupper> pupene::debug_pupper ( Pupper pupper,
std::ostream &  out 
)

Wraps existing pupper in a DebugPupper.

Adheres to the [PupPolicy] of wrapped pupper.

Definition at line 19 of file debug.h.

◆ do_pup()

template<typename P , typename T >
void pupene::do_pup ( P &&  pupper,
T &  obj,
bool  debug 
)

Definition at line 11 of file util.h.

References pupene::Meta::Object.

◆ from_binary()

template<typename T >
T pupene::from_binary ( std::istream &  in,
bool  debug = false 
)

◆ from_json() [1/2]

template<typename T >
T pupene::from_json ( std::istream &  in,
bool  debug = false 
)

Definition at line 12 of file json.h.

References pupene::JsonReader::JsonReader().

◆ from_json() [2/2]

template<typename T >
T pupene::from_json ( const std::string &  s,
bool  debug = false 
)

Definition at line 19 of file json.h.

◆ is_map()

template<typename T >
constexpr bool pupene::is_map ( )

Definition at line 76 of file traits.h.

◆ is_pup_container()

template<typename T >
constexpr bool pupene::is_pup_container ( )

Definition at line 89 of file traits.h.

◆ is_pup_impl()

template<typename P , typename T >
constexpr bool pupene::is_pup_impl ( )

Definition at line 95 of file traits.h.

◆ is_pup_iterable()

template<typename T >
constexpr bool pupene::is_pup_iterable ( )

Definition at line 81 of file traits.h.

◆ is_puppable()

template<typename T >
constexpr bool pupene::is_puppable ( )

Definition at line 100 of file traits.h.

◆ operator<<() [1/2]

std::ostream& pupene::operator<< ( std::ostream &  out,
const JsonReader reader 
)

Definition at line 47 of file json-puppers.cpp.

◆ operator<<() [2/2]

std::ostream & pupene::operator<< ( std::ostream &  out,
const Meta meta 
)

Definition at line 60 of file json-puppers.cpp.

◆ to_binary()

template<typename T >
void pupene::to_binary ( T &  obj,
std::ostream &  out,
bool  debug = false 
)

◆ to_debug() [1/2]

template<typename T >
std::string pupene::to_debug ( T &  object)

Returns a string representation of object.

Definition at line 32 of file debug.h.

References debug_pupper().

◆ to_debug() [2/2]

template<typename T >
std::string pupene::to_debug ( const T &  object)

Returns a string representation of object.

Definition at line 44 of file debug.h.

◆ to_json() [1/2]

template<typename T >
void pupene::to_json ( T &  obj,
std::ostream &  out,
bool  debug = false 
)

Definition at line 25 of file json.h.

References pupene::JsonWriter::JsonWriter().

◆ to_json() [2/2]

template<typename T >
std::string pupene::to_json ( T &  obj,
bool  debug = false 
)

Definition at line 31 of file json.h.