diff options
Diffstat (limited to 'include/llvm/Support')
-rw-r--r-- | include/llvm/Support/Search.h | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/include/llvm/Support/Search.h b/include/llvm/Support/Search.h deleted file mode 100644 index 3af723e..0000000 --- a/include/llvm/Support/Search.h +++ /dev/null @@ -1,78 +0,0 @@ -//===- llvm/Support/Search.h - Support for searching algorithms -*- C++ -*-===// -// -// 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. -// -//===----------------------------------------------------------------------===// -// -// These templates impliment various generic search algorithms. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_SUPPORT_SEARCH_H -#define LLVM_SUPPORT_SEARCH_H - -namespace llvm { - // SearchString - generalized string compare method container. Used for - // search templates. - struct SearchString { - static inline int Compare(const char *A, const char *B) { - return strcmp(A, B); - } - }; - - // LinearSearch - search an array of items for a match using linear search - // algorithm. Return find index or -1 if not found. - // ItemType - type of elements in array. - // CompareClass - container for compare method in form of - // static int Compare(ItemType A, ItemType B) - // returns < 0 for A < B - // > 0 for A > B - // == 0 for A == B - // Match - item to match in array. - // Array - an array of items to be searched. - // Size - size of array in bytes. - // - // Eg. LinearSearch<const char *, SearchString>("key", List, sizeof(List)); - // - template<typename ItemType, class CompareClass> - inline int LinearSearch(ItemType Match, ItemType Array[], size_t Size) { - unsigned N = Size / sizeof(ItemType); - for (unsigned Index = 0; Index < N; Index++) { - if (!CompareClass::Compare(Match, Array[Index])) return Index; - } - return -1; - } - - // BinarySearch - search an array of items for a match using binary search - // algorithm. Return find index or -1 if not found. - // ItemType - type of elements in array. - // CompareClass - container for compare method in form of - // static int Compare(ItemType A, ItemType B) - // returns < 0 for A < B - // > 0 for A > B - // == 0 for A == B - // Match - item to match in array. - // Array - a sorted array of items to be searched. - // Size - size of array in bytes. - // - // Eg. BinarySearch<const char *, SearchString>("key", List, sizeof(List)); - // - template<typename ItemType, class CompareClass> - inline int BinarySearch(ItemType Match, ItemType Array[], size_t Size) { - int Lo = 0, Hi = Size / sizeof(ItemType); - while (Lo <= Hi) { - unsigned Mid = (Lo + Hi) >> 1; - int Result = CompareClass::Compare(Match, Array[Mid]); - if (Result < 0) Hi = Mid - 1; - else if (Result > 0) Lo = Mid + 1; - else return Mid; - } - return -1; - } -} - -#endif - |