Updated the node/value classes with the new iterators, they compile until we try to instantiate anything

This commit is contained in:
beder
2011-09-10 14:11:42 -05:00
parent 81243c87d4
commit 89f87d855d
6 changed files with 36 additions and 33 deletions

View File

@@ -38,11 +38,11 @@ namespace YAML
// size/iterator // size/iterator
std::size_t size() const { return m_pRef->size(); } std::size_t size() const { return m_pRef->size(); }
const_iterator begin(shared_memory_holder pMemory) const { return static_cast<const node_ref&>(*m_pRef).begin(pMemory); } const_node_iterator begin() const { return static_cast<const node_ref&>(*m_pRef).begin(); }
iterator begin(shared_memory_holder pMemory) { return m_pRef->begin(pMemory); } node_iterator begin() { return m_pRef->begin(); }
const_iterator end(shared_memory_holder pMemory) const { return static_cast<const node_ref&>(*m_pRef).end(pMemory); } const_node_iterator end() const { return static_cast<const node_ref&>(*m_pRef).end(); }
iterator end(shared_memory_holder pMemory) { return m_pRef->end(pMemory); } node_iterator end() { return m_pRef->end(); }
// sequence // sequence
void append(node& node, shared_memory_holder pMemory) { m_pRef->append(node, pMemory); } void append(node& node, shared_memory_holder pMemory) { m_pRef->append(node, pMemory); }

View File

@@ -34,11 +34,11 @@ namespace YAML
// size/iterator // size/iterator
std::size_t size() const; std::size_t size() const;
const_iterator begin(shared_memory_holder pMemory) const; const_node_iterator begin() const;
iterator begin(shared_memory_holder pMemory); node_iterator begin();
const_iterator end(shared_memory_holder pMemory) const; const_node_iterator end() const;
iterator end(shared_memory_holder pMemory); node_iterator end();
// sequence // sequence
void append(node& node, shared_memory_holder pMemory); void append(node& node, shared_memory_holder pMemory);

View File

@@ -33,11 +33,11 @@ namespace YAML
// size/iterator // size/iterator
std::size_t size() const { return m_pData ? m_pData->size() : 0; } std::size_t size() const { return m_pData ? m_pData->size() : 0; }
const_iterator begin(shared_memory_holder pMemory) const { return m_pData ? static_cast<const node_data&>(*m_pData).begin(pMemory) : const_iterator(); } const_node_iterator begin() const { return m_pData ? static_cast<const node_data&>(*m_pData).begin() : const_node_iterator(); }
iterator begin(shared_memory_holder pMemory) {return m_pData ? m_pData->begin(pMemory) : iterator(); } node_iterator begin() {return m_pData ? m_pData->begin() : node_iterator(); }
const_iterator end(shared_memory_holder pMemory) const { return m_pData ? static_cast<const node_data&>(*m_pData).end(pMemory) : const_iterator(); } const_node_iterator end() const { return m_pData ? static_cast<const node_data&>(*m_pData).end() : const_node_iterator(); }
iterator end(shared_memory_holder pMemory) {return m_pData ? m_pData->end(pMemory) : iterator(); } node_iterator end() {return m_pData ? m_pData->end() : node_iterator(); }
// sequence // sequence
void append(node& node, shared_memory_holder pMemory) { ensure_data_exists(); m_pData->append(node, pMemory); } void append(node& node, shared_memory_holder pMemory) { ensure_data_exists(); m_pData->append(node, pMemory); }

View File

@@ -133,22 +133,22 @@ namespace YAML
inline const_iterator Value::begin() const inline const_iterator Value::begin() const
{ {
return static_cast<const detail::node&>(*m_pNode).begin(m_pMemory); return const_iterator(m_pNode->begin(), m_pMemory);
} }
inline iterator Value::begin() inline iterator Value::begin()
{ {
return m_pNode->begin(m_pMemory); return iterator(m_pNode->begin(), m_pMemory);
} }
inline const_iterator Value::end() const inline const_iterator Value::end() const
{ {
return static_cast<const detail::node&>(*m_pNode).end(m_pMemory); return const_iterator(m_pNode->end(), m_pMemory);
} }
inline iterator Value::end() inline iterator Value::end()
{ {
return m_pNode->end(m_pMemory); return iterator(m_pNode->end(), m_pMemory);
} }
// sequence // sequence

View File

@@ -66,39 +66,39 @@ namespace YAML
return 0; return 0;
} }
const_iterator node_data::begin(shared_memory_holder pMemory) const const_node_iterator node_data::begin() const
{ {
switch(m_type) { switch(m_type) {
case ValueType::Sequence: return const_iterator(pMemory, m_sequence.begin()); case ValueType::Sequence: return const_node_iterator(m_sequence.begin());
case ValueType::Map: return const_iterator(pMemory, m_map.begin()); case ValueType::Map: return const_node_iterator(m_map.begin());
default: return const_iterator(); default: return const_node_iterator();
} }
} }
iterator node_data::begin(shared_memory_holder pMemory) node_iterator node_data::begin()
{ {
switch(m_type) { switch(m_type) {
case ValueType::Sequence: return iterator(pMemory, m_sequence.begin()); case ValueType::Sequence: return node_iterator(m_sequence.begin());
case ValueType::Map: return iterator(pMemory, m_map.begin()); case ValueType::Map: return node_iterator(m_map.begin());
default: return iterator(); default: return node_iterator();
} }
} }
const_iterator node_data::end(shared_memory_holder pMemory) const const_node_iterator node_data::end() const
{ {
switch(m_type) { switch(m_type) {
case ValueType::Sequence: return const_iterator(pMemory, m_sequence.end()); case ValueType::Sequence: return const_node_iterator(m_sequence.end());
case ValueType::Map: return const_iterator(pMemory, m_map.end()); case ValueType::Map: return const_node_iterator(m_map.end());
default: return const_iterator(); default: return const_node_iterator();
} }
} }
iterator node_data::end(shared_memory_holder pMemory) node_iterator node_data::end()
{ {
switch(m_type) { switch(m_type) {
case ValueType::Sequence: return iterator(pMemory, m_sequence.end()); case ValueType::Sequence: return node_iterator(m_sequence.end());
case ValueType::Map: return iterator(pMemory, m_map.end()); case ValueType::Map: return node_iterator(m_map.end());
default: return iterator(); default: return node_iterator();
} }
} }

View File

@@ -3,7 +3,10 @@
int main() int main()
{ {
YAML::Value value = YAML::Parse("foo: bar"); YAML::Value value = YAML::Parse("{foo: bar, monkey: value}");
for(YAML::const_iterator it=value.begin();it!=value.end();++it) {
std::cout << it->first.as<std::string>() << " -> " << it->second.as<std::string>() << "\n";
}
return 0; return 0;
} }