]>
Commit | Line | Data |
---|---|---|
e878aedb DK |
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 | /*}}}*/ | |
17 | namespace APT { | |
18 | class Configuration { /*{{{*/ | |
19 | public: /*{{{*/ | |
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 | * | |
15fb0007 | 39 | * \return a vector of the compression types in the prefered usage order |
e878aedb DK |
40 | */ |
41 | std::vector<std::string> static const getCompressionTypes(bool const &Cached = true); | |
45df0ad2 DK |
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 prefered 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 prefered 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 prefered usage order | |
65 | */ | |
66 | std::vector<std::string> static const getLanguages(bool const &All = false, | |
83742b3c | 67 | bool const &Cached = true, char const ** const Locale = 0); |
45df0ad2 | 68 | |
5dd4c8b8 DK |
69 | /** \brief Returns a vector of Architectures we support |
70 | * | |
71 | * \param Cached saves the result so we need to calculated it only once | |
72 | * this parameter should ony be used for testing purposes. | |
73 | * | |
74 | * \return a vector of Architectures in prefered order | |
75 | */ | |
76 | std::vector<std::string> static const getArchitectures(bool const &Cached = true); | |
77 | ||
78 | /** \brief Are we interested in the given Architecture? | |
79 | * | |
80 | * \param Arch we want to check | |
81 | * \return true if we are interested, false otherwise | |
82 | */ | |
83 | bool static const checkArchitecture(std::string const &Arch); | |
84 | ||
03bef784 DK |
85 | /** \brief Representation of supported compressors */ |
86 | struct Compressor { | |
87 | std::string Name; | |
88 | std::string Extension; | |
89 | std::string Binary; | |
90 | std::vector<std::string> CompressArgs; | |
91 | std::vector<std::string> UncompressArgs; | |
92 | unsigned short Cost; | |
93 | ||
94 | Compressor(char const *name, char const *extension, char const *binary, | |
95 | char const *compressArg, char const *uncompressArg, | |
96 | unsigned short const cost); | |
97 | Compressor() {}; | |
98 | }; | |
99 | ||
100 | /** \brief Return a vector of Compressors supported for data.tar's | |
101 | * | |
102 | * \param Cached saves the result so we need to calculated it only once | |
103 | * this parameter should ony be used for testing purposes. | |
104 | * | |
105 | * \return a vector of Compressors | |
106 | */ | |
107 | std::vector<Compressor> static const getCompressors(bool const Cached = true); | |
b0e1a43f DK |
108 | |
109 | /** \brief Return a vector of extensions supported for data.tar's */ | |
110 | std::vector<std::string> static const getCompressorExtensions(); | |
03bef784 DK |
111 | /*}}}*/ |
112 | private: /*{{{*/ | |
113 | void static setDefaultConfigurationForCompressors(); | |
e878aedb DK |
114 | /*}}}*/ |
115 | }; | |
116 | /*}}}*/ | |
117 | } | |
118 | #endif |