Blob Blame History Raw
%module cpp_classes

#define __attribute__(x)
%include <std_except.i>
%catches(std::runtime_error, std::exception, std::string);

%include <cpointer.i>
%include <typemaps.i>
%include <stdint.i>
%include <std_pair.i>
%include <std_string.i>
%include <std_vector.i>
%include <std_shared_ptr.i>

%ignore throw_exception;

/* Xml.hpp */
%shared_ptr(libyang::Xml_Ns);
%newobject Xml_Ns::next;

%shared_ptr(libyang::Xml_Attr);
%newobject Xml_Attr::next;
%newobject Xml_Attr::ns;

%shared_ptr(libyang::Xml_Elem);
%newobject Xml_Elem::parent;
%newobject Xml_Elem::attr;
%newobject Xml_Elem::child;
%newobject Xml_Elem::next;
%newobject Xml_Elem::prev;
%newobject Xml_Elem::ns;
%newobject Xml_Elem::get_ns;


/* Libyang.hpp */
%shared_ptr(libyang::Context);
%newobject Context::info;
%newobject Context::get_module;
%newobject Context::get_module_older;
%newobject Context::load_module;
%newobject Context::get_module_by_ns;
%newobject Context::parse_mem;
%newobject Context::parse_fd;
%newobject Context::parse_data_path;
%newobject Context::parse_path;
%newobject Context::parse_xml;
%newobject Context::get_submodule;
%newobject Context::get_submodule2;
%newobject Context::find_path;
%newobject Context::data_instantiables;
%ignore    Context::swig_ctx;
%ignore    Context::wrap_cb_l;

%shared_ptr(libyang::Set);
%newobject Set::dup;

%newobject create_new_Context;

/* Tree_Data.hpp */
%newobject create_new_Data_Node;

%shared_ptr(libyang::Value);
%newobject Value::enm;
%newobject Value::ident;
%newobject Value::instance;
%newobject Value::leafref;

%shared_ptr(libyang::Data_Node);
%newobject Data_Node::schema;
%newobject Data_Node::attr;
%newobject Data_Node::next;
%newobject Data_Node::prev;
%newobject Data_Node::parent;
%newobject Data_Node::child;
%newobject Data_Node::path;
%newobject Data_Node::qualifed_path;
%newobject Data_Node::dup;
%newobject Data_Node::dup_withsiblings;
%newobject Data_Node::dup_to_ctx;
%newobject Data_Node::find_path;
%newobject Data_Node::find_instance;
%ignore    Data_Node::swig_node;
%ignore    Data_Node::swig_deleter;
%newobject Data_Node::diff;
%newobject Data_Node::new_path;
%newobject Data_Node::node_module;
%newobject Data_Node::print_mem;
%newobject Data_Node::C_lyd_node;

%shared_ptr(libyang::Data_Node_Leaf_List);
%newobject Data_Node_Leaf_List::value;
%newobject Data_Node_Leaf_List::schema;
%newobject Data_Node_Leaf_List::attr;
%newobject Data_Node_Leaf_List::next;
%newobject Data_Node_Leaf_List::prev;
%newobject Data_Node_Leaf_List::parent;
%newobject Data_Node_Leaf_List::child;
%newobject Data_Node_Leaf_List::path;
%newobject Data_Node_Leaf_List::qualifed_path;
%newobject Data_Node_Leaf_List::dup;
%newobject Data_Node_Leaf_List::dup_to_ctx;
%newobject Data_Node_Leaf_List::find_path;
%newobject Data_Node_Leaf_List::find_instance;
%ignore    Data_Node_Leaf_List::swig_node;
%ignore    Data_Node_Leaf_List::swig_deleter;
%newobject Data_Node_Leaf_List::diff;
%newobject Data_Node_Leaf_List::new_path;
%newobject Data_Node_Leaf_List::node_module;
%newobject Data_Node_Leaf_List::print_mem;
%newobject Data_Node_Leaf_List::type;
%newobject Data_Node_Leaf_List::C_lyd_node;

%shared_ptr(libyang::Data_Node_Anydata);
%newobject Data_Node_Anydata::schema;
%newobject Data_Node_Anydata::attr;
%newobject Data_Node_Anydata::next;
%newobject Data_Node_Anydata::prev;
%newobject Data_Node_Anydata::parent;
%newobject Data_Node_Anydata::child;
%newobject Data_Node_Anydata::path;
%newobject Data_Node_Anydata::qualifed_path;
%newobject Data_Node_Anydata::dup;
%newobject Data_Node_Anydata::dup_to_ctx;
%newobject Data_Node_Anydata::find_path;
%newobject Data_Node_Anydata::find_instance;
%ignore    Data_Node_Anydata::swig_node;
%ignore    Data_Node_Anydata::swig_deleter;
%newobject Data_Node_Anydata::diff;
%newobject Data_Node_Anydata::new_path;
%newobject Data_Node_Anydata::node_module;
%newobject Data_Node_Anydata::print_mem;
%newobject Data_Node_Anydata::C_lyd_node;

