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:
- Implementation of a facility for the interaction of wrappers
with the language (like
CableTclFacility for Tcl).
- 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.