8#ifndef HPP_ALIB_CAMP_MESSAGE_EXCEPTION
9#define HPP_ALIB_CAMP_MESSAGE_EXCEPTION 1
11#if !defined (HPP_ALIB_CAMP_MESSAGE_MESSAGE)
17#if !defined (HPP_ALIB_ENUMS_RECORDS)
21#if !defined (HPP_ALIB_LANG_RESOURCES_RESOURCES)
27namespace alib {
namespace lang {
187 template<
typename TIntegral>
188 Exception( TIntegral initialChunkSize,
int chunkGrowthInPercent= 100 )
189 :
SelfContained( static_cast<size_t>(initialChunkSize), chunkGrowthInPercent )
191 static_assert( !std::is_enum<TIntegral>::value,
192 "Erroneous use of Exception constructor. Enumeration element given "
193 "without caller information. Add macro ALIB_CALLER or "
194 "ALIB_CALLER_NULLED as a first argument." );
216 template<
typename TEnum,
typename... TArgs >
218 TEnum type, TArgs&&... args )
221 Add( file,line,func, type, std::forward<TArgs>(args)... );
303 template <
typename TEnum,
typename... TArgs>
inline
308 newMessage->
Add( std::forward<TArgs>( args )... );
367 template<
typename TConstOrMutableMessage>
393 :
p(const_cast<detail::ExceptionEntry*>(entry))
542namespace alib {
namespace strings {
544namespace APPENDABLES {
bool operator!=(IteratorType other) const
detail::ExceptionEntry * p
TConstOrMutableMessage * pointer
Implementation of std::iterator_traits.
IteratorType(detail::ExceptionEntry *_p=nullptr)
bool operator==(IteratorType other) const
std::forward_iterator_tag iterator_category
Implementation of std::iterator_traits.
TConstOrMutableMessage * operator->() const
IteratorType operator++(int)
TConstOrMutableMessage & operator*() const
TConstOrMutableMessage & reference
Implementation of std::iterator_traits.
integer difference_type
Implementation of std::iterator_traits.
IteratorType & operator++()
Exception(Exception &&src) noexcept
ALIB_API Message & Back() const
ALIB_API int Size() const
Exception(Exception &)=delete
ALIB_API const Enum & Type() const
ALIB_API Message * allocMessageLink()
Exception & operator=(Exception &&)=delete
ConstForwardIterator end() const
Exception & Add(const NCString &file, int line, const NCString &func, TEnum type, TArgs &&... args)
Exception(TIntegral initialChunkSize, int chunkGrowthInPercent=100)
Exception operator=(Exception &)=delete
Exception(const NCString &file, int line, const NCString &func, TEnum type, TArgs &&... args)
IteratorType< Message > ForwardIterator
ALIB_API strings::TAString< complementChar > & Format(strings::TAString< complementChar > &target) const
ALIB_API void finalizeMessage(Message *message, bool hasRecord, ResourcePool *pool, const NString &category)
ALIB_API AString & Format(AString &target) const
IteratorType< const Message > ConstForwardIterator
ConstForwardIterator begin() const
MonoAllocator & Allocator()
detail::ExceptionEntry *& Self()
#define ALIB_ASSERT_MODULE(modulename)
#define ATMP_ISOF( T, TBase)
#define ALIB_BOXING_VTABLE_DECLARE(TMapped, Identifier)
#define ATMP_EQ( T, TEqual)
#define ATMP_SELECT_IF_1TP(TParam, ...)
platform_specific integer
@ KeepWithSender
Keeps responsibility, e.g. when passing an object.
ERSerializable() noexcept=default
String DescriptionOrItsResourceName
ERException() noexcept=default
Message message
The message,.
ExceptionEntry * next
A pointer to the next message.
void operator()(TAString< TChar > &target, const lang::Exception &src)