%shared_ptr(libyang::Attr);
%newobject Attr::value;
%newobject Attr::parent;
%newobject Attr::next;

%shared_ptr(libyang::Difflist);

/* Tree_Schema.hpp */
%shared_ptr(libyang::Module);
%newobject Module::rev;
%newobject Module::data;
%newobject Module::data_instantiables;
%newobject Module::print_mem;

%shared_ptr(libyang::Submodule);
%newobject Submodule::ctx;
%newobject Submodule::rev;
%newobject Submodule::belongsto;

%shared_ptr(libyang::Type_Info_Binary);
%newobject Type_Info_Binary::length;

%shared_ptr(libyang::Type_Bit);

%shared_ptr(libyang::Type_Info_Bits);

%shared_ptr(libyang::Type_Info_Dec64);
%newobject Type_Info_Dec64::range;

%shared_ptr(libyang::Type_Enum);

%shared_ptr(libyang::Type_Info_Enums);

%shared_ptr(libyang::Type_Info_Ident);

%shared_ptr(libyang::Type_Info_Inst);

%shared_ptr(libyang::Type_Info_Num);
%newobject Type_Info_Num::range;

%shared_ptr(libyang::Type_Info_Lref);
%newobject Type_Info_Lref::target;

%shared_ptr(libyang::Type_Info_Str);
%newobject Type_Info_Str::length;
%newobject Type_Info_Str::patterns;

%shared_ptr(libyang::Type_Info_Union);

%shared_ptr(libyang::Type_Info);
%newobject Type_Info::binary;
%newobject Type_Info::bits;
%newobject Type_Info::dec64;
%newobject Type_Info::enums;
%newobject Type_Info::ident;
%newobject Type_Info::inst;
%newobject Type_Info::num;
%newobject Type_Info::lref;
%newobject Type_Info::str;
%newobject Type_Info::uni;

%shared_ptr(libyang::Type);
%newobject Type::ext;
%newobject Type::der;
%newobject Type::parent;
%newobject Type::info;

%shared_ptr(libyang::Iffeature);

%shared_ptr(libyang::Ext_Instance);
%newobject Ext_Instance::module;

%shared_ptr(libyang::Schema_Node);
%newobject Schema_Node::parent;
%newobject Schema_Node::child;
%newobject Schema_Node::next;
%newobject Schema_Node::prev;
%newobject Schema_Node::module;
%newobject Schema_Node::path;
%newobject Schema_Node::child_instantiables;
%newobject Schema_Node::find_path;
%newobject Schema_Node::xpath_atomize;
%ignore    Schema_Node::swig_node;
%ignore    Schema_Node::swig_deleter;

%shared_ptr(libyang::Schema_Node_Container);
%newobject Schema_Node_Container::parent;
%newobject Schema_Node_Container::child;
%newobject Schema_Node_Container::next;
%newobject Schema_Node_Container::prev;
%newobject Schema_Node_Container::module;
%newobject Schema_Node_Container::find_path;
%newobject Schema_Node_Container::xpath_atomize;
%ignore    Schema_Node_Container::swig_node;
%ignore    Schema_Node_Container::swig_deleter;
%newobject Schema_Node_Container::must;
%newobject Schema_Node_Container::tpdf;

%shared_ptr(libyang::Schema_Node_Choice);
%newobject Schema_Node_Choice::parent;
%newobject Schema_Node_Choice::child;
%newobject Schema_Node_Choice::next;
%newobject Schema_Node_Choice::prev;
%newobject Schema_Node_Choice::module;
%newobject Schema_Node_Choice::find_path;
%newobject Schema_Node_Choice::xpath_atomize;
%ignore    Schema_Node_Choice::swig_node;
%ignore    Schema_Node_Choice::swig_deleter;
%newobject Schema_Node_Choice::dflt;

%shared_ptr(libyang::Schema_Node_Leaf);
%newobject Schema_Node_Leaf::parent;
%newobject Schema_Node_Leaf::child;
%newobject Schema_Node_Leaf::next;
%newobject Schema_Node_Leaf::prev;
%newobject Schema_Node_Leaf::module;
%newobject Schema_Node_Leaf::find_path;
%newobject Schema_Node_Leaf::xpath_atomize;
%ignore    Schema_Node_Leaf::swig_node;
%ignore    Schema_Node_Leaf::swig_deleter;
%newobject Schema_Node_Leaf::type;
%newobject Schema_Node_Leaf::is_key;

