OpenWire (library)
Encyclopedia
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
.
OpenWire defines 3 types of pins:
OpenWire defines 2 types of pin lists:
unique for each data type.
and well suited for multi-threading
VCL
component development.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
Dataflow programming VCL
Visual Component Library
VCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...
and FireMonkey(FMX) library that extends the functionality of Delphi, C++ Builder
C++ Builder
C++Builder is a rapid application development environment, developed by Borland and owned by Embarcadero Technologies, for writing programs in the C++ programming language. C++Builder combines the Visual Component Library and IDE written in Delphi with a C++ compiler...
and Lazarus
Lazarus (software)
Lazarus is a free cross-platform IDE which provides a Delphi-like development experience for Pascal and Object Pascal developers. It is developed for, and supported by, the Free Pascal compiler. Since early 2008, Lazarus has been available for Microsoft Windows, several Linux distributions,...
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
LabVIEW
LabVIEW is a system design platform and development environment for a visual programming language from National Instruments. LabVIEW provides engineers and scientists with the tools needed to create and deploy measurement and control systems.The graphical language is named "G"...
, Agilent VEE
Agilent VEE
Agilent VEE is a graphical dataflow programming software development environment from Agilent Technologies for automated test, measurement, data analysis and reporting. VEE originally stood for Visual Engineering Environment and developed by HP designated as HP VEE; it has since been officially...
and Simulink
Simulink
Simulink, developed by MathWorks, is a commercial tool for modeling, simulating and analyzing multidomain dynamic systems. Its primary interface is a graphical block diagramming tool and a customizable set of block libraries. It offers tight integration with the rest of the MATLAB environment and...
.
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 GUIDGlobally Unique Identifier
A globally unique identifier is a unique reference number used as an identifier in computer software. The term GUID also is used for Microsoft's implementation of the Universally unique identifier standard....
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-safeThread-safe
Thread safety is a computer programming concept applicable in the context of multi-threaded programs. A piece of code is thread-safe if it only manipulates shared data structures in a thread-safe manner, which enables safe execution by multiple threads at the same time...
and well suited for multi-threading
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
VCL
Visual Component Library
VCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...
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. |