GCCXML node representing a type andhaving "members" attribute.
The "members" attribute contains the
ids of the fields that compose the actual object referred by Current
node that can be a struct, a union or a C++ class.
Note that Namespace nodes also have a "members" attribute that
conceptually different since they are modelled as Liberty clusters and
do not belong to a single file.
TODO: the above reference to
STANDARD_C_LIBRARY_TYPES creates requires to wrap
standard C library using a file called
"standard-c-library.gcc-xml"; shall another name
be allowerd for such a fundamental library?
When a_described is a valid class name (i.e. "CLASS_NAME_01") a_description is added into class_descriptions; when a_described is a valid class name with a feature name with a dot in the middle (like "ANOTHER_CLASS.my_feature_12_foo"); adds
a_description is added into feature_descriptions in the latter.
Emit a reference wrapper for Current C composed type.
A reference wrapper handles the structure as a memory area referred by a pointer.
An expanded wrapper is an expanded Eiffel type that is the actual C structure. This require the usage of "external types"
TODO: the above reference to
STANDARD_C_LIBRARY_TYPES creates requires to wrap
standard C library using a file called
"standard-c-library.gcc-xml"; shall another name
be allowerd for such a fundamental library?
an_id without the type qualifier used by GccXml to mark the
identification labels.
"const", "reference" and "volatile" qualifier are represented in a
CvQualifiedType node adding 'c', 'r' and 'v' to the identifies. i.e.
if "int" has id "_422" a "const int foo" argument type will be of
type CvQualifiedType with it "_422c". The same rule is used - as far
as I know - also for reference and volatile types.
Result is identical to an_id if it does not end with 'c', 'r' and
'v'; otherwise it is a copy of an_id with the last character ('c',
'r' or 'v') removed.
is "-- Th file has been automatically created combining the output file
-- of wrappers_generator #(1)
-- with the differences patches found into #(2)
-- Any change will be lost by the next execution of the tool.
"
Leading and
trailing spaces are removed. Lines starting with "--" are ignored
as comments. Class descriptions are in the form "CLASS_NAME
Description text", feature descriptions are "CLASS_NAME.feature
Description text".
When a_described is a valid class name (i.e. "CLASS_NAME_01") a_description is added into class_descriptions; when a_described is a valid class name with a feature name with a dot in the middle (like "ANOTHER_CLASS.my_feature_12_foo"); adds
a_description is added into feature_descriptions in the latter.
Leading and trailing spaces are removed from a_described; comments -
starting with "--" are skipped; See read_comments for further
informations.
The outer dictionary is indexed by
classname, the inner one by feature name. So to get the description of
feature foo in class BAR you shall invoke
feature_descriptions.at("BAR").at("foo")
Translate a_name content into a proper feature name for the
Gnu-Eiffel language.
"CamelCase" is translated into "camel_case",
"ENOO" is translated into "enoo". Eventual underscores in front of
a_name are removed: "__foo" becomes "foo"; symbols starting with
underscores folloed by a number are prefixed with "a_"; reserved
language names and names of features of class ANY are escaped.
TODO: handle in a fairly
a_name content translated into a proper argument placeholder for
the Gnu-Eiffel language.
"CamelCase" is translated into
"a_camel_case", "ENOO" is translated into "an_enoo". Eventual
underscores in front of a_name are removed: "__foo" becomes
"a_foo". See also eiffel_feature.
A valid, adapted identifier for an Eiffel feature labelled
a_name.
Can be either a_name itself or a new string
containing an adapatation. Reserved words and those of
features belonging to ANY are "escaped", appending a_suffix.
The following "static" definition of the features of ANY
somehow unacceptable in a perfect world. Yet computing it each
and every time would enlarge the memory usage of the program
quite a lot, not counting the runtime requirements. We will do
it when we will cache compilation results.
The following "static" definition of the features of ANY
somehow unacceptable in a perfect world. Yet computing it each
and every time would enlarge the memory usage of the program
quite a lot, not counting the runtime requirements. We will do
it when we will cache compilation results.
This exception occurs when Void is passed as the expression
to inspect ("inspect on STRING only).
This exception also occurs when the inspected value selects no branch (when the keyword "else"
not used, one "when" branch _must_ be selected). Some value which is not one of the inspect
constants, if there is no Else_part
A value that is equal to Current if it is between the limits set by
a_min and a_max.
Otherwise it's a_min if Current is smaller or a_max if Current
is greater
It's a shortcut for Current.min(a_max).max(a_min) also known as
"clamp" in the widespread C library Glib