MCPcopy Create free account
hub / github.com/beefytech/Beef / ReadFileTOML

Method ReadFileTOML

IDEHelper/DebugVisualizers.cpp:81–346  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81bool DebugVisualizers::ReadFileTOML(const StringImpl& fileName)
82{
83 std::ifstream ifs(fileName);
84 toml::ParseResult pr = toml::parse(ifs);
85
86 if (!pr.valid())
87 {
88 Fail(pr.errorReason);
89 return false;
90 }
91
92 const toml::Table& root = pr.value.as<toml::Table>();
93 for (auto& kv : root)
94 {
95 auto& topName = kv.first;
96 auto& topValue = kv.second;
97
98 if (topName == "Type")
99 {
100 for (auto typeValue : ExpectArray(topValue))
101 {
102 auto& value = kv.second;
103
104 DebugVisualizerEntry* entry = mDebugVisualizers.Alloc();
105
106 for (auto& kv : ExpectTable(typeValue))
107 {
108 auto& name = kv.first;
109 auto& value = kv.second;
110
111 if (name == "Name")
112 {
113 entry->mName = ExpectString(value);
114 }
115 else if (name == "Flavor")
116 {
117 String flavorName = ExpectString(value);
118 if (flavorName == "GNU")
119 entry->mFlavor = DbgFlavor_GNU;
120 else if (flavorName == "MS")
121 entry->mFlavor = DbgFlavor_MS;
122 else
123 Fail("Unexpected flavor", value);
124 }
125 else if ((name == "DisplayString") | (name == "StringView"))
126 {
127 bool isStringView = name == "StringView";
128
129 if (value.is<toml::Array>())
130 {
131 for (auto& displayValue : ExpectArray(value))
132 {
133 DebugVisualizerEntry::DisplayStringEntry* displayStringEntry = new DebugVisualizerEntry::DisplayStringEntry();
134
135 for (auto& kv : ExpectTable(displayValue))
136 {
137 auto& name = kv.first;
138 auto& value = kv.second;

Callers

nothing calls this directly

Calls 7

parseFunction · 0.85
FailFunction · 0.85
validMethod · 0.45
AllocMethod · 0.45
push_backMethod · 0.45
c_strMethod · 0.45
IsEmptyMethod · 0.45

Tested by

no test coverage detected