Пример #1
0
json::json(const json_node& node)
{
	json_ = acl_json_create(node.get_json_node());
	root_ = NEW json_node(json_->root, this);
	buf_ = NULL;
	iter_ = NULL;
}
Пример #2
0
json_node* json::getFirstElementByTagName(const char* tag) const
{
	ACL_JSON_NODE* n = acl_json_getFirstElementByTagName(json_, tag);
	if (n == NULL)
		return NULL;
	json_node* node = NEW json_node(n, const_cast<json*>(this));
	const_cast<json*>(this)->nodes_query_.push_back(node);
	return node;
}
Пример #3
0
json_node* json_node::get_obj(void) const
{
	if (obj_ != NULL)
		return obj_;
	if (node_me_->tag_node == NULL)
		return NULL;

	const_cast<json_node*>(this)->obj_ =
		NEW json_node(node_me_->tag_node, json_);
	return obj_;
}
Пример #4
0
const std::vector<json_node*>& json::getElementsByTagName(const char* tag) const
{
	const_cast<json*>(this)->clear();
	ACL_ARRAY* a = acl_json_getElementsByTagName(json_, tag);
	if (a == NULL)
		return nodes_query_;

	ACL_ITER iter;
	acl_foreach(iter, a)
	{
		ACL_JSON_NODE *tmp = (ACL_JSON_NODE*) iter.data;
		json_node* node = NEW json_node(tmp, const_cast<json*>(this));
		const_cast<json*>(this)->nodes_query_.push_back(node);
	}
Пример #5
0
json_node* json_node::next_child(void)
{
	acl_assert(iter_);
	acl_assert(children_);

	ACL_JSON_NODE* node = node_me_->iter_next(iter_, node_me_);
	if (node == NULL)
		return NULL;

	json_node* child = NEW json_node(node, json_);
	children_->push_back(child);

	return child;
}
Пример #6
0
json_node& json_node::get_parent(void) const
{
	if (parent_)
		return *parent_;
	else if (node_me_->parent == node_me_->json->root)
		return json_->get_root();
	else if (node_me_->parent == NULL)  // xxx: can this happen?
		return json_->get_root();

	const_cast<json_node*>(this)->parent_saved_ =
		NEW json_node(node_me_->parent, json_);
	const_cast<json_node*>(this)->parent_ = parent_saved_;
	return *parent_saved_;
}
Пример #7
0
json_node* json_node::first_child(void)
{
	if (iter_ == NULL)
		iter_ = (ACL_ITER*) acl_mymalloc(sizeof(ACL_ITER));

	ACL_JSON_NODE* node = node_me_->iter_head(iter_, node_me_);
	if (node == NULL)
		return NULL;

	prepare_iter();
	json_node* child = NEW json_node(node, json_);
	children_->push_back(child);

	return child;
}
Пример #8
0
json_node* json_node::first_child(void)
{
	if (iter_ == NULL)
		iter_ = (ACL_ITER*) acl_mymalloc(sizeof(ACL_ITER));

	ACL_JSON_NODE* node = node_me_->iter_head(iter_, node_me_);
	if (node == NULL)
		return NULL;

	if (child_ == NULL)
		child_ = NEW json_node(node, json_);
	else
		child_->node_me_ = node;
	return child_;
}