Patch Number : 021
Product : ST-Developer v8
Obsoletes : none
Prerequisites: none
Description : expfront class generation fixes
======================================================================
CONTENTS OF THIS README:
Description
Download and Install Instructions
Patch Contents
======================================================================
DESCRIPTION:
This place corrects several issues with the expfront C++ class generation
in ST-Developer v8. In particular, this patch corrects the following four
issue numbers:
#5242: C++ gen with -schema does not emit keystone ext types
#5253: select elems not capitalized with -names sdai
#5254: prim types not recognized in working set
#5255: guard ifdefs missing from cxx files
The patched compiler can be called with the -version option, and will
return a value of "8.0.1". Each of the corrected issues are described
below:
ISSUE #5242
When used with the -schema option, the compiler generates only the
definitions for the given schema. This is the correct behavior, but
there was no way to force the generation of aggregates of built-in
types (like list of list of real) because those types belong to a
schema called 'keystone_extensions' that doesn't actually appear in
the EXPRESS.
This patch makes the compiler aware of this special schema, so that
you can generate only the builtin aggregates by calling the compiler
with the -schema option and a schema name of 'keystone_extensions'.
ISSUE #5253
When generating classes with the terse sdai name style (-names sdai)
the compiler did not use the correct naming convention for the member
functions of select types. For example, the member functions for a
select which contained a named_unit type would be:
int is_named_unit();
void _named_unit (Named_unit *);
Named_unit * _named_unit()
This patch makes the compiler emit the correct functions (which were
the functions emitted by the v7 compiler) which are:
int is_Named_unit();
void _Named_unit (Named_unit *);
Named_unit * _Named_unit()
ISSUE #5254
When generating classes with a working set, the C++ generator was not
properly recognizing defined types, so these types were coming out as
RoseObject* instead of their underlying primitive types (int, double,
char*, etc.)
The short term fix for this was to list the defined types in your
working set file, but this patch corrects the type recognition so that
you only need to list entity types in your working set.
ISSUE #5255
In the v8 release, the generated classes were streamlined to improve
compile speed. Unnecessary constructs were removed wherever possible,
including an ifndef/define guard around .cxx files. As it turns out,
some customers were using this to conditionally define within included
header files. This patch reintroduces the guard for .cxx files.
======================================================================
DOWNLOAD AND INSTALL INSTRUCTIONS
There is a several versions of this patch available -- one for each
architecture that ST-Developer supports. They are all available for
FTP on the STEP Tools ftp server (ftp.steptools.com).
UNIX:
The UNIX versions of the patch are available in the in the following files
located in ftp://ftp.steptools.com/pub/st_dev/patches.
AIX patch_021_aix.zip
HPUX patch_021_hpux.zip
IRIX patch_021_irix.zip
Linux patch_021_linux.zip
OSF patch_021_osf.zip
Solaris patch_021_solaris.zip
Windows patch_021_i86_win.zip
Each patch is a zipfile containing these instructions and a new
expfront executable. To install, simply unzip the patch and copy the
new expfront binary into your ST-Developer bin directory. You may
want to keep a backup of the original compiler.
FOR WINDOWS:
% unzip patch_021_i86_win.zip
% cd patch_021_i86_win
% rename C:\steptools_8.0\bin\expfront.exe C:\steptools_8.0\bin\expfront.orig
% copy expfront C:\steptools_8.0\bin
FOR UNIX:
% unzip patch_021_.zip
% cd patch_021_
% mv $ROSE/bin/expfront $ROSE/bin/expfront.orig
% cp expfront $ROSE/bin