14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_KeyValue.h"
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_GlobalVariableArray::CJS_GlobalVariableArray() {}
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_GlobalVariableArray::~CJS_GlobalVariableArray() {}
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CJS_GlobalVariableArray::Copy(const CJS_GlobalVariableArray& array) {
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  m_Array.clear();
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  for (int i = 0, sz = array.Count(); i < sz; i++) {
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    CJS_KeyValue* pOldObjData = array.GetAt(i);
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    switch (pOldObjData->nType) {
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      case JS_GlobalDataType::NUMBER: {
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        CJS_KeyValue* pNewObjData = new CJS_KeyValue;
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sKey = pOldObjData->sKey;
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->nType = pOldObjData->nType;
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->dData = pOldObjData->dData;
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        Add(pNewObjData);
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      } break;
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      case JS_GlobalDataType::BOOLEAN: {
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        CJS_KeyValue* pNewObjData = new CJS_KeyValue;
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sKey = pOldObjData->sKey;
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->nType = pOldObjData->nType;
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->bData = pOldObjData->bData;
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        Add(pNewObjData);
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      } break;
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      case JS_GlobalDataType::STRING: {
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        CJS_KeyValue* pNewObjData = new CJS_KeyValue;
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sKey = pOldObjData->sKey;
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->nType = pOldObjData->nType;
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sData = pOldObjData->sData;
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        Add(pNewObjData);
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      } break;
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      case JS_GlobalDataType::OBJECT: {
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        CJS_KeyValue* pNewObjData = new CJS_KeyValue;
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sKey = pOldObjData->sKey;
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->nType = pOldObjData->nType;
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->objData.Copy(pOldObjData->objData);
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        Add(pNewObjData);
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      } break;
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      case JS_GlobalDataType::NULLOBJ: {
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        CJS_KeyValue* pNewObjData = new CJS_KeyValue;
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->sKey = pOldObjData->sKey;
494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        pNewObjData->nType = pOldObjData->nType;
504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann        Add(pNewObjData);
514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann      } break;
524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    }
534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CJS_GlobalVariableArray::Add(CJS_KeyValue* p) {
574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  m_Array.push_back(std::unique_ptr<CJS_KeyValue>(p));
584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint CJS_GlobalVariableArray::Count() const {
614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_Array.size();
624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_KeyValue* CJS_GlobalVariableArray::GetAt(int index) const {
654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_Array.at(index).get();
664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_KeyValue::CJS_KeyValue() {}
694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCJS_KeyValue::~CJS_KeyValue() {}
71