diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-11 13:53:15 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-11 13:53:15 +0100 |
commit | 6940aa0e6837f9d83f9b5c5b37d4fd7747c95c67 (patch) | |
tree | 75d0944ff4fd1754f2db55b081588c71482efd71 | |
parent | e6a7bbd753cba97f7bda154341d93d3f1241d2c4 (diff) |
Forward declaring Rtti stuff for fewer dependencies in the Rtti.hpp header
-rw-r--r-- | src/core/XML.cpp | 19 | ||||
-rw-r--r-- | src/core/XML.hpp | 7 | ||||
-rw-r--r-- | src/core/model/Document.hpp | 6 | ||||
-rw-r--r-- | src/core/model/Domain.hpp | 8 | ||||
-rw-r--r-- | src/core/model/Node.cpp | 1 | ||||
-rw-r--r-- | src/core/model/Node.hpp | 6 | ||||
-rw-r--r-- | src/core/model/Typesystem.hpp | 8 | ||||
-rw-r--r-- | test/core/model/DocumentTest.cpp | 14 | ||||
-rw-r--r-- | test/core/model/NodeTest.cpp | 1 | ||||
-rw-r--r-- | test/plugins/css/CSSParserTest.cpp | 62 | ||||
-rw-r--r-- | test/plugins/html/DemoOutputTest.cpp | 2 |
11 files changed, 93 insertions, 41 deletions
diff --git a/src/core/XML.cpp b/src/core/XML.cpp index b7d1511..a610daa 100644 --- a/src/core/XML.cpp +++ b/src/core/XML.cpp @@ -1,3 +1,22 @@ +/* + Ousía + Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <core/common/Rtti.hpp> #include "XML.hpp" diff --git a/src/core/XML.hpp b/src/core/XML.hpp index b05d4c6..5e2542b 100644 --- a/src/core/XML.hpp +++ b/src/core/XML.hpp @@ -45,11 +45,16 @@ #include <ostream> #include <vector> -#include <core/common/Rtti.hpp> #include <core/managed/Managed.hpp> #include <core/managed/ManagedContainer.hpp> namespace ousia { + +// Forward declarations +class RttiType; +template<class T> +class Rtti; + namespace xml { class Element; diff --git a/src/core/model/Document.hpp b/src/core/model/Document.hpp index c367e50..e27b577 100644 --- a/src/core/model/Document.hpp +++ b/src/core/model/Document.hpp @@ -108,6 +108,12 @@ #include "Typesystem.hpp" namespace ousia { + +// Forward declarations +class RttiType; +template<class T> +class Rtti; + namespace model { class StructuredEntity; diff --git a/src/core/model/Domain.hpp b/src/core/model/Domain.hpp index 7412ef4..c80d057 100644 --- a/src/core/model/Domain.hpp +++ b/src/core/model/Domain.hpp @@ -192,7 +192,6 @@ #ifndef _OUSIA_MODEL_DOMAIN_HPP_ #define _OUSIA_MODEL_DOMAIN_HPP_ -#include <core/common/Rtti.hpp> #include <core/managed/ManagedContainer.hpp> #include <core/RangeSet.hpp> @@ -200,8 +199,15 @@ #include "Typesystem.hpp" namespace ousia { + +// Forward declarations +class RttiType; +template<class T> +class Rtti; + namespace model { +// Forward declarations class Descriptor; class StructuredClass; class Domain; diff --git a/src/core/model/Node.cpp b/src/core/model/Node.cpp index 284f323..bac420b 100644 --- a/src/core/model/Node.cpp +++ b/src/core/model/Node.cpp @@ -20,6 +20,7 @@ #include <unordered_set> #include <core/common/Exceptions.hpp> +#include <core/common/Rtti.hpp> #include "Node.hpp" diff --git a/src/core/model/Node.hpp b/src/core/model/Node.hpp index 54a1497..c24aacb 100644 --- a/src/core/model/Node.hpp +++ b/src/core/model/Node.hpp @@ -32,7 +32,6 @@ #include <string> #include <vector> -#include <core/common/Rtti.hpp> #include <core/managed/Managed.hpp> #include <core/managed/ManagedContainer.hpp> @@ -40,6 +39,11 @@ namespace ousia { +// Forward declarations +class RttiType; +template<class T> +class Rtti; + /** * Structure describing a single result obtained from the resolution function. */ diff --git a/src/core/model/Typesystem.hpp b/src/core/model/Typesystem.hpp index c0e0fb1..22b747f 100644 --- a/src/core/model/Typesystem.hpp +++ b/src/core/model/Typesystem.hpp @@ -34,14 +34,20 @@ #include <core/common/Exceptions.hpp> #include <core/common/Logger.hpp> -#include <core/common/Rtti.hpp> #include <core/common/Variant.hpp> #include "Node.hpp" namespace ousia { + +// Forward declarations +class RttiType; +template<class T> +class Rtti; + namespace model { +// Forward declarations class Typesystem; /** diff --git a/test/core/model/DocumentTest.cpp b/test/core/model/DocumentTest.cpp index 2d53dcd..d11bb78 100644 --- a/test/core/model/DocumentTest.cpp +++ b/test/core/model/DocumentTest.cpp @@ -20,6 +20,8 @@ #include <iostream> +#include <core/common/Rtti.hpp> + #include <core/model/Document.hpp> #include <core/model/Domain.hpp> @@ -47,7 +49,7 @@ TEST(Document, testDocumentConstruction) ASSERT_FALSE(root.isNull()); ASSERT_EQ("book", root->getDescriptor()->getName()); ASSERT_TRUE(root->hasField()); - ASSERT_EQ(2, root->getField().size()); + ASSERT_EQ(2U, root->getField().size()); // get foreword (paragraph) { Rooted<StructuredEntity> foreword = root->getField()[0]; @@ -55,7 +57,7 @@ TEST(Document, testDocumentConstruction) ASSERT_EQ("paragraph", foreword->getDescriptor()->getName()); // it should contain one text node ASSERT_TRUE(foreword->hasField()); - ASSERT_EQ(1, foreword->getField().size()); + ASSERT_EQ(1U, foreword->getField().size()); // which in turn should have a primitive content field containing the // right text. { @@ -63,7 +65,7 @@ TEST(Document, testDocumentConstruction) ASSERT_FALSE(text.isNull()); ASSERT_EQ("text", text->getDescriptor()->getName()); ASSERT_TRUE(text->hasField()); - ASSERT_EQ(1, text->getField().size()); + ASSERT_EQ(1U, text->getField().size()); ASSERT_TRUE(text->getField()[0]->isa(typeOf<DocumentPrimitive>())); Variant content = text->getField()[0].cast<DocumentPrimitive>()->getContent(); @@ -77,14 +79,14 @@ TEST(Document, testDocumentConstruction) ASSERT_EQ("section", section->getDescriptor()->getName()); // it should contain one paragraph ASSERT_TRUE(section->hasField()); - ASSERT_EQ(1, section->getField().size()); + ASSERT_EQ(1U, section->getField().size()); { Rooted<StructuredEntity> par = section->getField()[0]; ASSERT_FALSE(par.isNull()); ASSERT_EQ("paragraph", par->getDescriptor()->getName()); // it should contain one text node ASSERT_TRUE(par->hasField()); - ASSERT_EQ(1, par->getField().size()); + ASSERT_EQ(1U, par->getField().size()); // which in turn should have a primitive content field containing // the // right text. @@ -93,7 +95,7 @@ TEST(Document, testDocumentConstruction) ASSERT_FALSE(text.isNull()); ASSERT_EQ("text", text->getDescriptor()->getName()); ASSERT_TRUE(text->hasField()); - ASSERT_EQ(1, text->getField().size()); + ASSERT_EQ(1U, text->getField().size()); ASSERT_TRUE( text->getField()[0]->isa(typeOf<DocumentPrimitive>())); Variant content = diff --git a/test/core/model/NodeTest.cpp b/test/core/model/NodeTest.cpp index 3bfa31b..7300d0c 100644 --- a/test/core/model/NodeTest.cpp +++ b/test/core/model/NodeTest.cpp @@ -18,6 +18,7 @@ #include <gtest/gtest.h> +#include <core/common/Rtti.hpp> #include <core/managed/Managed.hpp> #include <core/model/Node.hpp> diff --git a/test/plugins/css/CSSParserTest.cpp b/test/plugins/css/CSSParserTest.cpp index 29e6055..ca21e79 100644 --- a/test/plugins/css/CSSParserTest.cpp +++ b/test/plugins/css/CSSParserTest.cpp @@ -48,10 +48,10 @@ TEST(CSSParser, testParseSelectors) Rooted<SelectorNode> root = instance.parse(data, ctx).cast<SelectorNode>(); // we expect three children of the root node overall. - ASSERT_EQ(3, root->getEdges().size()); + ASSERT_EQ(3U, root->getEdges().size()); // get all "A" children, which should be two. std::vector<Rooted<SelectorNode>> children = root->getChildren("A"); - ASSERT_EQ(2, children.size()); + ASSERT_EQ(2U, children.size()); // assert A Rooted<SelectorNode> A = children[0]; ASSERT_EQ("A", A->getName()); @@ -59,75 +59,75 @@ TEST(CSSParser, testParseSelectors) PseudoSelector select{"true", false}; ASSERT_EQ(select, A->getPseudoSelector()); } - ASSERT_EQ(2, A->getEdges().size()); + ASSERT_EQ(2U, A->getEdges().size()); ASSERT_FALSE(A->isAccepting()); - ASSERT_EQ(0, A->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, A->getRuleSet()->getRules().size()); { // assert A > B std::vector<Rooted<SelectorNode>> Achildren = A->getChildren(SelectionOperator::DIRECT_DESCENDANT, "B"); - ASSERT_EQ(1, Achildren.size()); + ASSERT_EQ(1U, Achildren.size()); Rooted<SelectorNode> B = Achildren[0]; ASSERT_EQ("B", B->getName()); { PseudoSelector select{"true", false}; ASSERT_EQ(select, B->getPseudoSelector()); } - ASSERT_EQ(0, B->getEdges().size()); + ASSERT_EQ(0U, B->getEdges().size()); ASSERT_TRUE(B->isAccepting()); - ASSERT_EQ(0, B->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, B->getRuleSet()->getRules().size()); // assert A B:r Achildren = A->getChildren(SelectionOperator::DESCENDANT, "B"); - ASSERT_EQ(1, Achildren.size()); + ASSERT_EQ(1U, Achildren.size()); Rooted<SelectorNode> Br = Achildren[0]; ASSERT_EQ("B", Br->getName()); { PseudoSelector select{"r", false}; ASSERT_EQ(select, Br->getPseudoSelector()); } - ASSERT_EQ(0, Br->getEdges().size()); + ASSERT_EQ(0U, Br->getEdges().size()); ASSERT_TRUE(Br->isAccepting()); - ASSERT_EQ(0, Br->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, Br->getRuleSet()->getRules().size()); } // assert C#a children = root->getChildren("C"); - ASSERT_EQ(1, children.size()); + ASSERT_EQ(1U, children.size()); Rooted<SelectorNode> C = children[0]; ASSERT_EQ("C", C->getName()); { PseudoSelector select{"has_id", {"a"}, false}; ASSERT_EQ(select, C->getPseudoSelector()); } - ASSERT_EQ(1, C->getEdges().size()); + ASSERT_EQ(1U, C->getEdges().size()); ASSERT_FALSE(C->isAccepting()); - ASSERT_EQ(0, C->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, C->getRuleSet()->getRules().size()); { // assert C#a A[bla=\"blub\"] std::vector<Rooted<SelectorNode>> Cchildren = C->getChildren(SelectionOperator::DESCENDANT, "A"); - ASSERT_EQ(1, Cchildren.size()); + ASSERT_EQ(1U, Cchildren.size()); Rooted<SelectorNode> A = Cchildren[0]; ASSERT_EQ("A", A->getName()); { PseudoSelector select{"has_value", {"bla", "blub"}, false}; ASSERT_EQ(select, A->getPseudoSelector()); } - ASSERT_EQ(0, A->getEdges().size()); + ASSERT_EQ(0U, A->getEdges().size()); ASSERT_TRUE(A->isAccepting()); - ASSERT_EQ(0, A->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, A->getRuleSet()->getRules().size()); } // assert A::g(4,2,3) children = root->getChildren("A"); - ASSERT_EQ(2, children.size()); + ASSERT_EQ(2U, children.size()); Rooted<SelectorNode> Ag = children[1]; ASSERT_EQ("A", Ag->getName()); { PseudoSelector select{"g", {Variant(4), Variant(2), Variant(3)}, true}; ASSERT_EQ(select, Ag->getPseudoSelector()); } - ASSERT_EQ(0, Ag->getEdges().size()); + ASSERT_EQ(0U, Ag->getEdges().size()); ASSERT_TRUE(Ag->isAccepting()); - ASSERT_EQ(0, Ag->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, Ag->getRuleSet()->getRules().size()); } TEST(CSSParser, testParseCSS) @@ -159,10 +159,10 @@ TEST(CSSParser, testParseCSS) instance.parse(reader, ctx).cast<SelectorNode>(); // we expect three children of the root node overall. - ASSERT_EQ(3, root->getEdges().size()); + ASSERT_EQ(3U, root->getEdges().size()); // get all "A" children, which should be two. std::vector<Rooted<SelectorNode>> children = root->getChildren("A"); - ASSERT_EQ(2, children.size()); + ASSERT_EQ(2U, children.size()); // assert A /* * A { @@ -184,11 +184,11 @@ TEST(CSSParser, testParseCSS) PseudoSelector select{"true", false}; ASSERT_EQ(select, A->getPseudoSelector()); } - ASSERT_EQ(0, A->getEdges().size()); + ASSERT_EQ(0U, A->getEdges().size()); ASSERT_TRUE(A->isAccepting()); { Rooted<RuleSet> ruleSet = A->getRuleSet(); - ASSERT_EQ(2, ruleSet->getRules().size()); + ASSERT_EQ(2U, ruleSet->getRules().size()); Variant v = ruleSet->getRules()["ident1"]; ASSERT_TRUE(v.isString()); ASSERT_EQ("val4", v.asString()); @@ -209,11 +209,11 @@ TEST(CSSParser, testParseCSS) PseudoSelector select{"select", {"a", "b"}, false}; ASSERT_EQ(select, Aselect->getPseudoSelector()); } - ASSERT_EQ(0, Aselect->getEdges().size()); + ASSERT_EQ(0U, Aselect->getEdges().size()); ASSERT_TRUE(Aselect->isAccepting()); { Rooted<RuleSet> ruleSet = Aselect->getRuleSet(); - ASSERT_EQ(1, ruleSet->getRules().size()); + ASSERT_EQ(1U, ruleSet->getRules().size()); Variant v = ruleSet->getRules()["ident3"]; ASSERT_TRUE(v.isString()); ASSERT_EQ("val3", v.asString()); @@ -227,7 +227,7 @@ TEST(CSSParser, testParseCSS) * } */ children = root->getChildren("B"); - ASSERT_EQ(1, children.size()); + ASSERT_EQ(1U, children.size()); Rooted<SelectorNode> B = children[0]; ASSERT_EQ("B", B->getName()); @@ -235,12 +235,12 @@ TEST(CSSParser, testParseCSS) PseudoSelector select{"true", false}; ASSERT_EQ(select, B->getPseudoSelector()); } - ASSERT_EQ(1, B->getEdges().size()); + ASSERT_EQ(1U, B->getEdges().size()); ASSERT_FALSE(B->isAccepting()); - ASSERT_EQ(0, B->getRuleSet()->getRules().size()); + ASSERT_EQ(0U, B->getRuleSet()->getRules().size()); children = B->getChildren("A"); - ASSERT_EQ(1, children.size()); + ASSERT_EQ(1U, children.size()); Rooted<SelectorNode> BA = children[0]; ASSERT_EQ("A", BA->getName()); @@ -248,11 +248,11 @@ TEST(CSSParser, testParseCSS) PseudoSelector select{"true", false}; ASSERT_EQ(select, BA->getPseudoSelector()); } - ASSERT_EQ(0, BA->getEdges().size()); + ASSERT_EQ(0U, BA->getEdges().size()); ASSERT_TRUE(BA->isAccepting()); { Rooted<RuleSet> ruleSet = BA->getRuleSet(); - ASSERT_EQ(2, ruleSet->getRules().size()); + ASSERT_EQ(2U, ruleSet->getRules().size()); Variant v = ruleSet->getRules()["ident1"]; ASSERT_TRUE(v.isString()); ASSERT_EQ("val1", v.asString()); diff --git a/test/plugins/html/DemoOutputTest.cpp b/test/plugins/html/DemoOutputTest.cpp index 5b2758d..ddd8f1c 100644 --- a/test/plugins/html/DemoOutputTest.cpp +++ b/test/plugins/html/DemoOutputTest.cpp @@ -23,6 +23,8 @@ #include <plugins/html/DemoOutput.hpp> +#include <core/common/Rtti.hpp> + #include <core/model/Document.hpp> #include <core/model/Domain.hpp> |