ORIGINAL
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Friends | List of all members
original::printable Class Referenceabstract

Base class providing polymorphic string conversion capabilities. More...

#include <printable.h>

Inherited by original::autoPtr< TYPE, ownerPtr< TYPE, deleter< TYPE > >, deleter< TYPE > >, original::autoPtr< TYPE, strongPtr< TYPE, DELETER >, DELETER >, original::autoPtr< TYPE, weakPtr< TYPE, DELETER >, DELETER >, original::autoPtr< asyncWrapper< TYPE >, strongPtr< asyncWrapper< TYPE >, DELETER >, DELETER >, original::autoPtr< asyncWrapper< void >, strongPtr< asyncWrapper< void >, DELETER >, DELETER >, original::autoPtr< original::filter< TYPE >, strongPtr< original::filter< TYPE >, DELETER >, DELETER >, original::containerAdapter< TYPE, chain, allocator >, original::containerAdapter< TYPE, blocksList, allocator >, original::containerAdapter< priorityTask, vector, allocator >, original::containerAdapter< original::strongPtr< original::taskDelegator::taskBase >, chain, allocator >, original::couple< const K_TYPE, V_TYPE >, original::iterationStream< TYPE, array< TYPE, allocator< TYPE > > >, original::iterationStream< bool, bitSet< allocator< bool > > >, original::iterationStream< TYPE, blocksList< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, chain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, forwardChain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE *, vector< TYPE *, allocator< TYPE * > > >, original::iterationStream< TYPE, vector< TYPE, allocator< TYPE > > >, original::iterationStream< underlying_type, array< underlying_type, rebind_alloc_underlying > >, original::iterationStream< original::strongPtr< original::filter< TYPE > >, chain< original::strongPtr< original::filter< TYPE > >, allocator< original::strongPtr< original::filter< TYPE > > > > >, original::iterationStream< opts, chain< opts, allocator< opts > > >, original::iterationStream< hashNode *, vector< hashNode *, rebind_alloc_pointer > >, original::iterationStream< original::hashTable::hashNode *, vector< original::hashTable::hashNode *, rebind_alloc_pointer > >, original::iterationStream< original::skipList::skipListNode *, vector< original::skipList::skipListNode *, allocator< original::skipList::skipListNode * > > >, original::iterationStream< original::thread, array< original::thread, allocator< original::thread > > >, original::iterationStream< priorityTask, vector< priorityTask, allocator< priorityTask > > >, original::iterationStream< original::strongPtr< original::taskDelegator::taskBase >, chain< original::strongPtr< original::taskDelegator::taskBase >, allocator< original::strongPtr< original::taskDelegator::taskBase > > > >, original::iterationStream< original::strongPtr< original::transform< TYPE > >, chain< original::strongPtr< original::transform< TYPE > >, allocator< original::strongPtr< original::transform< TYPE > > > > >, original::iterator< couple< const K_TYPE, V_TYPE > >, original::iterator< const TYPE >, original::iterator< bool >, original::threadBase< thread >, original::tuple< MUTEX *... >, original::wrapper< couple< const K_TYPE, V_TYPE > >, original::JMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::JSet< TYPE, Compare, ALLOC >, original::autoPtr< TYPE, DERIVED, DELETER >, original::containerAdapter< TYPE, SERIAL, ALLOC >, original::couple< F_TYPE, S_TYPE >, original::error, original::hashMap< K_TYPE, V_TYPE, HASH, ALLOC >, original::hashSet< TYPE, HASH, ALLOC >, original::iterationStream< TYPE, DERIVED >, original::iterator< TYPE >, original::threadBase< DERIVED >, original::time::UTCTime, original::time::duration, original::time::point, original::treeMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::treeSet< TYPE, Compare, ALLOC >, original::tuple< TYPES >, and original::wrapper< TYPE >.

Collaboration diagram for original::printable:
Collaboration graph

Public Member Functions

