Use new range check macro in NgArray

This commit is contained in:
Matthias Hochsteger 2024-02-14 09:47:37 +01:00
parent 5b6a659356
commit 451e59afa2

View File

@ -11,6 +11,7 @@
namespace netgen namespace netgen
{ {
using namespace ngcore;
// template <class T, int B1, int B2> class IndirectArray; // template <class T, int B1, int B2> class IndirectArray;
template <class TA1, class TA2> class NgIndirectArray; template <class TA1, class TA2> class NgIndirectArray;
@ -111,11 +112,7 @@ namespace netgen
/// Access array. BASE-based /// Access array. BASE-based
T & operator[] (TIND i) const T & operator[] (TIND i) const
{ {
#ifdef DEBUG NETGEN_CHECK_RANGE(i,BASE,size+BASE);
if (i-BASE < 0 || i-BASE >= size)
cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << endl;
#endif
return data[i-BASE]; return data[i-BASE];
} }
@ -130,13 +127,7 @@ namespace netgen
/// Access array, one-based (old fashioned) /// Access array, one-based (old fashioned)
T & Elem (int i) T & Elem (int i)
{ {
#ifdef DEBUG NETGEN_CHECK_RANGE(i,1,size+1);
if (i < 1 || i > size)
cout << "NgArray<" << typeid(T).name()
<< ">::Elem out of range, i = " << i
<< ", s = " << size << endl;
#endif
return ((T*)data)[i-1]; return ((T*)data)[i-1];
} }
@ -144,30 +135,21 @@ namespace netgen
// [[deprecated("Use operator[] instead")]] // [[deprecated("Use operator[] instead")]]
const T & Get (int i) const const T & Get (int i) const
{ {
#ifdef DEBUG NETGEN_CHECK_RANGE(i,1,size+1);
if (i < 1 || i > size)
cout << "NgArray<" << typeid(T).name() << ">::Get out of range, i = " << i
<< ", s = " << size << endl;
#endif
return ((const T*)data)[i-1]; return ((const T*)data)[i-1];
} }
/// Access array, one-based (old fashioned) /// Access array, one-based (old fashioned)
void Set (int i, const T & el) void Set (int i, const T & el)
{ {
#ifdef DEBUG NETGEN_CHECK_RANGE(i,1,size+1);
if (i < 1 || i > size)
cout << "NgArray<" << typeid(T).name() << ">::Set out of range, i = " << i
<< ", s = " << size << endl;
#endif
((T*)data)[i-1] = el; ((T*)data)[i-1] = el;
} }
/// access first element /// access first element
T & First () const T & First () const
{ {
NETGEN_CHECK_RANGE(0,0,size);
return data[0]; return data[0];
} }
@ -175,6 +157,7 @@ namespace netgen
/// access last element. check by macro CHECK_RANGE /// access last element. check by macro CHECK_RANGE
T & Last () const T & Last () const
{ {
NETGEN_CHECK_RANGE(size-1,0,size);
return data[size-1]; return data[size-1];
} }
@ -345,10 +328,7 @@ namespace netgen
/// Delete element i (0-based). Move last element to position i. /// Delete element i (0-based). Move last element to position i.
void Delete (TIND i) void Delete (TIND i)
{ {
#ifdef CHECK_Array_RANGE NETGEN_CHECK_RANGE(i,0,size);
RangeCheck (i+1);
#endif
data[i] = std::move(data[size-1]); data[i] = std::move(data[size-1]);
size--; size--;
// DeleteElement (i+1); // DeleteElement (i+1);
@ -358,10 +338,7 @@ namespace netgen
/// Delete element i (1-based). Move last element to position i. /// Delete element i (1-based). Move last element to position i.
void DeleteElement (TIND i) void DeleteElement (TIND i)
{ {
#ifdef CHECK_Array_RANGE NETGEN_CHECK_RANGE(i,1,size+1);
RangeCheck (i);
#endif
data[i-1] = std::move(data[size-1]); data[i-1] = std::move(data[size-1]);
size--; size--;
} }