diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-16 16:34:09 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-01-16 16:34:09 +0100 |
commit | e3caf907184286b795fadc1991cf69348f97d192 (patch) | |
tree | 1167037d70ab4dfa23676ca5c8a23682b16b23b8 /src/core/model/Domain.hpp | |
parent | 9ea137094077eee7f7e80f25871cc91592982e4b (diff) | |
parent | 9929838e62d9c17647d74be54af5853e8b613c4b (diff) |
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'src/core/model/Domain.hpp')
-rw-r--r-- | src/core/model/Domain.hpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/core/model/Domain.hpp b/src/core/model/Domain.hpp index 791d563..ac02ec7 100644 --- a/src/core/model/Domain.hpp +++ b/src/core/model/Domain.hpp @@ -324,6 +324,10 @@ public: */ const NodeVector<StructuredClass> &getChildren() const { return children; } + /* + *TODO: This should check whether another class is permitted that is a + * superclass of this one. + */ /** * Adds a StructuredClass whose instances shall be allowed as children in * the StructureTree of instances of this field. @@ -546,7 +550,7 @@ typedef RangeSet<size_t> Cardinality; class StructuredClass : public Descriptor { private: const Cardinality cardinality; - Owned<StructuredClass> isa; + Owned<StructuredClass> superclass; NodeVector<StructuredClass> subclasses; public: @@ -570,7 +574,7 @@ public: * @param attributesDescriptor is a StructType that specifies the attribute * keys as well as value domains for this * Descriptor. - * @param isa references a parent StructuredClass. Please + * @param superclass references a parent StructuredClass. Please * look for more information on inheritance in * the class documentation above. The default is * a null reference, meaning no super class. @@ -585,7 +589,7 @@ public: const Cardinality &cardinality, Handle<StructType> attributesDescriptor = nullptr, // TODO: What would be a wise default value for isa? - Handle<StructuredClass> isa = nullptr, + Handle<StructuredClass> superclass = nullptr, bool transparent = false, bool root = false); /** @@ -596,13 +600,23 @@ public: const Cardinality &getCardinality() const { return cardinality; } /** - * Returns the parent of this StructuredClass in the class inheritance - * hierarchy (!). This is not the same as the parents in the Structure Tree! + * Returns the superclass of this StructuredClass. This is not the same as + * the parents in the Structure Tree! + * + * @return the superclass of this StructuredClass. + */ + Rooted<StructuredClass> getSuperclass() const { return superclass; } + + /** + * Returns true if this class is a subclass of the given class. It does not + * return true if the other class is equal to the given class. + * + * @param c is another class that might or might not be a superclass of this + * one + * @return true if this class is a subclass of the given class. * - * @return the parent of this StructuredClass in the class inheritance - * hierarchy (!). */ - Rooted<StructuredClass> getIsA() const { return isa; } + bool isSubclassOf(Handle<StructuredClass> c) const; /** * Returns the StructuredClasses that are subclasses of this class. This |