virtual std::string className () const
 Gets the class name for type identification.
 
virtual std::string toString (bool enter) const
 Generates formatted string representation.
 
 operator std::string () const
 Explicit conversion to std::string.
 
 operator const char * () const
 Explicit conversion to C-style string.
 
const chartoCString (bool enter) const
 Direct C-string access with formatting control.
 
template<typename TYPE >
auto formatString (const TYPE &t) -> std::string
 
template<typename TYPE >
auto formatCString (const TYPE &t) -> const char *
 
template<typename TYPE >
auto formatEnum (const TYPE &t) -> std::string
 
template<typename TYPE >
auto formatString (TYPE *const &ptr) -> std::string
 

Static Public Member Functions

template<typename TYPE >
static std::string formatString (const TYPE &t)
 Universal value-to-string conversion with type-specific formatting.
 
template<Printable TYPE>
static std::string formatString (const TYPE &t)
 Specialization for types deriving from printable.
 
template<EnumType TYPE>
static std::string formatString (const TYPE &t)
 Specialization for enum types with type-safe formatting.
 
template<typename TYPE >
static std::string formatString (TYPE *const &ptr)
 Pointer-specific formatting with null safety.
 
template<typename TYPE >
static const charformatCString (const TYPE &t)
 C-string cache for temporary usage with static storage.
 
template<typename TYPE >
static std::string formatEnum (const TYPE &t)
 Enum formatting utility with underlying value extraction.
 
template<>
auto formatString (const char &t) -> std::string
 
template<>
auto formatString (const bool &t) -> std::string
 
template<>
auto formatString (const char *const &ptr) -> std::string
 

Friends

std::ostream & operator<< (std::ostream &os, const printable &p)
 Stream insertion operator for printable objects.
 

Detailed Description

Base class providing polymorphic string conversion capabilities.

Inherit from this class to enable automatic string representation for output streams, C-style string access, and std::format support. Provides extensible formatting through template specializations.

Note
All derived classes automatically gain string conversion capabilities and can be used with std::cout, std::format, and other output mechanisms.

Member Function Documentation

◆ className()

auto original::printable::className ( ) const
inlinevirtual

Gets the class name for type identification.

Returns
Class name as string.

Override in derived classes to provide accurate type names.

class MyClass : public printable {
std::string className() const override { return "MyClass"; }
};
Unique ownership smart pointer with move semantics.
Definition ownerPtr.h:37
Base class providing polymorphic string conversion capabilities.
Definition printable.h:39

