# Internal classes

## Detailed Description

The classes described here are used internally by the simulation kernel.

They are normally of very little interest to the simulation programmer. Note that although these internal classes do have a documented API, they may change more often than other classes, simply because they aren't used in simulation models and thus backwards compatibility is less important.

Classes associated with simulation execution:

- cSimulation has a single instance. It stores the network and manages simulation runs.
- cScheduler is a base class for schedulers (see in Extension interface to Envir as well)
- cMessageHeap is used internally by cSimulation as FES (Future Event Set)
- cCoroutine is the engine behind activity()-based simple modules
- cWatch is the class behind the WATCH() and LWATCH() macros

Registration classes are listed below. They play the role of a central registry in OMNeT++ -- each instance holds some specific piece of (static) information or serves as a factory object for other objects.

Registration objects play an important role at network build time (they store information about available module, channel, etc. types and can instantiate them), and for inspectors in graphical user interfaces like Tkenv.

- cModuleInterface stores the list of gates and parameters declared for a module type
- cModuleType can instantiate a module type
- cChannelType can instantiate a channel type
- cNetworkType can instantiate a network type (build up a network)
- cFunctionType stores a pointer to a math function accessible from NED
- cClassRegister can instantiate an object type (it is the class behind the createOne() function)
- cStructDescriptor provides a generic way to access data in a struct or class (somewhat analogous to Java reflection)
- cEnum maps enum values to their string representations and vica versa

Some other classes, closely related to the above ones are not listed here explicitly, but you can find them via 'See also' links from their main classes.

## Classes

class | cCoroutine
| Low-level coroutine library. More...
class | cEnum
| Provides string representation for enums. More...
class | cTerminationException
| Thrown when the simulation is completed. More...
class | cRuntimeError
| Thrown when the simulation kernel or other components detect a runtime error. More...
class | cEndModuleException
| This exception is only thrown from cModule::end(), and from deleteModule() if the current module is to be deleted, in order to exit that module immediately. More...
class | cStackCleanupException
| Used internally when deleting an activity() simple module. More...
class | cMessageHeap
| Stores the future event set. More...
class | cModulePar
| Module parameter object. More...
class | cScheduler
| Abstract class to encapsulate event scheduling. More...
class | cSequentialScheduler
| Event scheduler for sequential simulation. More...
class | cRealTimeScheduler
| Real-time scheduler class. More...
class | cSimulation
| Simulation manager class. More...
class | cStructDescriptor
| Abstract base class for structure description classes, used mainly with message subclassing. More...
class | cModuleInterface
| Describes the interface (modules, gates,. More...
class | cModuleType
| Class for creating a module of a specific type. More...
class | cChannelType
| Abstract base class for channel types. More...
class | cLinkType
| DEPRECATED. More...
class | cNetworkType
| Abstract base class for network types. More...
class | cFunctionType
| Registration class for extending NED with new functions. More...
class | cClassRegister
| The class behind the createOne() function and the Register_Class() macro. More...
class | cWatchBase
| Utility class to make primitive types and non-cObject objects inspectable in Tkenv. More...
class | cGenericReadonlyWatch< T >
| Template Watch class, for any type that supports operator<<. More...
class | cGenericAssignableWatch< T >
| Template Watch class, for any type that supports operator<<, and operator>> for assignment. More...
class | cWatch_bool
| Watch class, specifically for bool. More...
class | cWatch_char
| Watch class, specifically for char. More...
class | cWatch_uchar
| Watch class, specifically for unsigned char. More...
class | cWatch_stdstring
| Watch class, specifically for std::string. More...
class | cWatch_cPolymorphic
| Watch class, specifically for objects subclassed from cPolymorphic. More...
class | cWatch_cPolymorphicPtr
| Watch class, specifically for pointers to objects subclassed from cPolymorphic. More...
class | ExecuteOnStartup
| Supporting class for EXECUTE_ON_STARTUP macro. More...
class | cSingleton< T >
| Singleton class, used for global registration lists. More...
class | opp_string
| Lightweight string class, used internally in some parts of OMNeT++. More...
class | cContextSwitcher
| Helper class, used internally by the Enter_Method() and Enter_Method_Silent() macros. More...
class | cContextTypeSwitcher
| The constructor switches the context type, and the destructor restores the original context type. More...

## Variables

SIM_API cSimulation | simulation

## Variable Documentation

SIM_API cSimulation simulation

| Global simulation instance.