emitterutils.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
  2. #define EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
  3. #if defined(_MSC_VER) || \
  4. (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
  5. (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
  6. #pragma once
  7. #endif
  8. #include <string>
  9. #include "emitterstate.h"
  10. #include "yaml-cpp/emittermanip.h"
  11. #include "yaml-cpp/ostream_wrapper.h"
  12. namespace YAML {
  13. class ostream_wrapper;
  14. } // namespace YAML
  15. namespace YAML {
  16. class Binary;
  17. struct StringFormat {
  18. enum value { Plain, SingleQuoted, DoubleQuoted, Literal };
  19. };
  20. struct StringEscaping {
  21. enum value { None, NonAscii, JSON };
  22. };
  23. namespace Utils {
  24. StringFormat::value ComputeStringFormat(const std::string& str,
  25. EMITTER_MANIP strFormat,
  26. FlowType::value flowType,
  27. bool escapeNonAscii);
  28. bool WriteSingleQuotedString(ostream_wrapper& out, const std::string& str);
  29. bool WriteDoubleQuotedString(ostream_wrapper& out, const std::string& str,
  30. StringEscaping::value stringEscaping);
  31. bool WriteLiteralString(ostream_wrapper& out, const std::string& str,
  32. std::size_t indent);
  33. bool WriteChar(ostream_wrapper& out, char ch,
  34. StringEscaping::value stringEscapingStyle);
  35. bool WriteComment(ostream_wrapper& out, const std::string& str,
  36. std::size_t postCommentIndent);
  37. bool WriteAlias(ostream_wrapper& out, const std::string& str);
  38. bool WriteAnchor(ostream_wrapper& out, const std::string& str);
  39. bool WriteTag(ostream_wrapper& out, const std::string& str, bool verbatim);
  40. bool WriteTagWithPrefix(ostream_wrapper& out, const std::string& prefix,
  41. const std::string& tag);
  42. bool WriteBinary(ostream_wrapper& out, const Binary& binary);
  43. }
  44. }
  45. #endif // EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66