Introduction

Babel has had two C++ bindings in its pre 1.0 history. This chapter deals with the newer of the two as the older one will no longer be supported in 1.0. However, it is helpful to be familiar with the history to understand why things are transitioning in the runup to a 1.0 release.

The original C++ binding was available since Babel's first public release (0.5.0 in July 2001). However, over the years of use and increasing features in Babel, it became clear that there were several deficiencies with the original C++ binding. Many of these deficiencies couldn't couldn't be remedied with simple patches... the entire C++ binding needed to be rethought from the ground up. Because C++ is arguably the most heavily used langauge binding, work began on a second C++ binding called the Utah C++ binding or simply ``UCxx'' as thanks to Steve Parker at University of Utah who took the first crack at actually implementing the new binding. The UCxx backend was released in Babel 0.10.0 in January 2005.

Within months, it was decided that the UCxx binding would become the only C++ binding for Babel 1.0. So in 0.11.0 the original C++ binding was renamed DCxx (for deprecated C++). The UCxx binding was also tweeked so the generated files had distinct suffices from the DCxx files. The UCxx binding already has all of its symbols generated in the ucxx namespace to avoid conflict with DCxx symbols. When Babel 1.0 is released, the DCxx binding will be gone, as will the ucxx namespace. The UCxx binding itself will be renamed Cxx, and the transition will be complete.

To maximize code's resilience to the forthcoming changes, we recommend that users take advantage of the SIDL_USE_UCXX, UCXX, and UCXX_LOCAL preprocessor macros. They are defined appropriately for the 0.11 release and will be undefined for the Babel 1.0 release. SIDL_USE_UCXX is meant to be used in #ifdef SIDL_USE_CXX/#endif blocks. If SIDL_USE_UCXX is defined, it means that the UCxx symbols are all in the ucxx namespace. Use UCXX where you would normally have ::ucxx in your code, and use UCXX_LOCAL where you would normally have ucxx:: in your code.



babel-0.11.0
users_guide Last Modified 2005-12-20

http://www.llnl.gov/CASC/components
components@llnl.gov