Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tcl_Ensemble(3) 	     Tcl Library Procedures		 Tcl_Ensemble(3)

________________________________________________________________________________

NAME
     Tcl_CreateEnsemble,  Tcl_FindEnsemble,  Tcl_GetEnsembleFlags, Tcl_GetEnsem-
     bleMappingDict,   Tcl_GetEnsembleNamespace,   Tcl_GetEnsembleParameterList,
     Tcl_GetEnsembleUnknownHandler,  Tcl_GetEnsembleSubcommandList, Tcl_IsEnsem-
     ble, Tcl_SetEnsembleFlags, Tcl_SetEnsembleMappingDict, Tcl_SetEnsemblePara-
     meterList, Tcl_SetEnsembleSubcommandList,	Tcl_SetEnsembleUnknownHandler  -
     manipulate ensemble commands

SYNOPSIS
     #include <tcl.h>

     Tcl_Command
     Tcl_CreateEnsemble(interp, name, namespacePtr, ensFlags)

     Tcl_Command
     Tcl_FindEnsemble(interp, cmdNameObj, flags)

     int
     Tcl_IsEnsemble(token)

     int
     Tcl_GetEnsembleFlags(interp, token, ensFlagsPtr)

     int
     Tcl_SetEnsembleFlags(interp, token, ensFlags)

     int
     Tcl_GetEnsembleMappingDict(interp, token, dictObjPtr)

     int
     Tcl_SetEnsembleMappingDict(interp, token, dictObj)

     int									 2
     Tcl_GetEnsembleParameterList(interp, token, listObjPtr)			 2

     int									 2
     Tcl_SetEnsembleParameterList(interp, token, listObj)			 2

     int
     Tcl_GetEnsembleSubcommandList(interp, token, listObjPtr)

     int
     Tcl_SetEnsembleSubcommandList(interp, token, listObj)

     int
     Tcl_GetEnsembleUnknownHandler(interp, token, listObjPtr)

     int
     Tcl_SetEnsembleUnknownHandler(interp, token, listObj)

     int
     Tcl_GetEnsembleNamespace(interp, token, namespacePtrPtr)

ARGUMENTS
     Tcl_Interp *interp (in/out)		   The	interpreter in which the
						   ensemble is to be created  or
						   found.  Also  where error re-
						   sult  messages  are	written.
						   The	 functions  whose  names
						   start  with	 Tcl_GetEnsemble
						   may	have  a NULL for the in-
						   terp, but all other functions
						   must not.

     const char *name (in)			   The name of the ensemble com-
						   mand to be created.

     Tcl_Namespace *namespacePtr (in)		   The namespace  to  which  the
						   ensemble  command  is  to  be
						   bound, or NULL for  the  cur-
						   rent namespace.

     int ensFlags (in)				   An OR'ed set of flag bits de-
						   scribing the basic configura-
						   tion  of  the  ensemble. Cur-
						   rently only one bit has mean-
						   ing,     TCL_ENSEMBLE_PREFIX,
						   which is present when the en-
						   semble  command  should  also
						   match unambiguous prefixes of
						   subcommands.

     Tcl_Obj *cmdNameObj (in)			   A value holding the	name  of
						   the	ensemble command to look
						   up.

     int flags (in)				   An OR'ed  set  of  flag  bits
						   controlling	the  behavior of
						   Tcl_FindEnsemble.   Currently
						   only   TCL_LEAVE_ERR_MSG   is
						   supported.

     Tcl_Command token (in)			   A normal command  token  that
						   refers  to  an  ensemble com-
						   mand, or which  you	wish  to
						   use	for testing as an ensem-
						   ble command	in  Tcl_IsEnsem-
						   ble.

     int *ensFlagsPtr (out)			   Pointer  to	a  variable into
						   which to  write  the  current
						   ensemble flag bits; currently
						   only   the	bit   TCL_ENSEM-
						   BLE_PREFIX is defined.

     Tcl_Obj *dictObj (in)			   A dictionary value to use for
						   the subcommand to implementa-
						   tion command  prefix  mapping
						   dictionary  in  the ensemble.
						   May be NULL	if  the  mapping
						   dictionary is to be removed.

     Tcl_Obj **dictObjPtr (out) 		   Pointer  to	a  variable into
						   which to  write  the  current
						   ensemble mapping dictionary.

     Tcl_Obj *listObj (in)			   A  list  value to use for the
						   list of formal pre-subcommand
						   parameters, the defined  list
						   of subcommands in the dictio-
						   nary  or  the unknown subcom-
						   mand handler command  prefix.
						   May be NULL if the subcommand
						   list  or  unknown handler are
						   to be removed.

     Tcl_Obj **listObjPtr (out) 		   Pointer to  a  variable  into
						   which  to  write  the current
						   list of formal pre-subcommand
						   parameters, the defined  list
						   of subcommands or the current
						   unknown handler prefix.

     Tcl_Namespace **namespacePtrPtr (out)	   Pointer  to	a  variable into
						   which to write the handle  of
						   the	namespace  to  which the
						   ensemble is bound.
________________________________________________________________________________

