Programmer Guide/Shell Items/Instance/SET INSTANCE: Difference between revisions
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
===Calling a member function=== | ===Calling a member function=== | ||
<code>SET <var>instance function</var> [<var>arguments</var>]</code> | <code>SET <var>instance function</var> [<var>arguments</var>]</code> | ||
Call the member function <var>function</var> of the instance. The function must be a member of the instance's class or of one of its base classes (searched in reverse order). | Call the member function <var>function</var> of the instance. The function must be a member of the instance's class or of one of its base classes (searched in reverse order). | ||
<code>SET <var>instance class</var>::<var>function</var> [<var>arguments</var>]</code> | <code>SET <var>instance class</var>::<var>function</var> [<var>arguments</var>]</code> | ||
Call the member function <var>function</var> of class <var>class</var>. The class must be a base class of <var>instance</var>. This call style should be used to call an overridden base-class member function (i.e. reverse search for member function is not performed). | Call the member function <var>function</var> of class <var>class</var>. The class must be a base class of <var>instance</var>. This call style should be used to call an overridden base-class member function (i.e. reverse search for member function is not performed). | ||
<code>SET <var>instance</var> ::<var>function</var> [<var>arguments</var>]</code> | <code>SET <var>instance</var> ::<var>function</var> [<var>arguments</var>]</code> | ||
To call a member function of the parent class without specifying the name of the parent class, the following short command format can be used. | To call a member function of the parent class without specifying the name of the parent class, the following short command format can be used. | ||
On entry into a member function, the following variables are defined:<code>#MAC</code> name of macro (= name of class) | On entry into a member function, the following variables are defined: | ||
<code>#THIS</code> name of the instance item | * <code>#MAC</code> name of macro (= name of class) | ||
<code>#ARGV</code> arguments passed to the member function | * <code>#THIS</code> name of the instance item | ||
* <code>#ARGV</code> arguments passed to the member function | |||
===LOCK=== | ===LOCK=== |
Revision as of 15:01, 22 January 2016
Instance Item | ||
---|---|---|
NEW | SET | ATTRIBUTES |
Calling a member function
SET instance function [arguments]
Call the member function function of the instance. The function must be a member of the instance's class or of one of its base classes (searched in reverse order).
SET instance class::function [arguments]
Call the member function function of class class. The class must be a base class of instance. This call style should be used to call an overridden base-class member function (i.e. reverse search for member function is not performed).
SET instance ::function [arguments]
To call a member function of the parent class without specifying the name of the parent class, the following short command format can be used.
On entry into a member function, the following variables are defined:
#MAC
name of macro (= name of class)#THIS
name of the instance item#ARGV
arguments passed to the member function
LOCK
SET instance LOCK
Lock the instance access. If a instance is locked, only the shell which locked it has access to its content. The instance must be unlocked after finishing the 'critical' processing section.
TRYLOCK
SET instance TRYLOCK [ timeout ] [ /S ]
Try to lock the instance item instance. If no timeout is specified, TRYLOCK
returns immediately. If the caller already *holds* the lock, TRYLOCK
will fail immediately. This makes sense because, since the caller is the owner, it cannot release it whilst its waiting.
- timeout
- If specified,
TRYLOCK
will try to get a lock once per millisecond until it is either successful, or timeout milliseconds have elapsed.
- /S
- If specified, errors will generate warning messages rather than error messages. See The Silent Flag for details.
Return Codes:
0
- an unlocked instance has been successfully locked.
381
- Error: if the instance could not be locked due to it being locked by someone else.
382
- Warning: identical to 381
, except that this returned when the /S flag is specified.
383
- Error: if the instance could not be locked due to it being locked by the caller.
384
- Warning: identical to 383
, except that this returned when the /S flag is specified.
Example:
"SET $#instance TRYLOCK 5000
" will try hard to lock the instance. If it does not succeed within 5000ms (i.e., five seconds), it will fail - but it will not fail earlier.
The TRYLOCK
command is intended for safe multithreading without race conditions occurring
UNLOCK
SET instance UNLOCK
Unlock instance access.