16 #ifndef __OMNETPP_CMODULE_H 17 #define __OMNETPP_CMODULE_H 20 #include "ccomponent.h" 23 #include "csimulation.h" 77 cGate *current()
const;
138 void advance() {p = p->nextSibling;}
139 void retreat() {p = p->prevSibling;}
166 bool end()
const {
return p==
nullptr;}
224 std::vector<cChannel *> channels;
236 void init(
const cModule *parentModule);
252 bool end()
const {
return k < 0 || k >= (int)channels.size();}
276 static std::string lastModuleFullPath;
277 static const cModule *lastModuleFullPathModule;
281 FL_BUILDINSIDE_CALLED = 1 << 9,
282 FL_RECORD_EVENTS = 1 << 10,
283 FL_BUILTIN_ANIMATIONS = 1 << 11,
287 mutable char *fullPath;
288 mutable char *fullName;
289 static bool cacheFullPath;
294 cModule *prevSibling, *nextSibling;
298 typedef std::set<cGate::Name> NamePool;
299 static NamePool namePool;
300 int gateDescArraySize;
301 cGate::Desc *gateDescArray;
305 #ifdef USE_OMNETPP4x_FINGERPRINTS 306 int version4ModuleId;
314 void setRecordEvents(
bool e) {setFlag(FL_RECORD_EVENTS,e);}
315 bool isRecordEvents()
const {
return flags&FL_RECORD_EVENTS;}
319 void releaseListeners();
322 bool buildInsideCalled()
const {
return flags&FL_BUILDINSIDE_CALLED;}
326 virtual bool initializeModules(
int stage);
330 virtual bool initializeChannels(
int stage);
334 virtual void setNameAndIndex(
const char *s,
int i,
int n);
337 void updateFullName();
340 void updateFullPathRec();
343 void reassignModuleIdRec();
346 void insertSubmodule(
cModule *mod);
349 void removeSubmodule(
cModule *mod);
356 void disposeGateDesc(cGate::Desc *desc,
bool checkConnected);
359 void disposeGateObject(
cGate *gate,
bool checkConnected);
362 cGate::Desc *addGateDesc(
const char *name,
cGate::Type type,
bool isVector);
366 int findGateDesc(
const char *gatename,
char& suffix)
const;
369 cGate::Desc *gateDesc(
const char *gatename,
char& suffix)
const;
372 void adjustGateDesc(
cGate *g, cGate::Desc *newvec);
378 virtual void doBuildInside();
381 #ifdef USE_OMNETPP4x_FINGERPRINTS 383 int getVersion4ModuleId()
const {
return version4ModuleId; }
387 static void clearNamePools();
390 int gateCount()
const;
393 cGate *gateByOrdinal(
int k)
const;
396 virtual void callRefreshDisplay()
override;
399 cCanvas *getCanvasIfExists() {
return canvas;}
402 cOsgCanvas *getOsgCanvasIfExists() {
return osgCanvas;}
429 virtual void forEachChild(
cVisitor *v)
override;
434 virtual void setName(
const char *s)
override;
441 virtual const char *getFullName()
const override;
448 virtual std::string getFullPath()
const override;
453 virtual std::string str()
const override;
469 virtual cGate *addGate(
const char *gatename,
cGate::Type type,
bool isvector=
false);
477 virtual void setGateSize(
const char *gatename,
int size);
490 virtual cGate *getOrCreateFirstUnconnectedGate(
const char *gatename,
char suffix,
491 bool inside,
bool expand);
499 virtual void getOrCreateFirstUnconnectedGatePair(
const char *gatename,
500 bool inside,
bool expand,
520 virtual void finalizeParameters()
override;
541 virtual bool isSimple()
const;
558 virtual cModule *getParentModule()
const override;
569 virtual cProperties *getProperties()
const override;
590 _OPPDEPRECATED
int size()
const {
return getVectorSize();}
606 virtual int findSubmodule(
const char *name,
int index=-1)
const;
613 virtual cModule *getSubmodule(
const char *name,
int index=-1)
const;
639 virtual cModule *getModuleByPath(
const char *path)
const;
651 virtual cGate *gate(
const char *gatename,
int index=-1);
659 const cGate *
gate(
const char *gatename,
int index=-1)
const {
660 return const_cast<cModule *
>(
this)->gate(gatename, index);
670 virtual cGate *gateHalf(
const char *gatename,
cGate::Type type,
int index=-1);
680 return const_cast<cModule *
>(
this)->gateHalf(gatename, type, index);
690 virtual bool hasGate(
const char *gatename,
int index=-1)
const;
699 virtual int findGate(
const char *gatename,
int index=-1)
const;
708 virtual cGate *gate(
int id);
724 virtual void deleteGate(
const char *gatename);
736 virtual std::vector<const char *> getGateNames()
const;
743 virtual cGate::Type gateType(
const char *gatename)
const;
750 virtual bool isGateVector(
const char *gatename)
const;
762 virtual int gateSize(
const char *gatename)
const;
773 virtual int gateBaseId(
const char *gatename)
const;
781 virtual bool checkInternalConnections()
const;
800 virtual cPar& getAncestorPar(
const char *parname);
806 virtual cCanvas *getCanvas()
const;
836 virtual void callInitialize()
override;
842 virtual bool callInitialize(
int stage)
override;
847 virtual void callFinish()
override;
864 virtual void deleteModule();
896 virtual void changeParentTo(
cModule *mod);
The message class in OMNeT++. cMessage objects may represent events, messages, jobs or other entities...
Definition: cmessage.h:95
Common base for module and channel classes.
Definition: ccomponent.h:48
ChannelIterator & operator++()
Definition: cmodule.h:262
Represents a module gate.
Definition: cgate.h:63
int64_t-based, base-10 fixed-point simulation time.
Definition: simtime.h:66
SubmoduleIterator(const cModule *m)
Definition: cmodule.h:145
virtual bool isPlaceholder() const
Definition: cmodule.h:552
SubmoduleIterator & operator--()
Definition: cmodule.h:187
SubmoduleIterator operator--(int)
Definition: cmodule.h:194
cModule * operator*() const
Definition: cmodule.h:156
Simulation manager class.
Definition: csimulation.h:62
Represents a module or channel parameter.
Definition: cpar.h:68
Wraps an OpenSceneGraph scene, allowing 3D visualization in graphical user interfaces that support it...
Definition: cosgcanvas.h:42
Iterates through the submodules of a compound module.
Definition: cmodule.h:132
GateIterator & operator++()
Definition: cmodule.h:111
int getVectorSize() const
Definition: cmodule.h:585
GateIterator(const cModule *m)
Definition: cmodule.h:83
cModuleType * getModuleType() const
Definition: cmodule.h:563
cGate * operator*() const
Definition: cmodule.h:94
int getIndex() const
Definition: cmodule.h:579
_OPPDEPRECATED cModule * operator()() const
Definition: cmodule.h:161
_OPPDEPRECATED cGate * operator()() const
Definition: cmodule.h:99
ChannelIterator & operator--()
Definition: cmodule.h:272
This class represents modules in the simulation.
Definition: cmodule.h:47
Provides a scene graph based 2D drawing API for modules.
Definition: ccanvas.h:2959
GateIterator operator++(int)
Definition: cmodule.h:118
virtual bool getBuiltinAnimationsAllowed() const
Definition: cmodule.h:824
void init(const cModule *m)
Definition: cmodule.h:150
_OPPDEPRECATED int size() const
Definition: cmodule.h:590
virtual bool hasSubmodules() const
Definition: cmodule.h:599
bool end() const
Definition: cmodule.h:166
Enables traversing the tree of (cObject-rooted) simulation objects.
Definition: cvisitor.h:56
const cGate * gateHalf(const char *gatename, cGate::Type type, int index=-1) const
Definition: cmodule.h:679
Definition: cabstracthistogram.h:21
A collection of properties (cProperty).
Definition: cproperties.h:34
Iterates through the gates of a module.
Definition: cmodule.h:66
virtual ComponentKind getComponentKind() const override
Definition: cmodule.h:546
bool isVector() const
Definition: cmodule.h:574
const cGate * gate(int id) const
Definition: cmodule.h:717
Walks along the channels inside a module, that is, the channels among the module and its submodules...
Definition: cmodule.h:221
SubmoduleIterator operator++(int)
Definition: cmodule.h:180
Abstract base class for creating a channel of a given type.
Definition: ccomponenttype.h:311
Abstract class for creating a module of a specific type.
Definition: ccomponenttype.h:192
const cGate * gate(const char *gatename, int index=-1) const
Definition: cmodule.h:659
cChannel * operator*() const
Definition: cmodule.h:242
SubmoduleIterator & operator++()
Definition: cmodule.h:173
_OPPDEPRECATED cChannel * operator()() const
Definition: cmodule.h:247
virtual void setBuiltinAnimationsAllowed(bool enabled)
Definition: cmodule.h:818
Base class for channels.
Definition: cchannel.h:34
Type
Definition: cgate.h:73
bool end() const
Definition: cmodule.h:252