1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/* 29857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Copyright 2005 The Android Open Source Project 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 49857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 59857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * you may not use this file except in compliance with the License. 69857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * You may obtain a copy of the License at 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 89857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 99857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * 109857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Unless required by applicable law or agreed to in writing, software 119857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 129857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * See the License for the specific language governing permissions and 149857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * limitations under the License. 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */ 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 179857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#ifndef ANDROID_PIXELFLINGER_VECTOR_IMPL_H 189857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#define ANDROID_PIXELFLINGER_VECTOR_IMPL_H 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <assert.h> 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdint.h> 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/types.h> 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// --------------------------------------------------------------------------- 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// No user serviceable parts in here... 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// --------------------------------------------------------------------------- 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnamespace android { 299857d99eecc389389da261a72461322d5cfb8eebMathias Agopiannamespace tinyutils { 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/*! 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Implementation of the guts of the vector<> class 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * this ensures backward binary compatibility and 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * reduces code size. 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * For performance reasons, we expose mStorage and mCount 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * so these fields are set in stone. 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */ 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass VectorImpl 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic: 43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project enum { // flags passed to the ctor 44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project HAS_TRIVIAL_CTOR = 0x00000001, 45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project HAS_TRIVIAL_DTOR = 0x00000002, 46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project HAS_TRIVIAL_COPY = 0x00000004, 47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project HAS_TRIVIAL_ASSIGN = 0x00000008 48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project }; 49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project VectorImpl(size_t itemSize, uint32_t flags); 51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project VectorImpl(const VectorImpl& rhs); 52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual ~VectorImpl(); 53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! must be called from subclasses destructor */ 55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void finish_vector(); 56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project VectorImpl& operator = (const VectorImpl& rhs); 58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! C-style array access */ 60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline const void* arrayImpl() const { return mStorage; } 61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void* editArrayImpl(); 62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! vector stats */ 64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline size_t size() const { return mCount; } 65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline bool isEmpty() const { return mCount == 0; } 66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t capacity() const; 67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t setCapacity(size_t size); 68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! append/insert another vector */ 70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertVectorAt(const VectorImpl& vector, size_t index); 71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t appendVector(const VectorImpl& vector); 72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! add/insert/replace items */ 74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertAt(size_t where, size_t numItems = 1); 75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertAt(const void* item, size_t where, size_t numItems = 1); 76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void pop(); 77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void push(); 78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void push(const void* item); 79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t add(); 80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t add(const void* item); 81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t replaceAt(size_t index); 82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t replaceAt(const void* item, size_t index); 83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*! remove items */ 85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t removeItemsAt(size_t index, size_t count = 1); 86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void clear(); 87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const void* itemLocation(size_t index) const; 89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void* editItemLocation(size_t index); 90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprotected: 92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t itemSize() const; 93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void release_storage(); 94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_construct(void* storage, size_t num) const = 0; 96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_destroy(void* storage, size_t num) const = 0; 97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_copy(void* dest, const void* from, size_t num) const = 0; 98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_splat(void* dest, const void* item, size_t num) const = 0; 99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_move_forward(void* dest, const void* from, size_t num) const = 0; 100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void do_move_backward(void* dest, const void* from, size_t num) const = 0; 101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // take care of FBC... 103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl1(); 104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl2(); 105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl3(); 106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl4(); 107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl5(); 108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl6(); 109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl7(); 110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedVectorImpl8(); 111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate: 113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void* _grow(size_t where, size_t amount); 114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void _shrink(size_t where, size_t amount); 115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_construct(void* storage, size_t num) const; 117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_destroy(void* storage, size_t num) const; 118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_copy(void* dest, const void* from, size_t num) const; 119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_splat(void* dest, const void* item, size_t num) const; 120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_move_forward(void* dest, const void* from, size_t num) const; 121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline void _do_move_backward(void* dest, const void* from, size_t num) const; 122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // These 2 fields are exposed in the inlines below, 124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // so they're set in stone. 125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void * mStorage; // base address of the vector 126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t mCount; // number of items 127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const uint32_t mFlags; 129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const size_t mItemSize; 130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass SortedVectorImpl : public VectorImpl 135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic: 137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project SortedVectorImpl(size_t itemSize, uint32_t flags); 138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project SortedVectorImpl(const VectorImpl& rhs); 139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual ~SortedVectorImpl(); 140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project SortedVectorImpl& operator = (const SortedVectorImpl& rhs); 142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project //! finds the index of an item 144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t indexOf(const void* item) const; 145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project //! finds where this item should be inserted 147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t orderOf(const void* item) const; 148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project //! add an item in the right place (or replaces it if there is one) 150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t add(const void* item); 151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project //! merges a vector into this one 153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t merge(const VectorImpl& vector); 154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t merge(const SortedVectorImpl& vector); 155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project //! removes an item 157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t remove(const void* item); 158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 159dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprotected: 160dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual int do_compare(const void* lhs, const void* rhs) const = 0; 161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // take care of FBC... 163dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl1(); 164dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl2(); 165dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl3(); 166dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl4(); 167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl5(); 168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl6(); 169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl7(); 170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reservedSortedVectorImpl8(); 171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate: 173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t _indexOrderOf(const void* item, size_t* order = 0) const; 174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // these are made private, because they can't be used on a SortedVector 176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // (they don't have an implementation either) 177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t add(); 178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void pop(); 179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void push(); 180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void push(const void* item); 181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertVectorAt(const VectorImpl& vector, size_t index); 182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t appendVector(const VectorImpl& vector); 183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertAt(size_t where, size_t numItems = 1); 184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t insertAt(const void* item, size_t where, size_t numItems = 1); 185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t replaceAt(size_t index); 186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ssize_t replaceAt(const void* item, size_t index); 187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 1899857d99eecc389389da261a72461322d5cfb8eebMathias Agopian} // namespace tinyutils 1909857d99eecc389389da261a72461322d5cfb8eebMathias Agopian} // namespace android 191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 192dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 193dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// --------------------------------------------------------------------------- 194dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 1959857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#endif // ANDROID_PIXELFLINGER_VECTOR_IMPL_H 196