C++ operator model

An operator model is an XML document that describes the basic properties of a primitive operator.

Primitive operator developers are tasked with providing operator models that describe the basic syntactic and semantic properties of the new operators that they want to add to the SPL language. The major properties that can be specified with the operator model are shown in the following list:

  • Parameters of the operator (for example, the Join operator has a match parameter)
  • Custom enumerations to be used as types for configuring certain parameters (for example, In ‘param format: csv', csv is a custom enumeration literal)
  • Input and output port cardinality (for example the Join operator requires two input ports)
  • Input and output port tuple mutability (for example, for efficiency purposes under operator fusion, an operator might want to modify its input tuples and might allow downstream operators to modify its output tuples)
  • Punctuation modes that are associated with the input/output ports (for example, the Functor operator has a punctuation-preserving output port with respect to window marker punctuation)
  • Output port attribute assignment modes of the operator (for example, using custom output functions as in the Aggregate operator or plain as in the Functor operator or no output assignments as in a Filter operator)
  • Custom output functions to be used for configuring the output attribute assignments (for example, in ‘output OutStream: maxVal = Max(val);', Max is a custom output function with a function signature of <ordered T> T Max(T))
  • Library dependencies of the operator (for example, an image-processing operator might depend on the library libpng)