156 template<
typename TIntegral>
157 Exception( TIntegral initialBufferSizeInKB,
int bufferGrowthInPercent= 100 )
158 :
TSharedMonoVal( size_t(initialBufferSizeInKB), bufferGrowthInPercent )
160 static_assert( !std::is_integral<TIntegral>::value,
161 "Erroneous use of Exception constructor overload which expects an integral "
162 "value as first parameter to determine the size of the first memory buffer." );
182 template<
typename TEnum,
typename... TArgs >
187 Add( ci, type, std::forward<TArgs>(args)... );
259 template <
typename TEnum,
typename... TArgs>
inline
264 newMessage->
Add( std::forward<TArgs>( args )... );
329 template<
typename TConstOrMutableMessage>
353 template<
typename TConstEntry>
354 requires std::is_const_v<TConstEntry>
361 template<
typename TMutableIterator>
362 requires std::same_as<TMutableIterator, IteratorType<const Message>>
IteratorType(TConstEntry *entry)
TConstOrMutableMessage & reference
Implementation of std::iterator_traits.
bool operator==(IteratorType other) const
IteratorType & operator++()
std::forward_iterator_tag iterator_category
Implementation of std::iterator_traits.
detail::ExceptionEntry * p
IteratorType operator++(int)
Message value_type
Implementation of std::iterator_traits.
integer difference_type
Implementation of std::iterator_traits.
IteratorType(TMutableIterator it)
IteratorType(detail::ExceptionEntry *_p=nullptr)
TConstOrMutableMessage * pointer
Implementation of std::iterator_traits.
TConstOrMutableMessage & operator*() const
bool operator!=(IteratorType other) const
TConstOrMutableMessage * operator->() const
Exception(Exception &) noexcept=default
Deleted copy constructor. Exceptions must be caught only as references.
IteratorType< Message > ForwardIterator
The mutable iterator exposed by this container.
ALIB_DLL AString & Format(AString &target) const
ALIB_DLL Message & Back() const
ConstForwardIterator end() const
Exception(Exception &&src) noexcept=default
ALIB_DLL Message * allocMessageLink()
ALIB_DLL strings::TAString< complementChar, lang::HeapAllocator > & Format(strings::TAString< complementChar, lang::HeapAllocator > &target) const
Exception & Add(const lang::CallerInfo &ci, TEnum type, TArgs &&... args)
TSharedMonoVal< detail::ExceptionEntry *, HeapAllocator, void > base
Shortcut to the parent class.
IteratorType< const Message > ConstForwardIterator
The constant iterator exposed by this container.
Exception(TIntegral initialBufferSizeInKB, int bufferGrowthInPercent=100)
Exception & operator=(Exception &&) noexcept=default
ALIB_DLL const Enum & Type() const
ConstForwardIterator begin() const
ALIB_DLL void finalizeMessage(Message *message, bool hasRecord, ResourcePool *pool, const NString &category)
Exception & operator=(Exception &) noexcept=default
Exception(const lang::CallerInfo &ci, TEnum type, TArgs &&... args)
ALIB_DLL int Size() const
void ConstructT(TArgs &&... args)
TSharedMonoVal(HeapAllocator &allocator, size_t initialBufferSizeInKB, unsigned int bufferGrowthInPercent)
AllocatorType & GetAllocator() noexcept
#define ALIB_BOXING_VTABLE_DECLARE(TMapped, Identifier)
Internal details of namespace alib::exceptions.
Exception CreateSystemException(const CallerInfo &ci, int errNo)
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
strings::TString< nchar > NString
Type alias in namespace alib.
resources::ResourcePool ResourcePool
Type alias in namespace alib.
boxing::Enum Enum
Type alias in namespace alib.
exceptions::Exception Exception
Type alias in namespace alib.
lang::CallerInfo CallerInfo
Type alias in namespace alib.
strings::TString< character > String
Type alias in namespace alib.
ERSerializable() noexcept=default
Defaulted constructor leaving the record undefined.
void Type
The data type associated with elements of TEnum.
ERException() noexcept=default
Default constructor leaving the record undefined.
String DescriptionOrItsResourceName
ExceptionEntry * next
A pointer to the next message.
Message message
The message,.
static constexpr NString Category()
static constexpr ResourcePool * Pool()
void operator()(TAString< TChar, TAllocator > &target, const exceptions::Exception &src)