1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2020 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FXJS_XFA_CFXJSE_MAPMODULE_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FXJS_XFA_CFXJSE_MAPMODULE_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include <map> 13*3ac0a46fSAndroid Build Coastguard Worker 14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/widestring.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/abseil-cpp/absl/types/optional.h" 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker class CXFA_Measurement; 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker class CFXJSE_MapModule { 20*3ac0a46fSAndroid Build Coastguard Worker public: 21*3ac0a46fSAndroid Build Coastguard Worker CFXJSE_MapModule(); 22*3ac0a46fSAndroid Build Coastguard Worker ~CFXJSE_MapModule(); 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker CFXJSE_MapModule(const CFXJSE_MapModule& that) = delete; 25*3ac0a46fSAndroid Build Coastguard Worker CFXJSE_MapModule& operator=(const CFXJSE_MapModule& that) = delete; 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker void SetValue(uint32_t key, int32_t value); 28*3ac0a46fSAndroid Build Coastguard Worker void SetString(uint32_t key, const WideString& wsString); 29*3ac0a46fSAndroid Build Coastguard Worker void SetMeasurement(uint32_t key, const CXFA_Measurement& measurement); 30*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int32_t> GetValue(uint32_t key) const; 31*3ac0a46fSAndroid Build Coastguard Worker absl::optional<WideString> GetString(uint32_t key) const; 32*3ac0a46fSAndroid Build Coastguard Worker absl::optional<CXFA_Measurement> GetMeasurement(uint32_t key) const; 33*3ac0a46fSAndroid Build Coastguard Worker bool HasKey(uint32_t key) const; 34*3ac0a46fSAndroid Build Coastguard Worker void RemoveKey(uint32_t key); 35*3ac0a46fSAndroid Build Coastguard Worker void MergeDataFrom(const CFXJSE_MapModule* pSrc); 36*3ac0a46fSAndroid Build Coastguard Worker 37*3ac0a46fSAndroid Build Coastguard Worker private: 38*3ac0a46fSAndroid Build Coastguard Worker // keyed by result of GetMapKey_*(). 39*3ac0a46fSAndroid Build Coastguard Worker std::map<uint32_t, int32_t> m_ValueMap; 40*3ac0a46fSAndroid Build Coastguard Worker std::map<uint32_t, WideString> m_StringMap; 41*3ac0a46fSAndroid Build Coastguard Worker std::map<uint32_t, CXFA_Measurement> m_MeasurementMap; 42*3ac0a46fSAndroid Build Coastguard Worker }; 43*3ac0a46fSAndroid Build Coastguard Worker 44*3ac0a46fSAndroid Build Coastguard Worker #endif // FXJS_XFA_CFXJSE_MAPMODULE_H_ 45