From 011f88737854bc25ebc4ef2c86ca222c563fc1d5 Mon Sep 17 00:00:00 2001
From: Andreas Schenk <andreas_schenk@hms.harvard.edu>
Date: Fri, 13 May 2011 23:34:38 -0400
Subject: [PATCH] added GetComment to InfoHandle and InfoGroup

---
 modules/info/pymod/wrap_info.cc |  2 ++
 modules/info/src/info_group.cc  |  5 +++++
 modules/info/src/info_group.hh  |  4 ++++
 modules/info/src/info_impl.cc   | 10 ++++++++++
 modules/info/src/info_impl.hh   |  2 ++
 modules/info/src/info_item.cc   |  5 +++++
 modules/info/src/info_item.hh   |  2 ++
 7 files changed, 30 insertions(+)

diff --git a/modules/info/pymod/wrap_info.cc b/modules/info/pymod/wrap_info.cc
index 5aabfe3eb..223dbe1a9 100644
--- a/modules/info/pymod/wrap_info.cc
+++ b/modules/info/pymod/wrap_info.cc
@@ -199,6 +199,7 @@ BOOST_PYTHON_MODULE(_ost_info)
     .def("SetBool",&InfoItem::SetBool)
     .def("SetVector",&InfoItem::SetVector)
     .add_property("attribute",&InfoItem::GetAttribute,&InfoItem::SetAttribute)
+    .def("GetComment",&InfoItem::GetComment)
     ;
   class_<InfoGroupList>("InfoGroupList", no_init)
     .def(vector_indexing_suite<InfoGroupList>())
@@ -237,6 +238,7 @@ BOOST_PYTHON_MODULE(_ost_info)
     .def("Apply",info_group_apply2a)
     .def("Apply",info_group_apply2b)
     .def("GetTextData",&InfoGroup::GetTextData)
+    .def("GetComment",&InfoGroup::GetComment)
     .def("GetPath",&InfoGroup::GetPath)
     ;
 
diff --git a/modules/info/src/info_group.cc b/modules/info/src/info_group.cc
index 883c80d48..2ed933084 100644
--- a/modules/info/src/info_group.cc
+++ b/modules/info/src/info_group.cc
@@ -418,6 +418,11 @@ void InfoGroup::SetTextData(const String& td)
   impl_->SetTextData(td);
 }
 
+String InfoGroup::GetComment() const
+{
+  return impl_->GetComment();
+}
+
 bool InfoGroup::operator==(const InfoGroup& ref) const
 {
   return *impl_ == *ref.impl_;
diff --git a/modules/info/src/info_group.hh b/modules/info/src/info_group.hh
index 5d703c6c5..d0823edf8 100644
--- a/modules/info/src/info_group.hh
+++ b/modules/info/src/info_group.hh
@@ -90,6 +90,10 @@ public:
   String GetTextData() const;
   void SetTextData(const String& td);
 
+  //! get comment just above item
+  String GetComment() const;
+
+
   //! Apply visitor
   /*!
     descends through all items and subgroups
diff --git a/modules/info/src/info_impl.cc b/modules/info/src/info_impl.cc
index 7bc6d9cc3..0f6415504 100644
--- a/modules/info/src/info_impl.cc
+++ b/modules/info/src/info_impl.cc
@@ -361,6 +361,16 @@ void EleImpl::SetTextData(const String& td)
   }
 }
 
+
+String EleImpl::GetComment() const
+{
+  QDomNode previous=ele_.previousSibling();
+  if(previous.isComment()){
+    return previous.toComment().data().toStdString();
+  }
+  return String();
+}
+
 Type EleImpl::GetType() const 
 {
   return type_;
diff --git a/modules/info/src/info_impl.hh b/modules/info/src/info_impl.hh
index 62c0357b3..fd84d96ed 100644
--- a/modules/info/src/info_impl.hh
+++ b/modules/info/src/info_impl.hh
@@ -74,6 +74,8 @@ public:
   String GetTextData() const;
   void SetTextData(const String& td);
 
+  String GetComment() const;
+
   /// \brief get sub elements with specified element name
   /// 
   /// does not throw. returns empty list if not elements have been found
diff --git a/modules/info/src/info_item.cc b/modules/info/src/info_item.cc
index f57b53e13..d3317eb00 100644
--- a/modules/info/src/info_item.cc
+++ b/modules/info/src/info_item.cc
@@ -177,6 +177,11 @@ bool InfoItem::operator!=(const InfoItem& rhs) const
   return !this->operator==(rhs);
 }
 
+String InfoItem::GetComment() const
+{
+  return impl_->GetComment();
+}
+
 Real GetFloatInfoItem(const InfoGroup& ig, const InfoPath& path, Real def)
 {
   if(ig.HasItem(path)) {
diff --git a/modules/info/src/info_item.hh b/modules/info/src/info_item.hh
index b32bee40b..9036727c5 100644
--- a/modules/info/src/info_item.hh
+++ b/modules/info/src/info_item.hh
@@ -107,6 +107,8 @@ public:
   bool HasAttribute(const String& name) const;
   //! remove attribute of given name
   void RemoveAttribute(const String& name);
+  //! get comment just above item
+  String GetComment() const;
 
   //! returns a list with all attribute names
   std::vector<String> GetAttributeList() const;
-- 
GitLab