Reimplemented in original::array< TYPE, ALLOC >::Iterator, original::array< TYPE, ALLOC >, original::array< original::thread >, original::array< underlying_type, rebind_alloc_underlying >, original::autoPtr< TYPE, DERIVED, DELETER >, original::autoPtr< asyncWrapper< TYPE >, strongPtr< asyncWrapper< TYPE >, DELETER >, DELETER >, original::autoPtr< asyncWrapper< void >, strongPtr< asyncWrapper< void >, DELETER >, DELETER >, original::autoPtr< original::filter< TYPE >, strongPtr< original::filter< TYPE >, DELETER >, DELETER >, original::autoPtr< TYPE, ownerPtr< TYPE, deleter< TYPE > >, deleter< TYPE > >, original::autoPtr< TYPE, strongPtr< TYPE, DELETER >, DELETER >, original::autoPtr< TYPE, weakPtr< TYPE, DELETER >, DELETER >, original::bitSet< ALLOC >::Iterator, original::bitSet< ALLOC >, original::blocksList< TYPE, ALLOC >::Iterator, original::blocksList< TYPE, ALLOC >, original::blocksList< TYPE, allocator< TYPE > >, original::chain< TYPE, ALLOC >::Iterator, original::chain< TYPE, ALLOC >, original::chain< opts >, original::chain< original::strongPtr< original::filter< TYPE > > >, original::chain< original::strongPtr< original::taskDelegator::taskBase >, allocator< original::strongPtr< original::taskDelegator::taskBase > > >, original::chain< original::strongPtr< original::transform< TYPE > > >, original::chain< TYPE, allocator< TYPE > >, original::containerAdapter< TYPE, SERIAL, ALLOC >, original::containerAdapter< original::strongPtr< original::taskDelegator::taskBase >, chain, allocator >, original::containerAdapter< priorityTask, vector, allocator >, original::containerAdapter< TYPE, blocksList, allocator >, original::containerAdapter< TYPE, chain, allocator >, original::couple< F_TYPE, S_TYPE >, original::couple< const K_TYPE, V_TYPE >, original::deque< TYPE, SERIAL, ALLOC >, original::error, original::outOfBoundError, original::valueError, original::nullPointerError, original::unSupportedMethodError, original::noElementError, original::callbackSignatureError, original::callbackReturnTypeError, original::allocateError, original::sysError, original::forwardChain< TYPE, ALLOC >::Iterator, original::forwardChain< TYPE, ALLOC >, original::iterable< TYPE >::iterAdaptor, original::iterationStream< TYPE, DERIVED >, original::iterationStream< bool, bitSet< allocator< bool > > >, original::iterationStream< hashNode *, vector< hashNode *, rebind_alloc_pointer > >, original::iterationStream< opts, chain< opts, allocator< opts > > >, original::iterationStream< original::hashTable::hashNode *, vector< original::hashTable::hashNode *, rebind_alloc_pointer > >, original::iterationStream< original::skipList::skipListNode *, vector< original::skipList::skipListNode *, allocator< original::skipList::skipListNode * > > >, original::iterationStream< original::strongPtr< original::filter< TYPE > >, chain< original::strongPtr< original::filter< TYPE > >, allocator< original::strongPtr< original::filter< TYPE > > > > >, original::iterationStream< original::strongPtr< original::taskDelegator::taskBase >, chain< original::strongPtr< original::taskDelegator::taskBase >, allocator< original::strongPtr< original::taskDelegator::taskBase > > > >, original::iterationStream< original::strongPtr< original::transform< TYPE > >, chain< original::strongPtr< original::transform< TYPE > >, allocator< original::strongPtr< original::transform< TYPE > > > > >, original::iterationStream< original::thread, array< original::thread, allocator< original::thread > > >, original::iterationStream< priorityTask, vector< priorityTask, allocator< priorityTask > > >, original::iterationStream< TYPE *, vector< TYPE *, allocator< TYPE * > > >, original::iterationStream< TYPE, array< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, blocksList< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, chain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, forwardChain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, vector< TYPE, allocator< TYPE > > >, original::iterationStream< underlying_type, array< underlying_type, rebind_alloc_underlying > >, original::iterator< TYPE >, original::iterator< bool >, original::iterator< const TYPE >, original::iterator< couple< const K_TYPE, V_TYPE > >, original::hashMap< K_TYPE, V_TYPE, HASH, ALLOC >::Iterator, original::hashMap< K_TYPE, V_TYPE, HASH, ALLOC >, original::treeMap< K_TYPE, V_TYPE, Compare, ALLOC >::Iterator, original::treeMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::JMap< K_TYPE, V_TYPE, Compare, ALLOC >::Iterator, original::JMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::ownerPtr< TYPE, DELETER >, original::prique< TYPE, Callback, SERIAL, ALLOC >, original::prique< priorityTask, taskComparator, vector >, original::queue< TYPE, SERIAL, ALLOC >, original::queue< original::strongPtr< original::taskDelegator::taskBase > >, original::randomAccessIterator< TYPE, ALLOC >, original::refCntPtr< TYPE, DERIVED, DELETER >, original::refCntPtr< asyncWrapper< TYPE >, strongPtr< asyncWrapper< TYPE >, DELETER >, DELETER >, original::refCntPtr< asyncWrapper< void >, strongPtr< asyncWrapper< void >, DELETER >, DELETER >, original::refCntPtr< original::filter< TYPE >, strongPtr< original::filter< TYPE >, DELETER >, DELETER >, original::refCntPtr< TYPE, strongPtr< TYPE, DELETER >, DELETER >, original::refCntPtr< TYPE, weakPtr< TYPE, DELETER >, DELETER >, original::strongPtr< TYPE, DELETER >, original::strongPtr< asyncWrapper< TYPE > >, original::strongPtr< asyncWrapper< void > >, original::strongPtr< original::filter< TYPE > >, original::strongPtr< TYPE >, original::weakPtr< TYPE, DELETER >, original::hashSet< TYPE, HASH, ALLOC >::Iterator, original::hashSet< TYPE, HASH, ALLOC >, original::treeSet< TYPE, Compare, ALLOC >::Iterator, original::treeSet< TYPE, Compare, ALLOC >, original::JSet< TYPE, Compare, ALLOC >::Iterator, original::JSet< TYPE, Compare, ALLOC >, original::stack< TYPE, SERIAL, ALLOC >, original::stepIterator< TYPE >, original::tuple< TYPES >, original::tuple< MUTEX *... >, original::vector< TYPE, ALLOC >::Iterator, original::vector< TYPE, ALLOC >, original::vector< hashNode *, rebind_alloc_pointer >, original::vector< original::hashTable::hashNode *, rebind_alloc_pointer >, original::vector< original::skipList::skipListNode * >, original::vector< priorityTask, allocator< priorityTask > >, original::vector< TYPE * >, original::wrapper< TYPE >, original::wrapper< couple< const K_TYPE, V_TYPE > >, original::threadBase< DERIVED >, original::threadBase< thread >, original::thread, original::time::duration, original::time::point, and original::time::UTCTime.

