diff options
Diffstat (limited to 'lib/ic/doc/src/ch_introduction.xml')
-rw-r--r-- | lib/ic/doc/src/ch_introduction.xml | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/lib/ic/doc/src/ch_introduction.xml b/lib/ic/doc/src/ch_introduction.xml new file mode 100644 index 0000000000..898d2a732a --- /dev/null +++ b/lib/ic/doc/src/ch_introduction.xml @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1998</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Using the IC Compiler</title> + <prepared></prepared> + <docno></docno> + <date>2002-08-02</date> + <rev>PB1</rev> + <file>ch_introduction.xml</file> + </header> + + <section> + <title>Introduction</title> + <p>The IC application is an IDL compiler implemented in Erlang. + The IDL compiler generates client stubs and server skeletons. + Several back-ends are supported, and they fall into three main + groups.</p> + <p>The first group consists of a CORBA back-end:</p> + <taglist> + <tag>IDL to Erlang CORBA</tag> + <item> + <p>This back-end is for CORBA communication and implementation, + and the generated code uses the CORBA specific protocol for + communication between clients and servers. See the + <em>Orber</em> application User's Guide and manuals for + further details.</p> + </item> + </taglist> + <p>The second group consists of a simple Erlang back-end:</p> + <taglist> + <tag>IDL to plain Erlang</tag> + <item> + <p>This back-end provides a very simple Erlang client + interface. It can only be used within an Erlang node, + and the communication between client and "server" is + therefore in terms of ordinary function calls. </p> + <p>This back-end can be considered a short-circuit version of + the IDL to Erlang gen_server back-end (see further below).</p> + </item> + </taglist> + <p>The third group consists of backends for Erlang, C, and + Java. The communication between clients and servers is by the + Erlang distribution protocol, facilitated by + <em>erl_interface</em> and <em>jinterface</em> for C and Java, + respectively.</p> + <p>All back-ends of the third group generate code compatible with + the Erlang gen_server behavior protocol. Thus generated client + code corresponds to <c>call()</c> or <c>cast()</c> of an Erlang + <c>gen_server</c>. Similarly, generated server code corresponds + to <c>handle_call()</c> or <c>handle_cast()</c> of an Erlang + <c>gen_server</c>.</p> + <p>The back-ends of the third group are: + </p> + <taglist> + <tag>IDL to Erlang gen_server</tag> + <item> + <p>Client stubs and server skeletons are generated. Data types + are mapped according to the IDL to Erlang mapping described + in the <em>Orber User's Guide</em>.</p> + <p></p> + </item> + <tag>IDL to C client</tag> + <item> + <p>Client stubs are generated. The mapping of data types is + described further on in the C client part of this guide.</p> + </item> + <tag>IDL to C server</tag> + <item> + <p>Server skeletons are generated. The mapping of data types is + described further on in the C server part of this guide.</p> + </item> + <tag>IDL to Java</tag> + <item> + <p>Client stubs and server skeletons are generated. The mapping + of data types is described further on in the Java part of + this guide.</p> + </item> + </taglist> + </section> + + <section> + <title>Compilation of IDL Files</title> + <p>The IC compiler is invoked by executing the generic <c>erlc</c> + compiler from a shell:</p> + <code type="none"> +%> erlc +'{be,BackEnd}' File.idl + </code> + <p>where <c>BackEnd</c> is according to the table below, and + <c>File.idl</c> is the IDL file to be compiled.</p> + <table> + <row> + <cell align="left" valign="middle"><em>Back-end</em></cell> + <cell align="left" valign="middle"><c>BackEnd</c>option</cell> + </row> + <row> + <cell align="left" valign="middle">IDL to CORBA</cell> + <cell align="left" valign="middle"><c>erl_corba</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to CORBA template</cell> + <cell align="left" valign="middle"><c>erl_template</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to plain Erlang</cell> + <cell align="left" valign="middle"><c>erl_plain</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to Erlang gen_server</cell> + <cell align="left" valign="middle"><c>erl_genserv</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to C client</cell> + <cell align="left" valign="middle"><c>c_client</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to C server</cell> + <cell align="left" valign="middle"><c>c_server</c></cell> + </row> + <row> + <cell align="left" valign="middle">IDL to Java</cell> + <cell align="left" valign="middle"><c>java</c></cell> + </row> + <tcaption>Compiler back-ends and options</tcaption> + </table> + <p>For more details on IC compiler options consult the ic(3) manual page.</p> + </section> +</chapter> + |