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