Statistics
| Branch: | Revision:

root / include / index.h @ ffa9279f

History | View | Annotate | Download (10.1 KB)

1
//==========================================================================
2
//  INDEX.H - part of
3
//                     OMNeT++/OMNEST
4
//            Discrete System Simulation in C++
5
//
6
//  Defines modules for documentation generation. Nothing useful for the
7
//  C++ compiler.
8
//
9
//==========================================================================
10

    
11
/*--------------------------------------------------------------*
12
  Copyright (C) 1992-2008 Andras Varga
13
  Copyright (C) 2006-2008 OpenSim Ltd.
14

15
  This file is distributed WITHOUT ANY WARRANTY. See the file
16
  `license' for details on this and other legal matters.
17
*--------------------------------------------------------------*/
18

    
19

    
20
/**
21
 * @mainpage  \opp API Reference
22
 * If you are new to \opp, a good starting point for browsing
23
 * the documentation is cSimpleModule.
24
 *
25
 * Otherwise, pick one of the following categories, or choose from the
26
 * links at the top of this page:
27
 *
28
 * - @ref SimCore
29
 * - @ref Containers
30
 * - @ref RandomNumbers
31
 * - @ref Statistics
32
 * - @ref SimSupport
33
 * - @ref Envir
34
 * - @ref EnumsTypes
35
 * - @ref Functions
36
 * - @ref Macros
37
 * - @ref Internals
38
 * - @ref EnvirExtensions
39
 * - @ref ParsimBrief
40
 *
41
 * If you have used the \opp before:
42
 * - @ref APIChanges
43
 */
44

    
45
/**
46
 * @page APIChanges API Changes
47
 *
48
 * @verbinclude API-changes.txt
49
 */
50

    
51

    
52
/**
53
 * @defgroup SimCore  Simulation core classes
54
 *
55
 * Simulation core classes:       <!-- blank line needed for autobrief=yes -->
56
 *
57
 *    - cObject and cOwnedObject are the base classes for most \opp classes
58
 *    - cModule, cCompoundModule and cSimpleModule represent modules
59
 *      in the simulation. The user implements new models by subclassing
60
 *      cSimpleModule and overriding at least its activity() or
61
 *      handleMessage() member function.
62
 *    - cMessage represents events, and also messages sent among modules
63
 *    - cGate represents module gates
64
 *    - cPar represents parameters of modules and channels
65
 *    - cSimulation stores all modules of the network and the
66
 *      data structure for scheduled events (the <i>future event set</i>)
67
 *      Most methods are used internally, but some are useful for model
68
 *      developers as well.
69
 *
70
 * Many other classes closely related to the above ones are not listed
71
 * here explicitly, but you can find them via 'See also' links from their
72
 * main classes.
73
 */
74

    
75
/**
76
 * @defgroup Containers  Container classes
77
 *
78
 * Container classes:      <!-- blank line needed for autobrief=yes -->
79
 *
80
 *    - cQueue: a generic queue class
81
 *    - cPacketQueue: a queue specialized for message objects (cMessage)
82
 *    - cArray: a dynamic array
83
 *
84
 * In addition, one can also use standard C++ container classes like
85
 * std::vector or std::map. Note that these containers will not show up
86
 * in Tkenv's inspectors unless you use the WATCH_VECTOR(), WATCH_MAP()
87
 * macros.
88
 */
89

    
90
/**
91
 * @defgroup RandomNumbers  Random number generation
92
 *
93
 * <b>Distributions</b>
94
 *
95
 * There are several functions which generate random variates
96
 * from different distributions: uniform, exponential, normal,
97
 * truncated normal, gamma, beta, Erlang, Weibull, Bernoulli,
98
 * binomial, geometric, Poisson, and several more.
99
 *
100
 * The functions rely on the random number generator described below.
101
 *
102
 * The documentation of individual functions includes the generation method
103
 * it uses. The description may refer to one of the following publications:
104
 *
105
 * LawKelton: A.M. Law and W.D. Kelton, Simulation Modeling and Analysis,
106
 * 3rd ed., McGraw Hill, 2000.
107
 *
108
 * Banks: J. Banks: Handbook of Simulation, Wiley, 1998.
109
 *
110
 * I have also found the web site
111
 * <a href="http://www.xycoon.com">http://www.xycoon.com</a> extremely useful.
112
 *
113
 * <b>Random number generators</b>
114
 *
115
 * \opp provides several random number generators (streams) and several
116
 * random number generator algorithms (default is cMersenneTwister).
117
 * RNGs can be configured in omnetpp.ini.
118
 *
119
 * RNGs are made available via the cRNG interface, and the cModule::getRNG()
120
 * method. All functions returning random variates, etc. internally
121
 * call cModule::getRNG() and cRNG::intRand(), cRNG::doubleRand().
122
 */
