00001 #ifndef ALIASMANAGER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00002 #define ALIASMANAGER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00003 00004 #if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 00005 #pragma once 00006 #endif 00007 00008 #include "yaml-cpp-pm/anchor.h" 00009 #include <map> 00010 00011 namespace YAML_PM 00012 { 00013 class Node; 00014 00015 class AliasManager 00016 { 00017 public: 00018 AliasManager(); 00019 00020 void RegisterReference(const Node& node); 00021 anchor_t LookupAnchor(const Node& node) const; 00022 00023 private: 00024 anchor_t _CreateNewAnchor(); 00025 00026 private: 00027 typedef std::map<const Node*, anchor_t> AnchorByIdentity; 00028 AnchorByIdentity m_anchorByIdentity; 00029 00030 anchor_t m_curAnchor; 00031 }; 00032 } 00033 00034 #endif // ALIASMANAGER_H_62B23520_7C8E_11DE_8A39_0800200C9A66