refactor: return region info from parse_kvpair

This commit is contained in:
ToruNiina
2019-02-27 00:21:05 +09:00
parent 679b365cf7
commit 30d1639aa4

View File

@@ -905,7 +905,7 @@ parse_array(location<Container>& loc)
} }
template<typename Container> template<typename Container>
result<std::pair<std::vector<key>, value>, std::string> result<std::pair<std::pair<std::vector<key>, region<Container>>, value>, std::string>
parse_key_value_pair(location<Container>& loc) parse_key_value_pair(location<Container>& loc)
{ {
const auto first = loc.iter(); const auto first = loc.iter();
@@ -968,7 +968,7 @@ parse_key_value_pair(location<Container>& loc)
loc.iter() = first; loc.iter() = first;
return err(msg); return err(msg);
} }
return ok(std::make_pair(std::move(key_reg.unwrap().first), return ok(std::make_pair(std::move(key_reg.unwrap()),
std::move(val.unwrap()))); std::move(val.unwrap())));
} }
@@ -1193,8 +1193,9 @@ parse_inline_table(location<Container>& loc)
{ {
return err(kv_r.unwrap_err()); return err(kv_r.unwrap_err());
} }
const std::vector<key>& keys = kv_r.unwrap().first; const std::vector<key>& keys = kv_r.unwrap().first.first;
const value& val = kv_r.unwrap().second; // const region<Container>& key_reg = kv_r.unwrap().first.second;
const value& val = kv_r.unwrap().second;
const auto inserted = const auto inserted =
insert_nested_key(retval, val, keys.begin(), keys.end()); insert_nested_key(retval, val, keys.begin(), keys.end());
@@ -1374,8 +1375,9 @@ result<table, std::string> parse_ml_table(location<Container>& loc)
if(const auto kv = parse_key_value_pair(loc)) if(const auto kv = parse_key_value_pair(loc))
{ {
const std::vector<key>& keys = kv.unwrap().first; const std::vector<key>& keys = kv.unwrap().first.first;
const value& val = kv.unwrap().second; // const region<Container>& key_reg = kv_r.unwrap().first.second;
const value& val = kv.unwrap().second;
const auto inserted = const auto inserted =
insert_nested_key(tab, val, keys.begin(), keys.end()); insert_nested_key(tab, val, keys.begin(), keys.end());
if(!inserted) if(!inserted)