| 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
|
|
|