Initial commit.
[pdfium.git] / core / src / fxcrt / fx_basic_plex.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #include "../../include/fxcrt/fx_basic.h"\r
8 #include "plex.h"\r
9 CFX_Plex* CFX_Plex::Create(IFX_Allocator* pAllocator, CFX_Plex*& pHead, FX_DWORD nMax, FX_DWORD cbElement)\r
10 {\r
11     CFX_Plex* p = (CFX_Plex*)FX_Allocator_Alloc(pAllocator, FX_BYTE, sizeof(CFX_Plex) + nMax * cbElement);\r
12     if (!p) {\r
13         return NULL;\r
14     }\r
15     p->pNext = pHead;\r
16     pHead = p;\r
17     return p;\r
18 }\r
19 void CFX_Plex::FreeDataChain(IFX_Allocator* pAllocator)\r
20 {\r
21     CFX_Plex* p = this;\r
22     while (p != NULL) {\r
23         FX_BYTE* bytes = (FX_BYTE*) p;\r
24         CFX_Plex* pNext = p->pNext;\r
25         FX_Allocator_Free(pAllocator, bytes);\r
26         p = pNext;\r
27     }\r
28 }\r