Contents:

1. Introduction

The trees module is very handy and user friendly, but it is a bit slow. The macros contained in this module provide targeted optimizations that can considerably speed up any code using trees.

2. Overview

Overview

!get-node-type: macro [node] [(:first) node]
; both assume a well formed properties block
!make-node: macro [type properties] [(:reduce) [type #[none] (:copy) properties]]
!make-node-no-copy: macro [type properties] [(:reduce) [type #[none] properties]]
!get-node-properties: macro [node] [(:third) node]
!get-node-parent: macro [node] [(:all) [_tmp: (:second) node (:head) _tmp]]
; assumes node has NO parent
!set-node-parent-quick: macro [node parent] [insert/only (:poke) node 2 (:tail) parent/only node]
!get-node-previous: macro [node] [
 (:all) [_tmp: (:second) node 4 < (:index?) _tmp (:pick) _tmp -1]
]
; only if node is last child
!remove-node-quick: macro [node] [
 (:remove) (:second) node
 (:poke) node 2 #[none]
]
!set-node-type: macro [node type] [(:poke) node 1 type]
!get-node-childs: macro [node] [(:at) node 4]
!get-node-property: macro [node property] [(:select) (:third) node property]
; assumes well formed properties block
!set-node-properties: macro [node properties] [(:poke) node 3 properties]