1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2011 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkRefDict_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkRefDict_DEFINED 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkRefCnt.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * A dictionary of string,refcnt pairs. The dictionary is also an owner of the 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * refcnt objects while they are contained. 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkRefDict : SkNoncopyable { 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRefDict(); 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ~SkRefDict(); 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Return the data associated with name[], or nullptr if no matching entry 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * is found. The reference-count of the entry is not affected. 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRefCnt* find(const char name[]) const; 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * If data is nullptr, remove (if present) the entry matching name and call 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * prev_data->unref() on the data for the matching entry. 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * If data is not-nullptr, replace the existing entry matching name and 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * call (prev_data->unref()), or add a new one. In either case, 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * data->ref() is called. 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void set(const char name[], SkRefCnt* data); 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Remove the matching entry (if found) and unref its data. 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void remove(const char name[]) { this->set(name, nullptr); } 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Remove all entries, and unref() their associated data. 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void removeAll(); 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Impl; 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Impl* fImpl; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 54