Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions
NCollection_HArray2< TheItemType > Class Template Reference

Template class for Handle-managed 2D arrays. Inherits from both NCollection_Array2<TheItemType> and Standard_Transient, providing reference-counted 2D array functionality. More...

#include <NCollection_HArray2.hxx>

Inheritance diagram for NCollection_HArray2< TheItemType >:
Inheritance graph
[legend]

Public Types

typedef NCollection_Array2< TheItemTypeArray2Type
 
typedef TheItemType value_type
 
- Public Types inherited from NCollection_Array2< TheItemType >
typedef NCollection_Allocator< TheItemTypeallocator_type
 Memory allocation.
 
using value_type = typename NCollection_Array1<TheItemType>::value_type
 
using size_type = typename NCollection_Array1<TheItemType>::size_type
 
using difference_type = typename NCollection_Array1<TheItemType>::difference_type
 
using pointer = typename NCollection_Array1<TheItemType>::pointer
 
using const_pointer = typename NCollection_Array1<TheItemType>::const_pointer
 
using reference = typename NCollection_Array1<TheItemType>::reference
 
using const_reference = typename NCollection_Array1<TheItemType>::const_reference
 
using iterator = typename NCollection_Array1<TheItemType>::iterator
 
using const_iterator = typename NCollection_Array1<TheItemType>::const_iterator
 
- Public Types inherited from NCollection_Array1< TheItemType >
typedef NCollection_Allocator< TheItemTypeallocator_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
 
using const_iterator
 
using Iterator = NCollection_Iterator<NCollection_Array1<TheItemType>>
 
- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 

Public Member Functions

 NCollection_HArray2 (const int theRowLow, const int theRowUpp, const int theColLow, const int theColUpp)
 Constructor with bounds.
 
 NCollection_HArray2 (const int theRowLow, const int theRowUpp, const int theColLow, const int theColUpp, const TheItemType &theValue)
 Constructor with bounds and initial value.
 
 NCollection_HArray2 (const Array2Type &theOther)
 Copy constructor from array.
 
const Array2TypeArray2 () const noexcept
 Returns const reference to the underlying array.
 
Array2TypeChangeArray2 () noexcept
 Returns mutable reference to the underlying array.
 
- Public Member Functions inherited from NCollection_Array2< TheItemType >
 NCollection_Array2 () noexcept
 Empty constructor; should be used with caution.
 
 NCollection_Array2 (const int theRowLower, const int theRowUpper, const int theColLower, const int theColUpper)
 Constructor.
 
 NCollection_Array2 (const NCollection_Array2 &theOther)
 Copy constructor.
 
 NCollection_Array2 (NCollection_Array2 &&theOther) noexcept
 Move constructor.
 
 NCollection_Array2 (const TheItemType &theBegin, const int theRowLower, const int theRowUpper, const int theColLower, const int theColUpper)
 C array-based constructor.
 
 NCollection_Array2 (const size_t theNbRows, const size_t theNbCols)
 Zero-based constructor: allocates theNbRows x theNbCols elements with lower bounds 0. Use At()/ChangeAt() or STL iterators for optimal access (no offset subtraction).
 
 NCollection_Array2 (pointer theBegin, const size_t theNbRows, const size_t theNbCols)
 Zero-based buffer-reuse constructor: wraps an existing flat row-major C array. The array does NOT own the buffer and will NOT free it on destruction. Use At()/ChangeAt() or STL iterators for optimal access (no offset subtraction).
 
size_t Size () const noexcept
 Size (number of items).
 
int Length () const noexcept
 Length (legacy int-returning API).
 
int NbRows () const noexcept
 Returns number of rows.
 
int NbColumns () const noexcept
 Returns number of columns.
 
int RowLength () const noexcept
 Returns length of the row, i.e. number of columns.
 
int ColLength () const noexcept
 Returns length of the column, i.e. number of rows.
 
int LowerRow () const noexcept
 LowerRow.
 
int UpperRow () const noexcept
 UpperRow.
 
int LowerCol () const noexcept
 LowerCol.
 
