Template class for Handle-managed 2D arrays. Inherits from both NCollection_Array2<TheItemType> and Standard_Transient, providing reference-counted 2D array functionality.
More...
|
| | 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 Array2Type & | Array2 () const noexcept |
| | Returns const reference to the underlying array.
|
| |
| Array2Type & | ChangeArray2 () noexcept |
| | Returns mutable reference to the underlying array.
|
| |
| | 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_Array2 & | Assign (const NCollection_Array2 &theOther) |
| | Replaces this array by a copy of theOther array. Row and column bounds are copied from theOther.
|
| |
| NCollection_Array2 & | CopyValues (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_Array2 & | Move (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_Array2 & | Move (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_Array2 & | operator= (const NCollection_Array2 &theOther) |
| | Assignment operator.
|
| |
| NCollection_Array2 & | operator= (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.
|
| |
| 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_Array1 & | Assign (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_Array1 & | CopyValues (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_Array1 & | Move (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_Array1 & | Move (NCollection_Array1 &theOther) noexcept |
| |
| NCollection_Array1 & | operator= (const NCollection_Array1 &theOther) |
| | Assignment operator;.
|
| |
| NCollection_Array1 & | operator= (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_Transient & | operator= (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_Transient * | This () 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.
|
| |
|
| 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 char * | get_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.
|
| |
| friend | iterator |
| |
| friend | const_iterator |
| |
| 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.
|
| |
| 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) |
| |
| int | myLowerRow |
| |
| size_t | mySizeRow |
| |
| int | myLowerCol |
| |
| size_t | mySizeCol |
| |
| friend | iterator |
| |
| friend | const_iterator |
| |
| int | myLowerBound |
| |
| size_t | mySize |
| |
| pointer | myPointer = nullptr |
| |
| bool | myIsOwner = false |
| |
| allocator_type | myAllocator |
| |