]> git.lyx.org Git - lyx.git/blob - src/language.h
more code in the menu backend == less code in the menu frontends; add support for...
[lyx.git] / src / language.h
1 // -*- C++ -*-
2 /* This file is part of
3  * ======================================================
4  *
5  *           LyX, The Document Processor
6  *
7  *           Copyright 1995 Matthias Ettrich
8  *           Copyright 1995-2001 The LyX Team.
9  *
10  * ====================================================== */
11
12 #ifndef LANGUAGE_H
13 #define LANGUAGE_H
14
15 #include <map>
16 #include "LString.h"
17
18 class Encoding;
19
20 ///
21 class Language {
22 public:
23         ///
24         Language() : RightToLeft_(false) {}
25         ///
26         Language(string const & l, string const & b, string const & d,
27                  bool rtl, Encoding const * e, string const & c,
28                  string const & o)
29                 : lang_(l), babel_(b), display_(d), RightToLeft_(rtl),
30                   encoding_(e), code_(c), latex_options_(o)
31                 {}
32         ///
33         string const & lang() const {
34                 return lang_;
35         }
36         ///
37         string const & babel() const {
38                 return babel_;
39         }
40         ///
41         string const & display() const {
42                 return display_;
43         }
44         ///
45         bool RightToLeft() const {
46                 return RightToLeft_;
47         }
48         ///
49         Encoding const * encoding() const {
50                 return encoding_;
51         }
52         ///
53         string const & code() const {
54                 return code_;
55         }
56         ///
57         string const & latex_options() const {
58                 return latex_options_;
59         }
60 private:
61         ///
62         string lang_;
63         ///
64         string babel_;
65         ///
66         string display_;
67         ///
68         bool RightToLeft_;
69         ///
70         Encoding const * encoding_;
71         ///
72         string code_;
73         ///
74         string latex_options_;
75 };
76
77 class Languages
78 {
79 public:
80         ///
81         typedef std::map<string, Language> LanguageList;
82         ///
83         typedef LanguageList::const_iterator const_iterator;
84         ///
85         typedef LanguageList::size_type size_type;
86         ///
87         void read(string const & filename);
88         ///
89         void setDefaults();
90         ///
91         Language const * getLanguage(string const & language) const;
92         ///
93         size_type size() const {
94                 return languagelist.size();
95         }
96         ///
97         const_iterator begin() const {
98                 return languagelist.begin();
99         }
100         ///
101         const_iterator end() const {
102                 return languagelist.end();
103         }
104         ///
105
106 private:
107         ///
108         LanguageList languagelist;
109 };
110
111 extern Languages languages;
112 extern Language const * default_language;
113 extern Language const * english_language;
114 extern Language const * ignore_language;
115 extern Language const * latex_language;
116
117 #endif