本文整理汇总了C++中rapidjson::Document::GetArray方法的典型用法代码示例。如果您正苦于以下问题:C++ Document::GetArray方法的具体用法?C++ Document::GetArray怎么用?C++ Document::GetArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rapidjson::Document
的用法示例。
在下文中一共展示了Document::GetArray方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: preprocess_types
void preprocess_types(rapidjson::Document & d)
{
/// pre record types
for (auto & itr : d.GetArray()) {
RAPIDJSON_ASSERT(itr.HasMember("category"));
RAPIDJSON_ASSERT(itr.HasMember("name"));
ensure_has_array_mem(itr, "attr", d);
ensure_has_array_mem(itr, "msgid", d);
ensure_has_object_mem(itr, "fields", d);
ensure_has_array_mem(itr, "alias", d);
s_type_lists[itr.FindMember("name")->value.GetString()] = &itr;
for (auto & alias : itr.FindMember("alias")->value.GetArray()) {
s_alias_lists[alias.GetString()] = & itr;
}
s_type_order.push_back(&itr);
}
/// messages enum
for (auto & itr : d.GetArray()) {
bool has_attr_msg = false;
rapidjson::Value & attr_val = itr.FindMember("attr")->value;
for (auto & sattr : attr_val.GetArray()) {
RAPIDJSON_ASSERT(sattr.IsString());
if (sattr == "msg") {
has_attr_msg = true;
attr_val.GetArray().Erase(&sattr);
}
else if (sattr == "export") {
s_export_order.push_back(&itr);
}
else if (sattr == "pqxx") {
add_pqxx(d, itr, true);
}
}
rapidjson::Value & msgid_val = itr.FindMember("msgid")->value;
if (has_attr_msg) {
RAPIDJSON_ASSERT(itr.HasMember("name"));
rapidjson::Value new_name(itr.FindMember("name")->value, d.GetAllocator());
msgid_val.PushBack(new_name, d.GetAllocator());
}
for (const auto & smsgid : msgid_val.GetArray()) {
RAPIDJSON_ASSERT(smsgid.IsString());
s_msg_lists[smsgid.GetString()] = &itr;
}
if (msgid_val.GetArray().Size() > 0) {
s_msg_order.push_back(&itr);
}
if (msgid_val.GetArray().Size() == 0) {
itr.RemoveMember("msgid");
}
}
for (auto i : s_pqxx_order) {
std::cout << "\t" << i->FindMember("name")->value.GetString() << std::endl;;
}
}