You are here: Start » Programming Reference » Types of Filters

Types of Filters

Read before: Introduction to Data Flow Programming.

Most filters are functional, i.e. their outputs depend solely on the input values. Some filters however can store information between consecutive iterations to compute aggregate results, communicate with external devices or generate a loop in the program. Depending on the side effects they cause, filters are classified as:

  • Pure Function
    A filter which computes the output values always from and only from the input values. Typical examples: AddIntegers, SmoothImage_Gauss.
  • Loop Accumulator
    A filter which stores information between consecutive iterations. Its output values can be computed from input values that have appeared in this iteration as well as in all previous iterations. Typical examples: LastMultipleObjects, AddIntegers_OfLoop.
  • I/O Function
    A filter which exchanges information with elements external to the program. Typical examples: GenICam_SetDigitalOutputs, DAQmx_ConfigureTiming.
  • Loop Generator
    A filter which inserted to a program makes it work in a loop. Typical examples: EnumerateIntegers, Loop.
  • I/O Loop Generator
    A filter which inserted to a program makes it work in a loop and, like an I/O Function, exchanges information with external elements. Typical examples: WebCamera_GrabImage, GigEVision_GrabImage.


The icon depicting the filter type is displayed in the Program Editor at the top-left corner of the filter's icon:

Visualization of the filter types in the Program Editor.

Remark: The state of Loop Accumulators and Loop Generators actually belongs to the containing Task macrofilter. The filters are reset only when the execution enters the Task and then it is updated in all iterations.


Here is a list of constraints related to some of the filter types:

  • Loop generators cannot be executed in the array mode.
  • Loop generators, loop accumulators and I/O functions cannot be re-executed when the program is paused.
Previous: Conditional Execution Next: Generic Filters