]>
Commit | Line | Data |
---|---|---|
1 | // -*- mode: cpp; mode: fold -*- | |
2 | // Description /*{{{*/ | |
3 | /** \class APT::Configuration | |
4 | * \brief Provide access methods to various configuration settings | |
5 | * | |
6 | * This class and their methods providing a layer around the usual access | |
7 | * methods with _config to ensure that settings are correct and to be able | |
8 | * to set defaults without the need to recheck it in every method again. | |
9 | */ | |
10 | /*}}}*/ | |
11 | #ifndef APT_CONFIGURATION_H | |
12 | #define APT_CONFIGURATION_H | |
13 | // Include Files /*{{{*/ | |
14 | #include <string> | |
15 | #include <vector> | |
16 | #include <limits> | |
17 | /*}}}*/ | |
18 | namespace APT { | |
19 | namespace Configuration { /*{{{*/ | |
20 | /** \brief Returns a vector of usable Compression Types | |
21 | * | |
22 | * Files can be compressed in various ways to decrease the size of the | |
23 | * download. Therefore the Acquiremethods support a few compression types | |
24 | * and some archives provide also a few different types. This option | |
25 | * group exists to give the user the choice to prefer one type over the | |
26 | * other (some compression types are very resource intensive - great if you | |
27 | * have a limited download, bad if you have a really lowpowered hardware.) | |
28 | * | |
29 | * This method ensures that the defaults are set and checks at runtime | |
30 | * if the type can be used. E.g. the current default is to prefer bzip2 | |
31 | * over lzma and gz - if the bzip2 binary is not available it has not much | |
32 | * sense in downloading the bz2 file, therefore we will not return bz2 as | |
33 | * a usable compression type. The availability is checked with the settings | |
34 | * in the Dir::Bin group. | |
35 | * | |
36 | * \param Cached saves the result so we need to calculated it only once | |
37 | * this parameter should ony be used for testing purposes. | |
38 | * | |
39 | * \return a vector of the compression types in the preferred usage order | |
40 | */ | |
41 | std::vector<std::string> const getCompressionTypes(bool const &Cached = true); | |
42 | ||
43 | /** \brief Returns a vector of Language Codes | |
44 | * | |
45 | * Languages can be defined with their two or five chars long code. | |
46 | * This methods handles the various ways to set the preferred codes, | |
47 | * honors the environment and ensures that the codes are not listed twice. | |
48 | * | |
49 | * The special word "environment" will be replaced with the long and the short | |
50 | * code of the local settings and it will be insured that this will not add | |
51 | * duplicates. So in an german local the setting "environment, de_DE, en, de" | |
52 | * will result in "de_DE, de, en". | |
53 | * | |
54 | * Another special word is "none" which separates the preferred from all codes | |
55 | * in this setting. So setting and method can be used to get codes the user want | |
56 | * to see or to get all language codes APT (should) have Translations available. | |
57 | * | |
58 | * \param All return all codes or only codes for languages we want to use | |
59 | * \param Cached saves the result so we need to calculated it only once | |
60 | * this parameter should ony be used for testing purposes. | |
61 | * \param Locale don't get the locale from the system but use this one instead | |
62 | * this parameter should ony be used for testing purposes. | |
63 | * | |
64 | * \return a vector of (all) Language Codes in the preferred usage order | |
65 | */ | |
66 | std::vector<std::string> const getLanguages(bool const &All = false, | |
67 | bool const &Cached = true, char const ** const Locale = 0); | |
68 | ||
69 | /** \brief Are we interested in the given Language? | |
70 | * | |
71 | * \param Lang is the language we want to check | |
72 | * \param All defines if we check against all codes or only against used codes | |
73 | * \return true if we are interested, false otherwise | |
74 | */ | |
75 | bool checkLanguage(std::string Lang, bool const All = false); | |
76 | ||
77 | /** \brief Returns a vector of Architectures we support | |
78 | * | |
79 | * \param Cached saves the result so we need to calculated it only once | |
80 | * this parameter should ony be used for testing purposes. | |
81 | * | |
82 | * \return a vector of Architectures in preferred order | |
83 | */ | |
84 | std::vector<std::string> const getArchitectures(bool const &Cached = true); | |
85 | ||
86 | /** \brief Are we interested in the given Architecture? | |
87 | * | |
88 | * \param Arch we want to check | |
89 | * \return true if we are interested, false otherwise | |
90 | */ | |
91 | bool checkArchitecture(std::string const &Arch); | |
92 | ||
93 | /** \brief Representation of supported compressors */ | |
94 | struct Compressor { | |
95 | std::string Name; | |
96 | std::string Extension; | |
97 | std::string Binary; | |
98 | std::vector<std::string> CompressArgs; | |
99 | std::vector<std::string> UncompressArgs; | |
100 | unsigned short Cost; | |
101 | ||
102 | Compressor(char const *name, char const *extension, char const *binary, | |
103 | char const *compressArg, char const *uncompressArg, | |
104 | unsigned short const cost); | |
105 | Compressor() : Cost(std::numeric_limits<unsigned short>::max()) {}; | |
106 | }; | |
107 | ||
108 | /** \brief Return a vector of Compressors supported for data.tar's | |
109 | * | |
110 | * \param Cached saves the result so we need to calculated it only once | |
111 | * this parameter should ony be used for testing purposes. | |
112 | * | |
113 | * \return a vector of Compressors | |
114 | */ | |
115 | std::vector<Compressor> const getCompressors(bool const Cached = true); | |
116 | ||
117 | /** \brief Return a vector of extensions supported for data.tar's */ | |
118 | std::vector<std::string> const getCompressorExtensions(); | |
119 | ||
120 | /** \return Return a vector of enabled build profile specifications */ | |
121 | std::vector<std::string> const getBuildProfiles(); | |
122 | /** \return Return a comma-separated list of enabled build profile specifications */ | |
123 | std::string const getBuildProfilesString(); | |
124 | /*}}}*/ | |
125 | } | |
126 | /*}}}*/ | |
127 | } | |
128 | #endif |