MCPcopy Create free account
hub / github.com/9chu/LuaSTGPlus / makeData

Method makeData

LuaSTGPlus/Bencode.cpp:66–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void Encoder::makeData(const Value& v)
67{
68 switch (v.Type)
69 {
70 case ValueType::Null:
71 m_DataBuf.push_back('n');
72 break;
73 case ValueType::Int:
74 {
75 m_DataBuf.push_back('i');
76 m_DataBuf += to_string(v.VInt);
77 m_DataBuf.push_back('e');
78 break;
79 }
80 case ValueType::String:
81 {
82 m_DataBuf += to_string(v.VString.length());
83 m_DataBuf.push_back(':');
84 m_DataBuf += v.VString;
85 break;
86 }
87 case ValueType::List:
88 m_DataBuf.push_back('l');
89 for (auto i : v.VList)
90 makeData(*i.get());
91 m_DataBuf.push_back('e');
92 break;
93 case ValueType::Dictionary:
94 m_DataBuf.push_back('d');
95 for (auto i : v.VDict)
96 {
97 makeData(i.first);
98 makeData(*i.second.get());
99 }
100 m_DataBuf.push_back('e');
101 break;
102 default:
103 throw logic_error("unexpected type.");
104 }
105}
106
107const std::string& Encoder::operator<<(const Value& v)
108{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected