summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-03 16:44:15 +0100
committerAndreas Stöckel <andreas@somweyr.de>2015-01-03 16:44:15 +0100
commit5c8c0cc70b49c5fb2d85778c31c3d3f9a670d315 (patch)
treec659c883819b556910eabcbf10faf89fc769bc89 /src
parent603dedfa2b3704730fa4db8e7f84702b26da9ae6 (diff)
Renamed "contains" to aggregatedOf, added corresponding convenience function to Rtti class
Diffstat (limited to 'src')
-rw-r--r--src/core/common/Rtti.cpp7
-rw-r--r--src/core/common/Rtti.hpp2
-rw-r--r--src/core/managed/Managed.cpp5
-rw-r--r--src/core/managed/Managed.hpp12
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;
};
/**