next up previous contents
Next: Template body: definitions Up: QSAS Template Language (QTPL) Previous: Plug-in declaration   Contents

Subsections

Plug-in argument list

Argument syntax

Entry in argument list
comprises three tokens inout datatype varname.

Input/output keyword
inout may have the value INPUT or OUTPUT. INPUT arguments must not be modified by the plug-in; OUTPUT arguments are created and returned by it. Note that all inputs must appear before any outputs in the argument list.

Datatype keyword
datatype indicates the type of data-object or value accepted or returned by that argument. Some datatypes include a variety of data-objects, and the QPLUGUI can perform implicit type-conversions as described below in §4.4.2, and summarised in Table 1.

Variable-name token
varname is used to refer to this argument only within the body of the template, and is independent of any names used within the plug-in source-code or elsewhere. It must be a valid QTPL variable-name as defined above.

Argument datatype

The QTPL argument datatype keywords are summarised in Table 1. For INPUT arguments some testing of the datatype will be performed against the types understood by QSAS as listed in table 1. For OUTPUT arguments the datatype information is used only for labelling the QPLUGUI slots, so incorrect OUTPUT datatypes may not be detected by the software but could confuse the user.

Output objects are placed automatically on the working list, with the exception of TIME_INTERVAL objects that are placed on the Time Interval List.

In all instances the input object available to the plug-in is of type QdObject and must be narrowed to the type expected. Because of the wide range of objects that may be narrowed to the requested data type, the plug-in code is responsible for performing the required narrow and test, and to ensure that xrefs such as FRAME or TIME_TAGS are present when required.

The datatypes ANY_DATA_OBJECT and ANY_TIME_SERIES are provided so that a single plug-in may operate analagously on a variety of types of data-object: e.g. a time-averaging plug-in might have an ANY_TIME_SERIES input and an ANY_DATA_OBJECT output argument, as well as other inputs to specify the details of the time-averaging, enabling it to time-average many different kinds of time-series and to return a new data-object of an appropriate kind to contain the result in each case.

Inputs requiring either a sequence of time tags, TIMETAGS or a time interval, TIME_INTERVAL, will accept any object with associated TIME_TAGS xref as well as time sequence or interval objects.

In addition, if an input is specified as ANY_DATA_OBJECT then the associated input slot will accept a numeric value typed into the input slot. This is converted into a FLOAT type data object before being passed to the plug-in.

Single numeric quantities FLOAT and INTEGER, and strings STRING accept both QSAS data objects of the appropriate type and values typed directly into the input slot. The interface between QSAS and the plug-in still uses a QSAS data-object of the appropriate type, but the Plug-in Window handles such quantities as text strings instead of requiring the user to first create a data-object. Thus the user can type a number directly into a FLOAT or INTEGER input slot, and text into a STRING input slot.


to
datatype in file.qtpl QSAS data-object type NOTES
  accepted in INPUT slot  
ANY_DATA_OBJECT QdObject All qdos objects inherit from QdObject
  float value or float numeric value
ANY_TIME_SERIES QdRScalarSeq with TIME_TAGS Xref
  QdRMatrixSeq  
MATRIX_TIME_SERIES QdRMatrixSeq with TIME_TAGS Xref
VECTOR_TIME_SERIES QdRMatrixSeq with TIME_TAGS & Frame Xrefs
SCALAR_TIME_SERIES QdRScalarSeq with TIME_TAGS Xref
MATRIX_SERIES QdRMatrixSeq  
VECTOR_SERIES QdRMatrixSeq with Frame Xref
SCALAR_SERIES QdRScalarSeq  
TIMETAGS QdTimeSeq  
  QdRMatrixSeq uses TIME_TAGS Xref
  QdRScalarSeq uses TIME_TAGS Xref
TIME_INTERVAL QdTimeInterval  
  QdTimeSeq uses start/end times
  QdRMatrixSeq uses TIME_TAGS Xref
  QdRScalarSeq uses TIME_TAGS Xref
FLOAT QdRScalar  
  float value numeric value typed in INPUT
INTEGER QdRScalar  
  float value numeric value (cast to int)
MATRIX QdRMatrix  
STRING QdString  
  string literal string typed in INPUT
Table 1: QTPL datatypes, valid QPLUGUI inputs, and QDOS data-object types.


next up previous contents
Next: Template body: definitions Up: QSAS Template Language (QTPL) Previous: Plug-in declaration   Contents
Anthony Allen 2005-11-07