Open CASCADE Technology 7.8.2.dev
NCollection_Array1< TheItemType > Class Template Reference

The class NCollection_Array1 represents unidimensional arrays of fixed size known at run time. The range of the index is user defined. An array1 can be constructed with a "C array". This functionality is useful to call methods expecting an Array1. It allows to carry the bounds inside the arrays. More...

#include <NCollection_Array1.hxx>

Inheritance diagram for NCollection_Array1< TheItemType >:

Public Types

typedef NCollection_Allocator< TheItemType > allocator_type
 Memory allocation.
 
using value_type = TheItemType
 
using size_type = size_t
 
using difference_type = size_t
 
using pointer = TheItemType*
 
using const_pointer = const TheItemType*
 
using reference = TheItemType&
 
using const_reference = const TheItemType&
 
using iterator = NCollection_IndexedIterator<std::random_access_iterator_tag, NCollection_Array1, value_type, false>
 
using const_iterator = NCollection_IndexedIterator<std::random_access_iterator_tag, NCollection_Array1, value_type, true>
 
using Iterator = NCollection_Iterator<NCollection_Array1<TheItemType>>
 

Public Member Functions

const_iterator begin () const
 
iterator begin ()
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 
 NCollection_Array1 ()
 
 NCollection_Array1 (const Standard_Integer theLower, const Standard_Integer theUpper)
 
 NCollection_Array1 (const allocator_type &theAlloc, const Standard_Integer theLower, const Standard_Integer theUpper)
 
 NCollection_Array1 (const_reference theBegin, const Standard_Integer theLower, const Standard_Integer theUpper, const bool theUseBuffer=true)
 
 NCollection_Array1 (const NCollection_Array1 &theOther)
 Copy constructor.
 
 NCollection_Array1 (NCollection_Array1 &&theOther) noexcept
 Move constructor.
 
virtual ~NCollection_Array1 ()
 
void Init (const_reference theValue)
 Initialise the items with theValue.
 
Standard_Integer Size () const
 Size query.
 
Standard_Integer Length () const
 Length query (the same)
 
Standard_Boolean IsEmpty () const
 Return TRUE if array has zero length.
 
Standard_Integer Lower () const
 Lower bound.
 
Standard_Integer Upper () const
 Upper bound.
 
NCollection_Array1Assign (const NCollection_Array1 &theOther)
 Copies data of theOther array to this. This array should be pre-allocated and have the same length as theOther; otherwise exception Standard_DimensionMismatch is thrown.
 
NCollection_Array1Move (NCollection_Array1 &&theOther) noexcept
 Move assignment. This array will borrow all the data from theOther. The moved object will keep pointer to the memory buffer and range, but it will not free the buffer on destruction.
 
NCollection_Array1Move (NCollection_Array1 &theOther)
 
NCollection_Array1operator= (const NCollection_Array1 &theOther)
 Assignment operator;.
 
NCollection_Array1operator= (NCollection_Array1 &&theOther) noexcept
 Move assignment operator;.
 
const_reference First () const
 
reference ChangeFirst ()
 
const_reference Last () const
 
reference ChangeLast ()
 
const_reference Value (const Standard_Integer theIndex) const
 Constant value access.
 
const_reference operator() (const Standard_Integer theIndex) const
 operator() - alias to Value
 
const_reference operator[] (const Standard_Integer theIndex) const
 operator[] - alias to Value
 
reference ChangeValue (const Standard_Integer theIndex)
 Variable value access.
 
reference operator() (const Standard_Integer theIndex)
 operator() - alias to ChangeValue
 
reference operator[] (const Standard_Integer theIndex)
 operator[] - alias to ChangeValue
 
void SetValue (const Standard_Integer theIndex, const value_type &theItem)
 Set value.
 
void SetValue (const Standard_Integer theIndex, value_type &&theItem)
 Set value.
 
void UpdateLowerBound (const Standard_Integer theLower)
 Changes the lowest bound. Do not move data.
 
void UpdateUpperBound (const Standard_Integer theUpper)
 Changes the upper bound. Do not move data.
 
void Resize (const Standard_Integer theLower, const Standard_Integer theUpper, const Standard_Boolean theToCopyData)
 Resizes the array to specified bounds. No re-allocation will be done if length of array does not change, but existing values will not be discarded if theToCopyData set to FALSE.
 