%shared_ptr(libyang::Schema_Node_Leaflist);
%newobject Schema_Node_Leaflist::parent;
%newobject Schema_Node_Leaflist::child;
%newobject Schema_Node_Leaflist::next;
%newobject Schema_Node_Leaflist::prev;
%newobject Schema_Node_Leaflist::module;
%newobject Schema_Node_Leaflist::find_path;
%newobject Schema_Node_Leaflist::xpath_atomize;
%ignore    Schema_Node_Leaflist::swig_node;
%ignore    Schema_Node_Leaflist::swig_deleter;
%newobject Schema_Node_Leaflist::type;

%shared_ptr(libyang::Schema_Node_List);
%newobject Schema_Node_List::parent;
%newobject Schema_Node_List::child;
%newobject Schema_Node_List::next;
%newobject Schema_Node_List::prev;
%newobject Schema_Node_List::module;
%newobject Schema_Node_List::find_path;
%newobject Schema_Node_List::xpath_atomize;
%ignore    Schema_Node_List::swig_node;
%ignore    Schema_Node_List::swig_deleter;

%shared_ptr(libyang::Schema_Node_Anydata);
%newobject Schema_Node_Anydata::parent;
%newobject Schema_Node_Anydata::child;
%newobject Schema_Node_Anydata::next;
%newobject Schema_Node_Anydata::prev;
%newobject Schema_Node_Anydata::module;
%newobject Schema_Node_Anydata::find_path;
%newobject Schema_Node_Anydata::xpath_atomize;
%ignore    Schema_Node_Anydata::swig_node;
%ignore    Schema_Node_Anydata::swig_deleter;

%shared_ptr(libyang::Schema_Node_Uses);
%newobject Schema_Node_Uses::parent;
%newobject Schema_Node_Uses::child;
%newobject Schema_Node_Uses::next;
%newobject Schema_Node_Uses::prev;
%newobject Schema_Node_Uses::module;
%newobject Schema_Node_Uses::find_path;
%newobject Schema_Node_Uses::xpath_atomize;
%newobject Schema_Node_Uses::when;
%ignore    Schema_Node_Uses::swig_node;
%ignore    Schema_Node_Uses::swig_deleter;
%newobject Schema_Node_Uses::grp;

%shared_ptr(libyang::Schema_Node_Grp);
%newobject Schema_Node_Grp::parent;
%newobject Schema_Node_Grp::child;
%newobject Schema_Node_Grp::next;
%newobject Schema_Node_Grp::prev;
%newobject Schema_Node_Grp::module;
%newobject Schema_Node_Grp::find_path;
%newobject Schema_Node_Grp::xpath_atomize;
%ignore    Schema_Node_Grp::swig_node;
%ignore    Schema_Node_Grp::swig_deleter;

%shared_ptr(libyang::Schema_Node_Case);
%newobject Schema_Node_Case::parent;
%newobject Schema_Node_Case::child;
%newobject Schema_Node_Case::next;
%newobject Schema_Node_Case::prev;
%newobject Schema_Node_Case::module;
%newobject Schema_Node_Case::find_path;
%newobject Schema_Node_Case::xpath_atomize;
%ignore    Schema_Node_Case::swig_node;
%ignore    Schema_Node_Case::swig_deleter;

%shared_ptr(libyang::Schema_Node_Inout);
%newobject Schema_Node_Inout::parent;
%newobject Schema_Node_Inout::child;
%newobject Schema_Node_Inout::next;
%newobject Schema_Node_Inout::prev;
%newobject Schema_Node_Inout::module;
%newobject Schema_Node_Inout::find_path;
%newobject Schema_Node_Inout::xpath_atomize;
%ignore    Schema_Node_Inout::swig_node;
%ignore    Schema_Node_Inout::swig_deleter;

%shared_ptr(libyang::Schema_Node_Notif);
%newobject Schema_Node_Notif::parent;
%newobject Schema_Node_Notif::child;
%newobject Schema_Node_Notif::next;
%newobject Schema_Node_Notif::prev;
%newobject Schema_Node_Notif::module;
%newobject Schema_Node_Notif::find_path;
%newobject Schema_Node_Notif::xpath_atomize;
%ignore    Schema_Node_Notif::swig_node;
%ignore    Schema_Node_Notif::swig_deleter;

%shared_ptr(libyang::Schema_Node_Rpc_Action);
%newobject Schema_Node_Rpc_Action::parent;
%newobject Schema_Node_Rpc_Action::child;
%newobject Schema_Node_Rpc_Action::next;
%newobject Schema_Node_Rpc_Action::prev;
%newobject Schema_Node_Rpc_Action::module;
%newobject Schema_Node_Rpc_Action::find_path;
%newobject Schema_Node_Rpc_Action::xpath_atomize;
%ignore    Schema_Node_Rpc_Action::swig_node;
%ignore    Schema_Node_Rpc_Action::swig_deleter;

