Cleanup some fx_codec_fax.cpp code.
[pdfium.git] / core / src / fxcodec / jbig2 / JBig2_SymbolDict.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #include "JBig2_SymbolDict.h"
8
9 #include "../../../include/fxcrt/fx_memory.h"
10
11 CJBig2_SymbolDict::CJBig2_SymbolDict() {
12   SDNUMEXSYMS = 0;
13   SDEXSYMS = NULL;
14   m_bContextRetained = FALSE;
15   m_gbContext = m_grContext = NULL;
16 }
17
18 CJBig2_SymbolDict* CJBig2_SymbolDict::DeepCopy() {
19   CJBig2_SymbolDict* src = this;
20   if (src->m_bContextRetained || src->m_gbContext || src->m_grContext) {
21     return NULL;
22   }
23   CJBig2_SymbolDict* dst = new CJBig2_SymbolDict;
24   dst->SDNUMEXSYMS = src->SDNUMEXSYMS;
25   dst->SDEXSYMS = FX_Alloc(CJBig2_Image*, src->SDNUMEXSYMS);
26   for (FX_DWORD i = 0; i < src->SDNUMEXSYMS; i++) {
27     if (src->SDEXSYMS[i]) {
28       dst->SDEXSYMS[i] = new CJBig2_Image(*(src->SDEXSYMS[i]));
29     } else {
30       dst->SDEXSYMS[i] = NULL;
31     }
32   }
33   return dst;
34 }
35
36 CJBig2_SymbolDict::~CJBig2_SymbolDict() {
37   if (SDEXSYMS) {
38     for (FX_DWORD i = 0; i < SDNUMEXSYMS; i++) {
39       delete SDEXSYMS[i];
40     }
41     FX_Free(SDEXSYMS);
42   }
43   if (m_bContextRetained) {
44     FX_Free(m_gbContext);
45     FX_Free(m_grContext);
46   }
47 }