From 2d0f324529f3f7d4ed2b6d1e4a94a2ab16468eaf Mon Sep 17 00:00:00 2001 From: beder Date: Wed, 25 Jun 2008 23:00:18 +0000 Subject: [PATCH] Preliminary setup - basic data structures are there. --- content.cpp | 12 ++++++++++++ content.h | 13 +++++++++++++ document.cpp | 6 ++++++ map.cpp | 17 +++++++++++++++++ map.h | 20 ++++++++++++++++++++ node.cpp | 14 +++++++++++++- node.h | 13 ++++++++++--- scalar.cpp | 12 ++++++++++++ scalar.h | 17 +++++++++++++++++ sequence.cpp | 15 +++++++++++++++ sequence.h | 19 +++++++++++++++++++ yaml-reader.vcproj | 32 ++++++++++++++++++++++++++++++++ 12 files changed, 186 insertions(+), 4 deletions(-) create mode 100644 content.cpp create mode 100644 content.h create mode 100644 map.cpp create mode 100644 map.h create mode 100644 scalar.cpp create mode 100644 scalar.h create mode 100644 sequence.cpp create mode 100644 sequence.h diff --git a/content.cpp b/content.cpp new file mode 100644 index 0000000..b68bb25 --- /dev/null +++ b/content.cpp @@ -0,0 +1,12 @@ +#include "content.h" + +namespace YAML +{ + Content::Content() + { + } + + Content::~Content() + { + } +} diff --git a/content.h b/content.h new file mode 100644 index 0000000..d251bb1 --- /dev/null +++ b/content.h @@ -0,0 +1,13 @@ +#pragma once + +namespace YAML +{ + class Content + { + public: + Content(); + virtual ~Content(); + + protected: + }; +} diff --git a/document.cpp b/document.cpp index a9ff19a..750ef65 100644 --- a/document.cpp +++ b/document.cpp @@ -1,5 +1,6 @@ #include "document.h" #include "node.h" +#include namespace YAML { @@ -25,5 +26,10 @@ namespace YAML void Document::Load(const std::string& fileName) { + Clear(); + + std::ifstream fin(fileName.c_str()); + m_pRoot = new Node; + m_pRoot->Read(fin); } } diff --git a/map.cpp b/map.cpp new file mode 100644 index 0000000..882ad15 --- /dev/null +++ b/map.cpp @@ -0,0 +1,17 @@ +#include "map.h" +#include "node.h" + +namespace YAML +{ + Map::Map() + { + } + + Map::~Map() + { + for(node_map::const_iterator it=m_data.begin();it!=m_data.end();++it) { + delete it->first; + delete it->second; + } + } +} diff --git a/map.h b/map.h new file mode 100644 index 0000000..b165ac5 --- /dev/null +++ b/map.h @@ -0,0 +1,20 @@ +#pragma once + +#include "content.h" +#include + +namespace YAML +{ + class Node; + + class Map: public Content + { + public: + Map(); + virtual ~Map(); + + protected: + typedef std::map node_map; + node_map m_data; + }; +} diff --git a/node.cpp b/node.cpp index 22c1beb..0da7c2b 100644 --- a/node.cpp +++ b/node.cpp @@ -1,12 +1,24 @@ #include "node.h" +#include "content.h" namespace YAML { - Node::Node() + Node::Node(): m_pContent(0) { } Node::~Node() + { + Clear(); + } + + void Node::Clear() + { + delete m_pContent; + m_pContent = 0; + } + + void Node::Read(std::istream& in) { } } diff --git a/node.h b/node.h index dd4d362..e1e5d1d 100644 --- a/node.h +++ b/node.h @@ -1,12 +1,15 @@ #pragma once #include +#include namespace YAML { - const std::string Str = "!!str"; - const std::string Seq = "!!seq"; - const std::string Map = "!!map"; + const std::string StrTag = "!!str"; + const std::string SeqTag = "!!seq"; + const std::string MapTag = "!!map"; + + class Content; class Node { @@ -14,7 +17,11 @@ namespace YAML Node(); ~Node(); + void Clear(); + void Read(std::istream& in); + private: std::string m_tag; + Content *m_pContent; }; } diff --git a/scalar.cpp b/scalar.cpp new file mode 100644 index 0000000..787e096 --- /dev/null +++ b/scalar.cpp @@ -0,0 +1,12 @@ +#include "scalar.h" + +namespace YAML +{ + Scalar::Scalar() + { + } + + Scalar::~Scalar() + { + } +} diff --git a/scalar.h b/scalar.h new file mode 100644 index 0000000..5f3e068 --- /dev/null +++ b/scalar.h @@ -0,0 +1,17 @@ +#pragma once + +#include "content.h" +#include + +namespace YAML +{ + class Scalar: public Content + { + public: + Scalar(); + virtual ~Scalar(); + + protected: + std::string m_data; + }; +} diff --git a/sequence.cpp b/sequence.cpp new file mode 100644 index 0000000..ef1d336 --- /dev/null +++ b/sequence.cpp @@ -0,0 +1,15 @@ +#include "sequence.h" +#include "node.h" + +namespace YAML +{ + Sequence::Sequence() + { + } + + Sequence::~Sequence() + { + for(unsigned i=0;i + +namespace YAML +{ + class Node; + + class Sequence: public Content + { + public: + Sequence(); + virtual ~Sequence(); + + protected: + std::vector m_data; + }; +} diff --git a/yaml-reader.vcproj b/yaml-reader.vcproj index def7c75..d5ea568 100644 --- a/yaml-reader.vcproj +++ b/yaml-reader.vcproj @@ -161,6 +161,10 @@ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > + + @@ -169,24 +173,52 @@ RelativePath=".\main.cpp" > + + + + + + + + + + + + + +