TmpBlock< T > Class Template Reference

#include <block.h>

Inheritance diagram for TmpBlock< T >:

Detailed Description

template<typename T>
class maxon::TmpBlock< T >

To pass a temporary block of values (given by an initializer list) to a function parameter of type Block<const T>, you have to construct the temporary block as a TmpBlock<T> (which has Block as its base class). For safety reasons, Block<const T> itself can't be constructed from an initializer list.

void Func1(const Block<const Int>& values);
Func1(TmpBlock<Int>{1, 4, 42});

If the compiler can deduce the correct type, T can be omitted. That's not the case in the previous example, because the compiler would deduce int from the given values 1, 4, 42, which is different from Int. But in the following example the compiler deduces the correct type String:

void Func2(const Block<const String>& values);
Func2(TmpBlock{"A"_s, "B"_s});
MAXON_IMPLICIT TmpBlock(const std::initializer_list< T > &list)
Definition: block.h:1126

For basic functions which are often used with temporary blocks, it may make sense to provide an overload for TmpBlock to simplify call sites:

Int SomeBasicFunction(const Block<const String>& values);
Int SomeBasicFunction(TmpBlock<String>&& values) { return SomeBasicFunction(values.ToBlock()); }
SomeBasicFunction({"A"_s, "B"_s});
Int64 Int
signed 32/64 bit int, size depends on the platform
Definition: apibase.h:196
Template Parameters
TType of elements of the block. This has to be a non-const type, but the underlying Block will have element type const T.

Public Member Functions

MAXON_IMPLICIT TmpBlock (const std::initializer_list< T > &list)
 
 MAXON_DISALLOW_COPY_AND_ASSIGN (TmpBlock)
 
const Block< const T > & ToBlock ()
 
- Public Member Functions inherited from Block< const T >
MAXON_ATTRIBUTE_FORCE_INLINE Block ()
 
constexpr MAXON_ATTRIBUTE_FORCE_INLINE Block (const T *ptr, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType))
 
MAXON_ATTRIBUTE_FORCE_INLINE Block (Iterator start, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType))
 
MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT Block (const T(&array)[N])
 
MAXON_ATTRIBUTE_FORCE_INLINE Block (ANY1 *ptr, Int size)
 
MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT Block (const Block< ANY > &src)
 
MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT Block (ANY(&array)[N])
 
 Block (const Block &src)=default
 
Blockoperator= (const Block &src)=default
 
Result< void > CopyFrom (const Block &src)=delete
 
 operator ArrayImpl< Block & > ()=delete
 
 operator ArrayImpl< const Block & > () const=delete
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetStride () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsStrided () const
 
void Set (const T *ptr, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType))
 
void Reset ()
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< STRIDED, DeleteReturnType01, Block< const T, true, MOVE >>::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< STRIDED||CONSTBLOCK, DeleteReturnType02, Block< const const T, true, MOVE >>::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< CONSTBLOCK, DeleteReturnType03, const Block< const const T, STRIDED, MOVE > & >::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< STRIDED||!MOVE, DeleteReturnType04, Block< const T, true, false >>::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< STRIDED||!MOVE||CONSTBLOCK, DeleteReturnType05, Block< const const T, true, false >>::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional<!MOVE||CONSTBLOCK, DeleteReturnType06, const Block< const const T, STRIDED, false > & >::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional<!MOVE, DeleteReturnType07, const Block< const T, STRIDED, false > & >::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< GENERIC, DeleteReturnType08, const Block< typename InheritConst< Generic, const T >::type, STRIDED > & >::type () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< BYTE_OR_CHAR, const Block< typename InheritConst< SwapByteChar, const T >::type, STRIDED >, DeleteReturnType09 >::type & () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator typename std::conditional< BYTE_OR_CHAR &&!CONSTBLOCK, const Block< const SwapByteChar, STRIDED >, const DeleteReturnType09 >::type & () const
 
MAXON_ATTRIBUTE_FORCE_INLINE const T * GetFirst () const
 
MAXON_ATTRIBUTE_FORCE_INLINE void SetFirst (const T *value)
 
MAXON_ATTRIBUTE_FORCE_INLINE const T * GetLast () const
 
MAXON_ATTRIBUTE_FORCE_INLINE const T & operator[] (Int index) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Block Slice (Int start) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Block Slice (Int start, Int end) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool StartsWith (const Block &prefix) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool EndsWith (const Block &suffix) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Iterator Begin () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Iterator End () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetCapacityCount () const
 
Result< void > CopyValuesFrom (const Block< T2, S2, M2 > &other)
 
Result< void > ConstructValuesFrom (const Block< T2, S2, M2 > &other)
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetMemorySize () const
 
Int GetBlock (Int index, Block< const const T, false > &block) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int index, typename std::conditional< CONSTBLOCK, DeleteReturnType01, Block< const T, false > & >::type block) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int index, typename std::conditional< CONSTBLOCK, DeleteReturnType02, StridedBlock< const T > & >::type block) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Int GetBlock (Int index, StridedBlock< const const T > &block) const
 
UniqueHash GetUniqueHashCode () const
 
void CombineUniqueHash (UniqueHasher &hash) const
 
std::enable_if<!STRIDED &&std::is_same< BLOCK, Block >::value, Bool >::type IsEqualImpl (const BLOCK &other, COMPARE &&cmp, OverloadRank1) const
 
MAXON_ATTRIBUTE_FORCE_INLINE const T * GetPtr (Int index) const
 
- Public Member Functions inherited from ArrayBase< Block< const T, STRIDED, MOVE >, const T, BlockBase< const T, STRIDED >, DefaultCompare >
constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase (ARGS &&... args)
 
