Fix for UBSan build
[platform/upstream/doxygen.git] / src / translator.h
1 /******************************************************************************
2  *
3  * 
4  *
5  * Copyright (C) 1997-2012 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby 
9  * granted. No representations are made about the suitability of this software 
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17
18 #ifndef TRANSLATOR_H
19 #define TRANSLATOR_H
20
21 #include "qtbc.h"
22 #include "classdef.h"
23 #include "util.h"
24 #include "config.h"
25
26 /** Abstract base class for all translatable text fragments. */
27 class Translator
28 {
29   private:
30     /* Tables for encoding conversions. */
31     static const char Win1250ToISO88592Tab[];
32     static const char ISO88592ToWin1250Tab[];
33     static const unsigned char Koi8RToWindows1251Tab[128];
34     static const unsigned char Windows1251ToKoi8RTab[128];
35
36   protected:
37     /*! Returns the string converted from windows-1250 to iso-8859-2. */
38     QCString Win1250ToISO88592(const QCString & sInput);
39     
40     /*! Returns the string converted from iso-8859-2 to windows-1250. */
41     QCString ISO88592ToWin1250(const QCString & sInput);
42     
43     /*! Returns the string converted from koi8-r to windows-1251. */
44     QCString Koi8RToWindows1251( const QCString & sInput );
45
46     /*! Returns the string converted from windows-1251 to koi8-r. */
47     QCString Windows1251ToKoi8R( const QCString & sInput );
48     
49     /*! Returns the string converted from Japanese-EUC to SJIS. */
50     QCString JapaneseEucToSjis( const QCString & sInput );
51
52   public:
53
54     /*! This method is used to provide warning message that is displayed
55      *  if the user chooses a language whose translation is not up to date. 
56      *  It is implemented by the adapter classes.
57      */
58     virtual QCString updateNeededMessage() { return ""; }
59     virtual ~Translator() {}
60    
61     // Please, have a look at comments inside the translator_en.h file
62     // to learn the meaning of the following methods.  The translator_en.h
63     // file contains the TranslatorEnglish implementation, which is 
64     // always up-to-date (by definition).
65    
66     // --- Language control methods -------------------
67     
68     virtual QCString idLanguage() = 0;
69     virtual QCString latexLanguageSupportCommand() = 0;
70     virtual QCString idLanguageCharset() = 0;
71
72     // --- Language translation methods -------------------
73
74     virtual QCString trRelatedFunctions() = 0;
75     virtual QCString trRelatedSubscript() = 0;
76     virtual QCString trDetailedDescription() = 0;
77     virtual QCString trMemberTypedefDocumentation() = 0;
78     virtual QCString trMemberEnumerationDocumentation() = 0;
79     virtual QCString trMemberFunctionDocumentation() = 0;
80     virtual QCString trMemberDataDocumentation() = 0;
81     virtual QCString trMore() = 0;
82     virtual QCString trListOfAllMembers() = 0;
83     virtual QCString trMemberList() = 0;
84     virtual QCString trThisIsTheListOfAllMembers() = 0;
85     virtual QCString trIncludingInheritedMembers() = 0;
86     virtual QCString trGeneratedAutomatically(const char *s) = 0;
87     virtual QCString trEnumName() = 0;
88     virtual QCString trEnumValue() = 0;
89     virtual QCString trDefinedIn() = 0;
90
91     // quick reference sections
92
93     virtual QCString trModules() = 0;
94     virtual QCString trClassHierarchy() = 0;
95     virtual QCString trCompoundList() = 0;
96     virtual QCString trFileList() = 0;
97     //virtual QCString trHeaderFiles() = 0;
98     virtual QCString trCompoundMembers() = 0;
99     virtual QCString trFileMembers() = 0;
100     virtual QCString trRelatedPages() = 0;
101     virtual QCString trExamples() = 0;
102     virtual QCString trSearch() = 0;
103     virtual QCString trClassHierarchyDescription() = 0;
104     virtual QCString trFileListDescription(bool extractAll) = 0;
105     virtual QCString trCompoundListDescription() = 0;
106     virtual QCString trCompoundMembersDescription(bool extractAll) = 0;
107     virtual QCString trFileMembersDescription(bool extractAll) = 0;
108     //virtual QCString trHeaderFilesDescription() = 0;
109     virtual QCString trExamplesDescription() = 0;
110     virtual QCString trRelatedPagesDescription() = 0;
111     virtual QCString trModulesDescription() = 0;
112     //virtual QCString trNoDescriptionAvailable() = 0;
113     
114     // index titles (the project name is prepended for these) 
115
116     virtual QCString trDocumentation() = 0;
117     virtual QCString trModuleIndex() = 0;
118     virtual QCString trHierarchicalIndex() = 0;
119     virtual QCString trCompoundIndex() = 0;
120     virtual QCString trFileIndex() = 0; 
121     virtual QCString trModuleDocumentation() = 0;
122     virtual QCString trClassDocumentation() = 0;
123     virtual QCString trFileDocumentation() = 0;
124     virtual QCString trExampleDocumentation() = 0;
125     virtual QCString trPageDocumentation() = 0;
126     virtual QCString trReferenceManual() = 0;
127     virtual QCString trDefines() = 0;
128     virtual QCString trFuncProtos() = 0;
129     virtual QCString trTypedefs() = 0;
130     virtual QCString trEnumerations() = 0;
131     virtual QCString trFunctions() = 0;
132     virtual QCString trVariables() = 0;
133     virtual QCString trEnumerationValues() = 0;
134     virtual QCString trDefineDocumentation() = 0;
135     virtual QCString trFunctionPrototypeDocumentation() = 0;
136     virtual QCString trTypedefDocumentation() = 0;
137     virtual QCString trEnumerationTypeDocumentation() = 0;
138     virtual QCString trFunctionDocumentation() = 0;
139     virtual QCString trVariableDocumentation() = 0;
140     virtual QCString trCompounds() = 0;
141     virtual QCString trGeneratedAt(const char *date,const char *projName) = 0;
142     virtual QCString trWrittenBy() = 0;
143     virtual QCString trClassDiagram(const char *clName) = 0;
144     virtual QCString trForInternalUseOnly() = 0;
145     //virtual QCString trReimplementedForInternalReasons() = 0;
146     virtual QCString trWarning() = 0;
147     //virtual QCString trBugsAndLimitations() = 0;
148     virtual QCString trVersion() = 0;
149     virtual QCString trDate() = 0;
150     virtual QCString trReturns() = 0;
151     virtual QCString trSeeAlso() = 0;
152     virtual QCString trParameters() = 0;
153     virtual QCString trExceptions() = 0;
154     virtual QCString trGeneratedBy() = 0;
155
156 //////////////////////////////////////////////////////////////////////////
157 // new since 0.49-990307
158 //////////////////////////////////////////////////////////////////////////
159     
160     virtual QCString trNamespaceList() = 0;
161     virtual QCString trNamespaceListDescription(bool extractAll) = 0;
162     virtual QCString trFriends() = 0;
163     
164 //////////////////////////////////////////////////////////////////////////
165 // new since 0.49-990405
166 //////////////////////////////////////////////////////////////////////////
167     
168     virtual QCString trRelatedFunctionDocumentation() = 0;
169     
170 //////////////////////////////////////////////////////////////////////////
171 // new since 0.49-990425
172 //////////////////////////////////////////////////////////////////////////
173
174     virtual QCString trCompoundReference(const char *clName,
175                                     ClassDef::CompoundType compType,
176                                     bool isTemplate) = 0;
177
178     virtual QCString trFileReference(const char *fileName) = 0;
179     virtual QCString trNamespaceReference(const char *namespaceName) = 0;
180     
181     virtual QCString trPublicMembers() = 0;
182     virtual QCString trPublicSlots() = 0;
183     virtual QCString trSignals() = 0;
184     virtual QCString trStaticPublicMembers() = 0;
185     virtual QCString trProtectedMembers() = 0;
186     virtual QCString trProtectedSlots() = 0;
187     virtual QCString trStaticProtectedMembers() = 0;
188     virtual QCString trPrivateMembers() = 0;
189     virtual QCString trPrivateSlots() = 0;
190     virtual QCString trStaticPrivateMembers() = 0;
191     virtual QCString trWriteList(int numEntries) = 0;
192     virtual QCString trInheritsList(int numEntries) = 0;
193     virtual QCString trInheritedByList(int numEntries) = 0;
194     virtual QCString trReimplementedFromList(int numEntries) = 0;
195     virtual QCString trReimplementedInList(int numEntries) = 0;
196     virtual QCString trNamespaceMembers() = 0;
197     virtual QCString trNamespaceMemberDescription(bool extractAll) = 0;
198     virtual QCString trNamespaceIndex() = 0;
199     virtual QCString trNamespaceDocumentation() = 0;
200
201 //////////////////////////////////////////////////////////////////////////
202 // new since 0.49-990522
203 //////////////////////////////////////////////////////////////////////////
204
205     virtual QCString trNamespaces() = 0;
206
207 //////////////////////////////////////////////////////////////////////////
208 // new since 0.49-990728
209 //////////////////////////////////////////////////////////////////////////
210
211     virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
212                                           bool single) = 0;
213     virtual QCString trAlphabeticalList() = 0;
214
215 //////////////////////////////////////////////////////////////////////////
216 // new since 0.49-990901
217 //////////////////////////////////////////////////////////////////////////
218
219     virtual QCString trReturnValues() = 0;
220     virtual QCString trMainPage() = 0;
221     virtual QCString trPageAbbreviation() = 0;
222
223 //////////////////////////////////////////////////////////////////////////
224 // new since 0.49-991003
225 //////////////////////////////////////////////////////////////////////////
226
227     //virtual QCString trSources() = 0;
228     virtual QCString trDefinedAtLineInSourceFile() = 0;
229     virtual QCString trDefinedInSourceFile() = 0;
230
231 //////////////////////////////////////////////////////////////////////////
232 // new since 0.49-991205
233 //////////////////////////////////////////////////////////////////////////
234
235     virtual QCString trDeprecated() = 0;
236
237 //////////////////////////////////////////////////////////////////////////
238 // new since 1.0.0
239 //////////////////////////////////////////////////////////////////////////
240
241     virtual QCString trCollaborationDiagram(const char *clName) = 0;
242     virtual QCString trInclDepGraph(const char *fName) = 0;
243     virtual QCString trConstructorDocumentation() = 0;
244     virtual QCString trGotoSourceCode() = 0;
245     virtual QCString trGotoDocumentation() = 0;
246     virtual QCString trPrecondition() = 0;
247     virtual QCString trPostcondition() = 0;
248     virtual QCString trInvariant() = 0;
249     virtual QCString trInitialValue() = 0;
250     virtual QCString trCode() = 0;
251
252     virtual QCString trGraphicalHierarchy() = 0;
253     virtual QCString trGotoGraphicalHierarchy() = 0;
254     virtual QCString trGotoTextualHierarchy() = 0;
255     virtual QCString trPageIndex() = 0;
256
257 //////////////////////////////////////////////////////////////////////////
258 // new since 1.1.0
259 //////////////////////////////////////////////////////////////////////////
260     
261     virtual QCString trNote() = 0;
262     virtual QCString trPublicTypes() = 0;
263     virtual QCString trPublicAttribs() = 0;
264     virtual QCString trStaticPublicAttribs() = 0;
265     virtual QCString trProtectedTypes() = 0;
266     virtual QCString trProtectedAttribs() = 0;
267     virtual QCString trStaticProtectedAttribs() = 0;
268     virtual QCString trPrivateTypes() = 0;
269     virtual QCString trPrivateAttribs() = 0;
270     virtual QCString trStaticPrivateAttribs() = 0;
271
272 //////////////////////////////////////////////////////////////////////////
273 // new since 1.1.3
274 //////////////////////////////////////////////////////////////////////////
275
276     virtual QCString trTodo() = 0;
277     virtual QCString trTodoList() = 0;
278
279 //////////////////////////////////////////////////////////////////////////
280 // new since 1.1.4
281 //////////////////////////////////////////////////////////////////////////
282
283     virtual QCString trReferencedBy() = 0;
284     virtual QCString trRemarks() = 0;
285     virtual QCString trAttention() = 0;
286     virtual QCString trInclByDepGraph() = 0;
287     virtual QCString trSince() = 0;
288     
289 //////////////////////////////////////////////////////////////////////////
290 // new since 1.1.5
291 //////////////////////////////////////////////////////////////////////////
292
293     virtual QCString trLegendTitle() = 0;
294     virtual QCString trLegendDocs() = 0;
295     virtual QCString trLegend() = 0;
296     
297 //////////////////////////////////////////////////////////////////////////
298 // new since 1.2.0
299 //////////////////////////////////////////////////////////////////////////
300     
301     virtual QCString trTest() = 0;
302     virtual QCString trTestList() = 0;
303
304 //////////////////////////////////////////////////////////////////////////
305 // new since 1.2.1
306 //////////////////////////////////////////////////////////////////////////
307
308     virtual QCString trDCOPMethods() = 0;
309
310 //////////////////////////////////////////////////////////////////////////
311 // new since 1.2.2
312 //////////////////////////////////////////////////////////////////////////
313
314     virtual QCString trProperties() = 0;
315     virtual QCString trPropertyDocumentation() = 0;
316
317 //////////////////////////////////////////////////////////////////////////
318 // new since 1.2.4
319 //////////////////////////////////////////////////////////////////////////
320
321     //virtual QCString trInterfaces() = 0;
322     virtual QCString trClasses() = 0;
323     virtual QCString trPackage(const char *name) = 0;
324     virtual QCString trPackageList() = 0;
325     virtual QCString trPackageListDescription() = 0;
326     virtual QCString trPackages() = 0;
327     //virtual QCString trPackageDocumentation() = 0;
328     virtual QCString trDefineValue() = 0;
329     
330 //////////////////////////////////////////////////////////////////////////
331 // new since 1.2.5
332 //////////////////////////////////////////////////////////////////////////
333     
334     virtual QCString trBug() = 0;
335     virtual QCString trBugList() = 0;
336
337 //////////////////////////////////////////////////////////////////////////
338 // new since 1.2.6
339 //////////////////////////////////////////////////////////////////////////
340
341     virtual QCString trRTFansicp() = 0;
342     virtual QCString trRTFCharSet() = 0;
343     virtual QCString trRTFGeneralIndex() = 0;
344    
345     // Translation of the word
346
347     virtual QCString trClass(bool first_capital, bool singular) = 0;
348     virtual QCString trFile(bool first_capital, bool singular) = 0;
349     virtual QCString trNamespace(bool first_capital, bool singular) = 0;
350     virtual QCString trGroup(bool first_capital, bool singular) = 0;
351     virtual QCString trPage(bool first_capital, bool singular) = 0;
352     virtual QCString trMember(bool first_capital, bool singular) = 0;
353     //virtual QCString trField(bool first_capital, bool singular) = 0;
354     virtual QCString trGlobal(bool first_capital, bool singular) = 0;
355
356 //////////////////////////////////////////////////////////////////////////
357 // new since 1.2.7
358 //////////////////////////////////////////////////////////////////////////
359         
360     virtual QCString trAuthor(bool first_capital, bool singular) = 0;
361
362 //////////////////////////////////////////////////////////////////////////
363 // new since 1.2.11
364 //////////////////////////////////////////////////////////////////////////
365
366     virtual QCString trReferences() = 0;
367
368 //////////////////////////////////////////////////////////////////////////
369 // new since 1.2.13
370 //////////////////////////////////////////////////////////////////////////
371
372     virtual QCString trImplementedFromList(int numEntries) = 0;
373     virtual QCString trImplementedInList(int numEntries) = 0;
374     
375 //////////////////////////////////////////////////////////////////////////
376 // new since 1.2.16
377 //////////////////////////////////////////////////////////////////////////
378
379     virtual QCString trRTFTableOfContents() = 0;
380
381 //////////////////////////////////////////////////////////////////////////
382 // new since 1.2.17
383 //////////////////////////////////////////////////////////////////////////
384
385     virtual QCString trDeprecatedList() = 0;
386     
387 //////////////////////////////////////////////////////////////////////////
388 // new since 1.2.18
389 //////////////////////////////////////////////////////////////////////////
390
391     virtual QCString trEvents() = 0;
392     virtual QCString trEventDocumentation() = 0;
393
394 //////////////////////////////////////////////////////////////////////////
395 // new since 1.3
396 //////////////////////////////////////////////////////////////////////////
397
398     virtual QCString trPackageTypes() = 0;
399     virtual QCString trPackageMembers() = 0;
400     virtual QCString trStaticPackageMembers() = 0;
401     virtual QCString trPackageAttribs() = 0;
402     virtual QCString trStaticPackageAttribs() = 0;
403     
404 //////////////////////////////////////////////////////////////////////////
405 // new since 1.3.1
406 //////////////////////////////////////////////////////////////////////////
407
408     virtual QCString trAll() = 0;
409     virtual QCString trCallGraph() = 0;
410
411 //////////////////////////////////////////////////////////////////////////
412 // new since 1.3.3
413 //////////////////////////////////////////////////////////////////////////
414
415     virtual QCString trSearchForIndex() = 0;
416     virtual QCString trSearchResultsTitle() = 0;
417     virtual QCString trSearchResults(int numDocuments) = 0;
418     virtual QCString trSearchMatches() = 0;
419
420 //////////////////////////////////////////////////////////////////////////
421 // new since 1.3.8
422 //////////////////////////////////////////////////////////////////////////
423
424     virtual QCString trSourceFile(QCString& filename) = 0;
425
426 //////////////////////////////////////////////////////////////////////////
427 // new since 1.3.9
428 //////////////////////////////////////////////////////////////////////////
429
430     virtual QCString trDirIndex() = 0;
431     virtual QCString trDirDocumentation() = 0;
432     virtual QCString trDirectories() = 0;
433     virtual QCString trDirDescription() = 0;
434     virtual QCString trDirReference(const char *dirName) = 0;
435     virtual QCString trDir(bool first_capital, bool singular) = 0;
436
437 //////////////////////////////////////////////////////////////////////////
438 // new since 1.4.1
439 //////////////////////////////////////////////////////////////////////////
440
441     virtual QCString trOverloadText() = 0;
442
443 //////////////////////////////////////////////////////////////////////////
444 // new since 1.4.6
445 //////////////////////////////////////////////////////////////////////////
446     
447     virtual QCString trCallerGraph() = 0;
448     virtual QCString trEnumerationValueDocumentation() = 0;
449
450 //////////////////////////////////////////////////////////////////////////
451 // new since 1.5.4
452 //////////////////////////////////////////////////////////////////////////
453     
454     virtual QCString trMemberFunctionDocumentationFortran() = 0;
455     virtual QCString trCompoundListFortran() = 0;
456     virtual QCString trCompoundMembersFortran() = 0;
457     virtual QCString trCompoundListDescriptionFortran() = 0;
458     virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) = 0;
459     virtual QCString trCompoundIndexFortran() = 0;
460     virtual QCString trTypeDocumentation() = 0;
461     virtual QCString trSubprograms() = 0;
462     virtual QCString trSubprogramDocumentation() = 0;
463     virtual QCString trDataTypes() = 0;
464     virtual QCString trModulesList() = 0;
465     virtual QCString trModulesListDescription(bool extractAll) = 0;
466     virtual QCString trCompoundReferenceFortran(const char *clName,
467                                  ClassDef::CompoundType compType,
468                                  bool isTemplate) = 0;
469     virtual QCString trModuleReference(const char *namespaceName) = 0;
470     virtual QCString trModulesMembers() = 0;
471     virtual QCString trModulesMemberDescription(bool extractAll) = 0;
472     virtual QCString trModulesIndex() = 0;
473     virtual QCString trModule(bool first_capital, bool singular) = 0;
474     virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
475                      bool single) = 0;
476     virtual QCString trType(bool first_capital, bool singular) = 0;
477     virtual QCString trSubprogram(bool first_capital, bool singular) = 0;
478     virtual QCString trTypeConstraints() = 0;
479
480 //////////////////////////////////////////////////////////////////////////
481 // new since 1.6.0
482 //////////////////////////////////////////////////////////////////////////
483
484     virtual QCString trDirRelation(const char *name) = 0;
485     virtual QCString trLoading() = 0;
486     virtual QCString trGlobalNamespace() = 0;
487     virtual QCString trSearching() = 0;
488     virtual QCString trNoMatches() = 0;
489
490 //////////////////////////////////////////////////////////////////////////
491 // new since 1.6.3
492 //////////////////////////////////////////////////////////////////////////
493
494     virtual QCString trDirDependency(const char *name) = 0;
495     virtual QCString trFileIn(const char *name) = 0;
496     virtual QCString trIncludesFileIn(const char *name) = 0;
497     virtual QCString trDateTime(int year,int month,int day,int dayOfWeek,
498                                 int hour,int minutes,int seconds,
499                                 bool includeTime) = 0;
500                        
501 //////////////////////////////////////////////////////////////////////////
502 // new since 1.7.5
503 //////////////////////////////////////////////////////////////////////////
504
505     virtual QCString trCiteReferences() = 0;
506     virtual QCString trCopyright() = 0;
507     virtual QCString trDirDepGraph(const char *name) = 0;
508
509 //////////////////////////////////////////////////////////////////////////
510 // new since 1.8.0
511 //////////////////////////////////////////////////////////////////////////
512
513     virtual QCString trDetailLevel() = 0;
514     virtual QCString trTemplateParameters() = 0;
515     virtual QCString trAndMore(const QCString &number) = 0;
516     virtual QCString trEnumGeneratedFromFiles(bool single) = 0;
517     virtual QCString trEnumReference(const char *name) = 0;
518     virtual QCString trInheritedFrom(const char *members,const char *what) = 0;
519     virtual QCString trAdditionalInheritedMembers() = 0;
520
521 //////////////////////////////////////////////////////////////////////////
522 // new since 1.8.2
523 //////////////////////////////////////////////////////////////////////////
524
525     virtual QCString trPanelSynchronisationTooltip(bool enable) = 0;
526     virtual QCString trProvidedByCategory() = 0;
527     virtual QCString trExtendsClass() = 0;
528     virtual QCString trClassMethods() = 0;
529     virtual QCString trInstanceMethods() = 0;
530     virtual QCString trMethodDocumentation() = 0;
531     virtual QCString trDesignOverview() = 0;
532
533 };
534
535 #endif