node_ptr
checker::visit_node(device_tree *tree, const node_ptr &n)
property_checker::check_property(device_tree *tree, const node_ptr &n, property_ptr p)
property_size_checker::check(device_tree *, const node_ptr &, property_ptr p)
virtual bool check_node(device_tree *, const node_ptr &n)
virtual bool check_node(device_tree *, const node_ptr &n)
virtual bool check_property(device_tree *tree, const node_ptr &n, property_ptr p);
virtual bool check(device_tree *tree, const node_ptr &n, property_ptr p) = 0;
virtual bool check(device_tree *tree, const node_ptr &n, property_ptr p) = 0;
virtual bool check(device_tree *, const node_ptr &, property_ptr p)
virtual bool check(device_tree *, const node_ptr &, property_ptr p)
virtual bool check(device_tree *, const node_ptr &, property_ptr p)
virtual bool check(device_tree *tree, const node_ptr &, property_ptr p)
virtual bool check(device_tree *tree, const node_ptr &n, property_ptr p);
bool visit_node(device_tree *tree, const node_ptr &n);
virtual bool check_node(device_tree *, const node_ptr &)
virtual bool check_property(device_tree *, const node_ptr &, property_ptr )
node::cmp_children(node_ptr &c1, node_ptr &c2)
node_ptr
node_ptr n{std::make_shared<constructable_node>(input,
node_ptr
node_ptr n(new node(structs, strings));
node::merge_node(node_ptr &other)
[&](const node_ptr &p) {
device_tree::collect_names_recursive(node_ptr parent, node_ptr n, node_path &path)
device_tree::assign_phandle(node_ptr n, uint32_t &phandle)
device_tree::assign_phandles(node_ptr n, uint32_t &next)
node_ptr target;
node_ptr next;
std::unordered_set<node_ptr> previously_referenced_nodes;
std::unordered_set<node_ptr> newly_referenced_nodes;
node_ptr nx = node_names[v.string_data];
n.delete_children_if([](node_ptr &nx) {
std::vector<node_ptr> &roots,
node_ptr n;
node_ptr
node_ptr
device_tree::create_fragment_wrapper(node_ptr &node, int &fragnum)
node_ptr newroot = node::create_special_node("", symbols);
node_ptr wrapper = node::create_special_node("__overlay__", symbols);
node_ptr fragment = node::create_special_node(fragment_address, symbols);
node_ptr
device_tree::generate_root(node_ptr &node, int &fragnum)
device_tree::reassign_fragment_numbers(node_ptr &node, int &delta)
std::vector<node_ptr> roots;
parent->delete_children_if([&](node_ptr &child) { return child == node; });
node_ptr local_fixups = node::create_special_node("__local_fixups__", symbols);
node_ptr n = local_fixups;
node_ptr child = node::parse_dtb(structs, strings);
node_ptr node::create_special_node(const string &name,
node_ptr n{std::make_shared<constructable_node>(name, props)};
node_ptr child = node::parse(input, tree, std::move(child_name),
inline const node_ptr &get_root() const
typedef std::vector<node_ptr>::iterator child_iterator;
std::vector<node_ptr> children;
static inline bool cmp_children(node_ptr &c1, node_ptr &c2);
static node_ptr parse(text_input_buffer &input,
static node_ptr parse_dtb(input_buffer &structs, input_buffer &strings);
static node_ptr create_special_node(const std::string &name,
inline void add_child(node_ptr &&n)
inline void delete_children_if(std::function<bool(node_ptr &)> predicate)
void merge_node(node_ptr &other);
node_ptr root;
std::unordered_map<std::string, node_ptr> node_names;
std::unordered_map<std::string, node_ptr> node_name_parents;
std::unordered_map<uint32_t, node_ptr> used_phandles;
void collect_names_recursive(node_ptr parent, node_ptr n, node_path &path);
property_ptr assign_phandle(node_ptr n, uint32_t &next);
void assign_phandles(node_ptr n, uint32_t &next);
std::vector<node_ptr> &roots,
node_ptr referenced_node(property_value &v);
node_ptr create_fragment_wrapper(node_ptr &node, int &fragnum);
node_ptr generate_root(node_ptr &node, int &fragnum);
void reassign_fragment_numbers(node_ptr &node, int &delta);