yaml-cpp/src/collectionstack.h

40 lines
1.1 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 {
enum value { NoCollection, 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::NoCollection;
2014-03-22 21:49:16 +04:00
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