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 #ifndef XFA_FXFA_PARSER_CXFA_LOCALEMGR_H_
8 #define XFA_FXFA_PARSER_CXFA_LOCALEMGR_H_
9 
10 #include <memory>
11 #include <vector>
12 
13 #include "core/fxcrt/unowned_ptr.h"
14 #include "core/fxcrt/widestring.h"
15 #include "xfa/fgas/crt/locale_mgr_iface.h"
16 
17 class CXFA_Node;
18 class LocaleIface;
19 
20 class CXFA_LocaleMgr : public LocaleMgrIface {
21  public:
22   CXFA_LocaleMgr(CXFA_Node* pLocaleSet, WideString wsDeflcid);
23   ~CXFA_LocaleMgr() override;
24 
25   LocaleIface* GetDefLocale() override;
26   LocaleIface* GetLocaleByName(const WideString& wsLocaleName) override;
27 
28   void SetDefLocale(LocaleIface* pLocale);
29   WideString GetConfigLocaleName(CXFA_Node* pConfig);
30 
31  private:
32   std::unique_ptr<LocaleIface> GetLocale(uint16_t lcid);
33 
34   std::vector<std::unique_ptr<LocaleIface>> m_LocaleArray;
35   std::vector<std::unique_ptr<LocaleIface>> m_XMLLocaleArray;
36 
37   // Owned by m_LocaleArray or m_XMLLocaleArray.
38   UnownedPtr<LocaleIface> m_pDefLocale;
39 
40   WideString m_wsConfigLocale;
41   uint16_t m_dwDeflcid;
42   bool m_hasSetLocaleName = false;
43 };
44 
45 #endif  // XFA_FXFA_PARSER_CXFA_LOCALEMGR_H_
46