git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193350
91177308-0d34-0410-b5e6-
96231b3b80d8
* float
* double
* StringRef
* float
* double
* StringRef
* int64_t
* int32_t
* int16_t
* int64_t
* int32_t
* int16_t
-//===- llvm/Support/YAMLTraits.h -------------------------------*- C++ -*-===//
+//===- llvm/Supporrt/YAMLTraits.h -------------------------------*- C++ -*-===//
static StringRef input(StringRef, void*, StringRef &);
};
static StringRef input(StringRef, void*, StringRef &);
};
-template<>
-struct ScalarTraits<std::string> {
- static void output(const std::string &, void*, llvm::raw_ostream &);
- static StringRef input(StringRef, void*, std::string &);
-};
-
template<>
struct ScalarTraits<uint8_t> {
static void output(const uint8_t &, void*, llvm::raw_ostream &);
template<>
struct ScalarTraits<uint8_t> {
static void output(const uint8_t &, void*, llvm::raw_ostream &);
-void ScalarTraits<std::string>::output(const std::string &Val, void *,\r
- raw_ostream &Out) {\r
- Out << Val;\r
-}\r
-\r
-StringRef ScalarTraits<std::string>::input(StringRef Scalar, void *,\r
- std::string &Val) {\r
- Val = Scalar.str();\r
- return StringRef();\r
-}\r
-
void ScalarTraits<uint8_t>::output(const uint8_t &Val, void *,
raw_ostream &Out) {
// use temp uin32_t because ostream thinks uint8_t is a character
void ScalarTraits<uint8_t>::output(const uint8_t &Val, void *,
raw_ostream &Out) {
// use temp uin32_t because ostream thinks uint8_t is a character
struct BuiltInTypes {
llvm::StringRef str;
struct BuiltInTypes {
llvm::StringRef str;
uint64_t u64;
uint32_t u32;
uint16_t u16;
uint64_t u64;
uint32_t u32;
uint16_t u16;
struct MappingTraits<BuiltInTypes> {
static void mapping(IO &io, BuiltInTypes& bt) {
io.mapRequired("str", bt.str);
struct MappingTraits<BuiltInTypes> {
static void mapping(IO &io, BuiltInTypes& bt) {
io.mapRequired("str", bt.str);
- io.mapRequired("stdstr", bt.stdstr);
io.mapRequired("u64", bt.u64);
io.mapRequired("u32", bt.u32);
io.mapRequired("u16", bt.u16);
io.mapRequired("u64", bt.u64);
io.mapRequired("u32", bt.u32);
io.mapRequired("u16", bt.u16);
BuiltInTypes map;
Input yin("---\n"
"str: hello there\n"
BuiltInTypes map;
Input yin("---\n"
"str: hello there\n"
- "stdstr: hello where?\n"
"u64: 5000000000\n"
"u32: 4000000000\n"
"u16: 65000\n"
"u64: 5000000000\n"
"u32: 4000000000\n"
"u16: 65000\n"
EXPECT_FALSE(yin.error());
EXPECT_TRUE(map.str.equals("hello there"));
EXPECT_FALSE(yin.error());
EXPECT_TRUE(map.str.equals("hello there"));
- EXPECT_TRUE(map.stdstr == "hello where?");
EXPECT_EQ(map.u64, 5000000000ULL);
EXPECT_EQ(map.u32, 4000000000U);
EXPECT_EQ(map.u16, 65000);
EXPECT_EQ(map.u64, 5000000000ULL);
EXPECT_EQ(map.u32, 4000000000U);
EXPECT_EQ(map.u16, 65000);
{
BuiltInTypes map;
map.str = "one two";
{
BuiltInTypes map;
map.str = "one two";
- map.stdstr = "three four";
map.u64 = 6000000000ULL;
map.u32 = 3000000000U;
map.u16 = 50000;
map.u64 = 6000000000ULL;
map.u32 = 3000000000U;
map.u16 = 50000;
EXPECT_FALSE(yin.error());
EXPECT_TRUE(map.str.equals("one two"));
EXPECT_FALSE(yin.error());
EXPECT_TRUE(map.str.equals("one two"));
- EXPECT_TRUE(map.stdstr == "three four");
EXPECT_EQ(map.u64, 6000000000ULL);
EXPECT_EQ(map.u32, 3000000000U);
EXPECT_EQ(map.u16, 50000);
EXPECT_EQ(map.u64, 6000000000ULL);
EXPECT_EQ(map.u32, 3000000000U);
EXPECT_EQ(map.u16, 50000);
llvm::StringRef str3;
llvm::StringRef str4;
llvm::StringRef str5;
llvm::StringRef str3;
llvm::StringRef str4;
llvm::StringRef str5;
- std::string stdstr1;
- std::string stdstr2;
- std::string stdstr3;
- std::string stdstr4;
- std::string stdstr5;
io.mapRequired("str3", st.str3);
io.mapRequired("str4", st.str4);
io.mapRequired("str5", st.str5);
io.mapRequired("str3", st.str3);
io.mapRequired("str4", st.str4);
io.mapRequired("str5", st.str5);
- io.mapRequired("stdstr1", st.stdstr1);
- io.mapRequired("stdstr2", st.stdstr2);
- io.mapRequired("stdstr3", st.stdstr3);
- io.mapRequired("stdstr4", st.stdstr4);
- io.mapRequired("stdstr5", st.stdstr5);
map.str3 = "`ccc";
map.str4 = "@ddd";
map.str5 = "";
map.str3 = "`ccc";
map.str4 = "@ddd";
map.str5 = "";
- map.stdstr1 = "'eee";
- map.stdstr2 = "\"fff";
- map.stdstr3 = "`ggg";
- map.stdstr4 = "@hhh";
- map.stdstr5 = "";
llvm::raw_string_ostream ostr(intermediate);
Output yout(ostr);
llvm::raw_string_ostream ostr(intermediate);
Output yout(ostr);
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'`ccc'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'@ddd'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("''\n"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'`ccc'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("'@ddd'"));
EXPECT_NE(llvm::StringRef::npos, flowOut.find("''\n"));
- EXPECT_NE(std::string::npos, flowOut.find("'''eee"));
- EXPECT_NE(std::string::npos, flowOut.find("'\"fff'"));
- EXPECT_NE(std::string::npos, flowOut.find("'`ggg'"));
- EXPECT_NE(std::string::npos, flowOut.find("'@hhh'"));
- EXPECT_NE(std::string::npos, flowOut.find("''\n"));
{
Input yin(intermediate);
{
Input yin(intermediate);
EXPECT_TRUE(map.str3.equals("`ccc"));
EXPECT_TRUE(map.str4.equals("@ddd"));
EXPECT_TRUE(map.str5.equals(""));
EXPECT_TRUE(map.str3.equals("`ccc"));
EXPECT_TRUE(map.str4.equals("@ddd"));
EXPECT_TRUE(map.str5.equals(""));
- EXPECT_TRUE(map.stdstr1 == "'eee");
- EXPECT_TRUE(map.stdstr2 == "\"fff");
- EXPECT_TRUE(map.stdstr3 == "`ggg");
- EXPECT_TRUE(map.stdstr4 == "@hhh");
- EXPECT_TRUE(map.stdstr5 == "");