diff options
-rw-r--r-- | src/core/RangeSet.cpp | 6 | ||||
-rw-r--r-- | src/core/RangeSet.hpp | 7 | ||||
-rw-r--r-- | src/core/model/Domain.cpp | 4 | ||||
-rw-r--r-- | src/core/model/Domain.hpp | 4 | ||||
-rw-r--r-- | src/plugins/xml/XmlParser.cpp | 2 | ||||
-rw-r--r-- | test/core/RangeSetTest.cpp | 6 | ||||
-rw-r--r-- | test/core/model/DomainTest.cpp | 26 | ||||
-rw-r--r-- | test/core/model/TestAdvanced.hpp | 4 | ||||
-rw-r--r-- | test/core/model/TestDomain.hpp | 8 | ||||
-rw-r--r-- | test/plugins/xml/XmlParserTest.cpp | 8 |
10 files changed, 40 insertions, 35 deletions
diff --git a/src/core/RangeSet.cpp b/src/core/RangeSet.cpp index c07dc9b..72953b0 100644 --- a/src/core/RangeSet.cpp +++ b/src/core/RangeSet.cpp @@ -20,13 +20,11 @@ namespace ousia { -static Cardinality createAny() +Cardinality Cardinality::any() { Cardinality any; - any.merge(Range<size_t>::typeRangeFrom(0)); + any.merge(Range<size_t>::typeRange()); return std::move(any); } - -const Cardinality AnyCardinality = createAny(); } diff --git a/src/core/RangeSet.hpp b/src/core/RangeSet.hpp index f5b56e2..9310d72 100644 --- a/src/core/RangeSet.hpp +++ b/src/core/RangeSet.hpp @@ -417,9 +417,10 @@ public: /** * This is the default cardinality. */ -using Cardinality = RangeSet<size_t>; -extern const Cardinality AnyCardinality; - +class Cardinality : public RangeSet<size_t> { +public: + static Cardinality any(); +}; } #endif /* _OUSIA_RANGE_SET_HPP_ */ diff --git a/src/core/model/Domain.cpp b/src/core/model/Domain.cpp index 3284759..7d5a76e 100644 --- a/src/core/model/Domain.cpp +++ b/src/core/model/Domain.cpp @@ -320,7 +320,7 @@ StructuredClass::StructuredClass(Manager &mgr, std::string name, Handle<StructuredClass> superclass, bool transparent, bool root) : Descriptor(mgr, std::move(name), domain), - cardinality(std::move(cardinality)), + cardinality(cardinality), superclass(acquire(superclass)), subclasses(this), transparent(transparent), @@ -533,7 +533,7 @@ Rooted<StructuredClass> Domain::createStructuredClass( bool transparent, bool root) { return Rooted<StructuredClass>{new StructuredClass( - getManager(), std::move(name), this, std::move(cardinality), superclass, + getManager(), std::move(name), this, cardinality, superclass, std::move(transparent), std::move(root))}; } diff --git a/src/core/model/Domain.hpp b/src/core/model/Domain.hpp index cd05441..53579bd 100644 --- a/src/core/model/Domain.hpp +++ b/src/core/model/Domain.hpp @@ -751,7 +751,7 @@ public: */ StructuredClass(Manager &mgr, std::string name, Handle<Domain> domain = nullptr, - Variant cardinality = AnyCardinality, + Variant cardinality = Cardinality::any(), Handle<StructuredClass> superclass = nullptr, bool transparent = false, bool root = false); @@ -1010,7 +1010,7 @@ public: * @return the newly created StructuredClass. */ Rooted<StructuredClass> createStructuredClass( - std::string name, Variant cardinality = AnyCardinality, + std::string name, Variant cardinality = Cardinality::any(), Handle<StructuredClass> superclass = nullptr, bool transparent = false, bool root = false); diff --git a/src/plugins/xml/XmlParser.cpp b/src/plugins/xml/XmlParser.cpp index 7b4b1b3..0c88c5d 100644 --- a/src/plugins/xml/XmlParser.cpp +++ b/src/plugins/xml/XmlParser.cpp @@ -883,7 +883,7 @@ static const ParserState DomainStruct = .createdNodeType(&RttiTypes::StructuredClass) .elementHandler(DomainStructHandler::create) .arguments({Argument::String("name"), - Argument::Cardinality("cardinality", AnyCardinality), + Argument::Cardinality("cardinality", Cardinality::any()), Argument::Bool("isRoot", false), Argument::Bool("transparent", false), Argument::String("isa", "")}); diff --git a/test/core/RangeSetTest.cpp b/test/core/RangeSetTest.cpp index e158233..cbf8f59 100644 --- a/test/core/RangeSetTest.cpp +++ b/test/core/RangeSetTest.cpp @@ -216,5 +216,11 @@ TEST(RangeSet, Contains) ASSERT_TRUE(s.contains(Range<int>(70, 74))); } +TEST(RangeSet, AnyCardinality){ + RangeSet<size_t> expected; + expected.merge(Range<size_t>::typeRange()); + ASSERT_EQ(expected, Cardinality::any()); +} + } diff --git a/test/core/model/DomainTest.cpp b/test/core/model/DomainTest.cpp index 8fcd21d..0c85d10 100644 --- a/test/core/model/DomainTest.cpp +++ b/test/core/model/DomainTest.cpp @@ -154,25 +154,25 @@ TEST(Descriptor, pathToAdvanced) // Let's create the classes that we need first Rooted<StructuredClass> A{new StructuredClass( - mgr, "A", domain, AnyCardinality, {nullptr}, false, true)}; + mgr, "A", domain, Cardinality::any(), {nullptr}, false, true)}; Rooted<StructuredClass> start{new StructuredClass( - mgr, "start", domain, AnyCardinality, A, false, false)}; + mgr, "start", domain, Cardinality::any(), A, false, false)}; Rooted<StructuredClass> B{new StructuredClass( - mgr, "B", domain, AnyCardinality, {nullptr}, true, false)}; + mgr, "B", domain, Cardinality::any(), {nullptr}, true, false)}; Rooted<StructuredClass> C{ - new StructuredClass(mgr, "C", domain, AnyCardinality, B, true, false)}; + new StructuredClass(mgr, "C", domain, Cardinality::any(), B, true, false)}; Rooted<StructuredClass> D{new StructuredClass( - mgr, "D", domain, AnyCardinality, {nullptr}, true, false)}; + mgr, "D", domain, Cardinality::any(), {nullptr}, true, false)}; Rooted<StructuredClass> E{new StructuredClass( - mgr, "E", domain, AnyCardinality, {nullptr}, true, false)}; + mgr, "E", domain, Cardinality::any(), {nullptr}, true, false)}; Rooted<StructuredClass> target{ - new StructuredClass(mgr, "target", domain, AnyCardinality)}; + new StructuredClass(mgr, "target", domain, Cardinality::any())}; // We create two fields for A Rooted<FieldDescriptor> A_field{new FieldDescriptor(mgr, A)}; @@ -223,19 +223,19 @@ TEST(StructuredClass, isSubclassOf) Rooted<SystemTypesystem> sys{new SystemTypesystem(mgr)}; Rooted<Domain> domain{new Domain(mgr, sys, "inheritance")}; Rooted<StructuredClass> A{new StructuredClass( - mgr, "A", domain, AnyCardinality, {nullptr}, false, true)}; + mgr, "A", domain, Cardinality::any(), {nullptr}, false, true)}; // first branch Rooted<StructuredClass> B{ - new StructuredClass(mgr, "B", domain, AnyCardinality, A)}; + new StructuredClass(mgr, "B", domain, Cardinality::any(), A)}; Rooted<StructuredClass> C{ - new StructuredClass(mgr, "C", domain, AnyCardinality, B)}; + new StructuredClass(mgr, "C", domain, Cardinality::any(), B)}; // second branch Rooted<StructuredClass> D{ - new StructuredClass(mgr, "D", domain, AnyCardinality, A)}; + new StructuredClass(mgr, "D", domain, Cardinality::any(), A)}; Rooted<StructuredClass> E{ - new StructuredClass(mgr, "E", domain, AnyCardinality, D)}; + new StructuredClass(mgr, "E", domain, Cardinality::any(), D)}; Rooted<StructuredClass> F{ - new StructuredClass(mgr, "F", domain, AnyCardinality, D)}; + new StructuredClass(mgr, "F", domain, Cardinality::any(), D)}; // check function results ASSERT_FALSE(A->isSubclassOf(A)); diff --git a/test/core/model/TestAdvanced.hpp b/test/core/model/TestAdvanced.hpp index 2e4a541..56738af 100644 --- a/test/core/model/TestAdvanced.hpp +++ b/test/core/model/TestAdvanced.hpp @@ -86,7 +86,7 @@ static Rooted<Domain> constructListDomain(Manager &mgr, Rooted<StructuredClass> p = resolveDescriptor(bookDomain, "paragraph"); // set up item StructuredClass; Rooted<StructuredClass> item{new StructuredClass( - mgr, "item", domain, AnyCardinality, {nullptr}, false)}; + mgr, "item", domain, Cardinality::any(), {nullptr}, false)}; // as field we want to copy the field of paragraph. item->copyFieldDescriptor(p->getFieldDescriptors()[0]); @@ -94,7 +94,7 @@ static Rooted<Domain> constructListDomain(Manager &mgr, std::vector<std::string> listTypes{"ol", "ul"}; for (auto &listType : listTypes) { Rooted<StructuredClass> list{new StructuredClass( - mgr, listType, domain, AnyCardinality, p, false)}; + mgr, listType, domain, Cardinality::any(), p, false)}; Rooted<FieldDescriptor> list_field{new FieldDescriptor(mgr, list)}; list_field->addChild(item); } diff --git a/test/core/model/TestDomain.hpp b/test/core/model/TestDomain.hpp index 18c42bd..8b572a8 100644 --- a/test/core/model/TestDomain.hpp +++ b/test/core/model/TestDomain.hpp @@ -46,7 +46,7 @@ static Rooted<Domain> constructBookDomain(Manager &mgr, // From there on the "section". Rooted<StructuredClass> section{ - new StructuredClass(mgr, "section", domain, AnyCardinality)}; + new StructuredClass(mgr, "section", domain, Cardinality::any())}; book_field->addChild(section); // And the field of it. @@ -54,7 +54,7 @@ static Rooted<Domain> constructBookDomain(Manager &mgr, // We also add the "paragraph", which is transparent. Rooted<StructuredClass> paragraph{new StructuredClass( - mgr, "paragraph", domain, AnyCardinality, {nullptr}, true)}; + mgr, "paragraph", domain, Cardinality::any(), {nullptr}, true)}; section_field->addChild(paragraph); book_field->addChild(paragraph); @@ -64,7 +64,7 @@ static Rooted<Domain> constructBookDomain(Manager &mgr, // We append "subsection" to section. Rooted<StructuredClass> subsection{ - new StructuredClass(mgr, "subsection", domain, AnyCardinality)}; + new StructuredClass(mgr, "subsection", domain, Cardinality::any())}; section_field->addChild(subsection); // And the field of it. @@ -76,7 +76,7 @@ static Rooted<Domain> constructBookDomain(Manager &mgr, // Finally we add the "text" node, which is transparent as well. Rooted<StructuredClass> text{new StructuredClass( - mgr, "text", domain, AnyCardinality, {nullptr}, true)}; + mgr, "text", domain, Cardinality::any(), {nullptr}, true)}; paragraph_field->addChild(text); // ... and has a primitive field. diff --git a/test/plugins/xml/XmlParserTest.cpp b/test/plugins/xml/XmlParserTest.cpp index 647fc6d..6110fcb 100644 --- a/test/plugins/xml/XmlParserTest.cpp +++ b/test/plugins/xml/XmlParserTest.cpp @@ -97,7 +97,7 @@ static void checkAttributes(Handle<StructType> expected, static void checkStructuredClass( Handle<Node> n, const std::string &name, Handle<Domain> domain, - Variant cardinality = AnyCardinality, + Variant cardinality = Cardinality::any(), Handle<StructType> attributesDescriptor = nullptr, Handle<StructuredClass> superclass = nullptr, bool transparent = false, bool root = false) @@ -115,7 +115,7 @@ static void checkStructuredClass( static Rooted<StructuredClass> checkStructuredClass( const std::string &resolve, const std::string &name, Handle<Domain> domain, - Variant cardinality = AnyCardinality, + Variant cardinality = Cardinality::any(), Handle<StructType> attributesDescriptor = nullptr, Handle<StructuredClass> superclass = nullptr, bool transparent = false, bool root = false) @@ -230,9 +230,9 @@ TEST(XmlParser, domainParsing) checkStructuredClass("subsection", "subsection", book_domain); Rooted<StructuredClass> paragraph = checkStructuredClass("paragraph", "paragraph", book_domain, - AnyCardinality, nullptr, nullptr, true, false); + Cardinality::any(), nullptr, nullptr, true, false); Rooted<StructuredClass> text = - checkStructuredClass("text", "text", book_domain, AnyCardinality, + checkStructuredClass("text", "text", book_domain, Cardinality::any(), nullptr, nullptr, true, false); // check the FieldDescriptors. |