|
Video Processing Framework
|
00001 #ifndef EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00002 #define EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 00003 00004 #if !defined(__GNUC__) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4) // GCC supports "pragma once" correctly since 3.4 00005 #pragma once 00006 #endif 00007 00008 00009 #include <string> 00010 00011 namespace YAML 00012 { 00013 enum EMITTER_MANIP { 00014 // general manipulators 00015 Auto, 00016 TagByKind, 00017 Newline, 00018 00019 // output character set 00020 EmitNonAscii, 00021 EscapeNonAscii, 00022 00023 // string manipulators 00024 // Auto, // duplicate 00025 SingleQuoted, 00026 DoubleQuoted, 00027 Literal, 00028 00029 // bool manipulators 00030 YesNoBool, // yes, no 00031 TrueFalseBool, // true, false 00032 OnOffBool, // on, off 00033 UpperCase, // TRUE, N 00034 LowerCase, // f, yes 00035 CamelCase, // No, Off 00036 LongBool, // yes, On 00037 ShortBool, // y, t 00038 00039 // int manipulators 00040 Dec, 00041 Hex, 00042 Oct, 00043 00044 // document manipulators 00045 BeginDoc, 00046 EndDoc, 00047 00048 // sequence manipulators 00049 BeginSeq, 00050 EndSeq, 00051 Flow, 00052 Block, 00053 00054 // map manipulators 00055 BeginMap, 00056 EndMap, 00057 Key, 00058 Value, 00059 // Flow, // duplicate 00060 // Block, // duplicate 00061 // Auto, // duplicate 00062 LongKey 00063 }; 00064 00065 struct _Indent { 00066 _Indent(int value_): value(value_) {} 00067 int value; 00068 }; 00069 00070 inline _Indent Indent(int value) { 00071 return _Indent(value); 00072 } 00073 00074 struct _Alias { 00075 _Alias(const std::string& content_): content(content_) {} 00076 std::string content; 00077 }; 00078 00079 inline _Alias Alias(const std::string content) { 00080 return _Alias(content); 00081 } 00082 00083 struct _Anchor { 00084 _Anchor(const std::string& content_): content(content_) {} 00085 std::string content; 00086 }; 00087 00088 inline _Anchor Anchor(const std::string content) { 00089 return _Anchor(content); 00090 } 00091 00092 struct _Tag { 00093 struct Type { enum value { Verbatim, PrimaryHandle, NamedHandle }; }; 00094 00095 explicit _Tag(const std::string& prefix_, const std::string& content_, Type::value type_) 00096 : prefix(prefix_), content(content_), type(type_) 00097 { 00098 } 00099 std::string prefix; 00100 std::string content; 00101 Type::value type; 00102 }; 00103 00104 inline _Tag VerbatimTag(const std::string content) { 00105 return _Tag("", content, _Tag::Type::Verbatim); 00106 } 00107 00108 inline _Tag LocalTag(const std::string content) { 00109 return _Tag("", content, _Tag::Type::PrimaryHandle); 00110 } 00111 00112 inline _Tag LocalTag(const std::string& prefix, const std::string content) { 00113 return _Tag(prefix, content, _Tag::Type::NamedHandle); 00114 } 00115 00116 inline _Tag SecondaryTag(const std::string content) { 00117 return _Tag("", content, _Tag::Type::NamedHandle); 00118 } 00119 00120 struct _Comment { 00121 _Comment(const std::string& content_): content(content_) {} 00122 std::string content; 00123 }; 00124 00125 inline _Comment Comment(const std::string content) { 00126 return _Comment(content); 00127 } 00128 00129 struct _Binary { 00130 _Binary(const char *data_, std::size_t size_): data(data_), size(size_) {} 00131 const char *data; 00132 std::size_t size; 00133 }; 00134 00135 inline _Binary Binary(const char *data, std::size_t size) { 00136 return _Binary(data, size); 00137 } 00138 } 00139 00140 #endif // EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66