summaryrefslogtreecommitdiffstats
path: root/doc/copy.n
diff options
context:
space:
mode:
Diffstat (limited to 'doc/copy.n')
-rw-r--r--doc/copy.n34
1 files changed, 23 insertions, 11 deletions
diff --git a/doc/copy.n b/doc/copy.n
index 291d2fc..100d564 100644
--- a/doc/copy.n
+++ b/doc/copy.n
@@ -4,10 +4,8 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: copy.n,v 1.1 2008/05/31 11:42:12 dkf Exp $
-'\"
-.so man.macros
.TH copy n 0.1 TclOO "TclOO Commands"
+.so man.macros
.BS
'\" Note: do not modify the .SH NAME line immediately below!
.SH NAME
@@ -19,8 +17,8 @@ package require TclOO
\fBoo::copy\fI sourceObject \fR?\fItargetObject\fR?
.fi
.BE
-
.SH DESCRIPTION
+.PP
The \fBoo::copy\fR command creates a copy of an object or class. It takes the
name of the object or class to be copied, \fIsourceObject\fR, and optionally
the name of the object or class to create, \fItargetObject\fR, which will be
@@ -28,18 +26,33 @@ resolved relative to the current namespace if not an absolute qualified name.
If \fItargetObject\fR is omitted, a new name is chosen. The copied object 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. The
-contents of the source object's private namespace \fIwill not\fR be copied; it
-is up to the caller to do this. The result of this command will be the
-fully-qualified name of the new object or class.
+the class copied, but it will not have any of its instances copied.
+.PP
+.VS
+After the \fItargetObject\fR has been created and all definitions of its
+configuration (e.g., methods, filters, mixins) copied, the \fB<cloned>\fR
+method of \fItargetObject\fR will be invoked, to allow for customization of
+the created object such as installing related variable traces. The only
+argument given will be \fIsourceObject\fR. The default implementation of this
+method (in \fBoo::object\fR) just copies the procedures and variables in the
+namespace of \fIsourceObject\fR to the namespace of \fItargetObject\fR. If
+this method call does not return a result that is successful (i.e., an error
+or other kind of exception) then the \fItargetObject\fR will be deleted and an
+error returned.
+.VE
+.PP
+The result of the \fBoo::copy\fR command will be the fully-qualified name of
+the new object or class.
.SH EXAMPLES
+.PP
This example creates an object, copies it, modifies the source object, and
then demonstrates that the copied object is indeed a copy.
+.PP
.CS
oo::object create src
-oo::define src method msg {} {puts foo}
+oo::objdefine src method msg {} {puts foo}
\fBoo::copy\fR src dst
-oo::define src method msg {} {puts bar}
+oo::objdefine src method msg {} {puts bar}
src msg \fI\(-> prints "bar"\fR
dst msg \fI\(-> prints "foo"\fR
.CE
@@ -47,7 +60,6 @@ dst msg \fI\(-> prints "foo"\fR
oo::class(n), oo::define(n), oo::object(n)
.SH KEYWORDS
clone, copy, duplication, object
-
.\" Local variables:
.\" mode: nroff
.\" fill-column: 78