diff options
Diffstat (limited to 'lib/ic/doc/src/ch_erl_plain.xml')
-rw-r--r-- | lib/ic/doc/src/ch_erl_plain.xml | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/lib/ic/doc/src/ch_erl_plain.xml b/lib/ic/doc/src/ch_erl_plain.xml deleted file mode 100644 index 27387d1624..0000000000 --- a/lib/ic/doc/src/ch_erl_plain.xml +++ /dev/null @@ -1,176 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE chapter SYSTEM "chapter.dtd"> - -<chapter> - <header> - <copyright> - <year>1998</year><year>2016</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - </legalnotice> - - <title>Using the Plain Erlang Back-end</title> - <prepared></prepared> - <docno></docno> - <date>98-05-06</date> - <rev>B</rev> - <file>ch_erl_plain.xml</file> - </header> - - <section> - <title>Introduction</title> - <p>The mapping of OMG IDL to the Erlang programming language when - Plain Erlang - is the back-end of choice is similar to the one used in pure Erlang IDL - mapping. The only difference is on the generated code and the extended - use of pragmas for code generation: IDL functions are translated - to Erlang - module function calls.</p> - </section> - - <section> - <title>Compiling the Code</title> - <p>In the Erlang shell type :</p> - <p>ic:gen(<c><![CDATA[<filename>, [{be, erl_plain}])]]></c>.</p> - </section> - - <section> - <title>Writing the Implementation File</title> - <p>For each IDL interface <c><![CDATA[<interface name>]]></c> defined in the IDL file:</p> - <list type="bulleted"> - <item>Create the corresponding Erlang file that will hold the - Erlang implementation of the IDL definitions. </item> - <item>Call the implementation file after the scope of the IDL interface, - followed by the suffix <c>_impl</c>.</item> - <item>Export the implementation functions.</item> - </list> - <p>For each function defined in the IDL interface :</p> - <list type="bulleted"> - <item>Implement an Erlang function that uses as arguments in the same - order, as the input arguments described in the IDL file, and returns - the value described in the interface.</item> - <item>When using the function, follow the mapping described in chapter 2.</item> - </list> - </section> - - <section> - <title>An Example</title> - <p> <marker id="plain_idl"></marker> - - In this example, a file "random.idl" is generates code for the plain Erlang - back-end :</p> - <list type="bulleted"> - <item> - <p>Main file : "plain.idl"</p> - <code type="none"> - -module rmod { - - interface random { - - double produce(); - - oneway void init(in long seed1, in long seed2, in long seed3); - - }; - -}; - </code> - </item> - </list> - <p>Compile the file :</p> - <code type="none"> - Erlang (BEAM) emulator version 4.9 - - Eshell V4.9 (abort with ^G) - 1> ic:gen(random,[{be, erl_plain}]). - Erlang IDL compiler version 2.5.1 - ok - 2> - </code> - <p></p> - <p>When the file "random.idl" is compiled it produces five files: two for - the top scope, two for the interface scope, and one for the module - scope. The header files for top scope and interface - are empty and not shown here. In this case only the file for the interface - <c>rmod_random.erl</c> is important :. - <marker id="generated files"></marker> -</p> - <list type="bulleted"> - <item> - <p>Erlang file for interface : "rmod_random.erl"</p> - <code type="none"> - --module(rmod_random). - - - -%% Interface functions --export([produce/0, init/3]). - -%%------------------------------------------------------------ -%% Operation: produce -%% -%% Returns: RetVal -%% -produce() -> - rmod_random_impl:produce(). - -%%------------------------------------------------------------ -%% Operation: init -%% -%% Returns: RetVal -%% -init(Seed1, Seed2, Seed3) -> - rmod_random_impl:init(Seed1, Seed2, Seed3). - </code> - </item> - </list> - <p>The implementation file should be called <c>rmod_random_impl.erl</c> - and could look like this:</p> - <code type="none"> - -module('rmod_random_impl'). - - -export([produce/0,init/3]). - - - produce() -> - random:uniform(). - - - init(S1,S2,S3) -> - random:seed(S1,S2,S3). - </code> - <p>Compiling the code : </p> - <code type="none"> -2> make:all(). -Recompile: rmod_random -Recompile: oe_random -Recompile: rmod_random_impl -up_to_date - </code> - <p></p> - <p>Running the example : </p> - <code type="none"> -3> rmod_random:init(1,2,3). -ok -4> rmod_random:produce(). -1.97963e-4 -5> - </code> - </section> -</chapter> - |