DESCRIPTION
     An ensemble is a command, bound to some namespace, which consists of a col-
     lection of subcommands implemented by other Tcl commands. The  first  argu-
     ment  to  the  ensemble  command  is  always interpreted as a selector that
     states what subcommand to execute.

     Ensembles are created using Tcl_CreateEnsemble, which takes four arguments:
     the interpreter to work within, the name of the  ensemble	to  create,  the
     namespace	within	the interpreter to bind the ensemble to, and the default
     set of ensemble flags. The result of the function is the command token  for
     the ensemble, which may be used to further configure the ensemble using the
     API described below in ENSEMBLE PROPERTIES.

     Given  the  name  of an ensemble command, the token for that command may be
     retrieved using Tcl_FindEnsemble. If the given command name (in cmdNameObj)
     does not refer to an ensemble command, the result of the function	is  NULL
     and (if the TCL_LEAVE_ERR_MSG bit is set in flags) an error message is left
     in the interpreter result.

     A	command  token	may  be checked to see if it refers to an ensemble using
     Tcl_IsEnsemble. This returns 1 if the token refers to  an	ensemble,  or  0
     otherwise.

   ENSEMBLE PROPERTIES
     Every ensemble has four read-write properties and a read-only property. The
     properties are:

     flags (read-write)
	    The  set  of  flags for the ensemble, expressed as a bit-field. Cur-
	    rently, the only public flag is  TCL_ENSEMBLE_PREFIX  which  is  set
	    when  unambiguous  prefixes  of  subcommands are permitted to be re-
	    solved to implementations as well as exact matches. The flags may be
	    read and written using Tcl_GetEnsembleFlags and Tcl_SetEnsembleFlags
	    respectively. The result of both of those functions is a Tcl  result
	    code  (TCL_OK, or TCL_ERROR if the token does not refer to an ensem-
	    ble).

     mapping dictionary (read-write)
	    A dictionary containing a mapping from subcommand names to lists  of
	    words  to  use as a command prefix (replacing the first two words of
	    the command which are the ensemble command itself and the subcommand
	    name), or NULL if every subcommand is to be mapped	to  the  command
	    with  the  same  unqualified name in the ensemble's bound namespace.
	    Defaults to NULL. May be read and written using  Tcl_GetEnsembleMap-
	    pingDict  and Tcl_SetEnsembleMappingDict respectively. The result of
	    both of those functions is a Tcl result code (TCL_OK,  or  TCL_ERROR
	    if	the  token does not refer to an ensemble) and the dictionary ob-
	    tained from Tcl_GetEnsembleMappingDict should always be  treated  as
	    immutable even if it is unshared.  All command names in prefixes set
	    via Tcl_SetEnsembleMappingDict must be fully qualified.

     formal pre-subcommand parameter list (read-write)
	    A  list  of  formal  parameter names (the names only being used when 2
	    generating error messages) that come at invocation of  the	ensemble 2
	    between  the  name of the ensemble and the subcommand argument. NULL 2
	    (the default) is equivalent to the empty list. May be read and writ- 2
	    ten using  Tcl_GetEnsembleParameterList  and  Tcl_SetEnsembleParame- 2
	    terList respectively. The result of both of those functions is a Tcl 2
	    result  code (TCL_OK, or TCL_ERROR if the token does not refer to an 2
	    ensemble) and the dictionary  obtained  from  Tcl_GetEnsembleParame- 2
	    terList  should  always  be  treated  as immutable even if it is un- 2
	    shared.

     subcommand list (read-write)
	    A list of all the subcommand names for the ensemble, or NULL if this
	    is to be derived from either the keys of the mapping dictionary (see
	    above) or (if that is also NULL) from the set of  commands	exported
	    by	the bound namespace. May be read and written using Tcl_GetEnsem-
	    bleSubcommandList  and  Tcl_SetEnsembleSubcommandList  respectively.
	    The  result of both of those functions is a Tcl result code (TCL_OK,
	    or TCL_ERROR if the token does not refer to  an  ensemble)	and  the
	    list  obtained  from  Tcl_GetEnsembleSubcommandList should always be
	    treated as immutable even if it is unshared.

     unknown subcommand handler command prefix (read-write)
	    A list of words to prepend on the front of any subcommand  when  the
	    subcommand is unknown to the ensemble (according to the current pre-
	    fix  handling rule); see the namespace ensemble command for more de-
	    tails. If NULL, the default behavior -  generate  a  suitable  error
	    message  -	will  be used when an unknown subcommand is encountered.
	    May be read  and  written  using  Tcl_GetEnsembleUnknownHandler  and
	    Tcl_SetEnsembleUnknownHandler respectively. The result of both func-
	    tions  is  a Tcl result code (TCL_OK, or TCL_ERROR if the token does
	    not refer to an ensemble) and the list obtained  from  Tcl_GetEnsem-
	    bleUnknownHandler  should  always be treated as immutable even if it
	    is unshared.

     bound namespace (read-only)
	    The namespace to which the ensemble is bound; when the namespace  is
	    deleted,  so  too  will the ensemble, and this namespace is also the
	    namespace whose list of exported commands is used if both  the  map-
	    ping  dictionary and the subcommand list properties are NULL. May be
	    read using Tcl_GetEnsembleNamespace which returns a Tcl result  code
	    (TCL_OK, or TCL_ERROR if the token does not refer to an ensemble).

SEE ALSO
     namespace(n), Tcl_DeleteCommandFromToken(3)

KEYWORDS
     command, ensemble

Tcl				       8.5			 Tcl_Ensemble(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Tcl_CreateEnsemble.tcl86&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help