Porting DUCTAPE 1.0 Applications to 2.0 ======================================= This document describes all changes which are necessary to port a DUCTAPE 1.0 application to the new 2.0 API. The main difference between version 1.0 and 2.0 is the support for the PDB 2.0 file format which now supports Fortran besides C and C++. DUCTAPE API changes were kept minimal but some were necessary to include Fortran support. The most visible change is in the DUCTAPE class hierarchy: [1.0] [2.0] ... pdbTemplateItem ... pdbTemplateItem \----> pdbRoutine \----> pdbRoutine | | \----> pdbCRoutine | | \----> pdbFRoutine | | \----> pdbClass \----> pdbGroup | | \----> pdbClass | | \----> pdbModule | | \----> pdbClassField \----> pdbGroupField | | ... ... The 2.0 pdbRoutine class only contains routine features common to Fortran and C/C++. Language specific features are captured by the new classes pdbCRoutine and pdbFRoutine. The new class pdbModule includes F90 modules and derived types. Again, common features between C++ classes/structs/unions and f90 modules/types are represented in a new base class pdbGroup (which boils down to a "group" of items with access rights). pdbClassField was renamed to pdbGroupField to reflect the new terminology. The language of the source code from which the PDB file was generated can be determined with the new function "lang_t PDB::language()" which returns the constants LA_C, LA_CXX, or LA_FORTRAN. Other minor changes which are needed for porting DUCTAPE 1.0 applications to the new 2.0 API: [1.0] [2.0] store_t, ST_xxx routine_t, RO_xxx func_t, FU_xxx rspec_t, RS_xxx class_t, CL_xxx group_t, GR_xxx TY_CLASS TY_GROUP PDB::routinevec PDB::croutinevec PDB::routinemap PDB::croutinemap PDB::getRoutineVec() PDB::getCRoutineVec() PDB::getRoutineMap() PDB::getCRoutineMap() pdbRoutine::storageClass() pdbRoutine::kind() pdbRoutine::covariant...() pdbCRoutine::covariant...() isInline() isInline() isStatic() isStatic() virtuality() virtuality() isCompilerGenerated() isCompilerGenerated() isExplicitCtor() isExplicitCtor() pdbType::argumentTypes() pdbType::arguments() pdbClass::funcMembers() pdbClass::methods() pdbItem::parentClass() pdbItem::parentGroup() const pdbClass* pdbType::isClass() const pdbGroup* pdbType::isGroup()