virtual_node.hpp 844 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*!
  2. \file virtual_group.hpp
  3. \author Ha NGUYEN
  4. \date 14 Aprill 2015
  5. \since 14 April 2015
  6. \brief Class template for virtual nodes
  7. */
  8. #ifndef __XIOS_VIRTUAL_NODE_HPP__
  9. #define __XIOS_VIRTUAL_NODE_HPP__
  10. namespace xios {
  11. /*!
  12. \class CVirtualNode
  13. On processing xml file, there are several cases in which a node contains other node type.
  14. These different nodes are stored in a virtual node.
  15. */
  16. template<typename NodeType>
  17. class CVirtualNode
  18. {
  19. public:
  20. CVirtualNode() { this->setVirtualNode(); }
  21. virtual ~CVirtualNode() {}
  22. protected:
  23. void setVirtualNode(NodeType* newVirtualNode) { this->virtualNode_ = newVirtualNode; }
  24. void setVirtualNode() { this->setVirtualNode(NodeType::create());}
  25. NodeType* getVirtualNode() const { return virtualNode_; }
  26. protected:
  27. NodeType* virtualNode_;
  28. };
  29. }
  30. #endif // __XIOS_VIRTUAL_NODE_HPP__