35 value_type(*value_type),
36 value_flags(value_flags),
49 vec[i] = std::make_shared<Type_Bit>(value.
bit[i], deleter);
59 return value.
instance ? std::make_shared<Data_Node>(value.
instance, deleter) :
nullptr;
65 return value.
leafref ? std::make_shared<Data_Node>(value.
leafref, deleter) :
nullptr;
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");
111 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
115 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
121 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
127 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
131 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
137 throw std::invalid_argument(
"At least one of module or parent parameters must be set");
143 check_libyang_error(module ? module->module->ctx :
parent->node->schema->module->ctx);
147 deleter = !
parent ? std::make_shared<Deleter>(node, module->deleter) :
parent->deleter;
153 throw std::invalid_argument(
"Context can not be empty");
156 throw std::invalid_argument(
"Path can not be empty");
159 new_node =
lyd_new_path(NULL, context->ctx,
path, (
void *) value, value_type, options);
161 check_libyang_error(context->ctx);
165 deleter = std::make_shared<Deleter>(node, context->deleter);
171 throw std::invalid_argument(
"Context can not be empty");
174 throw std::invalid_argument(
"Path can not be empty");
179 check_libyang_error(context->ctx);
183 deleter = context->deleter;
189 throw std::invalid_argument(
"Context can not be empty");
192 throw std::invalid_argument(
"Path can not be empty");
197 check_libyang_error(context->ctx);
201 deleter = context->deleter;
207 char *path =
nullptr;
211 check_libyang_error(node->schema->module->ctx);
215 std::string s_path = path;
220 struct lyd_node *new_node =
nullptr;
222 new_node =
lyd_dup(node, recursive);
227 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, deleter);
228 return std::make_shared<Data_Node>(new_node, new_deleter);
231 struct lyd_node *new_node =
nullptr;
238 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, deleter);
239 return std::make_shared<Data_Node>(new_node, new_deleter);
242 struct lyd_node *new_node =
nullptr;
245 throw std::invalid_argument(
"Context can not be empty");
250 S_Deleter new_deleter = std::make_shared<Deleter>(new_node, context->deleter);
251 return new_node ? std::make_shared<Data_Node>(new_node, new_deleter) :
nullptr;
257 throw std::invalid_argument(
"Source can not be empty");
260 ret =
lyd_merge(node, source->node, options);
262 check_libyang_error(source->node->schema->module->ctx);
270 throw std::invalid_argument(
"Source can not be empty");
273 ret =
lyd_merge_to_ctx(&node, source->node, options, context ? context->ctx : NULL);
275 check_libyang_error(source->node->schema->module->ctx);
283 throw std::invalid_argument(
"New_node can not be empty");
296 throw std::invalid_argument(
"New_node can not be empty");
300 dup_node =
lyd_dup(new_node->node, 1);
315 throw std::invalid_argument(
"New_node can not be empty");
319 dup_node =
lyd_dup(new_node->node, 1);
334 throw std::invalid_argument(
"New_node can not be empty");
338 dup_node =
lyd_dup(new_node->node, 1);
362 return std::make_shared<Set>(
set, std::make_shared<Deleter>(
set, deleter));
367 throw std::invalid_argument(
"Schema can not be empty");
375 return std::make_shared<Set>(
set, std::make_shared<Deleter>(
set, deleter));
378 struct lyd_node *new_node =
nullptr;
382 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
395 throw std::invalid_argument(
"var_arg must be a data node");
398 ret =
lyd_validate(&node, options, (
void *) var_arg->node);
407 if (ret != EXIT_SUCCESS) {
416 throw std::invalid_argument(
"Second can not be empty");
424 return diff ? std::make_shared<Difflist>(
diff, deleter) :
nullptr;
427 struct lyd_node *new_node =
nullptr;
429 new_node =
lyd_new_path(node, ctx ? ctx->ctx : NULL,
path, (
void *)value, value_type, options);
434 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
437 struct lyd_node *new_node =
nullptr;
440 throw std::invalid_argument(
"Value can not be empty");
448 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
451 struct lyd_node *new_node =
nullptr;
454 throw std::invalid_argument(
"Value can not be empty");
462 return new_node ? std::make_shared<Data_Node>(new_node, deleter) :
nullptr;
479 deleter = std::make_shared<Deleter>(node,
nullptr);
492 return attr ? std::make_shared<Attr>(
attr, deleter) :
nullptr;
502 return module ? std::make_shared<Module>(module, deleter) :
nullptr;
505 char *strp =
nullptr;
514 std::string s_strp = strp;
520 std::vector<S_Data_Node> s_vector;
524 s_vector.push_back(std::make_shared<Data_Node>(elem, deleter));
530 std::vector<S_Data_Node> s_vector;
534 s_vector.push_back(std::make_shared<Data_Node>(elem, deleter));
542 Data_Node(derived->node, derived->deleter),
544 deleter(derived->deleter)
546 if (derived->node->schema->nodetype !=
LYS_LEAFLIST && derived->node->schema->nodetype !=
LYS_LEAF) {
547 throw std::invalid_argument(
"Type must be LYS_LEAFLIST or LYS_LEAF");
577 return std::make_shared<Type>((
struct lys_type *) type, deleter);
581 Data_Node(derived->node, derived->deleter),
583 deleter(derived->deleter)
585 if (derived->node->schema->nodetype !=
LYS_ANYDATA && derived->node->schema->nodetype !=
LYS_ANYXML) {
586 throw std::invalid_argument(
"Type must be LYS_ANYDATA or LYS_ANYXML");
610 deleter = std::make_shared<Deleter>(diff, deleter);
614 std::vector<S_Data_Node> s_vector;
621 for(i = 0; i <
sizeof(*diff->
first); i++) {
622 s_vector.push_back(std::make_shared<Data_Node>(*diff->
first, deleter));
628 std::vector<S_Data_Node> s_vector;
635 for(i = 0; i <
sizeof(*diff->
second); i++) {
636 s_vector.push_back(std::make_shared<Data_Node>(*diff->
second, deleter));
643 return new_node ? std::make_shared<Data_Node>(new_node,
nullptr) :
nullptr;