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

FreeBSD Manual Pages


home | help
copy(n)				TclOO Commands			       copy(n)

       oo::copy	- create copies	of objects and classes

       package require TclOO

       oo::copy	sourceObject ?targetObject?

       The oo::copy command creates a copy of an object	or class. It takes the
       name of the object or class to be copied, sourceObject, and  optionally
       the  name of the	object or class	to create, targetObject, which will be
       resolved	relative to the	current	namespace if not an absolute qualified
       name.  If targetObject is omitted, a new	name is	chosen.	The copied ob-
       ject will be of the same	class as the source object, and	will have  all
       its  per-object methods copied. If it is	a class, it will also have all
       the class methods in the	class copied, but it will not have any of  its
       instances copied.

       After the targetObject has been created and all definitions of its con-
       figuration (e.g., methods, filters, mixins) copied, the <cloned>	method
       of  targetObject	will be	invoked, to allow for the customization	of the
       created object. The only	argument given will be sourceObject.  The  de-
       fault  implementation  of  this	method (in oo::object) just copies the
       procedures and variables	in the namespace of sourceObject to the	 name-
       space  of  targetObject.	 If  this method call does not return a	result
       that is successful (i.e., an error or other kind	of exception) then the
       targetObject will be deleted and	an error returned.

       The  result of this command will	be the fully-qualified name of the new
       object or class.

       This example creates an object, copies it, modifies the source  object,
       and then	demonstrates that the copied object is indeed a	copy.

       oo::object  create  src	oo::objdefine  src  method  msg	 {} {puts foo}
       oo::copy	src dst	oo::objdefine src method msg {}	 {puts	bar}  src  msg
       -_ prints "bar" dst msg		    -_ prints "foo"

       oo::class(n), oo::define(n), oo::object(n)

       clone, copy, duplication, object

TclOO				      0.1			       copy(n)


Want to link to this manual page? Use this URL:

home | help