20: Passing Arguments

  1. Operation arguments are, by default, passed by unprotected reference. That is, the operation receives a reference to the argument's object. The operation may modify the object referred to.
  2. You may specify a passage for each argument to provide added protection
    1. Copied
      1. When an operation is called using a copied argument (specified by the "copied" keyword), the operation copies the object in the argument and works on the copy instead of the original.
    2. Protected/unprotected
      1. Arguments are, by default, unprotected. That is, the operation can modify the object supplied in the argument.
      2. The "protected" keyword provides a protected reference to the object. This protects the object used in the argument so the operation can read the object, but can't modify it.
      3. All attributes of an object for which you hold a protected reference return protected values.
      4. Note that a reference to a locked object's nested objects can only be a protected reference, no matter how you specify the reference. The reference to the locked object itself allows very limited change to the object such as ownership change.
    3. Owned
      1. This passage transfers ownership from the requester to the responder. (Ownership is discussed in detail in the Processes section.)

TS Ref - 26 JUN 1996

Generated by the sweat of Mike Boom's brow.