1 ////////////////////////////////////////////////////////////////////////////////
2 //    Scorched3D (c) 2000-2011
3 //
4 //    This file is part of Scorched3D.
5 //
6 //    Scorched3D is free software; you can redistribute it and/or modify
7 //    it under the terms of the GNU General Public License as published by
8 //    the Free Software Foundation; either version 2 of the License, or
9 //    (at your option) any later version.
10 //
11 //    Scorched3D is distributed in the hope that it will be useful,
12 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //    GNU General Public License for more details.
15 //
16 //    You should have received a copy of the GNU General Public License along
17 //    with this program; if not, write to the Free Software Foundation, Inc.,
18 //    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 ////////////////////////////////////////////////////////////////////////////////
20 
21 #if !defined(__INCLUDE_LangParam_INCLUDE__)
22 #define __INCLUDE_LangParam_INCLUDE__
23 
24 #include <lang/LangString.h>
25 #include <vector>
26 
27 #define LANG_PARAM_1(key, param1) \
28 	LangParam::getKey(key, param1)
29 #define LANG_PARAM_2(key, param1, param2) \
30 	LangParam::getKey(key, param1, param2)
31 #define LANG_PARAM_3(key, param1, param2, param3) \
32 	LangParam::getKey(key, param1, param2, param3)
33 #define LANG_PARAM_4(key, param1, param2, param3, param4) \
34 	LangParam::getKey(key, param1, param2, param3, param4)
35 #define LANG_PARAM_5(key, param1, param2, param3, param4, param5) \
36 	LangParam::getKey(key, param1, param2, param3, param4, param5)
37 
38 class LangParam
39 {
40 public:
41 	LangParam(const LangStringConverter &value);
42 
43 	LangString getValue();
44 
45 	LangString getParameterizedString();
46 	LangString getParameterizedString(const LangStringConverter &param1);
47 	LangString getParameterizedString(const LangStringConverter &param1,
48 		const LangStringConverter &param2);
49 	LangString getParameterizedString(const LangStringConverter &param1,
50 		const LangStringConverter &param2, const LangStringConverter &param3);
51 	LangString getParameterizedString(const LangStringConverter &param1,
52 		const LangStringConverter &param2, const LangStringConverter &param3,
53 		const LangStringConverter &param4);
54 	LangString getParameterizedString(const LangStringConverter &param1,
55 		const LangStringConverter &param2, const LangStringConverter &param3,
56 		const LangStringConverter &param4, const LangStringConverter &param5);
57 
58 	static LangString getKey(const LangStringConverter &value,
59 		const LangStringConverter &param1);
60 	static LangString getKey(const LangStringConverter &value,
61 		const LangStringConverter &param1,
62 		const LangStringConverter &param2);
63 	static LangString getKey(const LangStringConverter &value,
64 		const LangStringConverter &param1,
65 		const LangStringConverter &param2,
66 		const LangStringConverter &param3);
67 	static LangString getKey(const LangStringConverter &value,
68 		const LangStringConverter &param1,
69 		const LangStringConverter &param2,
70 		const LangStringConverter &param3,
71 		const LangStringConverter &param4);
72 	static LangString getKey(const LangStringConverter &value,
73 		const LangStringConverter &param1,
74 		const LangStringConverter &param2,
75 		const LangStringConverter &param3,
76 		const LangStringConverter &param4,
77 		const LangStringConverter &param5);
78 
79 private:
80 	std::vector<LangString> parts_;
81 	std::vector<int> positions_;
82 };
83 
84 #endif // __INCLUDE_LangParam_INCLUDE__
85