145 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
 | 
						|
#define EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
 | 
						|
 | 
						|
#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 <string>
 | 
						|
 | 
						|
namespace YAML {
 | 
						|
enum EMITTER_MANIP {
 | 
						|
  // general manipulators
 | 
						|
  Auto,
 | 
						|
  TagByKind,
 | 
						|
  Newline,
 | 
						|
 | 
						|
  // output character set
 | 
						|
  EmitNonAscii,
 | 
						|
  EscapeNonAscii,
 | 
						|
  EscapeAsJson,
 | 
						|
 | 
						|
  // string manipulators
 | 
						|
  // Auto, // duplicate
 | 
						|
  SingleQuoted,
 | 
						|
  DoubleQuoted,
 | 
						|
  Literal,
 | 
						|
 | 
						|
  // null manipulators
 | 
						|
  LowerNull,
 | 
						|
  UpperNull,
 | 
						|
  CamelNull,
 | 
						|
  TildeNull,
 | 
						|
 | 
						|
  // bool manipulators
 | 
						|
  YesNoBool,      // yes, no
 | 
						|
  TrueFalseBool,  // true, false
 | 
						|
  OnOffBool,      // on, off
 | 
						|
  UpperCase,      // TRUE, N
 | 
						|
  LowerCase,      // f, yes
 | 
						|
  CamelCase,      // No, Off
 | 
						|
  LongBool,       // yes, On
 | 
						|
  ShortBool,      // y, t
 | 
						|
 | 
						|
  // int manipulators
 | 
						|
  Dec,
 | 
						|
  Hex,
 | 
						|
  Oct,
 | 
						|
 | 
						|
  // document manipulators
 | 
						|
  BeginDoc,
 | 
						|
  EndDoc,
 | 
						|
 | 
						|
  // sequence manipulators
 | 
						|
  BeginSeq,
 | 
						|
  EndSeq,
 | 
						|
  Flow,
 | 
						|
  Block,
 | 
						|
 | 
						|
  // map manipulators
 | 
						|
  BeginMap,
 | 
						|
  EndMap,
 | 
						|
  Key,
 | 
						|
  Value,
 | 
						|
  // Flow, // duplicate
 | 
						|
  // Block, // duplicate
 | 
						|
  // Auto, // duplicate
 | 
						|
  LongKey
 | 
						|
};
 | 
						|
 | 
						|
struct _Indent {
 | 
						|
  _Indent(int value_) : value(value_) {}
 | 
						|
  int value;
 | 
						|
};
 | 
						|
 | 
						|
inline _Indent Indent(int value) { return _Indent(value); }
 | 
						|
 | 
						|
struct _Alias {
 | 
						|
  _Alias(const std::string& content_) : content(content_) {}
 | 
						|
  std::string content;
 | 
						|
};
 | 
						|
 | 
						|
inline _Alias Alias(const std::string& content) { return _Alias(content); }
 | 
						|
 | 
						|
struct _Anchor {
 | 
						|
  _Anchor(const std::string& content_) : content(content_) {}
 | 
						|
  std::string content;
 | 
						|
};
 | 
						|
 | 
						|
inline _Anchor Anchor(const std::string& content) { return _Anchor(content); }
 | 
						|
 | 
						|
struct _Tag {
 | 
						|
  struct Type {
 | 
						|
    enum value { Verbatim, PrimaryHandle, NamedHandle };
 | 
						|
  };
 | 
						|
 | 
						|
  explicit _Tag(const std::string& prefix_, const std::string& content_,
 | 
						|
                Type::value type_)
 | 
						|
      : prefix(prefix_), content(content_), type(type_) {}
 | 
						|
  std::string prefix;
 | 
						|
  std::string content;
 | 
						|
  Type::value type;
 | 
						|
};
 | 
						|
 | 
						|
inline _Tag VerbatimTag(const std::string& content) {
 | 
						|
  return _Tag("", content, _Tag::Type::Verbatim);
 | 
						|
}
 | 
						|
 | 
						|
inline _Tag LocalTag(const std::string& content) {
 | 
						|
  return _Tag("", content, _Tag::Type::PrimaryHandle);
 | 
						|
}
 | 
						|
 | 
						|
inline _Tag LocalTag(const std::string& prefix, const std::string content) {
 | 
						|
  return _Tag(prefix, content, _Tag::Type::NamedHandle);
 | 
						|
}
 | 
						|
 | 
						|
inline _Tag SecondaryTag(const std::string& content) {
 | 
						|
  return _Tag("", content, _Tag::Type::NamedHandle);
 | 
						|
}
 | 
						|
 | 
						|
struct _Comment {
 | 
						|
  _Comment(const std::string& content_) : content(content_) {}
 | 
						|
  std::string content;
 | 
						|
};
 | 
						|
 | 
						|
inline _Comment Comment(const std::string& content) { return _Comment(content); }
 | 
						|
 | 
						|
struct _Precision {
 | 
						|
  _Precision(int floatPrecision_, int doublePrecision_)
 | 
						|
      : floatPrecision(floatPrecision_), doublePrecision(doublePrecision_) {}
 | 
						|
 | 
						|
  int floatPrecision;
 | 
						|
  int doublePrecision;
 | 
						|
};
 | 
						|
 | 
						|
inline _Precision FloatPrecision(int n) { return _Precision(n, -1); }
 | 
						|
 | 
						|
inline _Precision DoublePrecision(int n) { return _Precision(-1, n); }
 | 
						|
 | 
						|
inline _Precision Precision(int n) { return _Precision(n, n); }
 | 
						|
}
 | 
						|
 | 
						|
#endif  // EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
 |