ArrayImpl< Block< const T, STRIDED, MOVE > & > ToArray ()
 
ArrayImpl< const Block< const T, STRIDED, MOVE > & > ToArray () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< Block< const T, STRIDED, MOVE > & > ()
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< const Block< const T, STRIDED, MOVE > & > () const
 
- Public Member Functions inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
template<typename... ARGS>
constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 (ARGS &&... args)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator< (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator<= (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator> (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator>= (const COLLECTION2 &other) const
 
template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, COMPARERESULT >::type Compare (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsValidIndex (Int index) const
 
Result< void > CheckValidIndex (Int index) const
 
Int FindIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
 
Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v) const
 
Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
 
Bool EraseFirst (typename ByValueParam< VALUETYPE >::type v)
 
Int EraseAll (typename ByValueParam< VALUETYPE >::type v)
 
template<typename COLLECTION2 >
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > InsertAll (Int index, COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
Result< void > Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
Result< void > CopyValuesFrom (const COLLECTION2 &src, Int srcStart=0, Int start=0, Int count=-1)
 
template<typename COLLECTION2 >
Result< void > SubtractImpl (COLLECTION2 &&other, OverloadRank0)
 
template<typename COLLECTION2 , typename COMPARE >
Bool IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
 
template<typename COLLECTION2 , typename COMPARE >
COMPARERESULT CompareImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
 
HashInt GetHashCode () const
 
UniqueHash GetUniqueHashCode () const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start) const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start, Int end)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start, Int end) const
 
BlockIterator< COLLECTION, VALUETYPE, false, false > GetBlocks ()
 
BlockIterator< COLLECTION, VALUETYPE, true, false > GetBlocks () const
 
BlockIterator< COLLECTION, VALUETYPE, false, true > GetStridedBlocks ()
 
BlockIterator< COLLECTION, VALUETYPE, true, true > GetStridedBlocks () const
 
- Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
template<typename... ARGS>
MAXON_ATTRIBUTE_FORCE_INLINE Collection (ARGS &&... args)
 
ResultOk< void > VariadicAppend ()
 
template<typename V , typename... VALUES>
Result< void > VariadicAppend (V &&value, VALUES &&... rest)
 
 operator ValueReceiver< const VALUETYPE & > ()
 
 operator ValueReceiver< VALUETYPE && > ()
 
 operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, VALUETYPE)
 
DummyParamType & type ()
 
template<typename FN >
Result< BoolForEach (FN &&callback) const
 
template<typename FN >
Result< BoolForEach (FN &&callback)
 
template<typename H = COLLECTION>
H::Iterator Find (typename ByValueParam< VALUETYPE >::type v)
 
template<typename H = COLLECTION>
H::ConstIterator Find (typename ByValueParam< VALUETYPE >::type v) const
 
Int FindIndex (typename ByValueParam< VALUETYPE >::type v) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool Contains (typename ByValueParam< VALUETYPE >::type v) const
 
- Public Member Functions inherited from BaseCollection< COLLECTION, SUPER >
template<typename... ARGS>
MAXON_ATTRIBUTE_FORCE_INLINE BaseCollection (ARGS &&... args)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator== (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator!= (const COLLECTION2 &other) const
 
template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!STD_IS_REPLACEMENT(same, typename std::decay< COMPARE >::type, EQUALITY), Bool >::type IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Subtract (COLLECTION2 &&other)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Intersect (const COLLECTION2 &other)
 
template<typename COLLECTION2 >
Bool Intersects (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > IntersectImpl (COLLECTION2 &&other, OverloadRank0)
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEmpty () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsPopulated () const
 
String ToString (const FormatStatement *formatStatement=nullptr) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Bool ContainsAll (COLLECTION2 &&other) const
 
template<typename COLLECTION2 >
Bool ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const
 

Additional Inherited Members

- Public Types inherited from Block< const T >
using Super = ArrayBase< Block< const T, STRIDED, MOVE >, const T, BlockBase< const T, STRIDED >, DefaultCompare >
 
using StrideType = typename std::conditional< GENERIC, Char, const T >::type
 
using Iterator = BaseIterator< Block, STRIDED >
 
using ConstIterator = BaseIterator< Block, STRIDED >
 
using SwapByteChar = typename std::conditional< std::is_same< const Byte, const const T >::value, Char, Byte >::type
 
- Public Types inherited from Collection< COLLECTION, VALUETYPE, SUPER >
using Super = BaseCollection< COLLECTION, SUPER >
 
using ValueType = VALUETYPE
 
- Public Types inherited from BaseCollection< COLLECTION, SUPER >
using IsCollection = std::true_type
 
using IsBaseArray = std::false_type
 
- Static Public Member Functions inherited from Block< const T >
static const BlockDefaultValueRef ()
 
- Static Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
static const VALUETYPEGetMapKey (const VALUETYPE &key)
 
- Public Attributes inherited from Collection< COLLECTION, VALUETYPE, SUPER >
 VALUETYPE
 
- Static Public Attributes inherited from Block< const T >
static constexpr Bool GENERIC
 
static constexpr Bool CONSTBLOCK
 
static constexpr Bool BYTE_BLOCK
 
static constexpr Bool BYTE_OR_CHAR
 
- Static Public Attributes inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
static const COLLECTION_KIND KIND
 

Constructor & Destructor Documentation

◆ TmpBlock()

MAXON_IMPLICIT TmpBlock ( const std::initializer_list< T > &  list)

Member Function Documentation

◆ MAXON_DISALLOW_COPY_AND_ASSIGN()

MAXON_DISALLOW_COPY_AND_ASSIGN ( TmpBlock< T >  )

◆ ToBlock()

const Block<const T>& ToBlock ( )