bool IsDeletable () const
 

Data Fields

friend iterator
 
friend const_iterator
 

Protected Member Functions

const_reference at (const size_t theIndex) const
 
reference at (const size_t theIndex)
 
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type construct ()
 
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type construct ()
 
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type construct (const size_t, const size_t)
 
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type construct (const size_t theFrom, const size_t theTo)
 
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type destroy ()
 
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type destroy ()
 
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type destroy (pointer, const size_t, const size_t)
 
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type destroy (pointer theWhat, const size_t theFrom, const size_t theTo)
 
void copyConstruct (const pointer theFrom, const size_t theCount)
 

Protected Attributes

Standard_Integer myLowerBound
 
size_t mySize
 
pointer myPointer = nullptr
 
bool myIsOwner = false
 
allocator_type myAllocator
 

Detailed Description

template<class TheItemType>
class NCollection_Array1< TheItemType >

The class NCollection_Array1 represents unidimensional arrays of fixed size known at run time. The range of the index is user defined. An array1 can be constructed with a "C array". This functionality is useful to call methods expecting an Array1. It allows to carry the bounds inside the arrays.

Examples:

Item tab[100]; // an example with a C array
NCollection_Array1<Item> ttab (tab[0], 1, 100);
NCollection_Array1<Item> tttab (ttab(10), 10, 20); // a slice of ttab
#define Item
Definition MAT_ListOfBisector.hxx:116
The class NCollection_Array1 represents unidimensional arrays of fixed size known at run time....
Definition NCollection_Array1.hxx:56

If you want to reindex an array from 1 to Length do:

NCollection_Array1<Item> tab1 (tab (tab.Lower()), 1, tab.Length());

Warning: Programs client of such a class must be independent of the range of the first element. Then, a C++ for loop must be written like this

for (i = A.Lower(); i <= A.Upper(); i++)

Member Typedef Documentation

◆ allocator_type

template<class TheItemType >
NCollection_Allocator<TheItemType> NCollection_Array1< TheItemType >::allocator_type

Memory allocation.

◆ const_iterator

template<class TheItemType >
using NCollection_Array1< TheItemType >::const_iterator = NCollection_IndexedIterator<std::random_access_iterator_tag, NCollection_Array1, value_type, true>

◆ const_pointer

template<class TheItemType >
using NCollection_Array1< TheItemType >::const_pointer = const TheItemType*

◆ const_reference

template<class TheItemType >
using NCollection_Array1< TheItemType >::const_reference = const TheItemType&

◆ difference_type

template<class TheItemType >
using NCollection_Array1< TheItemType >::difference_type = size_t

◆ Iterator

template<class TheItemType >
using NCollection_Array1< TheItemType >::Iterator = NCollection_Iterator<NCollection_Array1<TheItemType>>

◆ iterator

template<class TheItemType >
using NCollection_Array1< TheItemType >::iterator = NCollection_IndexedIterator<std::random_access_iterator_tag, NCollection_Array1, value_type, false>

◆ pointer

template<class TheItemType >
using NCollection_Array1< TheItemType >::pointer = TheItemType*

◆ reference

template<class TheItemType >
using NCollection_Array1< TheItemType >::reference = TheItemType&

◆ size_type

template<class TheItemType >
using NCollection_Array1< TheItemType >::size_type = size_t

◆ value_type

template<class TheItemType >
using NCollection_Array1< TheItemType >::value_type = TheItemType

Constructor & Destructor Documentation

