Home

Sponsors

Download

Install

Running

Examples

Tcl Scripts

News

Future Work

Copyright

Contributing

CABLE is a completely open-source project. We invite any level of contribution, ranging from bug reports to implementation of support for a new language. If you are interested in contributing to CABLE, send email to the mailing list at cable@public.kitware.com.

Plans for the Future

CABLE is a very young tool, but we feel it has the potential to grow into a mature, robust system for automatic wrapping of C++ code. The current support for the Tcl language demonstrates that such a system is possible.

Additional Languages

Most of the framework for using CABLE to generate wrappers for new languages is already in place. Support for a new language requires:
  1. Implementation of a facility for the interaction of wrappers with the language (like CableTclFacility for Tcl).
  2. Implementation of a generator for the language.
We are interested in adding support for the languages listed below. Feel free to suggest additional languages.

Improving Current Implementation

The configuration and use of CABLE is relatively simple in comparison to writing Tcl wrapper packages by hand. Generated Tcl packages are powerful, easy to use, and support nearly everything that can be implemented in C++ classes. However, the internal implementation of CABLE could use some improvement:
  • Generated packages are usually quite large due to the per-argument type conversion support in method invocation. There may be room for improvement with a new design.
  • How a generator is to be implemented is not well-defined. The Tcl generator is hard to follow because of the poor representation previously mentioned.
Other parts of CABLE are much more clean, and can be used as examples for new implementations of the portions listed above. There is always room for some improvement, though:
  • The CxxTypes library is small and simple. Its purpose is well-defined (represent C++ types), and its implementation has changed little since the original version. However, support for C++ type conversion rules has yet to be fully and correctly implemented.
  • The CableTclFacility has been re-organized and re-implemented several times, but has finally settled down on a clean design. Overload resolution, however, is still a hack implementation that works in many cases, but not all. A real implementation awaits the full implementation of type conversion rules in the CxxTypes library.

Documentation

This web page is currently the only documentation for CABLE. We would like to improve this situation:
  • Most of the source code is commented using doxygen-style comments. However, there is currently no doxygen configuration or web page with the doxygen-generated documentation.
  • A document describing the internal details of various portions of the tool would be helpful for developers looking to contribute.

DART Dashboard

There is no better way to keep software working than to have a rigorous suite of tests. The DART testing dashboard provides a facility for distrubited testing on a nightly basis. We plan to create a DART dashboard and corresponding set of tests for CABLE.