This document provides a very high-level overview of some of the
facilities avilable in the RGCCTranslationUnit package
and some of the possible uses or applications of these tools.
For a more example-oriented description of how to use some
of the functions in this package, see
At its simplest, the package provides (via a Perl module and the
RSPerl package) a mechanism for reading into R the contents of a TU
(Translation Unit) file generated by gcc or g++. This means that we
can manipulate the detailed descriptions of arbitrary C/C++ code from
within R. The package tries to provide higher-level facilities to
work with the individual nodes from the TU file. Rather, it provides
functionality to find the routines, the class and other data type
definitions, enumerations, non-local variables and so on.
These functions include
All of these are intended to provide either the raw nodes of interest,
or a simple description of the relevant native code construct, e.g. a
routine. We build on these to turn them into R-level, complete
In addition to these functions to find particular common types of
nodes, there are also low-level generic functions for traversing the
node list/graph. The main ones of these are
nodeIterator getAll and
One can use these to search for different
code characteristics, e.g. all assignments
or calls to other routines.
Given the node identifying a C++ class or a routine, we want more
complete descriptions of the entire concept without having to walk to
the sub-graph of nodes for that entity. The function
resolveType is used to resolve the different elements
such as fields within a structure, parameters within a routine, etc.
and create an R-level description which can be used independently of
the TU nodes in Perl.
(One can save these R objects and restore them in a subsequent
session without having to use RSPerl and re-read the
Additionally, it allows us to process the body of routines and methods