yaml-cpp/include
graehl 8d5327d0aa node: id hash_value UnshareSubtrees Deep+ShallowClone ModifyValues
At the cost of exposing some existing detail, enable efficient
unsharing of graph structure (DeepClone), and efficient ShallowClone.

Modify[Key]Values allows in-place modification (or deletion) of
node_data in a Map. (the Key is not modified but provided so the
modification of the value may depend on the key)

UnshareSubtrees for in-place DeepClone copying of
shared subtrees.

id and hash_value allow creating efficient input Node -> output Node
transformations where the result of a previously transformed subtree
may be reused (allowing linear time creation of output trees with
shared subtrees instead of exponential by

Rationale: although YAML::Node faithfully represents the input
document and allows efficient traversal, using it as a large-scale
configuration / AST means that it's easy to unintentionally create
quadratic or worse algorithms modifying the tree.
2022-08-30 13:28:25 -07:00
..
yaml-cpp node: id hash_value UnshareSubtrees Deep+ShallowClone ModifyValues 2022-08-30 13:28:25 -07:00