diff --git a/include/yaml-cpp/stlemitter.h b/include/yaml-cpp/stlemitter.h index 1b5d864..74dce1b 100644 --- a/include/yaml-cpp/stlemitter.h +++ b/include/yaml-cpp/stlemitter.h @@ -8,32 +8,37 @@ #include #include +#include #include namespace YAML { - template - inline Emitter& operator << (Emitter& emitter, const std::vector & v) { - typedef typename std::vector vec; + template + inline Emitter& EmitSeq(Emitter& emitter, const Seq& seq) { emitter << BeginSeq; - for(typename vec::const_iterator it=v.begin();it!=v.end();++it) - emitter << *it; - emitter << EndSeq; - return emitter; - } - - template - inline Emitter& operator << (Emitter& emitter, const std::list & v) { - typedef typename std::list list; - emitter << BeginSeq; - for(typename list::const_iterator it=v.begin();it!=v.end();++it) + for(typename Seq::const_iterator it=seq.begin();it!=seq.end();++it) emitter << *it; emitter << EndSeq; return emitter; } + template + inline Emitter& operator << (Emitter& emitter, const std::vector& v) { + return EmitSeq(emitter, v); + } + + template + inline Emitter& operator << (Emitter& emitter, const std::list& v) { + return EmitSeq(emitter, v); + } + + template + inline Emitter& operator << (Emitter& emitter, const std::set& v) { + return EmitSeq(emitter, v); + } + template - inline Emitter& operator << (Emitter& emitter, const std::map & m) { + inline Emitter& operator << (Emitter& emitter, const std::map& m) { typedef typename std::map map; emitter << BeginMap; for(typename map::const_iterator it=m.begin();it!=m.end();++it)