Difference between revisions of "Externals"

From Liberty Eiffel Wiki
Jump to navigation Jump to search
m
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
[[Category: Interfacing]]
 
See "External Types".
 
See "External Types".
   
Line 13: Line 14:
 
This mechanism is only available with [[compile_to_c]].
 
This mechanism is only available with [[compile_to_c]].
   
This mechanism has since been supplanted with plugins (see below).
+
This mechanism has since been supplanted with [[plugins]] (see below).
   
 
== external "C++" ==
 
== external "C++" ==
Line 23: Line 24:
 
This mechanism is only available with [[compile_to_c]].
 
This mechanism is only available with [[compile_to_c]].
   
This mechanism has since been supplanted with plugins (see below).
+
This mechanism has since been supplanted with [[plugins]] (see below).
   
 
== external "plug_in" ==
 
== external "plug_in" ==
Line 35: Line 36:
 
== external "built_in" ==
 
== 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.
+
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, <TT>infix "#+"</TT> in the class [[library_class:INTEGER|<TT>INTEGER</TT>]] is directly translated in C by a <TT>+</TT>, and in Java by the <TT>iadd</TT> bytecode.
 
For example, <TT>infix "#+"</TT> in the class [[library_class:INTEGER|<TT>INTEGER</TT>]] is directly translated in C by a <TT>+</TT>, and in Java by the <TT>iadd</TT> bytecode.
 
   
 
== external types ==
 
== external types ==
   
A mechanism for embedding [[external types]] from the underlying language is being designed for the 2.4 release.
+
A mechanism for embedding [[external types]] from the underlying language is being designed for a future release.
   
 
== external "Java" - currently not supported ==
 
== external "Java" - currently not supported ==
   
This specification permits calling Java code from Eiffel.
+
This specification would permit calling Java code from Eiffel. Some examples used to be available in the tutorial, <TT>tutorial/external/Java</TT>. This mechanism would only be available with [[compile_to_jvm]], which currently is not supported.
 
Some examples are available in the tutorial, <TT>tutorial/external/Java</TT>.
 
 
This mechanism is only available with [[compile_to_jvm]].
 
   
This mechanism has since been supplanted with plugins (see below).
+
This mechanism has since been supplanted with [[plugins]] (see below).

Latest revision as of 12:35, 30 July 2024

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).