Externals

From Liberty Eiffel Wiki
Revision as of 12:51, 5 March 2016 by Hzwakenberg (talk | contribs) (→‎external types)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

See "External Types".

Externals build on top of a standard Eiffel mechanism. This mechanism permits calling code in a language different from Eiffel.

You will find below the current list of external specifications supported by Liberty.

external "C"

This specification permits calling C code from Eiffel. This mechanism is described in Eiffel: The Language.

Some examples are available in the tutorial, tutorial/external/C.

This mechanism is only available with compile_to_c.

This mechanism has since been supplanted with plugins (see below).

external "C++"

This specification permits calling C++ code from Eiffel. This mechanism is described in Eiffel: The Language.

Some examples are available in the tutorial, tutorial/external/C++.

This mechanism is only available with compile_to_c.

This mechanism has since been supplanted with plugins (see below).

external "plug_in"

This specification is particularly utilized by the Liberty standard libraries. This form is preferred to external "C" and external "Java".

Examples are available throughout the standard library.

A dedicated page is devoted to this functionality.

external "built_in"

This specification is reserved for the compiler and its base libraries. It is not usable outside of very specific cases unique to compile_to_c and compile_to_jvm. These cases are the "building blocks" that produce specialized output code depending on the code generator being used.

For example, infix "#+" in the class INTEGER is directly translated in C by a +, and in Java by the iadd bytecode.

external types

A mechanism for embedding external types from the underlying language is being designed for a future release.

external "Java" - currently not supported

This specification would permit calling Java code from Eiffel. Some examples used to be available in the tutorial, tutorial/external/Java. This mechanism would only be available with compile_to_jvm, which currently is not supported.

This mechanism has since been supplanted with plugins (see below).