Why Neo
The neoclassic specification follows the CCA design pattern and the SIDL definitions of cca.sidl, but its direct binding is to C++ only. The binding features boost shared pointers, pure virtual functions and interface classes, and allows Ports to use all C++ language features (templates in particular). This is in contrast to the Babel C++ bindings
which cannot support arbitrarily-typed C++ function arguments.
You may wish to use this C++-only binding of CCA if:
- You want to have strongly-typed C++-only Port interfaces.
- You don't have a strong Java/Python interoperability requirement.
- You must port to somewhere Babel can't go (fewer places every day).
- You simply prefer C++.
- Your project build cannot support the massive glue code management characteristic of Babel.
- You have minimal or simple interactions with Fortran code.
Why Not Neo
There are those who believe Neo is the quintessence of software evil.
You should avoid Neo if:
- You hate C++.
- You want to write object-oriented C and Fortran with the full inheritance model Babel provides.
- You must integrate a lot of FORTRAN interfaces with multidimensional arrays in your code.
- You want your code to be trivially portable to other Babel-based CCA frameworks than Ccaffeine.
- You must have 2-way bindings to Python and/or Java.
Created by: baallan
last modification: Thursday 21 of July, 2005 [21:07:18 UTC] by baallan
The original document is available at http://www.cca-forum.org/wiki/tiki-index.php?page=WhyNeo