Android-cuttlefish cvd tool
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
cuttlefish::PrettyStruct Class Reference

#include <struct.h>

Public Member Functions

 PrettyStruct (std::string_view name)
 
template<typename T >
PrettyStructMember (std::string_view name, const T &value) &
 
template<typename T >
PrettyStruct Member (std::string_view name, const T &value) &&
 

Private Member Functions

void MemberInternal (std::string_view)
 

Private Attributes

std::string name_
 
std::vector< std::string > members_
 

Friends

template<typename Sink >
void AbslStringify (Sink &sink, const PrettyStruct &ps)
 

Detailed Description

Creates a "formatted struct", comparable to Rust's std::fmt::DebugStruct.

Supports abseil string formatting, libfmt, and ostreams.

Example usage:

const PrettyStruct inner =
PrettyStruct("Inner").Member("i1", 1).Member("i2", 2);
const PrettyStruct outer =
PrettyStruct("Outer").Member("o1", inner).Member("o2", inner);
Definition: struct.h:60
PrettyStruct(std::string_view name)
Definition: struct.cc:27

formats as

Outer {
o1: Inner {
i1: 1,
i2: 2
},
o2: Inner {
i1: 1,
i2: 2
}
}

Constructor & Destructor Documentation

◆ PrettyStruct()

cuttlefish::PrettyStruct::PrettyStruct ( std::string_view  name)
explicit

Member Function Documentation

◆ Member() [1/2]

template<typename T >
PrettyStruct & cuttlefish::PrettyStruct::Member ( std::string_view  name,
const T &  value 
) &
inline

◆ Member() [2/2]

template<typename T >
PrettyStruct cuttlefish::PrettyStruct::Member ( std::string_view  name,
const T &  value 
) &&
inline

◆ MemberInternal()

void cuttlefish::PrettyStruct::MemberInternal ( std::string_view  line)
private

Friends And Related Function Documentation

◆ AbslStringify

template<typename Sink >
void AbslStringify ( Sink &  sink,
const PrettyStruct ps 
)
friend

Member Data Documentation

◆ members_

std::vector<std::string> cuttlefish::PrettyStruct::members_
private

◆ name_

std::string cuttlefish::PrettyStruct::name_
private

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