Subversion Repositories gelsvn

Rev

Rev 632 | Rev 634 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 632 Rev 633
Line 134... Line 134...
134
        {
134
        {
135
            assert(i<N);
135
            assert(i<N);
136
            return data[i];
136
            return data[i];
137
        }
137
        }
138
        
138
        
-
 
139
        typedef typename std::array<T,N>::iterator iterator;
-
 
140
        typedef typename std::array<T,N>::const_iterator const_iterator;
-
 
141
        
139
        
142
        
140
        /** Get a pointer to first element in data array.
143
        /** Get a pointer to first element in data array.
141
         This function may be useful when interfacing with some other API
144
         This function may be useful when interfacing with some other API
142
         such as OpenGL (TM) */
145
         such as OpenGL (TM) */
143
        T* get() {return begin();}
146
        iterator begin() {return data.begin();}
144
        T* begin() {return data.begin();}
147
        iterator end() {return data.end();}
145
        T* end() {return data.end();}
148
        T* get() {return data.data();}
146
        
149
        
147
        /** Get a const pointer to first element in data array.
150
        /** Get a const pointer to first element in data array.
148
         This function may be useful when interfacing with some other API
151
         This function may be useful when interfacing with some other API
149
         such as OpenGL (TM). */
152
         such as OpenGL (TM). */
150
        const T* get() const {return data.begin();}
153
        const_iterator begin() const {return data.begin();}
151
        const T* begin() const {return data.begin();}
154
        const_iterator end() const {return data.end();}
152
        const T* end() const {return data.end();}
155
        const T* get() const {return data.data();}
153
        
156
        
154
        //----------------------------------------------------------------------
157
        //----------------------------------------------------------------------
155
        // Comparison operators
158
        // Comparison operators
156
        //----------------------------------------------------------------------
159
        //----------------------------------------------------------------------
157
        
160
        
Line 222... Line 225...
222
        //----------------------------------------------------------------------
225
        //----------------------------------------------------------------------
223
        
226
        
224
        /// Assignment multiplication with scalar.
227
        /// Assignment multiplication with scalar.
225
        const V& operator *=(T k)
228
        const V& operator *=(T k)
226
        {
229
        {
227
            std::for_each(begin(), end(), [k](T& x){x*=k;});
230
            for(auto& x : data) {x*=k;}
228
            return static_cast<const V&>(*this);
231
            return static_cast<const V&>(*this);
229
        }
232
        }
230
        
233
        
231
        /// Assignment division with scalar.
234
        /// Assignment division with scalar.
232
        const V& operator /=(T k)
235
        const V& operator /=(T k)
233
        {
236
        {
234
            std::for_each(begin(), end(), [k](T& x){x/=k;});
237
            for(auto& x : data) {x/=k;}
235
            return static_cast<const V&>(*this);
238
            return static_cast<const V&>(*this);
236
        }
239
        }
237
        
240
        
238
        /// Assignment addition with scalar. Adds scalar to each coordinate.
241
        /// Assignment addition with scalar. Adds scalar to each coordinate.
239
        const V& operator +=(T k)
242
        const V& operator +=(T k)
240
        {
243
        {
241
            std::for_each(begin(), end(), [k](T& x){x+=k;});
244
            for(auto& x : data) {x+=k;}
242
            return  static_cast<const V&>(*this);
245
            return  static_cast<const V&>(*this);
243
        }
246
        }
244
        
247
        
245
        /// Assignment subtraction with scalar. Subtracts scalar from each coord.
248
        /// Assignment subtraction with scalar. Subtracts scalar from each coord.
246
        const V& operator -=(T k)
249
        const V& operator -=(T k)
247
        {
250
        {
248
            std::for_each(begin(), end(), [k](T& x){x-=k;});
251
            for(auto& x : data) {x-=k;}
249
            return  static_cast<const V&>(*this);
252
            return  static_cast<const V&>(*this);
250
        }
253
        }
251
        
254
        
252
        /** Assignment multiplication with vector.
255
        /** Assignment multiplication with vector.
253
         Multiply each coord independently. */
256
         Multiply each coord independently. */