root / include / index.h @ master
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 |
*/
|