当前位置: 首页>>代码示例>>C++>>正文


C++ Document::MemberEnd方法代码示例

本文整理汇总了C++中rapidjson::Document::MemberEnd方法的典型用法代码示例。如果您正苦于以下问题:C++ Document::MemberEnd方法的具体用法?C++ Document::MemberEnd怎么用?C++ Document::MemberEnd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在rapidjson::Document的用法示例。


在下文中一共展示了Document::MemberEnd方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

	Config::ChildrenMapType
	getAllElementChildren(const rapidjson::Document& doc, const std::vector<SvgElement>& all_elements_,
	                      const Config::ElementGroupType& element_groups_)
	{
		Config::ChildrenMapType all_element_children;
		all_element_children.set_empty_key(std::string{""});

		// load elements
		const auto element_children_it = doc.FindMember("element_children");
		assert(element_children_it != doc.MemberEnd());
		assert(element_children_it->value.IsArray());
		const auto raw_element_children_array = element_children_it->value.GetArray();

		for (const auto& raw_element_children_obj : raw_element_children_array)
		{
			assert(raw_element_children_obj.IsObject());

			//parent
			const auto raw_parent_element = raw_element_children_obj.FindMember("parent");
			assert(raw_parent_element != raw_element_children_obj.MemberEnd());
			assert(raw_parent_element->value.IsString());
			const auto& parent_element_name = raw_parent_element->value.GetString();

			//children
			std::vector<std::string> all_children;
			const auto raw_children_array_it = raw_element_children_obj.FindMember("children");
			assert(raw_children_array_it != raw_element_children_obj.MemberEnd());
			assert(raw_children_array_it->value.IsArray());
			const auto raw_children_array = (raw_children_array_it->value.GetArray());
			for (const auto& raw_child : raw_children_array)
			{
				assert(raw_child.IsString());
				auto child = std::string{raw_child.GetString(), raw_child.GetStringLength()};
				if (element_groups_.count(child) > 0) // the name is a group name
				{
					const auto& group_with_current_name = const_cast<Config::ElementGroupType&>(element_groups_)[child];
					all_children.insert(std::end(all_children), std::begin(group_with_current_name),
					                    std::end(group_with_current_name));//we replace the group with it's elements
				} else // otherwise it's a simple element
				{
					all_children.emplace_back(std::move(child));
				}
				std::sort(std::begin(all_children), std::end(all_children));
				all_element_children[parent_element_name] = std::move(all_children);
			}
		}
		return all_element_children;
	}
开发者ID:RazvanPascalau,项目名称:SVGRasterizer,代码行数:48,代码来源:ConfigLoader.cpp

示例2: json_simpars

void Parameters::json_simpars(rapidjson::Document& jpars) {
    try {
        rapidjson::Value::MemberIterator it;

        it = jpars.FindMember("simulation");
        if (it != jpars.MemberEnd()) {
            if (! it->value.IsObject()) throw 201;
            rapidjson::Value& d = it->value;

            it = d.FindMember("maxTime");
            if (! it->value.IsDouble()) throw 202;
            sim_pars.maxTime = it->value.GetDouble();
        }
    } catch (int e) {
        cerr << "Exception while reading SimPars: " << e << endl;
        return;
    }
}
开发者ID:gaberoo,项目名称:mctraj,代码行数:18,代码来源:Parameters.cpp

示例3: Configuration_error

    template<typename T> T get(const std::string & key) const
    {
        const rapidjson::Value::ConstMemberIterator & member =
            find_member_from_key(document, key);

        if(member == document.MemberEnd())
        {
            auto alternative = fallbacks.find(key);
            if(alternative != fallbacks.end())
            {
                // Recursive call
                return get<T>(alternative->second);
            } else {
                auto msg =
                    boost::format("Unable to find %1% in the configuration file")
                    % key;
                throw Configuration_error(boost::str(msg));
            }
        } else {
            return conf_getter<T>(member->value);
        }
    }
开发者ID:zonca,项目名称:ereline,代码行数:22,代码来源:configuration.hpp

示例4: from_json

void Parameters::from_json(rapidjson::Document& jpars) {
    try {
        rapidjson::Value::MemberIterator m1;
        rapidjson::SizeType z;

        m1 = jpars.FindMember("model_type");
        if (m1 != jpars.MemberEnd()) {
            if (! m1->value.IsString()) throw 101;
            model_type = m1->value.GetString();
        }

        m1 = jpars.FindMember("nroot");
        if (m1 != jpars.MemberEnd()) {
            if (! m1->value.IsInt()) throw 102;
            nroot = m1->value.GetInt();
        }

        m1 = jpars.FindMember("shifts");
        if (m1 != jpars.MemberEnd()) {
            if (! m1->value.IsArray()) throw 103;
            shifts.resize(m1->value.Size());
            for (rapidjson::SizeType i = 0; i < m1->value.Size(); ++i) {
                shifts[i] = m1->value[i].GetDouble();
            }
        }

        rapidjson::Value::MemberIterator _d = jpars.FindMember("pars");
        if (_d == jpars.MemberEnd()) throw 1;

        rapidjson::Value& d = _d->value;

        pars.resize(d.Size());

        for (rapidjson::SizeType i = 0; i < d.Size(); ++i) {
            rapidjson::Value& a = d[i];

            m1 = a.FindMember("name");
            if (m1 != a.MemberEnd()) {
                if (! m1->value.IsString()) throw 5;
                pars[i].name = m1->value.GetString();
                name_map.insert(make_pair(pars[i].name,i));
            }

            m1 = a.FindMember("limits");
            if (m1 != a.MemberEnd()) {
                if (! m1->value.IsArray()) throw 2;
                if (m1->value.Size() != 2) throw 3;
                z = 0;
                pars[i].lo = m1->value[z].GetDouble();
                z = 1;
                pars[i].hi = m1->value[z].GetDouble();
            }

            m1 = a.FindMember("value");
            if (m1 == a.MemberEnd()) m1 = a.FindMember("init");
            if (m1 != a.MemberEnd()) {
                if (m1->value.IsDouble())  {
                    pars[i].init.assign(1,m1->value.GetDouble());
                } else if (m1->value.IsArray()) {
                    pars[i].init.assign(m1->value.Size(),0.0);
                    for (size_t j = 0; j < m1->value.Size(); ++j) {
                        pars[i].init[j] = m1->value[j].GetDouble();
                    }
                } else {
                    throw 2;
                }
            }

            m1 = a.FindMember("lock");
            if (m1 != a.MemberEnd()) {
                if (! m1->value.IsDouble()) throw 4;
                pars[i].lock = 1;
                pars[i].lo = m1->value.GetDouble();
                pars[i].hi = pars[i].lo;
                pars[i].init.assign(1,0.0);
                pars[i].init[0] = pars[i].hi;
            }

            m1 = a.FindMember("scale");
            if (m1 != a.MemberEnd()) {
                if (! m1->value.IsString()) throw 5;
                pars[i].scale = m1->value.GetString()[0];
            }
        }
    } catch (int e) {
        cerr << "Exception while reading pars: " << e << endl;
        return;
    }

    json_simpars(jpars);
}
开发者ID:gaberoo,项目名称:mctraj,代码行数:91,代码来源:Parameters.cpp


注:本文中的rapidjson::Document::MemberEnd方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。