ChainLink

--- Technical Computing Software ---

Screenshots, Feature Overview, Frequently Asked Questions
Download and Installation, Documentation , Developers

What is it?
ChainLink is cross-platform data processing and visualization software that allows full and convenient access to C++ libraries, classes, functions, and Qt4 Widgets within a Matlab/Scilab/Octave style scripting environment.

What is novel about ChainLink?

While Matlab and the free alternatives to Matlab do provide tools for accessing C/C++ functions from within scripts, the process is not natural, as the user must provide complex wrappers, converting their data to built-in data types. ChainLink, on the other hand, aims to make the process painless. In fact, the source code for every ChainLink function (whether built-in or user-defined) is accessible from within the user interface itself via an internal source code editor. And although ChainLink uses a standard collection of fundamental data types (for real and complex numbers, strings, vectors, matrices, and arrays), the user is free to define arbitrary C++ classes as a data type. It's as easy as one line...

    //[datatype] myCPlusPlusClass

... just provide some access functions to your class, and you can call your code from within the ChainLink console, or from within scripts.

For example, this procedure was used to interface a number of Qt4 Widgets into ChainLink (Qt is a powerful cross-platform C++ toolkit for developing graphical user interfaces -- see trolltech.com). This allows the user access to the Qt graphics widgets from within ChainLink using simple Matlab syntax! For example, typing:

    >> information('Information', 'Here is a popup dialog box');

produces the following dialog box

which is a Qt widget. The following code (contained in the qwidget_library) is all that was required to implement this "information" function:

    In qwidget_library.h :

        //[function] information
        //input: string title, string message
        //output:
        //description: execute QMessageBox::information
        bool information(string title, string message);

    In qwidget_library.cpp

        #include <QMessageBox>

        bool information(string title, string message) {
            QMessageBox::information(0,title.data,message.data);
            return true;
        }