Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages

RedHat 9 (Linux i386) - man page for configbody (redhat section n)

configbody(n)				    [incr Tcl]				    configbody(n)

NAME
       configbody - change the "config" code for a public variable

SYNOPSIS
       configbody className::varName body

DESCRIPTION
       The  configbody	command  is  used  outside of an [incr Tcl] class definition to define or
       redefine the configuration code associated with a public variable.  Public  variables  act
       like  configuration  options  for an object.  They can be modified outside the class scope
       using the built-in configure method.  Each variable can have a bit of "config" code  asso-
       ciate with it that is automatically executed when the variable is configured.  The config-
       body command can be used to define or redefine this body of code.

       Like the body command, this facility allows a class definition to  have	separate  "inter-
       face"  and  "implementation" parts.  The "interface" part is a class command with declara-
       tions for methods, procs, instance variables and common variables.   The  "implementation"
       part is a series of body and configbody commands.  If the "implementation" part is kept in
       a separate file, it can be sourced again and again as bugs are fixed, to support  interac-
       tive  development.   When  using  the  "tcl" mode in the emacs editor, the "interface" and
       "implementation" parts can be kept in the same file; as bugs are fixed, individual  bodies
       can be highlighted and sent to the test application.

       The  name  "className::varName" identifies the public variable being updated.  If the body
       string starts with "@", it is treated as the symbolic name for a C procedure.   Otherwise,
       it is treated as a Tcl command script.

       Symbolic  names for C procedures are established by registering procedures via Itcl_Regis-
       terC().	This is usually done in  the  Tcl_AppInit()  procedure,  which	is  automatically
       called  when  the  interpreter  starts  up.   In  the  following  example,  the	procedure
       My_FooCmd() is registered with the symbolic name "foo".	This procedure can be  referenced
       in the configbody command as "@foo".  int Tcl_AppInit(interp)
	   Tcl_Interp *interp;	   /* Interpreter for application. */ {
	   if (Itcl_Init(interp) == TCL_ERROR) {
	       return TCL_ERROR;
	   }

	   if (Itcl_RegisterC(interp, "foo", My_FooCmd) != TCL_OK) {
	       return TCL_ERROR;
	   } }

EXAMPLE
       In the following example, a "File" class is defined to represent open files.  Whenever the
       "-name" option is configured, the existing file is closed, and a new file is opened.  Note
       that the "config" code for a public variable is optional.  The "-access" option, for exam-
       ple, does not have it.  class File {
	   private variable fid ""

	   public variable name ""
	   public variable access "r"

	   constructor {args} {
	       eval configure $args
	   }
	   destructor {
	       if {$fid != ""} {
		   close $fid
	       }
	   }

	   method get {}
	   method put {line}
	   method eof {} }

       body File::get {} {
	   return [gets $fid] } body File::put {line} {
	   puts $fid $line } body File::eof {} {
	   return [::eof $fid] }

       configbody File::name {
	   if {$fid != ""} {
	       close $fid
	   }
	   set fid [open $name $access] }

       # # See the File class in action: # File x

       x configure -name /etc/passwd while {![x eof]} {
	   puts "=> [x get]" } delete object x

KEYWORDS
       class, object, variable, configure

itcl					       3.0				    configbody(n)


All times are GMT -4. The time now is 09:53 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password