Difference between revisions of "Externals"

From Liberty Eiffel Wiki
Jump to navigation Jump to search
(Category: Book)
(prefer plug_in over java)
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Category:Book]]
 
[[Category:Book]]
   
  +
''Externals'' build on top of a standard Eiffel mechanisn. This mechanisn permits calling code in a language different from Eiffel.
*** Please translate the French page
 
  +
*** thanks!
 
  +
You will find below the current list of ''external'' specifications supported by SmartEiffel.
  +
  +
== external "C" ==
  +
  +
This specification permits calling C code from Eiffel. This mechanisn is described in [[Bibliography#ETL_1992|''Eiffel: The Language'']].
  +
  +
Some examples are available in the tutorial, <TT>tutorial/external/C</TT>.
  +
  +
This mechanisn 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 [[Bibliography#ETL_1992|''Eiffel: The Language'']].
  +
  +
Some examples are available in the tutorial, <TT>tutorial/external/C++</TT>.
  +
  +
This mechanism is only available with [[compile_to_c]].
  +
  +
This mechanism has since been supplanted with plugins (see below).
  +
  +
== external "Java" ==
  +
  +
This specification permits calling Java code from Eiffel.
  +
  +
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).
  +
  +
== external "plug_in" ==
  +
  +
This specification is particularly utilized y the SmartEiffel standard libraries. This form is preferred to ''external "C"'' and ''external "Java"''.
  +
  +
Examples are available throughout the standard library.
  +
  +
A [[plugins|dedicated page]] is devoted to this functionality.
  +
  +
== external "built_in" ==
  +
  +
This specification is reserved for the SmartEiffel compiler. 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.

Revision as of 12:56, 24 July 2006


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

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

external "C"

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

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

This mechanisn 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 "Java"

This specification permits calling Java code from Eiffel.

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

This mechanism is only available with compile_to_jvm.

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

external "plug_in"

This specification is particularly utilized y the SmartEiffel 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 SmartEiffel compiler. 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.