1038 |
class T_accessor> // T_accessor is either IntArrayAccessor or RealArrayAccessor |
class T_accessor> // T_accessor is either IntArrayAccessor or RealArrayAccessor |
1039 |
class ArrElemRef : protected ArrElemPOD<T_array> { |
class ArrElemRef : protected ArrElemPOD<T_array> { |
1040 |
public: |
public: |
1041 |
typedef ScalarNmbrVal<T_value> ScalarNmbrVal; |
typedef ::LinuxSampler::ScalarNmbrVal<T_value> ScalarNmbrVal; // GCC 8.x requires this very detailed form of typedef (that is ::LinuxSampler:: as prefix), IMO a GCC bug |
1042 |
|
|
1043 |
inline ArrElemRef(T_array* a, vmint index) { |
inline ArrElemRef(T_array* a, vmint index) { |
1044 |
this->m_array = a; |
this->m_array = a; |
1131 |
public: |
public: |
1132 |
typedef std::random_access_iterator_tag iterator_category; |
typedef std::random_access_iterator_tag iterator_category; |
1133 |
typedef ssize_t difference_type; |
typedef ssize_t difference_type; |
1134 |
typedef ArrElemRef<T_array, T_value, T_accessor> ArrElemRef; |
typedef ::LinuxSampler::ArrElemRef<T_array, T_value, T_accessor> ArrElemRef; // GCC 8.x requires this very detailed form of typedef (that is ::LinuxSampler:: as prefix), IMO a GCC bug |
1135 |
typedef ArrElemRef reference; // type used by STL for access by reference |
typedef ArrElemRef reference; // type used by STL for access by reference |
1136 |
typedef void pointer; // type used by STL for -> operator result, we don't use that operator at all so just void it |
typedef void pointer; // type used by STL for -> operator result, we don't use that operator at all so just void it |
1137 |
typedef ScalarNmbrVal<T_value> value_type; // type used by STL for temporary values |
typedef ScalarNmbrVal<T_value> value_type; // type used by STL for temporary values |
1212 |
typedef ArrExprIter<VMRealArrayExpr,vmfloat,RealArrayAccessor> RealArrExprIter; |
typedef ArrExprIter<VMRealArrayExpr,vmfloat,RealArrayAccessor> RealArrExprIter; |
1213 |
|
|
1214 |
// intentionally not a template function to avoid potential clashes with other (i.e. system's) swap() functions |
// intentionally not a template function to avoid potential clashes with other (i.e. system's) swap() functions |
1215 |
static inline void swap(IntArrExprIter::ArrElemRef a, |
inline void swap(IntArrExprIter::ArrElemRef a, |
1216 |
IntArrExprIter::ArrElemRef b) |
IntArrExprIter::ArrElemRef b) |
1217 |
{ |
{ |
1218 |
vmint valueA = a.getPrimValue(); |
vmint valueA = a.getPrimValue(); |
1219 |
vmint valueB = b.getPrimValue(); |
vmint valueB = b.getPrimValue(); |
1226 |
} |
} |
1227 |
|
|
1228 |
// intentionally not a template function to avoid potential clashes with other (i.e. system's) swap() functions |
// intentionally not a template function to avoid potential clashes with other (i.e. system's) swap() functions |
1229 |
static inline void swap(RealArrExprIter::ArrElemRef a, |
inline void swap(RealArrExprIter::ArrElemRef a, |
1230 |
RealArrExprIter::ArrElemRef b) |
RealArrExprIter::ArrElemRef b) |
1231 |
{ |
{ |
1232 |
vmfloat valueA = a.getPrimValue(); |
vmfloat valueA = a.getPrimValue(); |
1233 |
vmfloat valueB = b.getPrimValue(); |
vmfloat valueB = b.getPrimValue(); |