Artifact 9760bede06607e7bcc83dd18f738136143ac8205:
Wiki page
[
Doc: oo::copy] by
dkf
2016-09-17 11:48:49.
0000: 44 20 32 30 31 36 2d 30 39 2d 31 37 54 31 31 3a D 2016-09-17T11:
0010: 34 38 3a 34 39 2e 38 37 34 0a 4c 20 44 6f 63 3a 48:49.874.L Doc:
0020: 5c 73 6f 6f 3a 3a 63 6f 70 79 0a 4e 20 74 65 78 \soo::copy.N tex
0030: 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 0a 55 20 64 t/x-markdown.U d
0040: 6b 66 0a 57 20 32 35 33 34 0a 3c 68 31 3e 6f 6f kf.W 2534.<h1>oo
0050: 3a 3a 63 6f 70 79 3c 68 31 3e 0d 0a 3c 48 33 3e ::copy<h1>..<H3>
0060: 3c 41 20 4e 41 4d 45 3d 22 4d 32 22 3e 4e 41 4d <A NAME="M2">NAM
0070: 45 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 3c 62 3e 6f E</A></H3>..<b>o
0080: 6f 3a 3a 63 6f 70 79 3c 2f 62 3e 20 26 6d 64 61 o::copy</b> &mda
0090: 73 68 3b 20 63 72 65 61 74 65 20 63 6f 70 69 65 sh; create copie
00a0: 73 20 6f 66 20 6f 62 6a 65 63 74 73 20 61 6e 64 s of objects and
00b0: 20 63 6c 61 73 73 65 73 0d 0a 3c 48 33 3e 3c 41 classes..<H3><A
00c0: 20 4e 41 4d 45 3d 22 4d 33 22 3e 53 59 4e 4f 50 NAME="M3">SYNOP
00d0: 53 49 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 70 61 SIS</A></H3>..pa
00e0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54 63 ckage require Tc
00f0: 6c 4f 4f 3c 42 52 3e 0d 0a 3c 42 52 3e 0d 0a 3c lOO<BR>..<BR>..<
0100: 42 3e 6f 6f 3a 3a 63 6f 70 79 3c 2f 42 3e 3c 49 B>oo::copy</B><I
0110: 3e 20 73 6f 75 72 63 65 4f 62 6a 65 63 74 20 3c > sourceObject <
0120: 2f 49 3e 3f 3c 49 3e 74 61 72 67 65 74 4f 62 6a /I>?<I>targetObj
0130: 65 63 74 3c 2f 49 3e 3f 3c 42 52 3e 0d 0a 3c 48 ect</I>?<BR>..<H
0140: 33 3e 3c 41 20 4e 41 4d 45 3d 22 4d 34 22 3e 44 3><A NAME="M4">D
0150: 45 53 43 52 49 50 54 49 4f 4e 3c 2f 41 3e 3c 2f ESCRIPTION</A></
0160: 48 33 3e 0d 0a 54 68 65 20 3c 42 3e 6f 6f 3a 3a H3>..The <B>oo::
0170: 63 6f 70 79 3c 2f 42 3e 20 63 6f 6d 6d 61 6e 64 copy</B> command
0180: 20 63 72 65 61 74 65 73 20 61 20 63 6f 70 79 20 creates a copy
0190: 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 6f 72 20 of an object or
01a0: 63 6c 61 73 73 2e 20 49 74 20 74 61 6b 65 73 20 class. It takes
01b0: 74 68 65 0d 0a 6e 61 6d 65 20 6f 66 20 74 68 65 the..name of the
01c0: 20 6f 62 6a 65 63 74 20 6f 72 20 63 6c 61 73 73 object or class
01d0: 20 74 6f 20 62 65 20 63 6f 70 69 65 64 2c 20 3c to be copied, <
01e0: 49 3e 73 6f 75 72 63 65 4f 62 6a 65 63 74 3c 2f I>sourceObject</
01f0: 49 3e 2c 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c I>, and optional
0200: 6c 79 0d 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 ly..the name of
0210: 74 68 65 20 6f 62 6a 65 63 74 20 6f 72 20 63 6c the object or cl
0220: 61 73 73 20 74 6f 20 63 72 65 61 74 65 2c 20 3c ass to create, <
0230: 49 3e 74 61 72 67 65 74 4f 62 6a 65 63 74 3c 2f I>targetObject</
0240: 49 3e 2c 20 77 68 69 63 68 20 77 69 6c 6c 20 62 I>, which will b
0250: 65 0d 0a 72 65 73 6f 6c 76 65 64 20 72 65 6c 61 e..resolved rela
0260: 74 69 76 65 20 74 6f 20 74 68 65 20 63 75 72 72 tive to the curr
0270: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 69 66 ent namespace if
0280: 20 6e 6f 74 20 61 6e 20 61 62 73 6f 6c 75 74 65 not an absolute
0290: 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 2e qualified name.
02a0: 0d 0a 49 66 20 3c 49 3e 74 61 72 67 65 74 4f 62 ..If <I>targetOb
02b0: 6a 65 63 74 3c 2f 49 3e 20 69 73 20 6f 6d 69 74 ject</I> is omit
02c0: 74 65 64 2c 20 61 20 6e 65 77 20 6e 61 6d 65 20 ted, a new name
02d0: 69 73 20 63 68 6f 73 65 6e 2e 20 54 68 65 20 63 is chosen. The c
02e0: 6f 70 69 65 64 20 6f 62 6a 65 63 74 20 77 69 6c opied object wil
02f0: 6c 0d 0a 62 65 20 6f 66 20 74 68 65 20 73 61 6d l..be of the sam
0300: 65 20 63 6c 61 73 73 20 61 73 20 74 68 65 20 73 e class as the s
0310: 6f 75 72 63 65 20 6f 62 6a 65 63 74 2c 20 61 6e ource object, an
0320: 64 20 77 69 6c 6c 20 68 61 76 65 20 61 6c 6c 20 d will have all
0330: 69 74 73 20 70 65 72 2d 6f 62 6a 65 63 74 0d 0a its per-object..
0340: 6d 65 74 68 6f 64 73 20 63 6f 70 69 65 64 2e 20 methods copied.
0350: 49 66 20 69 74 20 69 73 20 61 20 63 6c 61 73 73 If it is a class
0360: 2c 20 69 74 20 77 69 6c 6c 20 61 6c 73 6f 20 68 , it will also h
0370: 61 76 65 20 61 6c 6c 20 74 68 65 20 63 6c 61 73 ave all the clas
0380: 73 20 6d 65 74 68 6f 64 73 20 69 6e 0d 0a 74 68 s methods in..th
0390: 65 20 63 6c 61 73 73 20 63 6f 70 69 65 64 2c 20 e class copied,
03a0: 62 75 74 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 but it will not
03b0: 68 61 76 65 20 61 6e 79 20 6f 66 20 69 74 73 20 have any of its
03c0: 69 6e 73 74 61 6e 63 65 73 20 63 6f 70 69 65 64 instances copied
03d0: 2e 0d 0a 3c 50 3e 0d 0a 41 66 74 65 72 20 74 68 ...<P>..After th
03e0: 65 20 3c 49 3e 74 61 72 67 65 74 4f 62 6a 65 63 e <I>targetObjec
03f0: 74 3c 2f 49 3e 20 68 61 73 20 62 65 65 6e 20 63 t</I> has been c
0400: 72 65 61 74 65 64 20 61 6e 64 20 61 6c 6c 20 64 reated and all d
0410: 65 66 69 6e 69 74 69 6f 6e 73 20 6f 66 20 69 74 efinitions of it
0420: 73 0d 0a 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e s..configuration
0430: 20 28 65 2e 67 2e 2c 20 6d 65 74 68 6f 64 73 2c (e.g., methods,
0440: 20 66 69 6c 74 65 72 73 2c 20 6d 69 78 69 6e 73 filters, mixins
0450: 29 20 63 6f 70 69 65 64 2c 20 74 68 65 20 3c 42 ) copied, the <B
0460: 3e 26 6c 74 3b 63 6c 6f 6e 65 64 26 67 74 3b 3c ><cloned><
0470: 2f 42 3e 0d 0a 6d 65 74 68 6f 64 20 6f 66 20 3c /B>..method of <
0480: 49 3e 74 61 72 67 65 74 4f 62 6a 65 63 74 3c 2f I>targetObject</
0490: 49 3e 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b I> will be invok
04a0: 65 64 2c 20 74 6f 20 61 6c 6c 6f 77 20 66 6f 72 ed, to allow for
04b0: 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 6f customization o
04c0: 66 0d 0a 74 68 65 20 63 72 65 61 74 65 64 20 6f f..the created o
04d0: 62 6a 65 63 74 20 73 75 63 68 20 61 73 20 69 6e bject such as in
04e0: 73 74 61 6c 6c 69 6e 67 20 72 65 6c 61 74 65 64 stalling related
04f0: 20 76 61 72 69 61 62 6c 65 20 74 72 61 63 65 73 variable traces
0500: 2e 20 54 68 65 20 6f 6e 6c 79 0d 0a 61 72 67 75 . The only..argu
0510: 6d 65 6e 74 20 67 69 76 65 6e 20 77 69 6c 6c 20 ment given will
0520: 62 65 20 3c 49 3e 73 6f 75 72 63 65 4f 62 6a 65 be <I>sourceObje
0530: 63 74 3c 2f 49 3e 2e 20 54 68 65 20 64 65 66 61 ct</I>. The defa
0540: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 ult implementati
0550: 6f 6e 20 6f 66 20 74 68 69 73 0d 0a 6d 65 74 68 on of this..meth
0560: 6f 64 20 28 69 6e 20 3c 42 3e 3c 41 20 48 52 45 od (in <B><A HRE
0570: 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f 6f F="?name=Doc:+oo
0580: 3a 3a 6f 62 6a 65 63 74 22 3e 6f 6f 3a 3a 6f 62 ::object">oo::ob
0590: 6a 65 63 74 3c 2f 41 3e 3c 2f 42 3e 29 20 6a 75 ject</A></B>) ju
05a0: 73 74 20 63 6f 70 69 65 73 20 74 68 65 20 70 72 st copies the pr
05b0: 6f 63 65 64 75 72 65 73 20 61 6e 64 20 76 61 72 ocedures and var
05c0: 69 61 62 6c 65 73 20 69 6e 20 74 68 65 0d 0a 6e iables in the..n
05d0: 61 6d 65 73 70 61 63 65 20 6f 66 20 3c 49 3e 73 amespace of <I>s
05e0: 6f 75 72 63 65 4f 62 6a 65 63 74 3c 2f 49 3e 20 ourceObject</I>
05f0: 74 6f 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 to the namespace
0600: 20 6f 66 20 3c 49 3e 74 61 72 67 65 74 4f 62 6a of <I>targetObj
0610: 65 63 74 3c 2f 49 3e 2e 20 49 66 0d 0a 74 68 69 ect</I>. If..thi
0620: 73 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 64 6f s method call do
0630: 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 20 es not return a
0640: 72 65 73 75 6c 74 20 74 68 61 74 20 69 73 20 73 result that is s
0650: 75 63 63 65 73 73 66 75 6c 20 28 69 2e 65 2e 2c uccessful (i.e.,
0660: 20 61 6e 20 65 72 72 6f 72 0d 0a 6f 72 20 6f 74 an error..or ot
0670: 68 65 72 20 6b 69 6e 64 20 6f 66 20 65 78 63 65 her kind of exce
0680: 70 74 69 6f 6e 29 20 74 68 65 6e 20 74 68 65 20 ption) then the
0690: 3c 49 3e 74 61 72 67 65 74 4f 62 6a 65 63 74 3c <I>targetObject<
06a0: 2f 49 3e 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 /I> will be dele
06b0: 74 65 64 20 61 6e 64 20 61 6e 0d 0a 65 72 72 6f ted and an..erro
06c0: 72 20 72 65 74 75 72 6e 65 64 2e 0d 0a 3c 50 3e r returned...<P>
06d0: 0d 0a 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 ..The result of
06e0: 74 68 65 20 3c 42 3e 6f 6f 3a 3a 63 6f 70 79 3c the <B>oo::copy<
06f0: 2f 42 3e 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c /B> command will
0700: 20 62 65 20 74 68 65 20 66 75 6c 6c 79 2d 71 75 be the fully-qu
0710: 61 6c 69 66 69 65 64 20 6e 61 6d 65 20 6f 66 0d alified name of.
0720: 0a 74 68 65 20 6e 65 77 20 6f 62 6a 65 63 74 20 .the new object
0730: 6f 72 20 63 6c 61 73 73 2e 0d 0a 3c 48 33 3e 3c or class...<H3><
0740: 41 20 4e 41 4d 45 3d 22 4d 35 22 3e 45 58 41 4d A NAME="M5">EXAM
0750: 50 4c 45 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a 54 PLES</A></H3>..T
0760: 68 69 73 20 65 78 61 6d 70 6c 65 20 63 72 65 61 his example crea
0770: 74 65 73 20 61 6e 20 6f 62 6a 65 63 74 2c 20 63 tes an object, c
0780: 6f 70 69 65 73 20 69 74 2c 20 6d 6f 64 69 66 69 opies it, modifi
0790: 65 73 20 74 68 65 20 73 6f 75 72 63 65 20 6f 62 es the source ob
07a0: 6a 65 63 74 2c 20 61 6e 64 0d 0a 74 68 65 6e 20 ject, and..then
07b0: 64 65 6d 6f 6e 73 74 72 61 74 65 73 20 74 68 61 demonstrates tha
07c0: 74 20 74 68 65 20 63 6f 70 69 65 64 20 6f 62 6a t the copied obj
07d0: 65 63 74 20 69 73 20 69 6e 64 65 65 64 20 61 20 ect is indeed a
07e0: 63 6f 70 79 2e 0d 0a 3c 50 3e 0d 0a 3c 50 52 45 copy...<P>..<PRE
07f0: 3e 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 72 65 61 >oo::object crea
0800: 74 65 20 73 72 63 0d 0a 6f 6f 3a 3a 6f 62 6a 64 te src..oo::objd
0810: 65 66 69 6e 65 20 73 72 63 20 6d 65 74 68 6f 64 efine src method
0820: 20 6d 73 67 20 7b 7d 20 7b 70 75 74 73 20 66 6f msg {} {puts fo
0830: 6f 7d 0d 0a 3c 42 3e 6f 6f 3a 3a 63 6f 70 79 3c o}..<B>oo::copy<
0840: 2f 42 3e 20 73 72 63 20 64 73 74 0d 0a 6f 6f 3a /B> src dst..oo:
0850: 3a 6f 62 6a 64 65 66 69 6e 65 20 73 72 63 20 6d :objdefine src m
0860: 65 74 68 6f 64 20 6d 73 67 20 7b 7d 20 7b 70 75 ethod msg {} {pu
0870: 74 73 20 62 61 72 7d 0d 0a 73 72 63 20 6d 73 67 ts bar}..src msg
0880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 49 <I
0890: 3e 3c 66 6f 6e 74 20 73 69 7a 65 3d 22 2b 31 22 ><font size="+1"
08a0: 3e 26 23 38 35 39 34 3b 3c 2f 66 6f 6e 74 3e 20 >→</font>
08b0: 70 72 69 6e 74 73 20 26 71 75 6f 74 3b 62 61 72 prints "bar
08c0: 26 71 75 6f 74 3b 3c 2f 49 3e 0d 0a 64 73 74 20 "</I>..dst
08d0: 6d 73 67 20 20 20 20 20 20 20 20 20 20 20 20 20 msg
08e0: 20 3c 49 3e 3c 66 6f 6e 74 20 73 69 7a 65 3d 22 <I><font size="
08f0: 2b 31 22 3e 26 23 38 35 39 34 3b 3c 2f 66 6f 6e +1">→</fon
0900: 74 3e 20 70 72 69 6e 74 73 20 26 71 75 6f 74 3b t> prints "
0910: 66 6f 6f 26 71 75 6f 74 3b 3c 2f 49 3e 3c 2f 50 foo"</I></P
0920: 52 45 3e 0d 0a 3c 48 33 3e 3c 41 20 4e 41 4d 45 RE>..<H3><A NAME
0930: 3d 22 4d 36 22 3e 53 45 45 20 41 4c 53 4f 3c 2f ="M6">SEE ALSO</
0940: 41 3e 3c 2f 48 33 3e 0d 0a 3c 42 3e 3c 41 20 48 A></H3>..<B><A H
0950: 52 45 46 3d 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b REF="?name=Doc:+
0960: 6f 6f 3a 3a 63 6c 61 73 73 22 3e 6f 6f 3a 3a 63 oo::class">oo::c
0970: 6c 61 73 73 3c 2f 41 3e 3c 2f 42 3e 2c 20 3c 42 lass</A></B>, <B
0980: 3e 3c 41 20 48 52 45 46 3d 22 3f 6e 61 6d 65 3d ><A HREF="?name=
0990: 44 6f 63 3a 2b 6f 6f 3a 3a 64 65 66 69 6e 65 22 Doc:+oo::define"
09a0: 3e 6f 6f 3a 3a 64 65 66 69 6e 65 3c 2f 41 3e 3c >oo::define</A><
09b0: 2f 42 3e 2c 20 3c 42 3e 3c 41 20 48 52 45 46 3d /B>, <B><A HREF=
09c0: 22 3f 6e 61 6d 65 3d 44 6f 63 3a 2b 6f 6f 3a 3a "?name=Doc:+oo::
09d0: 6f 62 6a 65 63 74 22 3e 6f 6f 3a 3a 6f 62 6a 65 object">oo::obje
09e0: 63 74 3c 2f 41 3e 3c 2f 42 3e 0d 0a 3c 48 33 3e ct</A></B>..<H3>
09f0: 3c 41 20 4e 41 4d 45 3d 22 4d 37 22 3e 4b 45 59 <A NAME="M7">KEY
0a00: 57 4f 52 44 53 3c 2f 41 3e 3c 2f 48 33 3e 0d 0a WORDS</A></H3>..
0a10: 63 6c 6f 6e 65 2c 20 63 6f 70 79 2c 20 64 75 70 clone, copy, dup
0a20: 6c 69 63 61 74 69 6f 6e 2c 20 6f 62 6a 65 63 74 lication, object
0a30: 0a 5a 20 61 35 33 64 38 61 37 63 38 34 38 63 63 .Z a53d8a7c848cc
0a40: 32 33 30 34 62 34 63 31 62 38 37 38 35 66 30 32 2304b4c1b8785f02
0a50: 61 37 30 0a a70.