Called to convert numbers and arrays automatically in to workspaces.
| WORKSPACE_COERCE() | something=Any | convert "something" into a workspace (if possible) |
![]()
The default procedure definition and the calculation of errors for this procedure is shown below. This routine is called whenever a mixed type expression involving workspaces requires to convert the NON workspace parameter into a workspace. The result will always be a workspace
This is procedure is best not changed without a good understanding of how it works. It is not likely to be necessary to alter this when defining a new type of workspace.
PROCEDURE workspace_coerce; PARAMETERS something; RESULT wres
LOCAL self
# assign self to be the current workspace object to allow sizing & copying to the new one
%( gXself _ line at: 1 )%
wres=fields() # new a workspace
# these cases shouldn't be able to happen
IF is_a(something, "workspace") OR is_a(something, "workspacearray")
printen "Coercion failure - workspace(array) -> workspace"
ELSE
wres = self # copy all workspace fields
wres.ylabel = "(dimensionless)"
fill wres.e 0.0
wres.y = fill(wres.y, 0.0) + something # use array coercion to fill the workspace
ENDIF
ENDPROCEDURE