|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @file Tree_Data.hpp
|
|
Packit |
8fb591 |
* @author Mislav Novakovic <mislav.novakovic@sartura.hr>
|
|
Packit |
8fb591 |
* @brief Class implementation for libyang C header tree_data.h.
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* Copyright (c) 2017 Deutsche Telekom AG.
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* This source code is licensed under BSD 3-Clause License (the "License").
|
|
Packit |
8fb591 |
* You may not use this file except in compliance with the License.
|
|
Packit |
8fb591 |
* You may obtain a copy of the License at
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* https://opensource.org/licenses/BSD-3-Clause
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#ifndef LIBYANG_CPP_TREE_DATA_H
|
|
Packit |
8fb591 |
#define LIBYANG_CPP_TREE_DATA_H
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#include <iostream>
|
|
Packit |
8fb591 |
#include <memory>
|
|
Packit |
8fb591 |
#include <exception>
|
|
Packit |
8fb591 |
#include <vector>
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#include "Internal.hpp"
|
|
Packit |
8fb591 |
#include "Tree_Schema.hpp"
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
extern "C" {
|
|
Packit |
8fb591 |
#include "libyang.h"
|
|
Packit |
8fb591 |
#include "tree_data.h"
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
namespace libyang {
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @defgroup classes C++/Python
|
|
Packit |
8fb591 |
* @{
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* Class wrappers for data structures and functions to manipulate and access instance data tree.
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief class for wrapping [lyd_val](@ref lyd_val).
|
|
Packit |
8fb591 |
* @class Value
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Value
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_val](@ref lyd_val), for internal use only */
|
|
Packit |
8fb591 |
Value(lyd_val value, LY_DATA_TYPE* value_type, uint8_t value_flags, S_Deleter deleter);
|
|
Packit |
8fb591 |
~Value();
|
|
Packit |
8fb591 |
/** get binary variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
const char *binary() {return LY_TYPE_BINARY == type ? value.binary : throw "wrong type";};
|
|
Packit |
8fb591 |
//struct lys_type_bit **bit();
|
|
Packit |
8fb591 |
//TODO, check size
|
|
Packit |
8fb591 |
//its size is always the number of defined bits in the schema
|
|
Packit |
8fb591 |
/** get bln variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int8_t bln() {return LY_TYPE_BOOL == type ? value.bln : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get dec64 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int64_t dec64() {return LY_TYPE_DEC64 == type ? value.dec64 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get enm variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
S_Type_Enum enm() {return LY_TYPE_ENUM == type ? std::make_shared<Type_Enum>(value.enm, deleter) : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get ident variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
S_Ident ident() {return LY_TYPE_IDENT == type ? std::make_shared<Ident>(value.ident, deleter) : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get instance variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
S_Data_Node instance();
|
|
Packit |
8fb591 |
/** get int8 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int8_t int8() {return LY_TYPE_INT8 == type ? value.int8 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get int16 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int16_t int16() {return LY_TYPE_INT16 == type ? value.int16 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get int32 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int32_t int32() {return LY_TYPE_INT32 == type ? value.int32 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get int64 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
int64_t int64() {return LY_TYPE_INT64 == type ? value.int64 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get leafref variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
S_Data_Node leafref();
|
|
Packit |
8fb591 |
/** get string variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
const char *string() {return LY_TYPE_STRING == type ? value.string : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get uint8 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
uint8_t uint8() {return LY_TYPE_UINT8 == type ? value.uint8 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get uint16 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
uint16_t uint16() {return LY_TYPE_UINT16 == type ? value.uint16 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get uint32 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
uint32_t uintu32() {return LY_TYPE_UINT32 == type ? value.uint32 : throw "wrong type";};
|
|
Packit |
8fb591 |
/** get uint64 variable from [lyd_val](@ref lyd_val)*/
|
|
Packit |
8fb591 |
uint64_t uint64() {return LY_TYPE_UINT64 == type ? value.uint64 : throw "wrong type";};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
lyd_val value;
|
|
Packit |
8fb591 |
LY_DATA_TYPE type;
|
|
Packit |
8fb591 |
uint8_t flags;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief classes for wrapping [lyd_node](@ref lyd_node).
|
|
Packit |
8fb591 |
* @class Data_Node
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Data_Node
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_node](@ref lyd_node), for internal use only */
|
|
Packit |
8fb591 |
Data_Node(struct lyd_node *node, S_Deleter deleter = nullptr);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new](@ref lyd_new) */
|
|
Packit |
8fb591 |
Data_Node(S_Data_Node parent, S_Module module, const char *name);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_leaf](@ref lyd_new_leaf) */
|
|
Packit |
8fb591 |
Data_Node(S_Data_Node parent, S_Module module, const char *name, const char *val_str);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_anydata](@ref lyd_new_anydata) */
|
|
Packit |
8fb591 |
Data_Node(S_Data_Node parent, S_Module module, const char *name, const char *value, LYD_ANYDATA_VALUETYPE value_type);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_anydata](@ref lyd_new_anydata) */
|
|
Packit |
8fb591 |
Data_Node(S_Data_Node parent, S_Module module, const char *name, S_Data_Node value);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_anydata](@ref lyd_new_anydata) */
|
|
Packit |
8fb591 |
Data_Node(S_Data_Node parent, S_Module module, const char *name, S_Xml_Elem value);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
Data_Node(S_Context context, const char *path, const char *value, LYD_ANYDATA_VALUETYPE value_type, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
Data_Node(S_Context context, const char *path, S_Data_Node value, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
Data_Node(S_Context context, const char *path, S_Xml_Elem value, int options);
|
|
Packit |
8fb591 |
//TODO
|
|
Packit |
8fb591 |
//struct lyd_node *lyd_new_output(struct lyd_node *parent, const struct lys_module *module, const char *name);
|
|
Packit |
8fb591 |
//struct lyd_node *lyd_new_output_leaf(struct lyd_node *parent, const struct lys_module *module, const char *name,
|
|
Packit |
8fb591 |
// const char *val_str);
|
|
Packit |
8fb591 |
//struct lyd_node *lyd_new_output_leaf(struct lyd_node *parent, const struct lys_module *module, const char *name,
|
|
Packit |
8fb591 |
// void *value, LYD_ANYDATA_VALUETYPE value_type);
|
|
Packit |
8fb591 |
~Data_Node();
|
|
Packit |
8fb591 |
/** get schema variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
S_Schema_Node schema() LY_NEW(node, schema, Schema_Node);
|
|
Packit |
8fb591 |
/** get validity variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
uint8_t validity() {return node->validity;};
|
|
Packit |
8fb591 |
/** get dflt variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
uint8_t dflt() {return node->dflt;};
|
|
Packit |
8fb591 |
/** get when_status variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
uint8_t when_status() {return node->when_status;};
|
|
Packit |
8fb591 |
/** get attr variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
S_Attr attr();
|
|
Packit |
8fb591 |
/** get next variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
S_Data_Node next() LY_NEW(node, next, Data_Node);
|
|
Packit |
8fb591 |
/** get prev variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
S_Data_Node prev() LY_NEW(node, prev, Data_Node);
|
|
Packit |
8fb591 |
/** get parent variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
S_Data_Node parent() LY_NEW(node, parent, Data_Node);
|
|
Packit |
8fb591 |
/** get child variable from [lyd_node](@ref lyd_node)*/
|
|
Packit |
8fb591 |
virtual S_Data_Node child() LY_NEW(node, child, Data_Node);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/* functions */
|
|
Packit |
8fb591 |
/** wrapper for [lyd_path](@ref lyd_path) */
|
|
Packit |
8fb591 |
std::string path();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_dup](@ref lyd_dup) */
|
|
Packit |
8fb591 |
S_Data_Node dup(int recursive);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_dup_withsiblings](@ref lyd_dup_withsiblings) */
|
|
Packit |
8fb591 |
S_Data_Node dup_withsiblings(int recursive);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_dup_to_ctx](@ref lyd_dup_to_ctx) */
|
|
Packit |
8fb591 |
S_Data_Node dup_to_ctx(int recursive, S_Context context);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_merge](@ref lyd_merge) */
|
|
Packit |
8fb591 |
int merge(S_Data_Node source, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_merge_to_ctx](@ref lyd_merge_to_ctx) */
|
|
Packit |
8fb591 |
int merge_to_ctx(S_Data_Node source, int options, S_Context context);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_insert](@ref lyd_insert) */
|
|
Packit |
8fb591 |
int insert(S_Data_Node new_node);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_insert_sibling](@ref lyd_insert_sibling) */
|
|
Packit |
8fb591 |
int insert_sibling(S_Data_Node new_node);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_insert_before](@ref lyd_insert_before) */
|
|
Packit |
8fb591 |
int insert_before(S_Data_Node new_node);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_insert_after](@ref lyd_insert_after) */
|
|
Packit |
8fb591 |
int insert_after(S_Data_Node new_node);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_schema_sort](@ref lyd_schema_sort) */
|
|
Packit |
8fb591 |
int schema_sort(int recursive);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_find_path](@ref lyd_find_path) */
|
|
Packit |
8fb591 |
S_Set find_path(const char *expr);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_find_instance](@ref lyd_find_instance) */
|
|
Packit |
8fb591 |
S_Set find_instance(S_Schema_Node schema);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_first_sibling](@ref lyd_first_sibling) */
|
|
Packit |
8fb591 |
S_Data_Node first_sibling();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_validate](@ref lyd_validate) */
|
|
Packit |
8fb591 |
int validate(int options, S_Context var_arg);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_validate](@ref lyd_validate) */
|
|
Packit |
8fb591 |
int validate(int options, S_Data_Node var_arg);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_validate_value](@ref lyd_validate_value) */
|
|
Packit |
8fb591 |
int validate_value(const char *value);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_diff](@ref lyd_diff) */
|
|
Packit |
8fb591 |
S_Difflist diff(S_Data_Node second, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
S_Data_Node new_path(S_Context ctx, const char *path, const char *value, LYD_ANYDATA_VALUETYPE value_type, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
S_Data_Node new_path(S_Context ctx, const char *path, S_Data_Node value, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_new_path](@ref lyd_new_path) */
|
|
Packit |
8fb591 |
S_Data_Node new_path(S_Context ctx, const char *path, S_Xml_Elem value, int options);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_list_pos](@ref lyd_list_pos) */
|
|
Packit |
8fb591 |
unsigned int list_pos();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_unlink](@ref lyd_unlink) */
|
|
Packit |
8fb591 |
int unlink();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_insert_attr](@ref lyd_insert_attr) */
|
|
Packit |
8fb591 |
S_Attr insert_attr(S_Module module, const char *name, const char *value);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_node_module](@ref lyd_node_module) */
|
|
Packit |
8fb591 |
S_Module node_module();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_print_mem](@ref lyd_print_mem) */
|
|
Packit |
8fb591 |
std::string print_mem(LYD_FORMAT format, int options);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/* emulate TREE macro's */
|
|
Packit |
8fb591 |
/** wrapper for macro [LY_TREE_FOR](@ref LY_TREE_FOR) */
|
|
Packit |
8fb591 |
std::vector<S_Data_Node> tree_for();
|
|
Packit |
8fb591 |
/** wrapper for macro [LY_TREE_DFS_BEGIN](@ref LY_TREE_DFS_BEGIN) and [LY_TREE_DFS_END](@ref LY_TREE_DFS_END) */
|
|
Packit |
8fb591 |
std::vector<S_Data_Node> tree_dfs();
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/** SWIG related wrappers, for internal use only */
|
|
Packit |
8fb591 |
struct lyd_node *swig_node() {return node;};
|
|
Packit |
8fb591 |
/** SWIG related wrappers, for internal use only */
|
|
Packit |
8fb591 |
S_Deleter swig_deleter() {return deleter;};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
friend Set;
|
|
Packit |
8fb591 |
friend Data_Node_Anydata;
|
|
Packit |
8fb591 |
friend Data_Node_Leaf_List;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/** libnetconf2 related wrappers, for internal use only */
|
|
Packit |
8fb591 |
struct lyd_node *C_lyd_node() {return node;};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
struct lyd_node *node;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
S_Data_Node create_new_Data_Node(struct lyd_node *node);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief class for wrapping [lyd_node_leaf_list](@ref lyd_node_leaf_list).
|
|
Packit |
8fb591 |
* @class Data_Node_Leaf_List
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Data_Node_Leaf_List : public Data_Node
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for [Data_Node_Leaf_List](@ref Data_Node_Leaf_List) */
|
|
Packit |
8fb591 |
Data_Node_Leaf_List(S_Data_Node derived);
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_node](@ref lyd_node), for internal use only */
|
|
Packit |
8fb591 |
Data_Node_Leaf_List(struct lyd_node *node, S_Deleter deleter = nullptr);
|
|
Packit |
8fb591 |
~Data_Node_Leaf_List();
|
|
Packit |
8fb591 |
/** get value_str variable from [lyd_node_leaf_list](@ref lyd_node_leaf_list)*/
|
|
Packit |
8fb591 |
const char *value_str() {return ((struct lyd_node_leaf_list *) node)->value_str;};
|
|
Packit |
8fb591 |
/** get value variable from [lyd_node_leaf_list](@ref lyd_node_leaf_list)*/
|
|
Packit |
8fb591 |
S_Value value();
|
|
Packit |
8fb591 |
/** get value_type variable from [lyd_node_leaf_list](@ref lyd_node_leaf_list)*/
|
|
Packit |
8fb591 |
uint16_t value_type() {return ((struct lyd_node_leaf_list *) node)->value_type;};
|
|
Packit |
8fb591 |
/** get child variable from [lyd_node_leaf_list](@ref lyd_node_leaf_list)*/
|
|
Packit |
8fb591 |
S_Data_Node child() {return nullptr;};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/* functions */
|
|
Packit |
8fb591 |
/** wrapper for [lyd_change_leaf](@ref lyd_change_leaf) */
|
|
Packit |
8fb591 |
int change_leaf(const char *val_str);
|
|
Packit |
8fb591 |
/** wrapper for [lyd_wd_default](@ref lyd_wd_default) */
|
|
Packit |
8fb591 |
int wd_default();
|
|
Packit |
8fb591 |
/** wrapper for [lyd_leaf_type](@ref lyd_leaf_type) */
|
|
Packit |
8fb591 |
S_Type leaf_type();
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
struct lyd_node *node;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief class for wrapping [lyd_node_anydata](@ref lyd_node_anydata).
|
|
Packit |
8fb591 |
* @class Data_Node_Anydata
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Data_Node_Anydata : public Data_Node
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for [Data_Node_Anydata](@ref Data_Node_Anydata) */
|
|
Packit |
8fb591 |
Data_Node_Anydata(S_Data_Node derived);
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_node](@ref lyd_node), for internal use only */
|
|
Packit |
8fb591 |
Data_Node_Anydata(struct lyd_node *node, S_Deleter deleter = nullptr);
|
|
Packit |
8fb591 |
~Data_Node_Anydata();
|
|
Packit |
8fb591 |
/** get value_type variable from [lyd_node_anydata](@ref lyd_node_anydata)*/
|
|
Packit |
8fb591 |
LYD_ANYDATA_VALUETYPE value_type() {return ((struct lyd_node_anydata *) node)->value_type;};
|
|
Packit |
8fb591 |
//union value
|
|
Packit |
8fb591 |
/** get child variable from [lyd_node_anydata](@ref lyd_node_anydata)*/
|
|
Packit |
8fb591 |
S_Data_Node child() {return nullptr;};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
struct lyd_node *node;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief class for wrapping [lyd_attr](@ref lyd_attr).
|
|
Packit |
8fb591 |
* @class Attr
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Attr
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_attr](@ref lyd_attr), for internal use only */
|
|
Packit |
8fb591 |
Attr(struct lyd_attr *attr, S_Deleter deleter = nullptr);
|
|
Packit |
8fb591 |
~Attr();
|
|
Packit |
8fb591 |
/** get parent variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
S_Data_Node parent() LY_NEW(attr, parent, Data_Node);
|
|
Packit |
8fb591 |
/** get next variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
S_Attr next();
|
|
Packit |
8fb591 |
//struct lys_ext_instance_complex *annotation
|
|
Packit |
8fb591 |
/** get name variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
const char *name() {return attr->name;};
|
|
Packit |
8fb591 |
/** get value_str variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
const char *value_str() {return attr->value_str;};
|
|
Packit |
8fb591 |
/** get value variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
S_Value value();
|
|
Packit |
8fb591 |
/** get value_type variable from [lyd_attr](@ref lyd_attr)*/
|
|
Packit |
8fb591 |
uint16_t value_type() {return attr->value_type;};
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
struct lyd_attr *attr;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* @brief class for wrapping [lyd_difflist](@ref lyd_difflist).
|
|
Packit |
8fb591 |
* @class Difflist
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
class Difflist
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
public:
|
|
Packit |
8fb591 |
/** wrapper for struct [lyd_difflist](@ref lyd_difflist), for internal use only */
|
|
Packit |
8fb591 |
Difflist(struct lyd_difflist *diff, S_Deleter deleter);
|
|
Packit |
8fb591 |
~Difflist();
|
|
Packit |
8fb591 |
/** get type variable from [lyd_difflist](@ref lyd_difflist)*/
|
|
Packit |
8fb591 |
LYD_DIFFTYPE *type() {return diff->type;};
|
|
Packit |
8fb591 |
/** get first variable from [lyd_difflist](@ref lyd_difflist)*/
|
|
Packit |
8fb591 |
std::vector<S_Data_Node> first();
|
|
Packit |
8fb591 |
/** get second variable from [lyd_difflist](@ref lyd_difflist)*/
|
|
Packit |
8fb591 |
std::vector<S_Data_Node> second();
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
private:
|
|
Packit |
8fb591 |
struct lyd_difflist *diff;
|
|
Packit |
8fb591 |
S_Deleter deleter;
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
/**@} */
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#endif
|