From ae5bce0ea5f78ed0e0ba54e09bba4555b61b9215 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@student.kit.edu>
Date: Tue, 2 Apr 2019 15:55:44 +0200
Subject: [PATCH] Moved Attribute, Element and others to elements/core

---
 VirtualRobot/CMakeLists.txt                      | 16 ++++++++--------
 VirtualRobot/MJCF/elements/asset.h               |  2 +-
 VirtualRobot/MJCF/elements/body.h                |  2 +-
 VirtualRobot/MJCF/elements/compiler.h            |  2 +-
 VirtualRobot/MJCF/elements/contact.h             |  2 +-
 .../MJCF/elements/{ => core}/Attribute.cpp       |  0
 .../MJCF/elements/{ => core}/Attribute.h         |  0
 .../MJCF/elements/{ => core}/Element.cpp         |  0
 VirtualRobot/MJCF/elements/{ => core}/Element.h  |  6 ++++--
 .../MJCF/elements/{ => core}/exceptions.cpp      |  0
 .../MJCF/elements/{ => core}/exceptions.h        |  0
 .../MJCF/elements/{ => core}/mjcf_utils.cpp      |  0
 .../MJCF/elements/{ => core}/mjcf_utils.h        |  0
 VirtualRobot/MJCF/elements/custom.h              |  2 +-
 VirtualRobot/MJCF/elements/default.h             |  2 +-
 VirtualRobot/MJCF/elements/equality.h            |  2 +-
 VirtualRobot/MJCF/elements/keyframe.h            |  2 +-
 VirtualRobot/MJCF/elements/option.h              |  4 ++--
 VirtualRobot/MJCF/elements/sensor.h              |  2 +-
 VirtualRobot/MJCF/elements/size.h                |  2 +-
 VirtualRobot/MJCF/elements/statistic.h           |  2 +-
 VirtualRobot/MJCF/elements/tendon.h              |  2 +-
 VirtualRobot/MJCF/elements/visual.h              |  2 +-
 23 files changed, 27 insertions(+), 25 deletions(-)
 rename VirtualRobot/MJCF/elements/{ => core}/Attribute.cpp (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/Attribute.h (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/Element.cpp (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/Element.h (98%)
 rename VirtualRobot/MJCF/elements/{ => core}/exceptions.cpp (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/exceptions.h (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/mjcf_utils.cpp (100%)
 rename VirtualRobot/MJCF/elements/{ => core}/mjcf_utils.h (100%)

diff --git a/VirtualRobot/CMakeLists.txt b/VirtualRobot/CMakeLists.txt
index ee93d870b..01a073a4b 100644
--- a/VirtualRobot/CMakeLists.txt
+++ b/VirtualRobot/CMakeLists.txt
@@ -309,8 +309,6 @@ SET(SOURCES
     
     MJCF/Document.cpp
     MJCF/elements.cpp
-    MJCF/elements/Attribute.cpp
-    MJCF/elements/Element.cpp
     MJCF/elements/actuator.cpp
     MJCF/elements/asset.cpp
     MJCF/elements/body.cpp
@@ -318,15 +316,17 @@ SET(SOURCES
     MJCF/elements/custom.cpp
     MJCF/elements/default.cpp
     MJCF/elements/equality.cpp
-    MJCF/elements/exceptions.cpp
     MJCF/elements/keyframe.cpp
-    MJCF/elements/mjcf_utils.cpp
     MJCF/elements/option.cpp
     MJCF/elements/sensor.cpp
     MJCF/elements/size.cpp
     MJCF/elements/statistic.cpp
     MJCF/elements/tendon.cpp
     MJCF/elements/visual.cpp
+    MJCF/elements/core/Attribute.cpp
+    MJCF/elements/core/Element.cpp
+    MJCF/elements/core/exceptions.cpp
+    MJCF/elements/core/mjcf_utils.cpp
     
     Nodes/CameraSensor.cpp
     Nodes/CameraSensorFactory.cpp
@@ -513,8 +513,6 @@ SET(INCLUDES
     
     MJCF/Document.h
     MJCF/elements.h
-    MJCF/elements/Attribute.h
-    MJCF/elements/Element.h
     MJCF/elements/actuator.h
     MJCF/elements/asset.h
     MJCF/elements/body.h
@@ -522,9 +520,7 @@ SET(INCLUDES
     MJCF/elements/custom.h
     MJCF/elements/default.h
     MJCF/elements/equality.h
-    MJCF/elements/exceptions.h
     MJCF/elements/keyframe.h
-    MJCF/elements/mjcf_utils.h
     MJCF/elements/option.h
     MJCF/elements/sensor.h
     MJCF/elements/size.h
@@ -532,6 +528,10 @@ SET(INCLUDES
     MJCF/elements/tendon.h
     MJCF/elements/visual.h
     MJCF/elements/has_member.hpp
+    MJCF/elements/core/Attribute.h
+    MJCF/elements/core/Element.h
+    MJCF/elements/core/exceptions.h
+    MJCF/elements/core/mjcf_utils.h
     
     Nodes/CameraSensor.h
     Nodes/CameraSensorFactory.h
diff --git a/VirtualRobot/MJCF/elements/asset.h b/VirtualRobot/MJCF/elements/asset.h
index bd9d25bc2..4887a3fbc 100644
--- a/VirtualRobot/MJCF/elements/asset.h
+++ b/VirtualRobot/MJCF/elements/asset.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 
 namespace mjcf
diff --git a/VirtualRobot/MJCF/elements/body.h b/VirtualRobot/MJCF/elements/body.h
index 15a781e7b..9385c1d72 100644
--- a/VirtualRobot/MJCF/elements/body.h
+++ b/VirtualRobot/MJCF/elements/body.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 
 namespace mjcf
diff --git a/VirtualRobot/MJCF/elements/compiler.h b/VirtualRobot/MJCF/elements/compiler.h
index 054929963..639606a6b 100644
--- a/VirtualRobot/MJCF/elements/compiler.h
+++ b/VirtualRobot/MJCF/elements/compiler.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/contact.h b/VirtualRobot/MJCF/elements/contact.h
index f5bbe7bfb..7287f5ea7 100644
--- a/VirtualRobot/MJCF/elements/contact.h
+++ b/VirtualRobot/MJCF/elements/contact.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 #include "body.h"
 
 
diff --git a/VirtualRobot/MJCF/elements/Attribute.cpp b/VirtualRobot/MJCF/elements/core/Attribute.cpp
similarity index 100%
rename from VirtualRobot/MJCF/elements/Attribute.cpp
rename to VirtualRobot/MJCF/elements/core/Attribute.cpp
diff --git a/VirtualRobot/MJCF/elements/Attribute.h b/VirtualRobot/MJCF/elements/core/Attribute.h
similarity index 100%
rename from VirtualRobot/MJCF/elements/Attribute.h
rename to VirtualRobot/MJCF/elements/core/Attribute.h
diff --git a/VirtualRobot/MJCF/elements/Element.cpp b/VirtualRobot/MJCF/elements/core/Element.cpp
similarity index 100%
rename from VirtualRobot/MJCF/elements/Element.cpp
rename to VirtualRobot/MJCF/elements/core/Element.cpp
diff --git a/VirtualRobot/MJCF/elements/Element.h b/VirtualRobot/MJCF/elements/core/Element.h
similarity index 98%
rename from VirtualRobot/MJCF/elements/Element.h
rename to VirtualRobot/MJCF/elements/core/Element.h
index 034f71ce1..44b5c7a35 100644
--- a/VirtualRobot/MJCF/elements/Element.h
+++ b/VirtualRobot/MJCF/elements/core/Element.h
@@ -13,7 +13,6 @@ namespace mjcf
     // Forward declaration.
     class Document;
     
-    
     template <class _Derived>
     class Element
     {
@@ -148,6 +147,9 @@ namespace mjcf
         Document& document() { return *_document; }
         const Document& document() const  { return *_document; }
         
+        tinyxml2::XMLElement* element() { return elem; }
+        const tinyxml2::XMLElement* element() const { return elem; }
+        
         
     private:
 
@@ -364,7 +366,7 @@ namespace mjcf
     template <class D>
     void Element<D>::assertElemValueEqualsTag()
     {
-        if (elem)
+        if (elem && !Derived::Tag.empty())
         {
             VR_ASSERT_MESSAGE(elem->Value() == Derived::tag, 
                               "Element tag '" + std::string(elem->Value()) + "' must be '" + Derived::tag + "'");
diff --git a/VirtualRobot/MJCF/elements/exceptions.cpp b/VirtualRobot/MJCF/elements/core/exceptions.cpp
similarity index 100%
rename from VirtualRobot/MJCF/elements/exceptions.cpp
rename to VirtualRobot/MJCF/elements/core/exceptions.cpp
diff --git a/VirtualRobot/MJCF/elements/exceptions.h b/VirtualRobot/MJCF/elements/core/exceptions.h
similarity index 100%
rename from VirtualRobot/MJCF/elements/exceptions.h
rename to VirtualRobot/MJCF/elements/core/exceptions.h
diff --git a/VirtualRobot/MJCF/elements/mjcf_utils.cpp b/VirtualRobot/MJCF/elements/core/mjcf_utils.cpp
similarity index 100%
rename from VirtualRobot/MJCF/elements/mjcf_utils.cpp
rename to VirtualRobot/MJCF/elements/core/mjcf_utils.cpp
diff --git a/VirtualRobot/MJCF/elements/mjcf_utils.h b/VirtualRobot/MJCF/elements/core/mjcf_utils.h
similarity index 100%
rename from VirtualRobot/MJCF/elements/mjcf_utils.h
rename to VirtualRobot/MJCF/elements/core/mjcf_utils.h
diff --git a/VirtualRobot/MJCF/elements/custom.h b/VirtualRobot/MJCF/elements/custom.h
index 56d302f89..2a75c50d5 100644
--- a/VirtualRobot/MJCF/elements/custom.h
+++ b/VirtualRobot/MJCF/elements/custom.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/default.h b/VirtualRobot/MJCF/elements/default.h
index 826c17017..1eacf2fb8 100644
--- a/VirtualRobot/MJCF/elements/default.h
+++ b/VirtualRobot/MJCF/elements/default.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 
 namespace mjcf
diff --git a/VirtualRobot/MJCF/elements/equality.h b/VirtualRobot/MJCF/elements/equality.h
index 1550a50cf..c7d33602a 100644
--- a/VirtualRobot/MJCF/elements/equality.h
+++ b/VirtualRobot/MJCF/elements/equality.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 
 namespace mjcf
diff --git a/VirtualRobot/MJCF/elements/keyframe.h b/VirtualRobot/MJCF/elements/keyframe.h
index c4ff60b13..0867ff701 100644
--- a/VirtualRobot/MJCF/elements/keyframe.h
+++ b/VirtualRobot/MJCF/elements/keyframe.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/option.h b/VirtualRobot/MJCF/elements/option.h
index b673dfcdd..1dce69eee 100644
--- a/VirtualRobot/MJCF/elements/option.h
+++ b/VirtualRobot/MJCF/elements/option.h
@@ -1,7 +1,7 @@
 #pragma once
 
-#include "Attribute.h"
-#include "mjcf_utils.h"
+#include "core/Attribute.h"
+#include "core/mjcf_utils.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/sensor.h b/VirtualRobot/MJCF/elements/sensor.h
index f9122689c..3a775270b 100644
--- a/VirtualRobot/MJCF/elements/sensor.h
+++ b/VirtualRobot/MJCF/elements/sensor.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/size.h b/VirtualRobot/MJCF/elements/size.h
index 1dffaa63e..1b70617f6 100644
--- a/VirtualRobot/MJCF/elements/size.h
+++ b/VirtualRobot/MJCF/elements/size.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/statistic.h b/VirtualRobot/MJCF/elements/statistic.h
index 543b6d113..85976bf9d 100644
--- a/VirtualRobot/MJCF/elements/statistic.h
+++ b/VirtualRobot/MJCF/elements/statistic.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/tendon.h b/VirtualRobot/MJCF/elements/tendon.h
index 671cfa636..f923b7202 100644
--- a/VirtualRobot/MJCF/elements/tendon.h
+++ b/VirtualRobot/MJCF/elements/tendon.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
diff --git a/VirtualRobot/MJCF/elements/visual.h b/VirtualRobot/MJCF/elements/visual.h
index d52ffe2a6..ed4e2537a 100644
--- a/VirtualRobot/MJCF/elements/visual.h
+++ b/VirtualRobot/MJCF/elements/visual.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "Attribute.h"
+#include "core/Attribute.h"
 
 namespace mjcf
 {
-- 
GitLab