1 /* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #ifndef SkOpTAllocator_DEFINED 8 #define SkOpTAllocator_DEFINED 9 10 #include "SkChunkAlloc.h" 11 12 // T is SkOpAngle2, SkOpSpan2, or SkOpSegment2 13 template<typename T> 14 class SkOpTAllocator { 15 public: Allocate(SkChunkAlloc * allocator)16 static T* Allocate(SkChunkAlloc* allocator) { 17 void* ptr = allocator->allocThrow(sizeof(T)); 18 T* record = (T*) ptr; 19 return record; 20 } 21 AllocateArray(SkChunkAlloc * allocator,int count)22 static T* AllocateArray(SkChunkAlloc* allocator, int count) { 23 void* ptr = allocator->allocThrow(sizeof(T) * count); 24 T* record = (T*) ptr; 25 return record; 26 } 27 New(SkChunkAlloc * allocator)28 static T* New(SkChunkAlloc* allocator) { 29 return new (Allocate(allocator)) T(); 30 } 31 }; 32 33 #endif 34