1/* struct::tree - critcl - layer 1 declarations
2 * (b) Node operations.
3 */
4
5#ifndef _TN_H
6#define _TN_H 1
7
8#include "tcl.h"
9#include <ds.h>
10
11void  tn_shimmer  (Tcl_Obj* o, TNPtr n);
12TNPtr tn_get_node (TPtr t, Tcl_Obj* node, Tcl_Interp* interp, Tcl_Obj* tree);
13
14TNPtr  tn_new	 (TPtr td, CONST char* name);
15TNPtr  tn_dup	 (TPtr dst, TNPtr src);
16void   tn_delete (TNPtr n);
17
18void tn_node	  (TNPtr n);
19void tn_notnode	  (TNPtr n);
20void tn_leaf	  (TNPtr n);
21void tn_notleaf	  (TNPtr n);
22void tn_structure (TNPtr n, int depth);
23
24void   tn_detach	 (TNPtr n);
25TNPtr* tn_detachmany	 (TNPtr n, int len);
26TNPtr* tn_detachchildren (TNPtr n, int* nc);
27
28void tn_append	   (TNPtr p,	     TNPtr n);
29void tn_insert	   (TNPtr p, int at, TNPtr n);
30
31void tn_appendmany (TNPtr p,	     int nc, TNPtr* nv);
32void tn_insertmany (TNPtr p, int at, int nc, TNPtr* nv);
33
34void tn_cut	   (TNPtr n);
35
36int	  tn_depth	    (TNPtr n);
37int	  tn_height	    (TNPtr n);
38int	  tn_ndescendants   (TNPtr n);
39Tcl_Obj** tn_getdescendants (TNPtr n, int* nc);
40Tcl_Obj** tn_getchildren    (TNPtr n, int* nc);
41
42int tn_filternodes (int* nc,   Tcl_Obj** nv,
43		    int	 cmdc, Tcl_Obj** cmdv,
44		    Tcl_Obj* tree, Tcl_Interp* interp);
45
46int tn_isancestorof (TNPtr a, TNPtr b);
47
48void	 tn_extend_attr (TNPtr n);
49void	 tn_set_attr	(TNPtr n, Tcl_Interp* interp, Tcl_Obj* dict);
50Tcl_Obj* tn_get_attr	(TNPtr n, Tcl_Obj* empty);
51
52int tn_serialize (TNPtr n, int listc, Tcl_Obj** listv,
53		  int at, int parent, Tcl_Obj* empty);
54
55#endif /* _TN_H */
56
57/*
58 * Local Variables:
59 * mode: c
60 * c-basic-offset: 4
61 * fill-column: 78
62 * End:
63 */
64