Menu

Coding Minsky

High Performance Coder

Overview

Minsky is written in C++, in a Model-View-Controller pattern, with a TCL script providing the GUI View and Controller parts, and the C++ implementation providing the model part of the MVC pattern.

TCL/Tk GUI toolkit

TCL provides not only the usual set of GUI widgets one expects for a modern GUI programming environment, and an event driven programming environment, but also a canvas widget, which is used represent and manipulate the ODE model in a graphical manner, and a spreadsheet widget through the use of TkTable. Additional graphical elements can be added to the Canvas widget by means of EcoLab's CairoImage class, which allows arbitrary graphical elements to be constructed using the Cairo library.

Classdesc reflection

Minsky uses Classdesc (from EcoLab) to provide reflection of the C++ classes to XML and to the TCL programming environment.

RAII - Resource Acquisition Is Initialisation

The C++ code uses a modern RAII style of coding managing object lifetimes. Contributed code that does not correctly manage the object lifecycle will need to be corrected before being accepted.

Object Browser

EcoLab also supplies the ability to query the state of any C++ object via the "object browser", acting as an in build debugger. This is a complementary tool to using a regular symbolic debugger. Similarly, "command" allows any TCL command to be entered on the command line (if minsky is being run from the command line). This can be useful for trying out different TCL commands.

Testing

Regression tests (in the form of unit tests and integration tests) exist in the test directory. Tests are written as bash shell scripts, exhibiting a particular protocol which works within the Aegis test framework, but can be run independently by running the scripts directly. Unit tests can be added to the unit test executable, making use of the UnitTest++ test harness. This is run from test/00/t0001a.sh.

Doxygen annotated code

Source code automatically annotated by doxygen can be found at http://minsky.sourceforge.net/doxydoc/html/ . An overall UML class design document can be found here


Related

Wiki: Home

Discussion


Log in to post a comment.