Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(740)

Unified Diff: include/core/SkTSearch.h

Issue 1558923002: move SkTDict and SkTSearch into private (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/core/SkTDict.h ('k') | include/private/SkTDict.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkTSearch.h
diff --git a/include/core/SkTSearch.h b/include/core/SkTSearch.h
deleted file mode 100644
index 549bcfd7c844ef7e0e51f616b634fe8833f21dbd..0000000000000000000000000000000000000000
--- a/include/core/SkTSearch.h
+++ /dev/null
@@ -1,146 +0,0 @@
-
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SkTSearch_DEFINED
-#define SkTSearch_DEFINED
-
-#include "SkTypes.h"
-
-/**
- * All of the SkTSearch variants want to return the index (0...N-1) of the
- * found element, or the bit-not of where to insert the element.
- *
- * At a simple level, if the return value is negative, it was not found.
- *
- * For clients that want to insert the new element if it was not found, use
- * the following logic:
- *
- * int index = SkTSearch(...);
- * if (index >= 0) {
- * // found at index
- * } else {
- * index = ~index; // now we are positive
- * // insert at index
- * }
- */
-
-
-// The most general form of SkTSearch takes an array of T and a key of type K. A functor, less, is
-// used to perform comparisons. It has two function operators:
-// bool operator() (const T& t, const K& k)
-// bool operator() (const K& t, const T& k)
-template <typename T, typename K, typename LESS>
-int SkTSearch(const T base[], int count, const K& key, size_t elemSize, LESS& less)
-{
- SkASSERT(count >= 0);
- if (count <= 0) {
- return ~0;
- }
-
- SkASSERT(base != NULL); // base may be NULL if count is zero
-
- int lo = 0;
- int hi = count - 1;
-
- while (lo < hi) {
- int mid = lo + ((hi - lo) >> 1);
- const T* elem = (const T*)((const char*)base + mid * elemSize);
-
- if (less(*elem, key))
- lo = mid + 1;
- else
- hi = mid;
- }
-
- const T* elem = (const T*)((const char*)base + hi * elemSize);
- if (less(*elem, key)) {
- hi += 1;
- hi = ~hi;
- } else if (less(key, *elem)) {
- hi = ~hi;
- }
- return hi;
-}
-
-// Adapts a less-than function to a functor.
-template <typename T, bool (LESS)(const T&, const T&)> struct SkTLessFunctionToFunctorAdaptor {
- bool operator()(const T& a, const T& b) { return LESS(a, b); }
-};
-
-// Specialization for case when T==K and the caller wants to use a function rather than functor.
-template <typename T, bool (LESS)(const T&, const T&)>
-int SkTSearch(const T base[], int count, const T& target, size_t elemSize) {
- static SkTLessFunctionToFunctorAdaptor<T, LESS> functor;
- return SkTSearch(base, count, target, elemSize, functor);
-}
-
-// Adapts operator < to a functor.
-template <typename T> struct SkTLessFunctor {
- bool operator()(const T& a, const T& b) { return a < b; }
-};
-
-// Specialization for T==K, compare using op <.
-template <typename T>
-int SkTSearch(const T base[], int count, const T& target, size_t elemSize) {
- static SkTLessFunctor<T> functor;
- return SkTSearch(base, count, target, elemSize, functor);
-}
-
-// Similar to SkLessFunctionToFunctorAdaptor but makes the functor interface take T* rather than T.
-template <typename T, bool (LESS)(const T&, const T&)> struct SkTLessFunctionToPtrFunctorAdaptor {
- bool operator() (const T* t, const T* k) { return LESS(*t, *k); }
-};
-
-// Specialization for case where domain is an array of T* and the key value is a T*, and you want
-// to compare the T objects, not the pointers.
-template <typename T, bool (LESS)(const T&, const T&)>
-int SkTSearch(T* base[], int count, T* target, size_t elemSize) {
- static SkTLessFunctionToPtrFunctorAdaptor<T, LESS> functor;
- return SkTSearch(base, count, target, elemSize, functor);
-}
-
-int SkStrSearch(const char*const* base, int count, const char target[],
- size_t target_len, size_t elemSize);
-int SkStrSearch(const char*const* base, int count, const char target[],
- size_t elemSize);
-
-/** Like SkStrSearch, but treats target as if it were all lower-case. Assumes that
- base points to a table of lower-case strings.
-*/
-int SkStrLCSearch(const char*const* base, int count, const char target[],
- size_t target_len, size_t elemSize);
-int SkStrLCSearch(const char*const* base, int count, const char target[],
- size_t elemSize);
-
-/** Helper class to convert a string to lower-case, but only modifying the ascii
- characters. This makes the routine very fast and never changes the string
- length, but it is not suitable for linguistic purposes. Normally this is
- used for buiding and searching string tables.
-*/
-class SkAutoAsciiToLC {
-public:
- SkAutoAsciiToLC(const char str[], size_t len = (size_t)-1);
- ~SkAutoAsciiToLC();
-
- const char* lc() const { return fLC; }
- size_t length() const { return fLength; }
-
-private:
- char* fLC; // points to either the heap or fStorage
- size_t fLength;
- enum {
- STORAGE = 64
- };
- char fStorage[STORAGE+1];
-};
-
-// Helper when calling qsort with a compare proc that has typed its arguments
-#define SkCastForQSort(compare) reinterpret_cast<int (*)(const void*, const void*)>(compare)
-
-#endif
« no previous file with comments | « include/core/SkTDict.h ('k') | include/private/SkTDict.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698