◆ formatCString()

template<typename TYPE >
static const char * original::printable::formatCString ( const TYPE t)
static

C-string cache for temporary usage with static storage.

Template Parameters
TYPEInput type
Parameters
tValue to format
Returns
Static C-string buffer containing formatted result
Warning
Not thread-safe due to static buffer - avoid in multi-threaded contexts
Note
The returned pointer points to static storage that will be overwritten on subsequent calls. For thread-safe usage or persistent strings, use formatString() and store the result.
// Single-threaded usage only:
const char* str = printable::formatCString(42);
printf("%s\n", str); // Safe if no concurrent calls
static const char * formatCString(const TYPE &t)
C-string cache for temporary usage with static storage.

◆ formatEnum()

template<typename TYPE >
static std::string original::printable::formatEnum ( const TYPE t)
static

Enum formatting utility with underlying value extraction.

Template Parameters
TYPEEnum type
Parameters
tEnum value
Returns
String in "EnumName(value)" format

Formats enum values by combining the type name from typeid with the underlying integer value. Provides consistent enum representation across the codebase.

enum Color { Red = 1, Green = 2 };
printable::formatEnum(Color::Red); // "Color(1)"
printable::formatEnum(Color::Green); // "Color(2)"
static std::string formatEnum(const TYPE &t)
Enum formatting utility with underlying value extraction.

◆ formatString() [1/4]

template<original::EnumType TYPE>
std::string original::printable::formatString ( const TYPE t)
static

Universal value-to-string conversion with type-specific formatting.

Template Parameters
TYPEInput value type
Parameters
tValue to format
Returns
Formatted string with type-specific handling

Automatically dispatches to appropriate formatting based on type:

  • Printable types: Uses operator<< or toString()
  • Enum types: Formats as "EnumName(value)" via formatEnum
  • String types: Wraps in quotes
  • Character types: Wraps in single quotes
  • Pointer types: Formats as hex address with @ prefix
  • Boolean types: Formats as "true"/"false"
  • nullptr_t: Formats as "nullptr"
  • Other types: Uses typeid and address formatting