int UpperCol () const noexcept
 UpperCol.
 
void UpdateLowerRow (const int theLowerRow) noexcept
 Updates lower row.
 
void UpdateLowerCol (const int theLowerCol) noexcept
 Updates lower column.
 
void UpdateUpperRow (const int theUpperRow) noexcept
 Updates upper row.
 
void UpdateUpperCol (const int theUpperCol) noexcept
 Updates upper column.
 
NCollection_Array2Assign (const NCollection_Array2 &theOther)
 Replaces this array by a copy of theOther array. Row and column bounds are copied from theOther.
 
NCollection_Array2CopyValues (const NCollection_Array2 &theOther)
 Copies values from theOther array without changing this array bounds. This array should be pre-allocated and have the same dimensions as theOther; otherwise exception Standard_DimensionMismatch is thrown.
 
NCollection_Array2Move (NCollection_Array2 &&theOther) noexcept
 Move assignment. This array will borrow all the data from theOther. The moved object will be left uninitialized and should not be used anymore.
 
NCollection_Array2Move (NCollection_Array2 &theOther) noexcept
 Move assignment. This array will borrow all the data from theOther. The moved object will be left uninitialized and should not be used anymore.
 
NCollection_Array2operator= (const NCollection_Array2 &theOther)
 Assignment operator.
 
NCollection_Array2operator= (NCollection_Array2 &&theOther) noexcept
 Move assignment operator;.
 
const_reference Value (const int theRow, const int theCol) const
 Constant value access.
 
const_reference operator() (const int theRow, const int theCol) const
 operator() - alias to ChangeValue
 
reference ChangeValue (const int theRow, const int theCol)
 Variable value access.
 
reference operator() (const int theRow, const int theCol)
 operator() - alias to ChangeValue
 
void SetValue (const int theRow, const int theCol, const TheItemType &theItem)
 SetValue.
 
void SetValue (const int theRow, const int theCol, TheItemType &&theItem)
 SetValue.
 
const_reference At (const size_t theRow, const size_t theCol) const
 0-based checked access independent of LowerRow()/LowerCol().
 
reference ChangeAt (const size_t theRow, const size_t theCol)
 0-based checked mutable access independent of LowerRow()/LowerCol().
 
template<typename... Args>
reference EmplaceValue (const int theRow, const int theCol, Args &&... theArgs)
 Emplace value at the specified row and column, constructing it in-place.
 
void Resize (int theRowLower, int theRowUpper, int theColLower, int theColUpper, bool theToCopyData)
 Resizes the array to specified bounds. When theToCopyData is false, the array is re-allocated without preserving data. When theToCopyData is true, copies elements in linear (row-major) order. No re-allocation is done if dimensions are unchanged.
 
void ResizeWithTrim (int theRowLower, int theRowUpper, int theColLower, int theColUpper, bool theToCopyData)
 Resizes the array preserving 2D element layout. When theToCopyData is false, the array is re-allocated without preserving data. When theToCopyData is true, copies min(oldNbRows,newNbRows) x min(oldNbCols,newNbCols) elements from the top-left corner of the old array to the top-left corner of the new, preserving relative (row, col) offsets from lower bounds. Trimming or growing as needed. No re-allocation is done if dimensions are unchanged.
 
void Resize (const size_t theNbRows, const size_t theNbCols, const bool theToCopyData)
 Zero-based Resize: resizes to theNbRows x theNbCols, keeping lower bounds unchanged. No re-allocation is done if dimensions are unchanged.
 
void ResizeWithTrim (const size_t theNbRows, const size_t theNbCols, const bool theToCopyData)
 Zero-based ResizeWithTrim: resizes preserving 2D layout, keeping lower bounds unchanged. No re-allocation is done if dimensions are unchanged.
 
- Public Member Functions inherited from NCollection_Array1< TheItemType >
const_iterator begin () const noexcept
 
iterator begin () noexcept
 
