1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2005 The Android Open Source Project 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License. 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License. 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifndef ANDROID_SORTED_VECTOR_H 18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define ANDROID_SORTED_VECTOR_H 19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <assert.h> 21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdint.h> 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <sys/types.h> 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 2469973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian#include <cutils/log.h> 2569973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian 26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Vector.h> 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/VectorImpl.h> 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/TypeHelpers.h> 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate <class TYPE> 35edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass SortedVector : private SortedVectorImpl 36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 37698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian friend class Vector<TYPE>; 38698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic: 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project typedef TYPE value_type; 41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 42edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! 43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Constructors and destructors 44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 46edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project SortedVector(); 47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project SortedVector(const SortedVector<TYPE>& rhs); 48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual ~SortedVector(); 49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! copy operator */ 51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const SortedVector<TYPE>& operator = (const SortedVector<TYPE>& rhs) const; 52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project SortedVector<TYPE>& operator = (const SortedVector<TYPE>& rhs); 53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 54edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /* 55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * empty the vector 56edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 57edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 58edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline void clear() { VectorImpl::clear(); } 59edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 60edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! 61edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * vector stats 62edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 63edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 64edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! returns number of items in the vector 65edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline size_t size() const { return VectorImpl::size(); } 6669973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian //! returns whether or not the vector is empty 67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline bool isEmpty() const { return VectorImpl::isEmpty(); } 68edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! returns how many items can be stored without reallocating the backing store 69edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline size_t capacity() const { return VectorImpl::capacity(); } 7069973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian //! sets the capacity. capacity can never be reduced less than size() 71edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline ssize_t setCapacity(size_t size) { return VectorImpl::setCapacity(size); } 72edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 73edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! 74edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * C-style array access 75edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 76edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 77edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! read-only C-style access 78edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline const TYPE* array() const; 79edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 80edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! read-write C-style access. BE VERY CAREFUL when modifying the array 8169973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian //! you must keep it sorted! You usually don't use this function. 82edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TYPE* editArray(); 83edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 84edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! finds the index of an item 85edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ssize_t indexOf(const TYPE& item) const; 86edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 87edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! finds where this item should be inserted 88edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t orderOf(const TYPE& item) const; 89edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 90edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 91edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! 92edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * accessors 93edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 94edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 95edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! read-only access to an item at a given index 96edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline const TYPE& operator [] (size_t index) const; 97edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! alternate name for operator [] 98edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline const TYPE& itemAt(size_t index) const; 99edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! stack-usage of the vector. returns the top of the stack (last element) 100edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const TYPE& top() const; 101edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 102edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project /*! 10369973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian * modifying the array 104edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 105edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 106edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! add an item in the right place (and replace the one that is there) 107edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ssize_t add(const TYPE& item); 108edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 109edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! editItemAt() MUST NOT change the order of this item 110edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TYPE& editItemAt(size_t index) { 111edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return *( static_cast<TYPE *>(VectorImpl::editItemLocation(index)) ); 112edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } 113edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 114edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! merges a vector into this one 115edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ssize_t merge(const Vector<TYPE>& vector); 116edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ssize_t merge(const SortedVector<TYPE>& vector); 117edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 118edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! removes an item 119edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ssize_t remove(const TYPE&); 120edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 121edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! remove several items 122edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline ssize_t removeItemsAt(size_t index, size_t count = 1); 123edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project //! remove one item 124edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project inline ssize_t removeAt(size_t index) { return removeItemsAt(index); } 125edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 126edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectprotected: 127edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_construct(void* storage, size_t num) const; 128edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_destroy(void* storage, size_t num) const; 129edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_copy(void* dest, const void* from, size_t num) const; 130edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_splat(void* dest, const void* item, size_t num) const; 131edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_move_forward(void* dest, const void* from, size_t num) const; 132edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual void do_move_backward(void* dest, const void* from, size_t num) const; 133edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project virtual int do_compare(const void* lhs, const void* rhs) const; 134edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 135edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 136e6d77c593d1a25b45c23bf9292ec7ee09fc14b6eJeff Brown// SortedVector<T> can be trivially moved using memcpy() because moving does not 137e6d77c593d1a25b45c23bf9292ec7ee09fc14b6eJeff Brown// require any change to the underlying SharedBuffer contents or reference count. 138e6d77c593d1a25b45c23bf9292ec7ee09fc14b6eJeff Browntemplate<typename T> struct trait_trivial_move<SortedVector<T> > { enum { value = true }; }; 139edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 140edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 141edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// No user serviceable parts from here... 142edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 143edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 144edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 145edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectSortedVector<TYPE>::SortedVector() 146edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project : SortedVectorImpl(sizeof(TYPE), 147edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ((traits<TYPE>::has_trivial_ctor ? HAS_TRIVIAL_CTOR : 0) 148edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project |(traits<TYPE>::has_trivial_dtor ? HAS_TRIVIAL_DTOR : 0) 1495f28411a856e47f86e3b0c7c031a6c0e0fa1dba0Mathias Agopian |(traits<TYPE>::has_trivial_copy ? HAS_TRIVIAL_COPY : 0)) 150edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project ) 151edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 152edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 153edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 154edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 155edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectSortedVector<TYPE>::SortedVector(const SortedVector<TYPE>& rhs) 156edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project : SortedVectorImpl(rhs) { 157edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 158edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 159edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 160edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectSortedVector<TYPE>::~SortedVector() { 161edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project finish_vector(); 162edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 163edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 164edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 165edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectSortedVector<TYPE>& SortedVector<TYPE>::operator = (const SortedVector<TYPE>& rhs) { 166edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project SortedVectorImpl::operator = (rhs); 167edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return *this; 168edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 169edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 170edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 171edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectconst SortedVector<TYPE>& SortedVector<TYPE>::operator = (const SortedVector<TYPE>& rhs) const { 172edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project SortedVectorImpl::operator = (rhs); 173edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return *this; 174edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 175edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 176edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 177edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectconst TYPE* SortedVector<TYPE>::array() const { 178edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return static_cast<const TYPE *>(arrayImpl()); 179edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 180edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 181edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 182edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectTYPE* SortedVector<TYPE>::editArray() { 183edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return static_cast<TYPE *>(editArrayImpl()); 184edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 185edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 186edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 187edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 188edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectconst TYPE& SortedVector<TYPE>::operator[](size_t index) const { 18969973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian LOG_FATAL_IF(index>=size(), 19069973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian "%s: index=%u out of range (%u)", __PRETTY_FUNCTION__, 19169973992d531ae7df20916c6fb3034b08a6d53c4Mathias Agopian int(index), int(size())); 192edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return *(array() + index); 193edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 194edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 195edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 196edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectconst TYPE& SortedVector<TYPE>::itemAt(size_t index) const { 197edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return operator[](index); 198edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 199edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 200edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 201edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectconst TYPE& SortedVector<TYPE>::top() const { 202edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return *(array() + size() - 1); 203edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 204edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 205edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 206edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::add(const TYPE& item) { 207edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::add(&item); 208edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 209edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 210edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 211edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::indexOf(const TYPE& item) const { 212edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::indexOf(&item); 213edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 214edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 215edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 216edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectsize_t SortedVector<TYPE>::orderOf(const TYPE& item) const { 217edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::orderOf(&item); 218edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 219edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 220edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 221edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::merge(const Vector<TYPE>& vector) { 222edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::merge(reinterpret_cast<const VectorImpl&>(vector)); 223edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 224edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 225edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 226edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::merge(const SortedVector<TYPE>& vector) { 227edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::merge(reinterpret_cast<const SortedVectorImpl&>(vector)); 228edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 229edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 230edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 231edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::remove(const TYPE& item) { 232edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return SortedVectorImpl::remove(&item); 233edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 234edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 235edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> inline 236edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectssize_t SortedVector<TYPE>::removeItemsAt(size_t index, size_t count) { 237edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return VectorImpl::removeItemsAt(index, count); 238edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 239edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 240edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 241edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 242edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 243edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_construct(void* storage, size_t num) const { 244edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project construct_type( reinterpret_cast<TYPE*>(storage), num ); 245edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 246edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 247edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 248edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_destroy(void* storage, size_t num) const { 249edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project destroy_type( reinterpret_cast<TYPE*>(storage), num ); 250edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 251edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 252edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 253edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_copy(void* dest, const void* from, size_t num) const { 254edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project copy_type( reinterpret_cast<TYPE*>(dest), reinterpret_cast<const TYPE*>(from), num ); 255edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 256edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 257edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 258edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_splat(void* dest, const void* item, size_t num) const { 259edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project splat_type( reinterpret_cast<TYPE*>(dest), reinterpret_cast<const TYPE*>(item), num ); 260edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 261edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 262edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 263edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_move_forward(void* dest, const void* from, size_t num) const { 264edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project move_forward_type( reinterpret_cast<TYPE*>(dest), reinterpret_cast<const TYPE*>(from), num ); 265edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 266edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 267edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 268edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid SortedVector<TYPE>::do_move_backward(void* dest, const void* from, size_t num) const { 269edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project move_backward_type( reinterpret_cast<TYPE*>(dest), reinterpret_cast<const TYPE*>(from), num ); 270edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 271edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 272edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projecttemplate<class TYPE> 273edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectint SortedVector<TYPE>::do_compare(const void* lhs, const void* rhs) const { 274edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return compare_type( *reinterpret_cast<const TYPE*>(lhs), *reinterpret_cast<const TYPE*>(rhs) ); 275edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 276edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 277edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 278edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 279edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 280edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 281edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 282edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif // ANDROID_SORTED_VECTOR_H 283