%shared_ptr(libyang::Schema_Node_Augment);
%newobject Schema_Node_Augment::parent;
%newobject Schema_Node_Augment::child;
%newobject Schema_Node_Augment::next;
%newobject Schema_Node_Augment::prev;
%newobject Schema_Node_Augment::module;
%newobject Schema_Node_Augment::find_path;
%newobject Schema_Node_Augment::xpath_atomize;
%newobject Schema_Node_Augment::target;
%ignore    Schema_Node_Augment::swig_node;
%ignore    Schema_Node_Augment::swig_deleter;

%shared_ptr(libyang::Substmt);

%shared_ptr(libyang::Ext);
%newobject Ext::module;

%shared_ptr(libyang::Refine_Mod_List);

%shared_ptr(libyang::Refine_Mod);
%newobject Refine_Mod::list;

%shared_ptr(libyang::Refine);
%newobject Refine::module;
%newobject Refine::dflt;
%newobject Refine::mod;

%shared_ptr(libyang::Deviate);
%newobject Deviate::must;
%newobject Deviate::unique;
%newobject Deviate::type;

%shared_ptr(libyang::Deviation);
%newobject Deviation::orig_node;

%shared_ptr(libyang::Import);
%newobject Import::module;

%shared_ptr(libyang::Include);
%newobject Include::submodule;

%shared_ptr(libyang::Revision);
%newobject Tpdf::module;

%shared_ptr(libyang::Tpdf);
%newobject Tpdf::type;

%shared_ptr(libyang::Unique);

%shared_ptr(libyang::Feature);
%newobject Feature::module;
%newobject Feature::depfeatures;

%shared_ptr(libyang::Restr);

%shared_ptr(libyang::When);

%shared_ptr(libyang::Ident);
%newobject Ident::module;
%newobject Ident::der;

%shared_ptr(libyang::Error);

%template(vectorData_Node) std::vector<std::shared_ptr<libyang::Data_Node>>;
%template(vectorSchema_Node) std::vector<std::shared_ptr<libyang::Schema_Node>>;
%template(vector_String) std::vector<std::string>;
%template(vectorModules) std::vector<std::shared_ptr<libyang::Module>>;
%template(vectorType) std::vector<std::shared_ptr<libyang::Type>>;
%template(vectorExt_Instance) std::vector<std::shared_ptr<libyang::Ext_Instance>>;
%template(vectorIffeature) std::vector<std::shared_ptr<libyang::Iffeature>>;
%template(vectorFeature) std::vector<std::shared_ptr<libyang::Feature>>;
%template(vectorWhen) std::vector<std::shared_ptr<libyang::When>>;
%template(vectorRefine) std::vector<std::shared_ptr<libyang::Refine>>;
%template(vectorXml_Elem) std::vector<std::shared_ptr<libyang::Xml_Elem>>;
%template(vectorDeviate) std::vector<std::shared_ptr<libyang::Deviate>>;
%template(vectorDeviation) std::vector<std::shared_ptr<libyang::Deviation>>;
%template(vectorIdent) std::vector<std::shared_ptr<libyang::Ident>>;
%template(vectorRestr) std::vector<std::shared_ptr<libyang::Restr>>;
%template(vectorTpdf) std::vector<std::shared_ptr<libyang::Tpdf>>;
%template(vectorUnique) std::vector<std::shared_ptr<libyang::Unique>>;
%template(vectorSchema_Node_Leaf) std::vector<std::shared_ptr<libyang::Schema_Node_Leaf>>;
%template(vectorSchema_Node_Augment) std::vector<std::shared_ptr<libyang::Schema_Node_Augment>>;
%template(vectorType_Bit) std::vector<std::shared_ptr<libyang::Type_Bit>>;
%template(vectorType_Enum) std::vector<std::shared_ptr<libyang::Type_Enum>>;
%template(vectorError) std::vector<std::shared_ptr<libyang::Error>>;

%template(pairStringLysInformat) std::pair<char *, LYS_INFORMAT>;

%{
/* Includes the header in the wrapper code */
#include "Internal.hpp"
#include "Libyang.hpp"
#include "Tree_Data.hpp"
#include "Tree_Schema.hpp"
#include "Xml.hpp"
#include <vector>
%}

%include "Internal.hpp"
%include "Libyang.hpp"
%include "Tree_Data.hpp"
%include "Tree_Schema.hpp"
%include "Xml.hpp"