Primitive operators
A primitive operator is an operator that is implemented in the C++ or Java™ and that includes an operator model that describes the syntax and semantics of the operator.
The result of expanding all composite operators is a stream graph where each vertex is a primitive operator instance. Primitive operators are written in a native language, taking advantage of the performance and productivity of traditional languages for straight-line code. The runtime system calls the primitive operator to process input tuples, and the primitive operator calls the runtime system to submit output tuples. In operator invocations, primitive operators behave the same as composite operators, attaching streams to ports, passing parameters, defining windows, and so on.
Although all primitive operators behave the same on the invocation side, they can follow different styles on the implementation side: with or without runtime reflection, and with or without compile-time specialization. These styles give the authors of primitive operators choices for trading off performance, generality, and usability. In particular, runtime reflection improves the generality of an operator by allowing it to work in different circumstances. Compile-time specialization also improves generality, and also leads to higher performance than runtime reflection, because the code is customized once statically instead of repeatedly checking a condition dynamically. Finally, an operator that does not use runtime reflection or compile-time customization is easiest to write, gaining usability at the cost of generality and possibly performance.
Unlike composite operators, which can be public or private depending on the modifier in the definition, all primitive operators are public by default. If a primitive operator is not intended to be visible, do not index it in the toolkit.