Beispiel #1
0
static void set_global_variable(persist_context &ctx, const vconfig &pcfg)
{
	if (pcfg["from_local"].empty()) {
		clear_global_variable(ctx, pcfg);
	} else {
		std::string global = pcfg["to_global"];
		std::string local = pcfg["from_local"];
		config val;
		const config &vars = resources::gamedata->get_variables();
		size_t arraylen = vars.child_count(local);
		if (arraylen == 0) {
			try
			{
				val = pack_scalar(global,resources::gamedata->get_variable(local));
			}
			catch(const invalid_variablename_exception&)
			{
				val = config();
			}
		} else {
			for (size_t i = 0; i < arraylen; i++)
				val.add_child(global,vars.child(local,i));
		}
		ctx.set_var(global, val, pcfg["immediate"].to_bool());
	}
}
Beispiel #2
0
config persist_file_context::get_var(const std::string &global) const
{
	config ret;
	const config *active = get_node(cfg_, namespace_);
	if (active && (active->has_child("variables"))) {
		const config &cfg = active->child("variables");
		size_t arrsize = cfg.child_count(global);
		if (arrsize > 0) {
			for (size_t i = 0; i < arrsize; i++)
				ret.add_child(global,cfg.child(global,i));
		} else {
			ret = pack_scalar(global,cfg[global]);
		}
	} else {
		ret = pack_scalar(global,"");
	}
	return ret;
}
Beispiel #3
0
config persist_file_context::get_var(const std::string &global) const
{
	config ret;
//	if (cfg_.empty()) {
//		load_persist_data(namespace_,cfg_,false);
//	}

	config &cfg = active_->cfg_.child("variables");
	if (cfg) {
		size_t arrsize = cfg.child_count(global);
		if (arrsize > 0) {
			for (size_t i = 0; i < arrsize; i++)
				ret.add_child(global,cfg.child(global,i));
		} else {
			ret = pack_scalar(global,cfg[global]);
		}
	} else {
		ret = pack_scalar(global,"");
	}
	return ret;
}
static inline void
pack_value(msgpack_packer *pk, const JsonValue value)
{
	switch (value->type) {
		case JSON_VALUE_SCALAR:
			pack_scalar(pk, value->via.scalar);
			break;
		case MSGPACK_BINARY:
			(* pk->callback)(pk->data, value->via.msg.data, value->via.msg.size);
			break;
	}
}