background image
Bionic Buffalo Tech Note #23: The France IDL Compiler: C Language Mapping
Bionic Buffalo Tech Note #23
The France IDL Compiler: C Language Mapping
last revised Monday 2003.07.07
©2003 Bionic Buffalo Corporation. All Rights Reserved.
Tatanka and TOAD are trademarks of Bionic Buffalo Corporation
Introduction
The 
france
 OMG IDL compiler generates source code corresponding to the OMG interface
definition language (IDL) input. The C mapping is based on the C Language Mapping Specification
(OMG formal/99-07-35), as extended by Bionic Buffalo. This Tech Note discusses the C source code
generated by the compiler, compliance with the Specification, ambiguities in the Specification and how
they were resolved, and the extensions made to the Specification by Bionic Buffalo.
The compiler produces code compatible with several different 
ORB
 implementations. It is intended to
be as generic as possible, without sacrificing efficiency.
The information herein corresponds to 
france
 version A.0.5.38. Previous versions did not agree in
some respects. The compiler version has for some time been emitted as a comment in the generated
source code.
The Release Flag
The specification requires that there be a release flag for sequences and for structures representing 
any
types. The release flag is a boolean value which can be tested or set by certain routines:
CORBA_any_set_release()
CORBA_any_get_release()
,
CORBA_sequence_set_release()
, and 
CORBA_sequence_get_release()
. However,
where the specification describes the structures representing sequences and 
any
 types, there is no
description of a release flag in the mapping. There are two ways to interpret this: the specification
gives only partial descriptions of the structures, or the release flags are external to the structures
themselves. 
The specification requires that the initial value of a structure's release flag ought to be 
FALSE
In the description of the structures representing sequences, there is an example of a statically-
initialized structure, with no initialization of a release flag. To assume a release flag internal to the
structure would lead to two difficulties: (1) the complete definition of the structure (with release flag)
Page 1 of 6