const_iterator cbegin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
 NCollection_Array1 () noexcept
 
 NCollection_Array1 (const int theLower, const int theUpper)
 
 NCollection_Array1 (const_reference theBegin, const int theLower, const int theUpper, const bool theUseBuffer=true)
 
 NCollection_Array1 (const size_t theSize)
 Zero-based constructor: allocates theSize elements with lower bound 0. Use At()/ChangeAt() or STL iterators for optimal access (no offset subtraction).
 
 NCollection_Array1 (pointer theBegin, const size_t theSize)
 Zero-based buffer-reuse constructor: wraps an existing C array of theSize elements. The array does NOT own the buffer and will NOT free it on destruction. Use At()/ChangeAt() or STL iterators for optimal access (no offset subtraction).
 
 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.
 
size_t Size () const noexcept
 Size query.
 
int Length () const noexcept
 Length query (legacy int-returning API).
 
bool IsEmpty () const noexcept
 Return TRUE if array has zero length.
 
int Lower () const noexcept
 Lower bound.
 
int Upper () const noexcept
 Upper bound.
 
NCollection_Array1Assign (const NCollection_Array1 &theOther)
 Replaces this array by a copy of theOther array. Bounds and length are copied from theOther. When this array wraps an external (non-owned) buffer:
 
NCollection_Array1CopyValues (const NCollection_Array1 &theOther)
 Copies values from theOther array without changing this array bounds. 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) noexcept
 
NCollection_Array1operator= (const NCollection_Array1 &theOther)
 Assignment operator;.
 
NCollection_Array1operator= (NCollection_Array1 &&theOther) noexcept
 Move assignment operator;.
 
const_reference First () const noexcept
 
reference ChangeFirst () noexcept
 
const_reference Last () const noexcept
 
reference ChangeLast () noexcept
 
const_reference Value (const int theIndex) const
 Constant value access.
 
const_reference operator() (const int theIndex) const
 operator() - alias to Value
 
const_reference operator[] (const int theIndex) const
 operator[] - alias to Value
 
reference ChangeValue (const int theIndex)
 Variable value access.
 
reference operator() (const int theIndex)
 operator() - alias to ChangeValue
 
reference operator[] (const int theIndex)
 operator[] - alias to ChangeValue
 
const_reference At (const size_t theIndex) const
 0-based checked access independent of Lower()/Upper().
 
reference ChangeAt (const size_t theIndex)
 0-based checked mutable access independent of Lower()/Upper().
 
void SetValue (const int theIndex, const value_type &theItem)
 Set value.
 
void SetValue (const int theIndex, value_type &&theItem)
 Set value.
 
template<typename... Args>
reference EmplaceValue (const int theIndex, Args &&... theArgs)
 Emplace value at the specified index, constructing it in-place.
 
void UpdateLowerBound (const int theLower) noexcept
 Changes the lowest bound. Do not move data.
 
void UpdateUpperBound (const int theUpper) noexcept
 Changes the upper bound. Do not move data.
 
