diff -r 5f371025658c -r f767bd5f4cfc egl/sfopenvg/riArray.h --- a/egl/sfopenvg/riArray.h Fri Jul 16 18:54:03 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,211 +0,0 @@ -#ifndef __RIARRAY_H -#define __RIARRAY_H - -/*------------------------------------------------------------------------ - * - * OpenVG 1.1 Reference Implementation - * ----------------------------------- - * - * Copyright (c) 2007 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and /or associated documentation files - * (the "Materials "), to deal in the Materials without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Materials, - * and to permit persons to whom the Materials are furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR - * THE USE OR OTHER DEALINGS IN THE MATERIALS. - * - *//** - * \file - * \brief Array class. - * \note - *//*-------------------------------------------------------------------*/ - -#ifndef __RIDEFS_H -#include "riDefs.h" -#endif - -#include //for memcpy - -namespace OpenVGRI -{ - -//======================================================================= - -/*-------------------------------------------------------------------*//*! -* \brief An array class similar to std::vector. -* \param -* \return -* \note Follows std::vector's naming convention (except resizeAndReallocate). -*//*-------------------------------------------------------------------*/ - -template class Array -{ -public: - Array() : m_array(NULL), m_size(0), m_allocated(0) {} //throws bad_alloc - ~Array() - { - RI_DELETE_ARRAY(m_array); - } - - void swap(Array& s) - { - Item* tarray = m_array; - m_array = s.m_array; - s.m_array = tarray; - - int tsize = m_size; - m_size = s.m_size; - s.m_size = tsize; - - int tallocated = m_allocated; - m_allocated = s.m_allocated; - s.m_allocated = tallocated; - } - - //if more room is needed, reallocate, otherwise return - void reserve( int items ) //throws bad_alloc - { - RI_ASSERT( items >= 0 ); - if( items <= m_allocated ) - return; //if there is room already, return - - RI_ASSERT( items > m_allocated ); - - Item* newa = RI_NEW_ARRAY(Item, items); //throws bad_alloc if runs out of memory - for(int i=0;i= 0 ); - if( items == m_allocated ) - { - m_size = items; - return; - } - - if( items == 0 ) - { - RI_DELETE_ARRAY(m_array); - m_size = 0; - m_allocated = 0; - return; - } - - Item* newa = RI_NEW_ARRAY(Item, items); //throws bad_alloc if runs out of memory - int copySize = (m_size < items) ? m_size : items; //min(m_size,items) - for(int i=0;i for decreasing.) - void sort() - { - if(m_size <= 1) - return; - quicksort(0, m_size - 1); - } - - //remove the first occurrence of an item from the array - bool remove(const Item& item) - { - int i=0; - for(;i= m_size) - return false; //not found - for(;i= m_allocated ) - reserve( (!m_allocated) ? 8 : m_allocated * 2 ); //by default, reserve 8. throws bad_alloc if runs out of memory - m_array[m_size++] = item; - } - RI_INLINE int size() const { return m_size; } - RI_INLINE Item& operator[](int i) { RI_ASSERT(i >= 0 && i < m_size); return m_array[i]; } - RI_INLINE const Item& operator[](int i) const { RI_ASSERT(i >= 0 && i < m_size); return m_array[i]; } - -private: - Array(const Array& s); //!< Not allowed. - void operator=(const Array& s); //!< Not allowed. - - void quicksort(int left, int right) - { - int i = left, j = right; - Item x = m_array[(left+right)>>1]; - - do - { - while (m_array[i] < x) - i++; - while (x < m_array[j]) - j--; - if (i<=j) - { - Item tmp = m_array[i]; - m_array[i] = m_array[j]; - m_array[j] = tmp; - i++; - j--; - } - } while (i<=j); - - if(left < j) quicksort(left, j); - if(i < right) quicksort(i, right); - } - - - Item* m_array; - int m_size; - int m_allocated; -}; - -//======================================================================= - -} //namespace OpenVGRI - -#endif /* __RIARRAY_H */