X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FADT%2FIndexedMap.h;h=2ffb5058e5bbcecff7b8515f1f4f8d136903f951;hb=2430973fb657eb84dfbacb1e8886d3a29190e0b5;hp=bc38fddc61941ff7fbf19e2b54753edf09d58ee9;hpb=94c002a190cd2e3a52b1510bc997e53d63af0b3b;p=oota-llvm.git diff --git a/include/llvm/ADT/IndexedMap.h b/include/llvm/ADT/IndexedMap.h index bc38fddc619..2ffb5058e5b 100644 --- a/include/llvm/ADT/IndexedMap.h +++ b/include/llvm/ADT/IndexedMap.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -20,19 +20,14 @@ #ifndef LLVM_ADT_INDEXEDMAP_H #define LLVM_ADT_INDEXEDMAP_H +#include "llvm/ADT/STLExtras.h" +#include #include #include -#include namespace llvm { - struct IdentityFunctor : std::unary_function { - unsigned operator()(unsigned Index) const { - return Index; - } - }; - - template +template > class IndexedMap { typedef typename ToIndexT::argument_type IndexT; typedef std::vector StorageT; @@ -55,6 +50,14 @@ namespace llvm { return storage_[toIndex_(n)]; } + void reserve(typename StorageT::size_type s) { + storage_.reserve(s); + } + + void resize(typename StorageT::size_type s) { + storage_.resize(s, nullVal_); + } + void clear() { storage_.clear(); } @@ -62,7 +65,11 @@ namespace llvm { void grow(IndexT n) { unsigned NewSize = toIndex_(n) + 1; if (NewSize > storage_.size()) - storage_.resize(NewSize, nullVal_); + resize(NewSize); + } + + bool inBounds(IndexT n) const { + return toIndex_(n) < storage_.size(); } typename StorageT::size_type size() const {