Add mechanisms to reformant and check code style (#128)
[openjpeg.git] / thirdparty / astyle / ASLocalizer.h
1 // ASLocalizer.h
2 // Copyright (c) 2017 by Jim Pattee <jimp03@email.com>.
3 // This code is licensed under the MIT License.
4 // License.md describes the conditions under which this software may be distributed.
5
6
7 #ifndef ASLOCALIZER_H
8 #define ASLOCALIZER_H
9
10 #include <string>
11 #include <vector>
12
13 namespace astyle {
14
15 using namespace std;
16
17 #ifndef ASTYLE_LIB
18
19 //-----------------------------------------------------------------------------
20 // ASLocalizer class for console build.
21 // This class encapsulates all language-dependent settings and is a
22 // generalization of the C locale concept.
23 //-----------------------------------------------------------------------------
24 class Translation;
25
26 class ASLocalizer
27 {
28 public:         // functions
29         ASLocalizer();
30         virtual ~ASLocalizer();
31         string getLanguageID() const;
32         const Translation* getTranslationClass() const;
33 #ifdef _WIN32
34         void setLanguageFromLCID(size_t lcid);
35 #endif
36         void setLanguageFromName(const char* langID);
37         const char* settext(const char* textIn) const;
38
39 private:        // functions
40         void setTranslationClass();
41
42 private:        // variables
43         Translation* m_translation;             // pointer to a polymorphic Translation class
44         string m_langID;                                // language identifier from the locale
45         string m_subLangID;                             // sub language identifier, if needed
46         string m_localeName;                    // name of the current locale (Linux only)
47         size_t m_lcid;                                  // LCID of the user locale (Windows only)
48 };
49
50 //----------------------------------------------------------------------------
51 // Translation base class.
52 //----------------------------------------------------------------------------
53
54 class Translation
55 // This base class is inherited by the language translation classes.
56 // Polymorphism is used to call the correct language translator.
57 // This class contains the translation vector and settext translation method.
58 // The language vector is built by the language sub classes.
59 // NOTE: This class must have virtual methods for typeid() to work.
60 //       typeid() is used by AStyleTestI18n_Localizer.cpp.
61 {
62 public:
63         Translation() {}
64         virtual ~Translation() {}
65         string convertToMultiByte(const wstring& wideStr) const;
66         size_t getTranslationVectorSize() const;
67         bool getWideTranslation(const string& stringIn, wstring& wideOut) const;
68         string& translate(const string& stringIn) const;
69
70 protected:
71         void addPair(const string& english, const wstring& translated);
72         // variables
73         vector<pair<string, wstring> > m_translation;           // translation vector
74
75 private:
76         mutable string m_mbTranslation;
77 };
78
79 //----------------------------------------------------------------------------
80 // Translation classes
81 // One class for each language.
82 // These classes have only a constructor which builds the language vector.
83 //----------------------------------------------------------------------------
84
85 class Bulgarian : public Translation
86 { public: Bulgarian(); };
87
88 class ChineseSimplified : public Translation
89 { public: ChineseSimplified(); };
90
91 class ChineseTraditional : public Translation
92 { public: ChineseTraditional(); };
93
94 class Dutch : public Translation
95 { public: Dutch(); };
96
97 class English : public Translation
98 { public: English(); };
99
100 class Estonian : public Translation
101 { public: Estonian(); };
102
103 class Finnish : public Translation
104 { public: Finnish(); };
105
106 class French : public Translation
107 { public: French(); };
108
109 class German : public Translation
110 { public: German(); };
111
112 class Greek : public Translation
113 { public: Greek(); };
114
115 class Hindi : public Translation
116 { public: Hindi(); };
117
118 class Hungarian : public Translation
119 { public: Hungarian(); };
120
121 class Italian : public Translation
122 { public: Italian(); };
123
124 class Japanese : public Translation
125 { public: Japanese(); };
126
127 class Korean : public Translation
128 { public: Korean(); };
129
130 class Norwegian : public Translation
131 { public: Norwegian(); };
132
133 class Polish : public Translation
134 { public: Polish(); };
135
136 class Portuguese : public Translation
137 { public: Portuguese(); };
138
139 class Romanian : public Translation
140 { public: Romanian(); };
141
142 class Russian : public Translation
143 { public: Russian(); };
144
145 class Spanish : public Translation
146 { public: Spanish(); };
147
148 class Swedish : public Translation
149 { public: Swedish(); };
150
151 class Ukrainian : public Translation
152 { public: Ukrainian(); };
153
154
155 #endif  //  ASTYLE_LIB
156
157 }       // namespace astyle
158
159 #endif  //  ASLOCALIZER_H