aboutsummaryrefslogtreecommitdiff
path: root/doc/doc_main.doxygen
blob: aa3d30f28cba140a7532e526870efc0fab2943d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
/* vim: set ft=cpp tw=80 sw=4 et : */

/** \defgroup DepResolver Dependency parsing and resolution
Dependency parsing and resolution.

Dependency resolution is handled in stages. We convert a dependency string
into a tree structure, and then define a visitor over this structure.

\section DepResolverImportant Important Classes

- paludis::DepList creates and holds dependency lists
- paludis::DepParser turns a dependency string into a paludis::DepAtom
  heirarchy.
*/

/** \defgroup Environment Environment
Environment.

These classes represent the environment in which paludis is running.

\section EnvironmentImportant Important Classes

- paludis::Environment represents an environment.
- paludis::DefaultEnvironment represents the usual environment that should
  be used when writing normal programs (other paludis::Environment
  descendents exist, e.g. for testing).
*/

/** \defgroup Database Package database functionality
Package database functionality.

These classes provide checked representations for common data types, as
well as the core queryable package database functionality.

\section DatabaseImportant Important Classes

- paludis::PackageDatabase represents a package database, which
  is queryable and holds zero or more paludis::Repository instances.

\ingroup Environment
*/


/** \defgroup Utility Utilities
Utilities.

Various miscellaneous utilities.
*/

/** \defgroup Exception Exception handling
Exception handling.

All exceptions thrown from paludis should be a subclass of
paludis::Exception, which provides a message and (via libebt) a backtrace
giving details of the error. It is probably wise to also check for
std::exception when writing error handling code.

\section ExceptionImportant Important classes

- paludis::Exception is the base exception class. All exceptions thrown
  by paludis should be descended from this class (although it's best to
  check for std::exception too just in case).

\ingroup Utility
*/

/** \defgroup Args Command line argument handling
Command line handling for a program.

Command line handling for a program is done via a subclass of ArgsHandler.
The class will have member variables of type ArgsGroup to handle groups of
related arguments, and member variables of subtypes of ArgsOption to handle
individual switches.

\ingroup Utility
*/

/** \defgroup Pointer Pointers
Pointers.

We use shared pointers in various places. Different policies are available
for different reference count models.

\section PointerImportant Important Classes

- paludis::CountedPtr is used for reference counted pointers.

\ingroup Utility
*/

/** \defgroup Tokeniser Tokeniser
Tokeniser.

The paludis::Tokeniser class provides a way of splitting strings into
smaller strings.

\section TokeniserImportant Important Classes

- paludis::Tokeniser is the main class.

\ingroup Utility
*/

/** \defgroup Filesystem Filesystem wrapper utilities
Filesystem wrapper utilities.

The C++ standard library doesn't provide anything for working with
filesystem entries or directories. Rather than repeatedly making calls
to stat(2) and opendir(3) all over the place (or using the bloatware
utilities from Boost), we provide a few lightweight wrapper classes.

\section FilesystemImportant Important Classes

- paludis::FSEntry represents a filesystem entry.
- paludis::DirIterator is an iterator for directories.
- paludis::IsFileWithExtension can be used as a functor to determine
  whether a paludis::FSEntry instance is a file with certain attributes.

\ingroup Utility
*/

/** \defgroup PStream Process handling
Process handling.

The paludis::PStream class can be used to execute a process and get its
standard output.

\section PStreamImportant Important Classes

- paludis::PStream is a front-end std::istream descendent for process
  invokation.

\ingroup Utility
*/

/** \defgroup Iterator Iterator utilities
Iterator utilities.

Various adapter classes for iterators are provided to simplify writing code.

\section IteratorImportant Important Classes

Insert iterator adapters:

- paludis::CreateInsertIterator (which can be created via
  paludis::create_inserter) uses the inserted value to create an object.
- paludis::FilterInsertIterator (which can be created via
  paludis::filter_inserter) only inserts the object if a predicate is true.
- paludis::TransformInsertIterator (which can be created via
  paludis::transform_inserter) performs a transformation upon the object to
  be inserted.

Input iterator adapters:

- paludis::IndirectIterator removes one level of dereferencing when using a
  container of pointer-like objects.

\ingroup Utility
*/

/** \defgroup Visitor Visitor pattern
Visitor pattern.

See \ref GoF for how visitors work. See the test cases for how to use
it.

\ingroup Utility
*/

/** \defgroup VirtualConstructor Virtual constructors
Visitor pattern.

See \ref GoF for how virtual constructors (called "Factory Methods" there)
work. See the test cases for how to use it.

\ingroup Utility
*/

/** \defgroup ConfigFile Configuration handling
Configuration handling.

The paludis::ConfigFile class is a handler for generic configuration files
using a general line-oriented, comments start with a # format. Various
subclasses provide interfaces for different file formats.

\section ConfigFileImportant Important Classes

- paludis::KeyValueFile represents a configuration file containing
  KEY="value" type statements.
- paludis::LineConfigFile represents a configuration file containing
  lines of text.
*/

/** \defgroup Test Test cases and framework
Test cases and framework.

Test cases are classes that are descended from TestCase. Declaring an
instance of a TestCase subclass will register it with the test case
list.
*/

/** \defgroup QA QA Checks
QA Checks.

Various QA checks that can be applied to packages or ebuilds.
*/