123

    
124
/**
125
 * @defgroup Statistics  Statistical data collection
126
 *
127
 * \opp provides a variety of statistical classes. There are basic classes
128
 * which compute basic statistics like mean and standard deviation,
129
 * some classes deal with density estimation, and other classes support
130
 * automatic detection of the end of a transient, and automatic detection
131
 * of accuracy of collected statistics.
132
 *
133
 * The two main abstract base classes are cStatistic and cDensityEstBase.
134
 * Most other classes are mostly polymorphic on these two, which means
135
 * most functionality in subclasses is available via virtual functions
136
 * defined in cStatistic and cDensityEstBase.
137
 * The transient detection and result accuracy classes are derived from
138
 * the cTransientDetection and cAccuracyDetection abstract base classes.
139
 *
140
 * The classes are:
141
 *    - cOutVector is used to record vector simulation results (an output
142
 *      vector, containing <i>(time, value)</i> pairs) to file
143
 *    - cStdDev keeps mean, standard deviation, minimum and maximum value etc.
144
 *    - cWeightedStdDev is similar to cStdDev, but accepts weighted observations.
145
 *      cWeightedStdDev can be used for example to calculate time average.
146
 *      It is the only weighted statistics class.
147
 *    - cLongHistogram and cDoubleHistogram are descendants of cStdDev and
148
 *      also keep an approximation of the distribution of the observations
149
 *      using equidistant (equal-sized) cell histograms.
150
 *    - cVarHistogram implements a histogram where cells do not need to be
151
 *      the same size. You can manually add the cell (bin) boundaries,
152
 *      or alternatively, automatically have a partitioning created where
153
 *      each bin has the same number of observations (or as close to that
154
 *      as possible).
155
 *    - cPSquare is a class that uses the P<sup>2</sup> algorithm by Jain
156
 *      and Chlamtac. The algorithm calculates quantiles without storing
157
 *      the observations.
158
 *    - cKSplit uses a novel, experimental method, based on an adaptive
159
 *      histogram-like algorithm.
160
 *
161
 * Transient and result accuracy detection classes:
162
 *   - cTDExpandingWindows is a transient detection algorithm which uses
163
 *     the sliding window approach.
164
 *   - cADByStddev is a result accuracy detection algorithm which
165
 *     works by checking the standard deviation of the observations
166
 *
167
 * Some other classes closely related to the above ones are not listed
168
 * here explicitly, but you can find them via 'See also' links from their
169
 * main classes.
170
 */
171

    
172
/**
173
 * @defgroup SimSupport  Utility classes
174
 *
175
 * Classes that make it easier to write simulation models: <!-- blank line needed for autobrief=yes -->
176
 *
177
 *    - cXMLElement makes XML configuration available for simple modules
178
 *    - cTopology supports routing in telecommunication or multiprocessor networks
179
 *    - cStringTokenizer splits up a string to words
180
 *    - cFSM is used to build Final State Machines
181
 *    - cWatch makes variables visible (inspectable) in Tkenv
182
 *    - cVisitor: subclass from this to traverse the tree of simulation objects
183
 *
184
 * Many other classes closely related to the above ones are not listed
185
 * here explicitly, but you can find them via 'See also' links from their
186
 * main classes.
187
 */
188

    
189
/**
190
 * @defgroup Envir  User interface: cEnvir and ev
191
 */
192

    
193
/**
194
 * @defgroup EnumsTypes  Enums, types, function typedefs
195
 */
196

    
197
/**
198
 * @defgroup Functions  Functions
199
 */
200

    
201
/**
202
 * @defgroup Macros  Macros
203
 */
204

    
205
/**
206
 * @defgroup Internals  Internal classes
207
 *
208
 * The classes described here are used internally by the simulation kernel.
209
 * They are normally of very little interest to the simulation programmer.
210
 * Note that although these internal classes do have a documented API,
211
 * they may change more often than other classes, simply because
212
 * they are not used in simulation models and thus backwards compatibility
213
 * is less important.
214
 *
215
 * Classes associated with simulation execution:
216
 *   - cSimulation has a single instance. It stores the network and
217
 *     manages simulation runs.
218
 *   - cScheduler is a base class for schedulers (see in @ref EnvirExtensions
219
 *     as well)
220
 *   - cMessageHeap is used internally by cSimulation as FES (Future Event Set)
221
 *   - cCoroutine is the engine behind activity()-based simple modules
222
 *   - cWatch is the class behind the WATCH() and LWATCH() macros
223
 *
224
 * Registration classes are listed below. They play the role of a central
225
 * registry in \opp -- each instance holds some specific piece of (static)
226
 * information or serves as a factory object for other objects.
227
 *
228
 * Registration objects play an important role at network build time (they
229
 * store information about available module, channel, etc. types and can
230
 * instantiate them), and for inspectors in graphical user interfaces like
231
 * Tkenv.
232
 *
233
 *   - cModuleType can instantiate a module type
234
 *   - cChannelType can instantiate a channel type
235
 *   - cMathFunction stores a pointer to a math function accessible from NED
236
 *   - cObjectFactory can instantiate a class, given the class name as string
237
 *   - cClassDescriptor provides a generic way to access data in a struct
238
 *     or class (somewhat analogous to Java reflection)
239
 *   - cEnum maps enum values to their string representations and vica versa
240
 *
241
 * Some other classes, closely related to the above ones are not listed
242
 * here explicitly, but you can find them via 'See also' links from their
243
 * main classes.
244
 */
245

    
246
/**
247
 * @defgroup EnvirExtensions  Extension interface to Envir
248
 *
249
 * Classes in this group provide a plugin mechanism that can be used to
250
 * customize the functionality of the Envir user interface library
251
 * (and also Cmdenv and Tkenv, because they build on Envir).
252
 *
253
 * To customize, subclass from the classes below, and select the new class
254
 * in <tt>omnetpp.ini</tt>, using the <tt>rng-class=</tt>,
255
 * <tt>outputvectormanager-class=</tt>, <tt>outputscalarmanager-class=</tt>,
256
 * etc. config entries.
257
 */
258

    
259
/**
260
 * @defgroup ParsimBrief  Parallel simulation extension
261
 *
262
 * These classes are used with the parallel simulation feature.
263
 * For more information, please see the separate Parallel Simulation API
264
 * which is generated from the source files in <tt>src/sim/parsim</tt>
265
 * directory.
266
 */