| /* |
| * Copyright 2014 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef SkOpTAllocator_DEFINED |
| #define SkOpTAllocator_DEFINED |
| |
| #include "SkChunkAlloc.h" |
| |
| // T is SkOpAngle2, SkOpSpan2, or SkOpSegment2 |
| template<typename T> |
| class SkOpTAllocator { |
| public: |
| static T* Allocate(SkChunkAlloc* allocator) { |
| void* ptr = allocator->allocThrow(sizeof(T)); |
| T* record = (T*) ptr; |
| return record; |
| } |
| |
| static T* AllocateArray(SkChunkAlloc* allocator, int count) { |
| void* ptr = allocator->allocThrow(sizeof(T) * count); |
| T* record = (T*) ptr; |
| return record; |
| } |
| |
| static T* New(SkChunkAlloc* allocator) { |
| return new (Allocate(allocator)) T(); |
| } |
| }; |
| |
| #endif |