OpenWire (library)

OpenWire (library)
OpenWire
OpenWireLogo.gif
OpenWire logo
Stable release 5.0 / September 2, 2011; 57 days ago (2011-09-02)
Type Libraries
License OpenWire License
Website http://www.openwire.org/

The OpenWire is an open source Dataflow programming VCL and FireMonkey(FMX) library that extends the functionality of Delphi, C++ Builder and Lazarus 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.

Contents

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 3 types of pins:

  • SourcePin usually provides data. Can connect to one or more SinkPins and to one StatePin.
  • SinkPin usually received data. Can be connected to one SourcePin.
  • MultiSinkPin usually received data. Can be connected to one or more SourcePin.
  • StatePin usually is used to share state between components. Can be connected to one or more StatePins or SinkPins, and to one SourcePin.

Pin Lists

Pin lists can contain and group pins. OpenWire defines 2 types of pin lists:

  • PinList contains pins but is not responsible to create or destroy them.
  • PinListOwner 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 component development.

Version history

The following is a rough outline of product release information.

Date Version Significant changes
08/31/2001 1.2 Official release.
09/04/2001 1.3 Small fixes.
11/21/2001 1.4 Minor changes.
02/16/2002 1.5 Improved multiple data type per pin support.
02/23/2002 1.6 Delphi 6.0 Support.
04/14/2002 1.7 C++ Builder 6.0 Support.
05/09/2002 1.8 Improved and cleanup release.
04/13/2003 2.0 Added StatePin and dispatchers support.
05/15/2003 2.1 Maintenance release.
08/27/2003 2.2 Maintenance release.
01/03/2004 2.3 Complex data type added.
12/02/2004 2.4 Added multithreading support. Delphi 2005 support.
06/22/2005 2.5 Improved Multithreading.
02/22/2006 2.6 Minor improvements.
01/04/2007 3.0 Added support for add on editors(Graphical).
10/25/2007 3.1 Fixed loading from Frames.
03/14/2009 4.0 Added Format Converters. Added Lazarus support for Windows, and Linux.
09/23/2009 4.3 Added Delphi and C++ Builder 2010 support.
05/07/2010 4.5 Added TOWMultiSinkPins.
09/02/2011 5.0 Added Delphi and C++ Builder XE, XE2 and FireMonkey support. 64 bit compatible.
10/01/2011 5.0.1 Maintenance release.

Future development

A graphical OpenWire editor is under development. A preview release of the editor is available from the OpenWire Homepage.

OpenWire graphical editor installed as Delphi 7 PlugIn

External links