◆ NCollection_Array1() [1/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( )
inline

◆ NCollection_Array1() [2/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( const Standard_Integer theLower,
const Standard_Integer theUpper )
inlineexplicit

◆ NCollection_Array1() [3/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( const allocator_type & theAlloc,
const Standard_Integer theLower,
const Standard_Integer theUpper )
inlineexplicit

◆ NCollection_Array1() [4/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( const_reference theBegin,
const Standard_Integer theLower,
const Standard_Integer theUpper,
const bool theUseBuffer = true )
inlineexplicit

◆ NCollection_Array1() [5/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( const NCollection_Array1< TheItemType > & theOther)
inline

Copy constructor.

◆ NCollection_Array1() [6/6]

template<class TheItemType >
NCollection_Array1< TheItemType >::NCollection_Array1 ( NCollection_Array1< TheItemType > && theOther)
inlinenoexcept

Move constructor.

◆ ~NCollection_Array1()

template<class TheItemType >
virtual NCollection_Array1< TheItemType >::~NCollection_Array1 ( )
inlinevirtual

Member Function Documentation

◆ Assign()

template<class TheItemType >
NCollection_Array1 & NCollection_Array1< TheItemType >::Assign ( const NCollection_Array1< TheItemType > & theOther)
inline

Copies data of theOther array to this. This array should be pre-allocated and have the same length as theOther; otherwise exception Standard_DimensionMismatch is thrown.

◆ at() [1/2]

template<class TheItemType >
reference NCollection_Array1< TheItemType >::at ( const size_t theIndex)
inlineprotected

◆ at() [2/2]

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::at ( const size_t theIndex) const
inlineprotected

◆ begin() [1/2]

template<class TheItemType >
iterator NCollection_Array1< TheItemType >::begin ( )
inline

◆ begin() [2/2]

template<class TheItemType >
const_iterator NCollection_Array1< TheItemType >::begin ( ) const
inline

◆ cbegin()

template<class TheItemType >
const_iterator NCollection_Array1< TheItemType >::cbegin ( ) const
inline

◆ cend()

template<class TheItemType >
const_iterator NCollection_Array1< TheItemType >::cend ( ) const
inline

◆ ChangeFirst()

template<class TheItemType >
reference NCollection_Array1< TheItemType >::ChangeFirst ( )
inline
Returns
first element

◆ ChangeLast()

template<class TheItemType >
reference NCollection_Array1< TheItemType >::ChangeLast ( )
inline
Returns
last element

◆ ChangeValue()

template<class TheItemType >
reference NCollection_Array1< TheItemType >::ChangeValue ( const Standard_Integer theIndex)
inline

Variable value access.

◆ construct() [1/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::construct ( )
inlineprotected

◆ construct() [2/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::construct ( )
inlineprotected

◆ construct() [3/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::construct ( const size_t theFrom,
const size_t theTo )
inlineprotected

◆ construct() [4/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::construct ( const size_t ,
const size_t  )
inlineprotected

◆ copyConstruct()

template<class TheItemType >
void NCollection_Array1< TheItemType >::copyConstruct ( const pointer theFrom,
const size_t theCount )
inlineprotected

◆ destroy() [1/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::destroy ( )
inlineprotected

◆ destroy() [2/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::destroy ( )
inlineprotected

◆ destroy() [3/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if<!std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::destroy ( pointer theWhat,
const size_t theFrom,
const size_t theTo )
inlineprotected

◆ destroy() [4/4]

template<class TheItemType >
template<typename U = TheItemType>
std::enable_if< std::is_arithmetic< U >::value, void >::type NCollection_Array1< TheItemType >::destroy ( pointer ,
const size_t ,
const size_t  )
inlineprotected

◆ end() [1/2]

template<class TheItemType >
iterator NCollection_Array1< TheItemType >::end ( )
inline

◆ end() [2/2]

template<class TheItemType >
const_iterator NCollection_Array1< TheItemType >::end ( ) const
inline

◆ First()

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::First ( ) const
inline
Returns
first element

◆ Init()

template<class TheItemType >
void NCollection_Array1< TheItemType >::Init ( const_reference theValue)
inline

Initialise the items with theValue.

◆ IsDeletable()

template<class TheItemType >
bool NCollection_Array1< TheItemType >::IsDeletable ( ) const
inline

◆ IsEmpty()

template<class TheItemType >
Standard_Boolean NCollection_Array1< TheItemType >::IsEmpty ( ) const
inline

Return TRUE if array has zero length.

◆ Last()

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::Last ( ) const
inline
Returns
last element

◆ Length()

template<class TheItemType >
Standard_Integer NCollection_Array1< TheItemType >::Length ( ) const
inline

Length query (the same)

◆ Lower()

template<class TheItemType >
Standard_Integer NCollection_Array1< TheItemType >::Lower ( ) const
inline

Lower bound.

◆ Move() [1/2]

template<class TheItemType >
NCollection_Array1 & NCollection_Array1< TheItemType >::Move ( NCollection_Array1< TheItemType > && theOther)
inlinenoexcept

Move assignment. This array will borrow all the data from theOther. The moved object will keep pointer to the memory buffer and range, but it will not free the buffer on destruction.

◆ Move() [2/2]

template<class TheItemType >
NCollection_Array1 & NCollection_Array1< TheItemType >::Move ( NCollection_Array1< TheItemType > & theOther)
inline

◆ operator()() [1/2]

template<class TheItemType >
reference NCollection_Array1< TheItemType >::operator() ( const Standard_Integer theIndex)
inline

operator() - alias to ChangeValue

◆ operator()() [2/2]

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::operator() ( const Standard_Integer theIndex) const
inline

operator() - alias to Value

◆ operator=() [1/2]

template<class TheItemType >
NCollection_Array1 & NCollection_Array1< TheItemType >::operator= ( const NCollection_Array1< TheItemType > & theOther)
inline

Assignment operator;.

See also
Assign()

◆ operator=() [2/2]

template<class TheItemType >
NCollection_Array1 & NCollection_Array1< TheItemType >::operator= ( NCollection_Array1< TheItemType > && theOther)
inlinenoexcept

Move assignment operator;.

See also
Move()

◆ operator[]() [1/2]

template<class TheItemType >
reference NCollection_Array1< TheItemType >::operator[] ( const Standard_Integer theIndex)
inline

operator[] - alias to ChangeValue

◆ operator[]() [2/2]

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::operator[] ( const Standard_Integer theIndex) const
inline

operator[] - alias to Value

◆ Resize()

template<class TheItemType >
void NCollection_Array1< TheItemType >::Resize ( const Standard_Integer theLower,
const Standard_Integer theUpper,
const Standard_Boolean theToCopyData )
inline

Resizes the array to specified bounds. No re-allocation will be done if length of array does not change, but existing values will not be discarded if theToCopyData set to FALSE.

Parameters
theLowernew lower bound of array
theUppernew upper bound of array
theToCopyDataflag to copy existing data into new array

◆ SetValue() [1/2]

template<class TheItemType >
void NCollection_Array1< TheItemType >::SetValue ( const Standard_Integer theIndex,
const value_type & theItem )
inline

Set value.

◆ SetValue() [2/2]

template<class TheItemType >
void NCollection_Array1< TheItemType >::SetValue ( const Standard_Integer theIndex,
value_type && theItem )
inline

Set value.

◆ Size()

template<class TheItemType >
Standard_Integer NCollection_Array1< TheItemType >::Size ( ) const
inline

Size query.

◆ UpdateLowerBound()

template<class TheItemType >
void NCollection_Array1< TheItemType >::UpdateLowerBound ( const Standard_Integer theLower)
inline

Changes the lowest bound. Do not move data.

◆ UpdateUpperBound()

template<class TheItemType >
void NCollection_Array1< TheItemType >::UpdateUpperBound ( const Standard_Integer theUpper)
inline

Changes the upper bound. Do not move data.

◆ Upper()

template<class TheItemType >
Standard_Integer NCollection_Array1< TheItemType >::Upper ( ) const
inline

Upper bound.

◆ Value()

template<class TheItemType >
const_reference NCollection_Array1< TheItemType >::Value ( const Standard_Integer theIndex) const
inline

Constant value access.

Field Documentation

◆ const_iterator

template<class TheItemType >
friend NCollection_Array1< TheItemType >::const_iterator

◆ iterator

template<class TheItemType >
friend NCollection_Array1< TheItemType >::iterator

◆ myAllocator

template<class TheItemType >
allocator_type NCollection_Array1< TheItemType >::myAllocator
protected

◆ myIsOwner

template<class TheItemType >
bool NCollection_Array1< TheItemType >::myIsOwner = false
protected

◆ myLowerBound

template<class TheItemType >
Standard_Integer NCollection_Array1< TheItemType >::myLowerBound
protected

◆ myPointer

template<class TheItemType >
pointer NCollection_Array1< TheItemType >::myPointer = nullptr
protected

◆ mySize

template<class TheItemType >
size_t NCollection_Array1< TheItemType >::mySize
protected

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