The function uses template specialization and concept constraints to select the appropriate formatting strategy at compile time.

Example outputs:

printable::formatString("hello"); // "\"hello\""
printable::formatString(true); // "true"
printable::formatString(nullptr); // "nullptr"
printable::formatString((void*)0x1234); // "@0x1234"
enum Color { Red, Green };
printable::formatString(Color::Red); // "Color(0)"
static std::string formatString(const TYPE &t)
Universal value-to-string conversion with type-specific formatting.
Definition printable.h:339

◆ formatString() [2/4]

template<Printable TYPE>
static std::string original::printable::formatString ( const TYPE t)
static

Specialization for types deriving from printable.

Template Parameters
TYPEPrintable-derived type (constrained by Printable concept)
Parameters
tPrintable object to format
Returns
String representation using the object's toString() method

Uses the printable object's streaming operator or toString() method to generate the string representation. This ensures consistent formatting across all printable-derived types.

◆ formatString() [3/4]

template<EnumType TYPE>
static std::string original::printable::formatString ( const TYPE t)
static

Specialization for enum types with type-safe formatting.

Template Parameters
TYPEEnum type (constrained by EnumType concept)
Parameters
tEnum value to format
Returns
String in "EnumName(value)" format

Extracts the underlying integer value and combines it with the type name for readable enum representation. Uses std::underlying_type_t for safe value extraction.

◆ formatString() [4/4]

template<typename TYPE >
static std::string original::printable::formatString ( TYPE *const ptr)
static

Pointer-specific formatting with null safety.

Template Parameters
TYPEPointer type
Parameters
ptrPointer to format
Returns
String with hex address prefixed by @, or "nullptr" for null

Safely handles null pointers by returning "nullptr" and formats valid pointers as hexadecimal addresses with @ prefix for easy identification.

int* p = nullptr;
printable::formatString(p); // "nullptr"
int x = 42;
printable::formatString(&x); // "@0x7ffeeb4a4c5c"

◆ operator const char *()

original::printable::operator const char * ( ) const
inlineexplicit

Explicit conversion to C-style string.

Returns
Null-terminated C-string (lifetime tied to object).
Note
The returned pointer is valid until the next call to toCString() or destruction of the object.

◆ operator std::string()

original::printable::operator std::string ( ) const
inlineexplicit

Explicit conversion to std::string.

Returns
String representation without newline.

◆ toCString()

auto original::printable::toCString ( bool  enter) const
inline

Direct C-string access with formatting control.

Parameters
enterAppend newline if true.
Returns
Managed C-string buffer.
Note
The returned pointer is valid until the next call to toCString() or destruction of the object.

◆ toString()

auto original::printable::toString ( bool  enter) const
inlinevirtual

Generates formatted string representation.

Parameters
enterWhether to append newline.
Returns
Formatted string in "ClassName(data)" format.
std::cout << obj.toString(true); // Outputs "printable(@0x7ffd) \n"
std::string toString(bool enter) const override
String representation formatter.
Definition autoPtr.h:724

