|
| | 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 |
| |
|
| 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) |
| |
Purpose: The class Array2 represents bi-dimensional arrays of fixed size known at run time. The ranges of indices are user defined.
Class allocates one 1D array storing full data (all Rows and Columns) and extra 1D array storing pointers to each Row.
Warning: Programs clients of such class must be independent of the range of the first element. Then, a C++ for loop must be written like this
for (i = A.LowerRow(); i <= A.UpperRow(); i++) for (j = A.LowerCol(); j <= A.UpperCol(); j++)
Zero-based (size_t) construction mode: NCollection_Array2(size_t theNbRows, size_t theNbCols) creates a zero-based array (LowerRow()==0, LowerCol()==0). In this mode At()/ChangeAt() and STL iterators are the preferred access path – they address elements directly without any offset subtraction. Buffer-reuse variant NCollection_Array2(pointer, size_t, size_t) wraps an existing flat row-major buffer and does NOT own the memory.