OpenTTD
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Data Fields
DumpTarget Struct Reference

Class that represents the dump-into-string target. More...

#include <dbg_helpers.h>

Data Structures

struct  KnownStructKey
 Used as a key into map of known object instances. More...

Public Types

typedef std::map
< KnownStructKey, CStrA
KNOWN_NAMES

Public Member Functions

CStrA GetCurrentStructName ()
 Return structured name of the current class/structure.
bool FindKnownName (size_t type_id, const void *ptr, CStrA &name)
 Find the given instance in our anti-recursion repository.
void WriteIndent ()
 Write some leading spaces into the output.
void CDECL WriteLine (const char *format,...) WARN_FORMAT(2
 Write a line with indent at the beginning and <LF> at the end.
void CDECL void WriteValue (const char *name, const char *value_str)
 Write 'name = value' with indent and new-line.
void WriteTile (const char *name, TileIndex t)
 Write name & TileIndex to the output.
template<typename E >
void WriteEnumT (const char *name, E e)
 Dump given enum value (as a number and as named value)
void BeginStruct (size_t type_id, const char *name, const void *ptr)
 Open new structure (one level deeper than the current one) 'name = {<LF>'.
void EndStruct ()
 Close structure '}<LF>'.
template<typename S >
void WriteStructT (const char *name, const S *s)
 Dump nested object (or only its name if this instance is already known).

Static Public Member Functions

static size_t & LastTypeId ()
 Keep track of the last assigned type_id.

Data Fields

CStrA m_out
 the output string
int m_indent
 current indent/nesting level
std::stack< CStrAm_cur_struct
 here we will track the current structure name
KNOWN_NAMES m_known_names
 map of known object instances and their structured names

Detailed Description

Class that represents the dump-into-string target.

Definition at line 96 of file dbg_helpers.h.

Member Function Documentation

bool DumpTarget::FindKnownName ( size_t  type_id,
const void *  ptr,
CStrA name 
)

Find the given instance in our anti-recursion repository.

Return true and set name when object was found.

Definition at line 100 of file dbg_helpers.cpp.

References m_known_names.

Referenced by WriteStructT().

CStrA DumpTarget::GetCurrentStructName ( )

Return structured name of the current class/structure.

Definition at line 86 of file dbg_helpers.cpp.

References m_cur_struct.

Referenced by BeginStruct().

size_t & DumpTarget::LastTypeId ( )
static

Keep track of the last assigned type_id.

Used for anti-recursion. *static

Definition at line 79 of file dbg_helpers.cpp.

Referenced by WriteStructT().

void DumpTarget::WriteIndent ( )

Write some leading spaces into the output.

Definition at line 112 of file dbg_helpers.cpp.

References CStrA::GrowSizeNC(), m_indent, and m_out.

Referenced by BeginStruct(), EndStruct(), WriteLine(), WriteTile(), and WriteValue().

void DumpTarget::WriteLine ( const char *  format,
  ... 
)

Write a line with indent at the beginning and <LF> at the end.

Definition at line 121 of file dbg_helpers.cpp.

References CStrA::AddFormatL(), CStrA::AppendStr(), m_out, and WriteIndent().

Referenced by WriteStructT().

template<typename S >
void DumpTarget::WriteStructT ( const char *  name,
const S *  s 
)
inline

Dump nested object (or only its name if this instance is already known).

Definition at line 154 of file dbg_helpers.h.

References BeginStruct(), CBlobT< T >::Data(), EndStruct(), FindKnownName(), LastTypeId(), and WriteLine().

void DumpTarget::WriteTile ( const char *  name,
TileIndex  tile 
)

Write name & TileIndex to the output.

Definition at line 139 of file dbg_helpers.cpp.

References m_out, TileStr(), and WriteIndent().

void DumpTarget::WriteValue ( const char *  name,
const char *  value_str 
)

Write 'name = value' with indent and new-line.

Definition at line 132 of file dbg_helpers.cpp.

References m_out, and WriteIndent().

Referenced by WriteEnumT().


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