void Resize (const int theLower, const int theUpper, const bool 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.
 
void Resize (const size_t theSize, const bool theToCopyData)
 Resizes the array to theSize elements, keeping the lower bound unchanged.
 
bool IsDeletable () const noexcept
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()=default
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
bool IsInstance (const char *const theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
bool IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
bool IsKind (const char *const theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
 
int GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
 
int DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Additional Inherited Members

- Static Public Member Functions inherited from NCollection_Array2< TheItemType >
static int BeginPosition (int theRowLower, int, int theColLower, int theColUpper) noexcept
 
static int LastPosition (int theRowLower, int theRowUpper, int theColLower, int theColUpper) noexcept
 
- Static Public Member Functions inherited from Standard_Transient
static constexpr const charget_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 
- Data Fields inherited from NCollection_Array1< TheItemType >
friend iterator
 
friend const_iterator
 
- Protected Member Functions inherited from NCollection_Array2< TheItemType >
void resizeNoData (int theRowLower, int theRowUpper, int theColLower, int theColUpper)
 Resize without copying data.
 
template<bool thePreserve2D>
void resizeImpl (int theRowLower, int theRowUpper, int theColLower, int theColUpper)
 Internal resize with data copy.
 
- Protected Member Functions inherited from NCollection_Array1< TheItemType >
void resizeImpl (const size_t theNewSize, const int theNewLower, const bool theToCopyData)
 Core resize implementation used by all public Resize() overloads.
 
const_reference at (const size_t theIndex) const
 
reference at (const size_t theIndex)
 
template<typename U = TheItemType>
std::enable_if< std::is_trivially_default_constructible< U >::value, void >::type construct (const size_t, const size_t)
 
template<typename U = TheItemType>
std::enable_if<!std::is_trivially_default_constructible< U >::value, void >::type construct (const size_t theFrom, const size_t theTo)
 
template<typename U = TheItemType>
std::enable_if< std::is_trivially_destructible< U >::value, void >::type destroy (pointer, const size_t, const size_t)
 
template<typename U = TheItemType>
std::enable_if<!std::is_trivially_destructible< U >::value, void >::type destroy (pointer theWhat, const size_t theFrom, const size_t theTo)
 
void assign (const const_pointer theFrom, const size_t theSize, const int theLower)
 
template<typename U = TheItemType>
std::enable_if< std::is_trivially_copyable< U >::value, void >::type copyAssign (pointer theTarget, const_pointer theFrom, const size_t theCount)
 
template<typename U = TheItemType>
std::enable_if<!std::is_trivially_copyable< U >::value, void >::type copyAssign (pointer theTarget, const_pointer theFrom, const size_t theCount)
 
void copyConstruct (const pointer theFrom, const size_t theCount)
 
template<typename U = TheItemType>
std::enable_if< std::is_trivially_copyable< U >::value, void >::type copyConstruct (pointer theTarget, const_pointer theFrom, const size_t theCount)
 
template<typename U = TheItemType>
std::enable_if<!std::is_trivially_copyable< U >::value, void >::type copyConstruct (pointer theTarget, const_pointer theFrom, const size_t theCount)
 
- Protected Attributes inherited from NCollection_Array2< TheItemType >
int myLowerRow
 
size_t mySizeRow
 
int myLowerCol
 
size_t mySizeCol
 
friend iterator
 
friend const_iterator
 
- Protected Attributes inherited from NCollection_Array1< TheItemType >
int myLowerBound
 
size_t mySize
 
pointer myPointer = nullptr
 
bool myIsOwner = false
 
allocator_type myAllocator
 

Detailed Description

template<typename TheItemType>
class NCollection_HArray2< TheItemType >

Template class for Handle-managed 2D arrays. Inherits from both NCollection_Array2<TheItemType> and Standard_Transient, providing reference-counted 2D array functionality.

Member Typedef Documentation

◆ Array2Type

◆ value_type

Constructor & Destructor Documentation

◆ NCollection_HArray2() [1/3]

template<typename TheItemType >
NCollection_HArray2< TheItemType >::NCollection_HArray2 ( const int theRowLow,
const int theRowUpp,
const int theColLow,
const int theColUpp )
inline

Constructor with bounds.

Parameters
theRowLowlower row bound
theRowUppupper row bound
theColLowlower column bound
theColUppupper column bound

◆ NCollection_HArray2() [2/3]

template<typename TheItemType >
NCollection_HArray2< TheItemType >::NCollection_HArray2 ( const int theRowLow,
const int theRowUpp,
const int theColLow,
const int theColUpp,
const TheItemType & theValue )
inline

Constructor with bounds and initial value.

Parameters
theRowLowlower row bound
theRowUppupper row bound
theColLowlower column bound
theColUppupper column bound
theValueinitial value for all elements

◆ NCollection_HArray2() [3/3]

Copy constructor from array.

Parameters
theOtherthe array to copy from

Member Function Documentation

◆ Array2()

template<typename TheItemType >
const Array2Type & NCollection_HArray2< TheItemType >::Array2 ( ) const
inlinenoexcept

Returns const reference to the underlying array.

◆ ChangeArray2()

template<typename TheItemType >
Array2Type & NCollection_HArray2< TheItemType >::ChangeArray2 ( )
inlinenoexcept

Returns mutable reference to the underlying array.


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