44 return value.
instance ? std::make_shared<Data_Node>(value.
instance, deleter) :
nullptr;
50 return value.
leafref ? std::make_shared<Data_Node>(value.
leafref, deleter) :
nullptr;
61 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
66 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
70 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
76 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
81 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
85 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
91 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
96 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
100 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
106 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
112 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
116 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
122 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
128 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
132 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
138 throw std::invalid_argument(
"Context can not be empty");
141 throw std::invalid_argument(
"Path can not be empty");
144 new_node =
lyd_new_path(NULL, context->ctx,
path, (
void *) value, value_type, options);
146 check_libyang_error(context->ctx);
150 deleter = std::make_shared<Deleter>(node, context->deleter);
156 throw std::invalid_argument(
"Context can not be empty");
159 throw std::invalid_argument(
"Path can not be empty");
164 check_libyang_error(context->ctx);
168 deleter = context->deleter;
174 throw std::invalid_argument(
"Context can not be empty");
177 throw std::invalid_argument(
"Path can not be empty");
182 check_libyang_error(context->ctx);
186 deleter = context->deleter;
192 char *path =
nullptr;
196 check_libyang_error(node->schema->module->ctx);
200 std::string s_path = path;
205 struct lyd_node *new_node =
nullptr;
207 new_node =
lyd_dup(node, recursive);
212 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, deleter);
213 return std::make_shared<Data_Node>(new_node, new_deleter);
216 struct lyd_node *new_node =
nullptr;
223 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, deleter);
224 return std::make_shared<Data_Node>(new_node, new_deleter);
227 struct lyd_node *new_node =
nullptr;
230 throw std::invalid_argument(
"Context can not be empty");
235 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, context->deleter);
236 return new_node ? std::make_shared<Data_Node>(new_node, new_deleter) :
nullptr;
242 throw std::invalid_argument(
"Source can not be empty");
245 ret =
lyd_merge(node, source->node, options);
247 check_libyang_error(source->node->schema->module->ctx);
255 throw std::invalid_argument(
"Source can not be empty");
258 ret =
lyd_merge_to_ctx(&node, source->node, options, context ? context->ctx : NULL);
260 check_libyang_error(source->node->schema->module->ctx);
268 throw std::invalid_argument(
"New_node can not be empty");
281 throw std::invalid_argument(
"New_node can not be empty");
285 dup_node =
lyd_dup(new_node->node, 1);
300 throw std::invalid_argument(
"New_node can not be empty");
304 dup_node =
lyd_dup(new_node->node, 1);
319 throw std::invalid_argument(
"New_node can not be empty");
323 dup_node =
lyd_dup(new_node->node, 1);
347 return std::make_shared<Set>(
set, std::make_shared<Deleter>(
set, deleter));
352 throw std::invalid_argument(
"Schema can not be empty");
360 return std::make_shared<Set>(
set, std::make_shared<Deleter>(
set, deleter));
363 struct lyd_node *new_node =
nullptr;
367 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
380 throw std::invalid_argument(
"var_arg must be a data node");
383 ret =
lyd_validate(&node, options, (
void *) var_arg->node);
392 if (ret != EXIT_SUCCESS) {
401 throw std::invalid_argument(
"Second can not be empty");
409 return diff ? std::make_shared<Difflist>(
diff, deleter) :
nullptr;
412 struct lyd_node *new_node =
nullptr;
414 new_node =
lyd_new_path(node, ctx ? ctx->ctx : NULL,
path, (
void *)value, value_type, options);
419 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
422 struct lyd_node *new_node =
nullptr;
425 throw std::invalid_argument(
"Value can not be empty");
433 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
436 struct lyd_node *new_node =
nullptr;
439 throw std::invalid_argument(
"Value can not be empty");
447 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
464 deleter = std::make_shared<Deleter>(node,
nullptr);
477 return attr ? std::make_shared<Attr>(
attr, deleter) :
nullptr;
487 return module ? std::make_shared<Module>(module, deleter) :
nullptr;
490 char *strp =
nullptr;
499 std::string s_strp = strp;
505 std::vector<S_Data_Node> s_vector;
509 s_vector.push_back(std::make_shared<Data_Node>(elem, deleter));
515 std::vector<S_Data_Node> s_vector;
519 s_vector.push_back(std::make_shared<Data_Node>(elem, deleter));
527 Data_Node(derived->node, derived->deleter),
529 deleter(derived->deleter)
531 if (derived->node->schema->nodetype !=
LYS_LEAFLIST && derived->node->schema->nodetype !=
LYS_LEAF) {
532 throw std::invalid_argument(
"Type must be LYS_LEAFLIST or LYS_LEAF");
561 return std::make_shared<Type>((
struct lys_type *) type, deleter);
565 Data_Node(derived->node, derived->deleter),
567 deleter(derived->deleter)
569 if (derived->node->schema->nodetype !=
LYS_ANYDATA && derived->node->schema->nodetype !=
LYS_ANYXML) {
570 throw std::invalid_argument(
"Type must be LYS_ANYDATA or LYS_ANYXML");
594 deleter = std::make_shared<Deleter>(diff, deleter);
598 std::vector<S_Data_Node> s_vector;
605 for(i = 0; i <
sizeof(*diff->
first); i++) {
606 s_vector.push_back(std::make_shared<Data_Node>(*diff->
first, deleter));
612 std::vector<S_Data_Node> s_vector;
619 for(i = 0; i <
sizeof(*diff->
second); i++) {
620 s_vector.push_back(std::make_shared<Data_Node>(*diff->
second, deleter));
627 return new_node ? std::make_shared<Data_Node>(new_node,
nullptr) :
nullptr;