Man Linux: Main Page and Category List


       Blt_Tree - Tree data object.


       #include <bltTree.h>

       struct Blt_Tree {


       char *
       Tcl_Realloc(ptr, size)


       int    size    (in)      Size in bytes of the memory block to allocate.

       char   *ptr    (in)      Pointer to memory block to free or realloc.


       These procedures provide a platform and compiler independent  interface
       for  memory  allocation.   Programs  that need to transfer ownership of
       memory blocks between Tcl and other modules should use  these  routines
       rather  than  the native malloc() and free() routines provided by the C
       run-time library.

       Tcl_Alloc returns a pointer to a block of at least size bytes  suitably
       aligned for any use.

       Tcl_Free  makes  the  space  referred  to  by ptr available for further

       Tcl_Realloc changes the size of the block pointed to  by  ptr  to  size
       bytes  and  returns  a  pointer to the new block.  The contents will be
       unchanged up to the lesser of the new  and  old  sizes.   The  returned
       location may be different from ptr.


       The  following  library  routines  allow you to create and destroy tree
       objects.  Each tree object has a  name  that  uniquely  identifies  it.
       Tree  objects  can also be shared.  For example, the tree and hiertable
       commands may access the same tree data object.   Each  client  grabs  a
       token  associated with the tree.  When all tokens are released the tree
       data object is automatically destroyed.

       Blt_TreeCreate      Create a tree data object and optionally obtains  a
                           token associated with it.

       Blt_TreeExists      Indicates if a tree by a given name exists.

       Blt_TreeGetToken    Obtains a token for an existing tree data object.

                           Releases  a token for a tree data object.  The tree
                           object is deleted when all outstanding tokens  have
                           been released.

       Blt_TreeName        Returns the name of the tree object.

       Blt_TreeChangeRoot  Specifies a node as the new root to a tree.


       Tree  objects initially contain only a root node. You can add or delete
       nodes with the following routines.

       Blt_TreeCreateNode  Creates a new child node for a given parent in  the

       Blt_TreeDeleteNode  Deletes a node and its children.

       Blt_TreeNodeId      Returns the unique node identifier for a node.

       Blt_TreeGetNode     Gets a node based upon its identifier.

       Blt_TreeFindChild   Searches  for  a child node given by its label in a
                           parent node.

       Blt_TreeNodeLabel   Returns the current label for a node.

       Blt_TreeRelabelNode Resets a node’s label.

       Blt_TreeNodePath    Returns the fullpath to a node.

       Blt_TreeNodeDepth   Returns the depth of the node.

       Blt_TreeNodeDegree  Returns the number of children for a node.

       Blt_TreeIsLeaf      Indicates if a node has no children.

       Blt_TreeIsBefore    Indicates if a  node  is  before  another  node  in
                           depth-first search order.

       Blt_TreeIsAncestor  Indicates if a node is an ancestor or another.

       Blt_TreeSortNode    Sorts the children of a node.

       Blt_TreeSize        Returns  the  number  of  nodes  in  a node and its



       Each node can have zero or more children nodes.  These routines let you
       navigate the tree hierarchy.

       Blt_TreeNodeParent  Returns the parent node.

       Blt_TreeFirstChild  Returns the first child of a parent node.

       Blt_TreeLastChild   Returns the last child of a parent node.

       Blt_TreeNextSibling Returns  the next sibling node in the parent’s list
                           of children.

       Blt_TreePrevSibling Returns the previous sibling node in  the  parent’s
                           list of children.

       Blt_TreeRootNode    Returns the root node of the tree.

       Blt_TreeNextNode    Returns the next node in depth-first order.

       Blt_TreePrevNode    Returns the previous node in depth-first order.

       Blt_TreeEndNode     Returns  the last node in the tree as determined by
                           depth-first order.

       Blt_TreeApply       Walks  through  a  node  and  all  it  descendants,
                           applying a given callback procedure.

       Blt_TreeApplyDFS    Walks  through  a  node  and  all it descendants in
                           depth-first search order, applying a given callback

       Blt_TreeApplyBFS    Walks  through  a  node  and  all it descendants in
                           breadth-first  search  order,  applying   a   given
                           callback procedure.


       Data  values  can  be stored at any node.  Values have by both a string
       key and a Tcl_Obj value.  Data value keys do not have to be  homogenous
       across  all  nodes  (i.e.  nodes do not have to contain the same keys).
       There is also a special node array data type.

       Blt_TreeGetValue    Gets the node data value given by a key.

       Blt_TreeValueExists Indicates if a node  data  value  given  by  a  key

       Blt_TreeSetValue    Sets a node’s value of a key.

       Blt_TreeUnsetValue  Remove the node data value and key.

                           Gets  the  node data array value given by a key and
                           an array index.

                           Sets the node data array value given by a  key  and
                           an array index.

                           Remove the node data array value.

                           Determines  if  an  array  element by a given index

       Blt_TreeFirstKey    Returns the key of the first value in the node.

       Blt_TreeNextKey     Returns the key of the next value in the node.

                           Lock  the  value  to  current  client,  making   it

       Blt_TreePublicValue Unlock the value so that all clients can access it.



       Blt_TreeCreateTrace Sets up a trace callback to  be  invoked  when  the
                           node value is read, set, or unset.

       Blt_TreeDeleteTrace Deletes an existing trace.


                           Sets  up  a  callback  to  be  invoked  when events
                           (create, delete, relabel,  etc)  take  place  on  a

                           Deletes an existing node callback.


       alloc, allocation, free, malloc, memory, realloc