Index: src/core/SkTRefArray.h |
diff --git a/src/core/SkTRefArray.h b/src/core/SkTRefArray.h |
deleted file mode 100644 |
index c4bca241d77fbc49b8a54d2dc373cfd74f3a6935..0000000000000000000000000000000000000000 |
--- a/src/core/SkTRefArray.h |
+++ /dev/null |
@@ -1,112 +0,0 @@ |
-// |
-// SkTRefArray.h |
-// core |
-// |
-// Created by Mike Reed on 7/17/12. |
-// Copyright (c) 2012 __MyCompanyName__. All rights reserved. |
-// |
- |
-#ifndef SkTRefArray_DEFINED |
-#define SkTRefArray_DEFINED |
- |
-#include "SkRefCnt.h" |
-#include <new> |
- |
-/** |
- * Wrapper to manage thread-safe sharing of an array of T objects. The array |
- * cannot be grown or shrunk. |
- */ |
-template <typename T> class SkTRefArray : public SkRefCnt { |
- /* |
- * Shared factory to allocate the space needed for our instance plus N |
- * T entries at the end. We call our constructor, but not the constructors |
- * for the elements. Those are called by the proper Create method. |
- */ |
- static SkTRefArray<T>* Alloc(int count) { |
- // space for us, and our [count] elements |
- size_t size = sizeof(SkTRefArray<T>) + count * sizeof(T); |
- SkTRefArray<T>* obj = (SkTRefArray<T>*)sk_malloc_throw(size); |
- |
- SkNEW_PLACEMENT(obj, SkTRefArray<T>); |
- obj->fCount = count; |
- return obj; |
- } |
- |
-public: |
- /** |
- * Return a new array with 'count' elements, initialized to their default |
- * value. To change them to some other value, use writableBegin/End or |
- * writableAt(), but do that before this array is given to another thread. |
- */ |
- static SkTRefArray<T>* Create(int count) { |
- SkTRefArray<T>* obj = Alloc(count); |
- T* array = const_cast<T*>(obj->begin()); |
- for (int i = 0; i < count; ++i) { |
- SkNEW_PLACEMENT(&array[i], T); |
- } |
- return obj; |
- } |
- |
- /** |
- * Return a new array with 'count' elements, initialized from the provided |
- * src array. To change them to some other value, use writableBegin/End or |
- * writableAt(), but do that before this array is given to another thread. |
- */ |
- static SkTRefArray<T>* Create(const T src[], int count) { |
- SkTRefArray<T>* obj = Alloc(count); |
- T* array = const_cast<T*>(obj->begin()); |
- for (int i = 0; i < count; ++i) { |
- SkNEW_PLACEMENT_ARGS(&array[i], T, (src[i])); |
- } |
- return obj; |
- } |
- |
- int count() const { return fCount; } |
- const T* begin() const { return (const T*)(this + 1); } |
- const T* end() const { return this->begin() + fCount; } |
- const T& at(int index) const { |
- SkASSERT((unsigned)index < (unsigned)fCount); |
- return this->begin()[index]; |
- } |
- const T& operator[](int index) const { return this->at(index); } |
- |
- // For the writable methods, we assert that we are the only owner if we |
- // call these, since other owners are not informed if we change an element. |
- |
- T* writableBegin() { |
- SkASSERT(this->unique()); |
- return (T*)(this + 1); |
- } |
- T* writableEnd() { |
- return this->writableBegin() + fCount; |
- } |
- T& writableAt(int index) { |
- SkASSERT((unsigned)index < (unsigned)fCount); |
- return this->writableBegin()[index]; |
- } |
- |
-protected: |
- virtual void internal_dispose() const SK_OVERRIDE { |
- T* array = const_cast<T*>(this->begin()); |
- int n = fCount; |
- |
- for (int i = 0; i < n; ++i) { |
- array->~T(); |
- array += 1; |
- } |
- |
- this->internal_dispose_restore_refcnt_to_1(); |
- this->~SkTRefArray<T>(); |
- sk_free((void*)this); |
- } |
- |
-private: |
- int fCount; |
- |
- // hide this |
- virtual ~SkTRefArray() {} |
- |
- typedef SkRefCnt INHERITED; |
-}; |
- |
-#endif |