bux API Reference 1.9.0
Static library of whatever are seen required in general purpose but not directly supported from Modern C++. Or whatever reusable originated from my side projects.
Loading...
Searching...
No Matches
Xtack.h File Reference
#include <iterator>
#include <ostream>
#include <string>
Include dependency graph for Xtack.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  bux::C_StackBase< T >
 Any given type is safely instantiated even though C_DtorFreeStack<T> does better for bytewise types. More...
 
class  bux::C_Stack< T >
 A much more succinct substitute of std::stack<std::vector<T> > More...
 
class  bux::C_ResourceStack< T >
 If ctor of type T properly handles ownership transfer, so does C_ResourceStack<T> More...
 
class  bux::C_DtorFreeStack< T >
 Safe instantiation for types which's destructor does exactly nothing. More...
 

Namespaces

namespace  bux
 THE common namespace of bux library.
 

Macros

#define SPECIALIZE_DTORFREESTACK(classX, X)
 

Functions

template<class T >
bool bux::operator< (const C_Stack< T > &a, const C_Stack< T > &b) noexcept
 Lexical comparison.
 
template<class T >
bool bux::operator== (const C_Stack< T > &a, const C_Stack< T > &b) noexcept
 
template<class T >
bool bux::operator!= (const C_Stack< T > &a, const C_Stack< T > &b) noexcept
 
template<class T >
void bux::operator+= (C_Stack< T > &a, const C_Stack< T > &b)
 
template<class T >
void bux::operator+= (C_Stack< T > &out, const T *s)
 
template<class T >
void bux::operator+= (C_ResourceStack< T > &a, C_StackBase< T > &b)
 
template<class T >
auto & bux::operator<< (C_Stack< T > &a, const C_Stack< T > &b)
 
template<class T >
auto & bux::operator<< (C_Stack< T > &out, const T *s)
 
template<class T >
auto & bux::operator<< (C_ResourceStack< T > &a, C_StackBase< T > &b)
 
template<class T >
auto & bux::operator<< (C_Stack< T > &out, const T &c)
 
template<class T >
auto & bux::operator<< (C_ResourceStack< T > &out, T &t)
 
template<class T >
auto & bux::operator<< (std::basic_ostream< T > &out, const C_Stack< T > &s)
 
 SPECIALIZE_DTORFREESTACK (, bool) SPECIALIZE_DTORFREESTACK(
 
char SPECIALIZE_DTORFREESTACK (, unsigned char) SPECIALIZE_DTORFREESTACK(
 
char signed char SPECIALIZE_DTORFREESTACK (, wchar_t) SPECIALIZE_DTORFREESTACK(
 
char signed char short SPECIALIZE_DTORFREESTACK (, unsigned short) SPECIALIZE_DTORFREESTACK(
 
char signed char short int SPECIALIZE_DTORFREESTACK (, unsigned int) SPECIALIZE_DTORFREESTACK(
 
char signed char short int long SPECIALIZE_DTORFREESTACK (, unsigned long) SPECIALIZE_DTORFREESTACK(class T
 

Macro Definition Documentation

◆ SPECIALIZE_DTORFREESTACK

#define SPECIALIZE_DTORFREESTACK ( classX,
X )
Value:
namespace bux { \
template<classX> struct C_Stack<X>: C_DtorFreeStack<X> \
{ \
C_Stack() \
{} \
C_Stack(const C_Stack &other) \
{ push(other.begin(), other.size()); } \
template<class T_Elem> C_Stack(T_Elem const *p) \
{ push(p, std::char_traits<T_Elem>::length(p)); } \
template<class T_Elem> C_Stack(T_Elem const *p, size_t n) \
{ push(p, n); } \
template<class T_Iter> C_Stack(T_Iter beg, T_Iter end) \
{ push(beg, end); } \
C_Stack &operator=(const C_Stack &other) \
{ assign(other.begin(), other.size()); return *this; } \
C_Stack &operator=(X const *s) \
{ assign(s, std::char_traits<X>::length(s)); return *this; }\
}; }
void assign(T_Iter beg, T_Iter end)
Definition Xtack.h:40
auto end() const noexcept
Definition Xtack.h:55
C_Stack(size_t minAlloc=4) noexcept
Definition Xtack.h:102
auto & push()
Definition Xtack.h:114
C_Stack & operator=(const C_Stack &other)
Definition Xtack.h:112
THE common namespace of bux library.
Definition AtomiX.cpp:3

Definition at line 479 of file Xtack.h.

Function Documentation

◆ SPECIALIZE_DTORFREESTACK() [1/6]

SPECIALIZE_DTORFREESTACK ( bool )

◆ SPECIALIZE_DTORFREESTACK() [2/6]

char SPECIALIZE_DTORFREESTACK ( unsigned char )

◆ SPECIALIZE_DTORFREESTACK() [3/6]

char signed char short int SPECIALIZE_DTORFREESTACK ( unsigned int )

◆ SPECIALIZE_DTORFREESTACK() [4/6]

char signed char short int long SPECIALIZE_DTORFREESTACK ( unsigned long )

◆ SPECIALIZE_DTORFREESTACK() [5/6]

char signed char short SPECIALIZE_DTORFREESTACK ( unsigned short )

◆ SPECIALIZE_DTORFREESTACK() [6/6]

char signed char SPECIALIZE_DTORFREESTACK ( wchar_t )