Reimplemented in original::autoPtr< TYPE, DERIVED, DELETER >, original::autoPtr< asyncWrapper< TYPE >, strongPtr< asyncWrapper< TYPE >, DELETER >, DELETER >, original::autoPtr< asyncWrapper< void >, strongPtr< asyncWrapper< void >, DELETER >, DELETER >, original::autoPtr< original::filter< TYPE >, strongPtr< original::filter< TYPE >, DELETER >, DELETER >, original::autoPtr< TYPE, ownerPtr< TYPE, deleter< TYPE > >, deleter< TYPE > >, original::autoPtr< TYPE, strongPtr< TYPE, DELETER >, DELETER >, original::autoPtr< TYPE, weakPtr< TYPE, DELETER >, DELETER >, original::containerAdapter< TYPE, SERIAL, ALLOC >, original::containerAdapter< original::strongPtr< original::taskDelegator::taskBase >, chain, allocator >, original::containerAdapter< priorityTask, vector, allocator >, original::containerAdapter< TYPE, blocksList, allocator >, original::containerAdapter< TYPE, chain, allocator >, original::couple< F_TYPE, S_TYPE >, original::couple< const K_TYPE, V_TYPE >, original::iterable< TYPE >::iterAdaptor, original::iterationStream< TYPE, DERIVED >, original::iterationStream< bool, bitSet< allocator< bool > > >, original::iterationStream< hashNode *, vector< hashNode *, rebind_alloc_pointer > >, original::iterationStream< opts, chain< opts, allocator< opts > > >, original::iterationStream< original::hashTable::hashNode *, vector< original::hashTable::hashNode *, rebind_alloc_pointer > >, original::iterationStream< original::skipList::skipListNode *, vector< original::skipList::skipListNode *, allocator< original::skipList::skipListNode * > > >, original::iterationStream< original::strongPtr< original::filter< TYPE > >, chain< original::strongPtr< original::filter< TYPE > >, allocator< original::strongPtr< original::filter< TYPE > > > > >, original::iterationStream< original::strongPtr< original::taskDelegator::taskBase >, chain< original::strongPtr< original::taskDelegator::taskBase >, allocator< original::strongPtr< original::taskDelegator::taskBase > > > >, original::iterationStream< original::strongPtr< original::transform< TYPE > >, chain< original::strongPtr< original::transform< TYPE > >, allocator< original::strongPtr< original::transform< TYPE > > > > >, original::iterationStream< original::thread, array< original::thread, allocator< original::thread > > >, original::iterationStream< priorityTask, vector< priorityTask, allocator< priorityTask > > >, original::iterationStream< TYPE *, vector< TYPE *, allocator< TYPE * > > >, original::iterationStream< TYPE, array< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, blocksList< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, chain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, forwardChain< TYPE, allocator< TYPE > > >, original::iterationStream< TYPE, vector< TYPE, allocator< TYPE > > >, original::iterationStream< underlying_type, array< underlying_type, rebind_alloc_underlying > >, original::iterator< TYPE >, original::iterator< bool >, original::iterator< const TYPE >, original::iterator< couple< const K_TYPE, V_TYPE > >, original::hashMap< K_TYPE, V_TYPE, HASH, ALLOC >, original::treeMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::JMap< K_TYPE, V_TYPE, Compare, ALLOC >, original::refCntPtr< TYPE, DERIVED, DELETER >, original::refCntPtr< asyncWrapper< TYPE >, strongPtr< asyncWrapper< TYPE >, DELETER >, DELETER >, original::refCntPtr< asyncWrapper< void >, strongPtr< asyncWrapper< void >, DELETER >, DELETER >, original::refCntPtr< original::filter< TYPE >, strongPtr< original::filter< TYPE >, DELETER >, DELETER >, original::refCntPtr< TYPE, strongPtr< TYPE, DELETER >, DELETER >, original::refCntPtr< TYPE, weakPtr< TYPE, DELETER >, DELETER >, original::hashSet< TYPE, HASH, ALLOC >, original::treeSet< TYPE, Compare, ALLOC >, original::JSet< TYPE, Compare, ALLOC >, original::tuple< TYPES >, original::tuple< MUTEX *... >, original::wrapper< TYPE >, original::wrapper< couple< const K_TYPE, V_TYPE > >, original::threadBase< DERIVED >, original::threadBase< thread >, original::time::duration, original::time::point, and original::time::UTCTime.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const printable p 
)
friend

Stream insertion operator for printable objects.

Parameters
osOutput stream
pPrintable object
Returns
Modified output stream

Enables direct streaming of printable objects to output streams. Uses the object's toString(false) method to generate the output without trailing newline.

std::cout << obj; // Outputs "MyClass(custom_data)"
std::cout << obj << std::endl; // Adds newline separately

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