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
25namespace tinygettext {
26
27typedef unsigned int (*PluralFunc)(int n);
28
30{
31private:
32 unsigned int nplural;
34
35public:
36 static PluralForms from_string(const std::string& str);
37
39 : nplural(),
40 plural()
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) const { return nplural == other.nplural && plural == other.plural; }
52 bool operator!=(const PluralForms& other) const { return !(*this == other); }
53
54 explicit operator bool() const {
55 return plural != nullptr;
56 }
57};
58
59} // namespace tinygettext
60
61#endif
62
63/* EOF */
Definition: plural_forms.hpp:30
PluralForms()
Definition: plural_forms.hpp:38
bool operator!=(const PluralForms &other) const
Definition: plural_forms.hpp:52
unsigned int get_nplural() const
Definition: plural_forms.hpp:48
PluralFunc plural
Definition: plural_forms.hpp:33
unsigned int nplural
Definition: plural_forms.hpp:32
static PluralForms from_string(const std::string &str)
Definition: plural_forms.cpp:67
PluralForms(unsigned int nplural_, PluralFunc plural_)
Definition: plural_forms.hpp:43
bool operator==(const PluralForms &other) const
Definition: plural_forms.hpp:51
unsigned int get_plural(int n) const
Definition: plural_forms.hpp:49
Definition: L10n.h:36
unsigned int(* PluralFunc)(int n)
Definition: plural_forms.hpp:27