BRE12
emittermanip.h
1 #ifndef EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
2 #define EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
3 
4 #if defined(_MSC_VER) || \
5  (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
6  (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
7 #pragma once
8 #endif
9 
10 #include <string>
11 
12 namespace YAML {
13 enum EMITTER_MANIP {
14  // general manipulators
15  Auto,
16  TagByKind,
17  Newline,
18 
19  // output character set
20  EmitNonAscii,
21  EscapeNonAscii,
22 
23  // string manipulators
24  // Auto, // duplicate
25  SingleQuoted,
26  DoubleQuoted,
27  Literal,
28 
29  // bool manipulators
30  YesNoBool, // yes, no
31  TrueFalseBool, // true, false
32  OnOffBool, // on, off
33  UpperCase, // TRUE, N
34  LowerCase, // f, yes
35  CamelCase, // No, Off
36  LongBool, // yes, On
37  ShortBool, // y, t
38 
39  // int manipulators
40  Dec,
41  Hex,
42  Oct,
43 
44  // document manipulators
45  BeginDoc,
46  EndDoc,
47 
48  // sequence manipulators
49  BeginSeq,
50  EndSeq,
51  Flow,
52  Block,
53 
54  // map manipulators
55  BeginMap,
56  EndMap,
57  Key,
58  Value,
59  // Flow, // duplicate
60  // Block, // duplicate
61  // Auto, // duplicate
62  LongKey
63 };
64 
65 struct _Indent {
66  _Indent(int value_) : value(value_) {}
67  int value;
68 };
69 
70 inline _Indent Indent(int value) { return _Indent(value); }
71 
72 struct _Alias {
73  _Alias(const std::string& content_) : content(content_) {}
74  std::string content;
75 };
76 
77 inline _Alias Alias(const std::string content) { return _Alias(content); }
78 
79 struct _Anchor {
80  _Anchor(const std::string& content_) : content(content_) {}
81  std::string content;
82 };
83 
84 inline _Anchor Anchor(const std::string content) { return _Anchor(content); }
85 
86 struct _Tag {
87  struct Type {
88  enum value { Verbatim, PrimaryHandle, NamedHandle };
89  };
90 
91  explicit _Tag(const std::string& prefix_, const std::string& content_,
92  Type::value type_)
93  : prefix(prefix_), content(content_), type(type_) {}
94  std::string prefix;
95  std::string content;
96  Type::value type;
97 };
98 
99 inline _Tag VerbatimTag(const std::string content) {
100  return _Tag("", content, _Tag::Type::Verbatim);
101 }
102 
103 inline _Tag LocalTag(const std::string content) {
104  return _Tag("", content, _Tag::Type::PrimaryHandle);
105 }
106 
107 inline _Tag LocalTag(const std::string& prefix, const std::string content) {
108  return _Tag(prefix, content, _Tag::Type::NamedHandle);
109 }
110 
111 inline _Tag SecondaryTag(const std::string content) {
112  return _Tag("", content, _Tag::Type::NamedHandle);
113 }
114 
115 struct _Comment {
116  _Comment(const std::string& content_) : content(content_) {}
117  std::string content;
118 };
119 
120 inline _Comment Comment(const std::string content) { return _Comment(content); }
121 
122 struct _Precision {
123  _Precision(int floatPrecision_, int doublePrecision_)
124  : floatPrecision(floatPrecision_), doublePrecision(doublePrecision_) {}
125 
126  int floatPrecision;
127  int doublePrecision;
128 };
129 
130 inline _Precision FloatPrecision(int n) { return _Precision(n, -1); }
131 
132 inline _Precision DoublePrecision(int n) { return _Precision(-1, n); }
133 
134 inline _Precision Precision(int n) { return _Precision(n, n); }
135 }
136 
137 #endif // EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
Definition: emittermanip.h:122
Definition: emittermanip.h:87
Definition: emittermanip.h:115
Definition: emittermanip.h:86
Definition: emittermanip.h:72
Definition: emittermanip.h:65
Definition: DrawableObjectLoader.h:10
Definition: emittermanip.h:79