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;
}