OpenWire (library)

OpenWire is an open-source dataflow programming library that extends the functionality of Embarcadero Delphi and C++ Builder by providing pin type component properties. The properties can be connected to each other. The connections can be used to deliver data or state information between the pins, simulating the functionality of LabVIEW, Agilent VEE and Simulink. OpenWire is available for Visual Component Library (VCL) and FireMonkey (FMX).

History
The project started in 1997 as an attempt for visual design of text parsers. Later it was used for designing signal processing libraries, and was expanded to support any data type.

Pins
Pins form the connections between the components. OpenWire defines 4 types of pins:
 *   usually provides data. Can connect to one or more  and to one.
 *   usually receives data. Can be connected to one.
 *   usually receives data. Can be connected to one or more.
 *   usually is used to share state between components. Can be connected to one or more  or , and to one.

Pin Lists
Pin lists can contain and group pins. OpenWire defines 2 types of pin lists:
 *   contains pins but is not responsible to create or destroy them.
 *   contains pins and is responsible to create or destroy them.

Data Types
Two pins in OpenWire can connect and exchange data only if they support compatible data types. Each pin can support one or more data types. The data types are distinguished by GUID unique for each data type.

Format Converters
The latest version of OpenWire supports automatic data conversion. If two pins can't connect directly due to incompatible data types, a data format converter can be used automatically to convert the data between the pins. The developers can create and register format converters associated with different data types.

Multi-threading
OpenWire is designed as thread-safe and well suited for multi-threading VCL and FireMonkey component development.

Version history
The following is a rough outline of product release information.

Future development
A graphical OpenWire editor is under development. The latest version of the editor is available from the OpenWire Homepage.