diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-03 16:44:15 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-01-03 16:44:15 +0100 |
commit | 5c8c0cc70b49c5fb2d85778c31c3d3f9a670d315 (patch) | |
tree | c659c883819b556910eabcbf10faf89fc769bc89 /src/core | |
parent | 603dedfa2b3704730fa4db8e7f84702b26da9ae6 (diff) |
Renamed "contains" to aggregatedOf, added corresponding convenience function to Rtti class
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/common/Rtti.cpp | 7 | ||||
-rw-r--r-- | src/core/common/Rtti.hpp | 2 | ||||
-rw-r--r-- | src/core/managed/Managed.cpp | 5 | ||||
-rw-r--r-- | src/core/managed/Managed.hpp | 12 |
4 files changed, 21 insertions, 5 deletions
diff --git a/src/core/common/Rtti.cpp b/src/core/common/Rtti.cpp index 5de2b4c..edfcda8 100644 --- a/src/core/common/Rtti.cpp +++ b/src/core/common/Rtti.cpp @@ -54,7 +54,7 @@ void RttiBase::initialize() const initialized = true; // Insert the parent types of the parent types and the aggregated types - // if the parents + // of the parents { std::unordered_set<const RttiBase *> origParents = parents; for (const RttiBase *parent : origParents) { @@ -69,7 +69,8 @@ void RttiBase::initialize() const parents.insert(this); } - // Insert the aggregated types of the aggregated types + // Insert the aggregated types of the aggregated types and the parents + // of each aggregated type { std::unordered_set<const RttiBase *> origAggregatedTypes = aggregatedTypes; @@ -90,7 +91,7 @@ bool RttiBase::isa(const RttiBase &other) const return parents.count(&other) > 0; } -bool RttiBase::contains(const RttiBase &other) const +bool RttiBase::aggregatedOf(const RttiBase &other) const { initialize(); return aggregatedTypes.count(&other) > 0; diff --git a/src/core/common/Rtti.hpp b/src/core/common/Rtti.hpp index 090b65b..deaf128 100644 --- a/src/core/common/Rtti.hpp +++ b/src/core/common/Rtti.hpp @@ -189,7 +189,7 @@ public: * @param other is the other type for which should be checked whether this * type is directly or indirectly aggregated of it. */ - bool contains(const RttiBase &other) const; + bool aggregatedOf(const RttiBase &other) const; }; /** diff --git a/src/core/managed/Managed.cpp b/src/core/managed/Managed.cpp index 341e0d0..cede819 100644 --- a/src/core/managed/Managed.cpp +++ b/src/core/managed/Managed.cpp @@ -80,4 +80,9 @@ bool Managed::triggerEvent(Event &ev) { return mgr.triggerEvent(this, ev); } const RttiBase &Managed::type() const { return typeOf(*this); } bool Managed::isa(const RttiBase &t) const { return type().isa(t); } + +bool Managed::aggregatedOf(const RttiBase &t) const +{ + return type().aggregatedOf(t); +} } diff --git a/src/core/managed/Managed.hpp b/src/core/managed/Managed.hpp index cdf81aa..fecbfdd 100644 --- a/src/core/managed/Managed.hpp +++ b/src/core/managed/Managed.hpp @@ -199,13 +199,23 @@ public: const RttiBase &type() const; /** - * Returns true if this Managed instance is of the given RttiBase. + * Returns true if this Managed instance is of the type described by the + * given RttiBase instance. * * @param true if the RttiBase registered for this particular Managed * class is of the given type or one of the registered parent types is of * the given type. */ bool isa(const RttiBase &t) const; + + /** + * Returns true if this Managed instance may contain instances of the type + * described by the given RttiBase instance. + * + * @param true if the RttiBase registered for this particular Managed class + * may contain instance of the given type. + */ + bool aggregatedOf(const RttiBase &t) const; }; /** |