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

Unified Diff: include/core/SkTDict.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 | « gyp/core.gypi ('k') | include/core/SkTSearch.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkTDict.h
diff --git a/include/core/SkTDict.h b/include/core/SkTDict.h
deleted file mode 100644
index 106cace2f268090ff3f104d4dccc9795536416cc..0000000000000000000000000000000000000000
--- a/include/core/SkTDict.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 SkTDict_DEFINED
-#define SkTDict_DEFINED
-
-#include "SkChunkAlloc.h"
-#include "SkTSearch.h"
-#include "SkTDArray.h"
-
-template <typename T> class SkTDict : SkNoncopyable {
-public:
- SkTDict(size_t minStringAlloc) : fStrings(minStringAlloc) {}
-
- void reset() {
- fArray.reset();
- fStrings.reset();
- }
-
- int count() const { return fArray.count(); }
-
- bool set(const char name[], const T& value) {
- return set(name, strlen(name), value);
- }
-
- bool set(const char name[], size_t len, const T& value) {
- SkASSERT(name);
-
- int index = this->find_index(name, len);
-
- if (index >= 0) {
- fArray[index].fValue = value;
- return false;
- } else {
- Pair* pair = fArray.insert(~index);
- char* copy = (char*)fStrings.alloc(len + 1, SkChunkAlloc::kThrow_AllocFailType);
- memcpy(copy, name, len);
- copy[len] = '\0';
- pair->fName = copy;
- pair->fValue = value;
- return true;
- }
- }
-
- bool find(const char name[]) const {
- return this->find_index(name) >= 0;
- }
-
- bool find(const char name[], size_t len) const {
- return this->find_index(name, len) >= 0;
- }
-
- bool find(const char name[], T* value) const {
- return find(name, strlen(name), value);
- }
-
- bool find(const char name[], size_t len, T* value) const {
- int index = this->find_index(name, len);
-
- if (index >= 0) {
- if (value) {
- *value = fArray[index].fValue;
- }
- return true;
- }
- return false;
- }
-
- bool findKey(T& value, const char** name) const {
- const Pair* end = fArray.end();
- for (const Pair* pair = fArray.begin(); pair < end; pair++) {
- if (pair->fValue != value) {
- continue;
- }
- *name = pair->fName;
- return true;
- }
- return false;
- }
-
-public:
- struct Pair {
- const char* fName;
- T fValue;
-
- friend int operator<(const Pair& a, const Pair& b) {
- return strcmp(a.fName, b.fName);
- }
-
- friend int operator!=(const Pair& a, const Pair& b) {
- return strcmp(a.fName, b.fName);
- }
- };
- friend class Iter;
-
-public:
- class Iter {
- public:
- Iter(const SkTDict<T>& dict) {
- fIter = dict.fArray.begin();
- fStop = dict.fArray.end();
- }
-
- const char* next(T* value) {
- const char* name = NULL;
- if (fIter < fStop) {
- name = fIter->fName;
- if (value) {
- *value = fIter->fValue;
- }
- fIter += 1;
- }
- return name;
- }
- private:
- const Pair* fIter;
- const Pair* fStop;
- };
-
-private:
- SkTDArray<Pair> fArray;
- SkChunkAlloc fStrings;
-
- int find_index(const char name[]) const {
- return find_index(name, strlen(name));
- }
-
- int find_index(const char name[], size_t len) const {
- SkASSERT(name);
-
- int count = fArray.count();
- int index = ~0;
-
- if (count) {
- index = SkStrSearch(&fArray.begin()->fName, count, name, len, sizeof(Pair));
- }
- return index;
- }
- friend class Iter;
-};
-
-#endif
« no previous file with comments | « gyp/core.gypi ('k') | include/core/SkTSearch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698