diff --git a/sflphone-common/src/config/yamlnode.cpp b/sflphone-common/src/config/yamlnode.cpp index 1daa148ce9176569a7f8bbad9e043ce997e3d36e..ebfb8f245c6e17209cd63e4eeb5f55f05a8133de 100755 --- a/sflphone-common/src/config/yamlnode.cpp +++ b/sflphone-common/src/config/yamlnode.cpp @@ -33,6 +33,23 @@ namespace Conf { +void YamlDocument::addNode(YamlNode *node) +{ + Sequence::iterator it = doc.end(); + doc.insert(it, node); +} + +YamlNode *YamlDocument::popNode() +{ + Sequence::iterator it = doc.begin(); + YamlNode *node = doc.front(); + + //removed element's destructor is called + doc.pop_front(); + + return node; +} + void MappingNode::setKeyValue(Key key, YamlNode *value) { Mapping::iterator it = map.end(); @@ -50,7 +67,6 @@ void MappingNode::removeKeyValue(Key key) YamlNode *MappingNode::getValue(Key key) { Mapping::iterator it = map.find(key); - return it->second; } @@ -58,11 +74,8 @@ YamlNode *MappingNode::getValue(Key key) void SequenceNode::addNode(YamlNode *node) { Sequence::iterator it = seq.end(); - seq.insert(it, node); } - - } diff --git a/sflphone-common/src/config/yamlnode.h b/sflphone-common/src/config/yamlnode.h index ad8c240bc3c2f99b5ddfed122c050fe976dd6d73..d6efa03c08bf1b690143cf4b8ffd4a34ab311e68 100755 --- a/sflphone-common/src/config/yamlnode.h +++ b/sflphone-common/src/config/yamlnode.h @@ -46,7 +46,6 @@ typedef std::string Value; typedef std::list<YamlNode *> Sequence; typedef std::map<Key, YamlNode *> Mapping; - class YamlNodeException : public std::exception { @@ -66,10 +65,8 @@ class YamlNodeException : public std::exception }; - enum NodeType { DOCUMENT, SCALAR, MAPPING, SEQUENCE }; - class YamlNode { public: @@ -87,6 +84,24 @@ class YamlNode { }; +class YamlDocument : YamlNode { + + public: + + YamlDocument() : YamlNode(DOCUMENT) {} + + ~YamlDocument() {} + + void addNode(YamlNode *node); + + YamlNode *popNode(); + + private: + + Sequence doc; + + }; + class SequenceNode : public YamlNode { public: @@ -147,6 +162,7 @@ class ScalarNode : public YamlNode { }; + } diff --git a/sflphone-common/test/configurationtest.cpp b/sflphone-common/test/configurationtest.cpp index 473753e9916d48fc839416c92bfe436883bce034..488318271c4d7b4419bcf2e4d4a68453f0a8842e 100755 --- a/sflphone-common/test/configurationtest.cpp +++ b/sflphone-common/test/configurationtest.cpp @@ -191,7 +191,7 @@ void ConfigurationTest::testYamlParser() void ConfigurationTest::testYamlComposition() { - + Conf::SequenceNode *seq = new Conf::SequenceNode(); Conf::MappingNode *map = new Conf::MappingNode(); Conf::ScalarNode *sclr = new Conf::ScalarNode(); @@ -218,4 +218,6 @@ void ConfigurationTest::testYamlComposition() delete map; delete sclr; + + }