'\"
'\" Copyright 1991-1998 by Bell Labs Innovations for Lucent Technologies.
'\"
'\" Permission to use, copy, modify, and distribute this software and its
'\" documentation for any purpose and without fee is hereby granted, provided
'\" that the above copyright notice appear in all copies and that both that the
'\" copyright notice and warranty disclaimer appear in supporting documentation,
'\" and that the names of Lucent Technologies any of their entities not be used
'\" in advertising or publicity pertaining to distribution of the software
'\" without specific, written prior permission.
'\"
'\" Lucent Technologies disclaims all warranties with regard to this software,
'\" including all implied warranties of merchantability and fitness.  In no event
'\" shall Lucent Technologies be liable for any special, indirect or
'\" consequential damages or any damages whatsoever resulting from loss of use,
'\" data or profits, whether in an action of contract, negligence or other
'\" tortuous action, arising out of or in connection with the use or performance
'\" of this software.  
'\"
'\"
.so man.macros
.TH Blt_TreeCreate 3 BLT_VERSION BLT "BLT Library Procedures"
.BS
.SH NAME
Blt_TreeCreate \- Create tree data object.
.SH SYNOPSIS
.nf
\fB#include <bltTree.h>\fR
.sp
int 
\fBBlt_TreeCreate\fR(\fIinterp\fR, \fIname\fR, \fItokenPtr\fR)
.fi
.SH ARGUMENTS
.AS Tcl_Interp *interp
.AP Tcl_Interp *interp in
Interpreter to report results back to.  
.AP "const char" *name  in
Name of the new tree.  Can be qualified by a namespace.
.AP Blt_Tree *tokenPtr out
If not NULL, points to location to store the client tree token.
.BE
.SH DESCRIPTION
.PP
This procedure creates a C-based tree data object and optionally
returns a token to it.  The arguments are as follows:
.TP 1i
\fIinterp\fR
Interpreter to report results back to.  If an error occurs, then
interp->result will contain an error message.
.TP 1i
\fIname\fR
Name of the new tree object.  You can think of \fIname\fR as
the memory address of the object.  It's a unique name that identifies
the tree object.  No tree object \fIname\fR
can already exist.  \fIName\fR can be qualified by a namespace such
as \fBfred::myTree\fR.  If no namespace qualifier is used, the tree
will be created in the current namespace, not the global namespace.
If a qualifier is present, the namespace must already exist.
.TP 1i
\fItokenPtr\fR
Holds the returned token.  \fITokenPtr\fR points to a location
where it is stored. Tree tokens are used to work with the tree object.  
If NULL, no token is allocated.  You can later use 
\fBTcl_TreeGetToken\fR to obtain a token.
.PP
The new tree data object created will initially contain only a root
node.  You can add new nodes with \fBBlt_TreeCreateNode\fR.
.PP
Optionally a token for the tree data object is returned.  Tree data
objects can be shared.  For example, the \fBtree\fR and
\fBhiertable\fR commands may be accessing the same tree data object.
Each client grabs a token that is associated with the tree.  When all
tokens are released (see \fBBlt_TreeReleaseToken\fR) the tree data
object is automatically destroyed.
.PP
.SH RETURNS
A standard Tcl result is returned.  If TCL_ERROR is returned, then
\fIinterp->result\fR will contain an error message.  The following
errors may occur:
.IP \(bu 3
There already exists a tree by the same name as \fIname\fR. You can
use \fBTcl_TreeExists\fR to determine if a tree exists beforehand.
.IP \(bu
The tree name is prefixed by a namespace that doesn't exist.  If you
qualified the tree name with a namespace, the namespace must exist.
Unlike Tcl procs and variables, the namespace is not automatically
created for you.
.IP \(bu
Memory can't be allocated for the tree or token.
.SH EXAMPLE
The following example creates a new 
.CS
Blt_Tree token;

if (Blt_TreeCreate(interp, "myTree", &token) != TCL_OK) {
    return TCL_ERROR;
}
printf("tree is %s\\n", Blt_TreeName(token));
.CE
.SH KEYWORDS
Tcl_TreeGetToken, Tcl_TreeExists, Tcl_TreeReleaseToken
