yaml-cpp/src/collectionstack.h

40 lines
1.0 KiB
C
Raw Normal View History

#ifndef COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66
2014-03-22 21:49:16 +04:00
#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif
#include <stack>
#include <cassert>
2014-03-22 21:49:16 +04:00
namespace YAML {
struct CollectionType {
2014-03-24 05:08:54 +04:00
enum value { None, BlockMap, BlockSeq, FlowMap, FlowSeq, CompactMap };
2014-03-22 21:49:16 +04:00
};
class CollectionStack {
public:
CollectionType::value GetCurCollectionType() const {
if (collectionStack.empty())
return CollectionType::None;
return collectionStack.top();
}
void PushCollectionType(CollectionType::value type) {
collectionStack.push(type);
}
void PopCollectionType(CollectionType::value type) {
assert(type == GetCurCollectionType());
collectionStack.pop();
}
2014-03-22 21:49:16 +04:00
private:
std::stack<CollectionType::value> collectionStack;
};
}
2014-03-22 21:49:16 +04:00
#endif // COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66