Pyrogenesis  trunk
plural_forms.hpp
Go to the documentation of this file.
1 // tinygettext - A gettext replacement that works directly on .po files
2 // Copyright (c) 2006 Ingo Ruhnke <grumbel@gmail.com>
3 //
4 // This software is provided 'as-is', without any express or implied
5 // warranty. In no event will the authors be held liable for any damages
6 // arising from the use of this software.
7 //
8 // Permission is granted to anyone to use this software for any purpose,
9 // including commercial applications, and to alter it and redistribute it
10 // freely, subject to the following restrictions:
11 //
12 // 1. The origin of this software must not be misrepresented; you must not
13 // claim that you wrote the original software. If you use this software
14 // in a product, an acknowledgement in the product documentation would be
15 // appreciated but is not required.
16 // 2. Altered source versions must be plainly marked as such, and must not be
17 // misrepresented as being the original software.
18 // 3. This notice may not be removed or altered from any source distribution.
19 
20 #ifndef HEADER_TINYGETTEXT_PLURAL_FORMS_HPP
21 #define HEADER_TINYGETTEXT_PLURAL_FORMS_HPP
22 
23 #include <string>
24 
25 namespace tinygettext {
26 
27 typedef unsigned int (*PluralFunc)(int n);
28 
30 {
31 private:
32  unsigned int nplural;
34 
35 public:
36  static PluralForms from_string(const std::string& str);
37 
39  : nplural(0),
40  plural(0)
41  {}
42 
43  PluralForms(unsigned int nplural_, PluralFunc plural_)
44  : nplural(nplural_),
45  plural(plural_)
46  {}
47 
48  unsigned int get_nplural() const { return nplural; }
49  unsigned int get_plural(int n) const { if (plural) return plural(n); else return 0; }
50 
51  bool operator==(const PluralForms& other) { return nplural == other.nplural && plural == other.plural; }
52  bool operator!=(const PluralForms& other) { return !(*this == other); }
53 
54  explicit operator bool() const {
55  return plural != NULL;
56  }
57 };
58 
59 } // namespace tinygettext
60 
61 #endif
62 
63 /* EOF */
bool operator==(const PluralForms &other)
Definition: plural_forms.hpp:51
unsigned int nplural
Definition: plural_forms.hpp:32
unsigned int(* PluralFunc)(int n)
Definition: plural_forms.hpp:27
PluralFunc plural
Definition: plural_forms.hpp:33
unsigned int get_plural(int n) const
Definition: plural_forms.hpp:49
PluralForms()
Definition: plural_forms.hpp:38
bool operator!=(const PluralForms &other)
Definition: plural_forms.hpp:52
unsigned int get_nplural() const
Definition: plural_forms.hpp:48
Definition: dictionary.hpp:29
PluralForms(unsigned int nplural_, PluralFunc plural_)
Definition: plural_forms.hpp:43
static PluralForms from_string(const std::string &str)
Definition: plural_forms.cpp:53
Definition: plural_forms.hpp:29