Copy and DeepCopy (Record functions): Difference between revisions
Jump to navigation
Jump to search
m (1 revision) |
mNo edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Template:Record:DeepCopy subtitle}} | {{Template:Record:Copy and DeepCopy subtitle}} | ||
<var> | <var>Copy</var> is a function that makes an exact copy of a <var>Record</var> object. | ||
<var>DeepCopy</var> performs the identical function. <var>Record</var> objects are always copyable and "deep-copyable" (as these terms are described in [[Copying objects#The Object class copy methods|"The Object class copy methods"]]). | |||
==Syntax== | ==Syntax== | ||
{{Template:Record:DeepCopy syntax}} | {{Template:Record:DeepCopy syntax}} | ||
===Syntax terms=== | ===Syntax terms=== | ||
<table class="syntaxTable"> | <table class="syntaxTable"> | ||
<tr><th>% | <tr><th>%outRecord</th> | ||
<td>A <var>Record</var> object created by this method that contains a copy of the method object. | <td>A <var>Record</var> object created by this method that contains a copy of the method object.</td></tr> | ||
</td></tr> | |||
<tr><th> | <tr><th>record</th> | ||
<td>A <var>Record</var> object variable. The variable can be | <td>A <var>Record</var> object variable. The variable can be <var>Null</var>, in which case the output object will also be <var>Null</var>.</td></tr> | ||
</td></tr> | |||
<tr><th>lockstrength</th> | <tr><th>lockstrength</th> | ||
<td>A value of the <var>LockStrength</var> enumeration that is the lock strength to give to the instantiated <var>Record</var> object. Options are: <var>None</var>, <var>Share</var>, or <var>Exclusive</var>, as described in [[New (Recordset constructor)|"New (Recordset constructor)"]]. This is an optional parameter, and it defaults to the lock strength of the method object. | <td>A value of the <var>LockStrength</var> enumeration that is the lock strength to give to the instantiated <var>Record</var> object. Options are: <var>None</var>, <var>Share</var>, or <var>Exclusive</var>, as described in [[New (Recordset constructor)|"New (Recordset constructor)"]]. This is an optional parameter, and it defaults to the lock strength of the method object. </td></tr> | ||
</td></tr> | |||
<tr><th><var>LoopLockStrength</var></th> | <tr><th><var>LoopLockStrength</var></th> | ||
<td>The lock strength to be used for loops on the copied <var>Record</var>. This is an optional, [[Notation conventions for methods#Named parameters|name required]], parameter, and it defaults to the <var>LoopLockStrength</var> of the method object <var>Record</var>. See [[Record class#LoopLockStrength for Records|"LoopLockStrength for Records"]]. | <td>The lock strength to be used for loops on the copied <var>Record</var>. This is an optional, [[Notation conventions for methods#Named parameters|name required]], parameter, and it defaults to the <var>LoopLockStrength</var> of the method object <var>Record</var>. See [[Record class#LoopLockStrength for Records|"LoopLockStrength for Records"]]. </td></tr> | ||
</table> | |||
==Usage notes== | ==Usage notes== | ||
<ul> | <ul> | ||
<li>The | <li>Before <var class="product">Sirius Mods</var> 7.0, | ||
of <var>Record</var> objects is to facilitate passing of these objects to and | <var>Copy</var> did not allow setting of the target lock strength. | ||
So, before <var class="product">Sirius Mods</var> 7.0, | |||
to make a <var>Record</var> object copy with a different lock strength, the <var>New</var> or | |||
<var>CurrentRecord</var> (inside a <var>For</var> record loop) methods had to be used. | |||
<li>Since a <var>Record</var> object and its copy reference the same underlying | |||
record, there generally isn't a good reason to make a copy of a <var>Record</var> | |||
object — it makes more sense to just assign the reference to the | |||
<var>Record</var> object. | |||
The copy functionality for <var>Records</var> is mainly for the support of <var>DeepCopy</var> | |||
of <var>Record</var> objects, the main value of which is to facilitate passing of these objects to and | |||
from [[Daemon class|daemons]]. | from [[Daemon class|daemons]]. | ||
<li>The following example illustrates the use of the <var>DeepCopy</var> function: | <li>The following example illustrates the use of the <var>DeepCopy</var> function: | ||
<p class="code"> %firstRec is object record in file geeks | <p class="code">%firstRec is object record in file geeks | ||
%currentRec is object record in file geeks | |||
... | |||
%currentRec = %firstRec:deepcopy | |||
</p> | </p> | ||
</ul> | </ul> | ||
==See also== | ==See also== | ||
{{Template:Record:DeepCopy footer}} | {{Template:Record:Copy and DeepCopy footer}} |
Latest revision as of 17:06, 7 November 2012
Copy or deep copy this Record object (Record class)
Copy is a function that makes an exact copy of a Record object.
DeepCopy performs the identical function. Record objects are always copyable and "deep-copyable" (as these terms are described in "The Object class copy methods").
Syntax
%outRecord = record:DeepCopy[( [lockStrength], - [LoopLockStrength= lockStrength])]
Syntax terms
%outRecord | A Record object created by this method that contains a copy of the method object. |
---|---|
record | A Record object variable. The variable can be Null, in which case the output object will also be Null. |
lockstrength | A value of the LockStrength enumeration that is the lock strength to give to the instantiated Record object. Options are: None, Share, or Exclusive, as described in "New (Recordset constructor)". This is an optional parameter, and it defaults to the lock strength of the method object. |
LoopLockStrength | The lock strength to be used for loops on the copied Record. This is an optional, name required, parameter, and it defaults to the LoopLockStrength of the method object Record. See "LoopLockStrength for Records". |
Usage notes
- Before Sirius Mods 7.0, Copy did not allow setting of the target lock strength. So, before Sirius Mods 7.0, to make a Record object copy with a different lock strength, the New or CurrentRecord (inside a For record loop) methods had to be used.
- Since a Record object and its copy reference the same underlying record, there generally isn't a good reason to make a copy of a Record object — it makes more sense to just assign the reference to the Record object. The copy functionality for Records is mainly for the support of DeepCopy of Record objects, the main value of which is to facilitate passing of these objects to and from daemons.
- The following example illustrates the use of the DeepCopy function:
%firstRec is object record in file geeks %currentRec is object record in file geeks ... %currentRec = %firstRec:deepcopy