summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/XML.cpp19
-rw-r--r--src/core/XML.hpp7
-rw-r--r--src/core/model/Document.hpp6
-rw-r--r--src/core/model/Domain.hpp8
-rw-r--r--src/core/model/Node.cpp1
-rw-r--r--src/core/model/Node.hpp6
-rw-r--r--src/core/model/Typesystem.hpp8
-rw-r--r--test/core/model/DocumentTest.cpp14
-rw-r--r--test/core/model/NodeTest.cpp1
-rw-r--r--test/plugins/css/CSSParserTest.cpp62
-rw-r--r--test/plugins/html/DemoOutputTest.cpp2
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>