emittermanip.h
Go to the documentation of this file.
00001 #ifndef EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
00002 #define EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
00003 
00004 #if defined(_MSC_VER) || (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_PM
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 _Precision {
00130         _Precision(int floatPrecision_, int doublePrecision_): floatPrecision(floatPrecision_), doublePrecision(doublePrecision_) {}
00131         
00132         int floatPrecision;
00133         int doublePrecision;
00134     };
00135     
00136     inline _Precision FloatPrecision(int n) {
00137         return _Precision(n, -1);
00138     }
00139 
00140     inline _Precision DoublePrecision(int n) {
00141         return _Precision(-1, n);
00142     }
00143 
00144     inline _Precision Precision(int n) {
00145         return _Precision(n, n);
00146     }
00147 }
00148 
00149 #endif // EMITTERMANIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66


upstream_src
Author(s):
autogenerated on Mon Oct 6 2014 10:27:39