summaryrefslogtreecommitdiff
path: root/lib/erl_interface/doc/src/erl_eterm.xml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/erl_interface/doc/src/erl_eterm.xml')
-rw-r--r--lib/erl_interface/doc/src/erl_eterm.xml776
1 files changed, 0 insertions, 776 deletions
diff --git a/lib/erl_interface/doc/src/erl_eterm.xml b/lib/erl_interface/doc/src/erl_eterm.xml
deleted file mode 100644
index 295760b4e6..0000000000
--- a/lib/erl_interface/doc/src/erl_eterm.xml
+++ /dev/null
@@ -1,776 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE cref SYSTEM "cref.dtd">
-
-<cref>
- <header>
- <copyright>
- <year>1996</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>erl_eterm</title>
- <prepared>Torbj&ouml;rn T&ouml;rnkvist</prepared>
- <responsible>Torbj&ouml;rn T&ouml;rnkvist</responsible>
- <docno></docno>
- <approved>Bjarne D&auml;cker</approved>
- <checked>Torbj&ouml;rn T&ouml;rnkvist</checked>
- <date>1998-07-03</date>
- <rev>A</rev>
- <file>erl_eterm.xml</file>
- </header>
- <lib>erl_eterm</lib>
- <libsummary>Functions for Erlang term construction.</libsummary>
- <description>
- <note><p>The support for VxWorks is deprecated as of OTP 22, and
- will be removed in OTP 23.</p></note>
- <note><p>The old legacy <c>erl_interface</c> library (functions
- with prefix <c>erl_</c>) is deprecated as of OTP 22, and will be
- removed in OTP 23. This does not apply to the <c>ei</c>
- library. Reasonably new <c>gcc</c> compilers will issue deprecation
- warnings. In order to disable these warnings, define the macro
- <c>EI_NO_DEPR_WARN</c>.</p></note>
-
- <p>This module provides functions for creating and manipulating
- Erlang terms.</p>
-
- <p>An Erlang term is represented by a C structure of type
- <c>ETERM</c>. Applications should not reference any fields
- in this structure directly, as it can be changed in future releases
- to provide faster and more compact term storage. Instead,
- applications should use the macros and functions provided.</p>
-
- <p>Each of the following macros takes a single <c>ETERM</c> pointer as an
- argument. The macros return a non-zero value if the test is true,
- otherwise <c>0</c>.</p>
-
- <taglist>
- <tag><c>ERL_IS_INTEGER(t)</c></tag>
- <item>True if <c>t</c> is an integer.</item>
- <tag><c>ERL_IS_UNSIGNED_INTEGER(t)</c></tag>
- <item>True if <c>t</c> is an integer.</item>
- <tag><c>ERL_IS_FLOAT(t)</c></tag>
- <item>True if <c>t</c> is a floating point number.</item>
- <tag><c>ERL_IS_ATOM(t)</c></tag>
- <item>True if <c>t</c> is an atom.</item>
- <tag><c>ERL_IS_PID(t)</c></tag>
- <item>True if <c>t</c> is a pid (process identifier).</item>
- <tag><c>ERL_IS_PORT(t)</c></tag>
- <item>True if <c>t</c> is a port.</item>
- <tag><c>ERL_IS_REF(t)</c></tag>
- <item>True if <c>t</c> is a reference.</item>
- <tag><c>ERL_IS_TUPLE(t)</c></tag>
- <item>True if <c>t</c> is a tuple.</item>
- <tag><c>ERL_IS_BINARY(t)</c></tag>
- <item>True if <c>t</c> is a binary.</item>
- <tag><c>ERL_IS_LIST(t)</c></tag>
- <item>True if <c>t</c> is a list with zero or more
- elements.</item>
- <tag><c>ERL_IS_EMPTY_LIST(t)</c></tag>
- <item>True if <c>t</c> is an empty list.</item>
- <tag><c>ERL_IS_CONS(t)</c></tag>
- <item>True if <c>t</c> is a list with at least one
- element.</item>
- </taglist>
-
- <p>The following macros can be used for retrieving parts of Erlang
- terms. None of these do any type checking. Results are undefined
- if you pass an <c>ETERM*</c> containing the wrong type. For example,
- passing a tuple to <c>ERL_ATOM_PTR()</c> likely results in garbage.</p>
-
- <taglist>
- <tag><c>char *ERL_ATOM_PTR(t)</c></tag>
- <item></item>
- <tag><c>char *ERL_ATOM_PTR_UTF8(t)</c></tag>
- <item>A string representing atom <c>t</c>.</item>
- <tag><c>int ERL_ATOM_SIZE(t)</c></tag>
- <item></item>
- <tag><c>int ERL_ATOM_SIZE_UTF8(t)</c></tag>
- <item>The length (in bytes) of atom <c>t</c>.</item>
- <tag><c>void *ERL_BIN_PTR(t)</c></tag>
- <item>A pointer to the contents of <c>t</c>.</item>
- <tag><c>int ERL_BIN_SIZE(t)</c></tag>
- <item>The length (in bytes) of binary object <c>t</c>.</item>
- <tag><c>int ERL_INT_VALUE(t)</c></tag>
- <item>The integer of <c>t</c>.</item>
- <tag><c>unsigned int ERL_INT_UVALUE(t)</c></tag>
- <item>The unsigned integer value of <c>t</c>.</item>
- <tag><c>double ERL_FLOAT_VALUE(t)</c></tag>
- <item>The floating point value of <c>t</c>.</item>
- <tag><c>ETERM *ERL_PID_NODE(t)</c></tag>
- <item></item>
- <tag><c>ETERM *ERL_PID_NODE_UTF8(t)</c></tag>
- <item>The node in pid <c>t</c>.</item>
- <tag><c>int ERL_PID_NUMBER(t)</c></tag>
- <item>The sequence number in pid <c>t</c>.</item>
- <tag><c>int ERL_PID_SERIAL(t)</c></tag>
- <item>The serial number in pid <c>t</c>.</item>
- <tag><c>int ERL_PID_CREATION(t)</c></tag>
- <item>The creation number in pid <c>t</c>.</item>
- <tag><c>int ERL_PORT_NUMBER(t)</c></tag>
- <item>The sequence number in port <c>t</c>.</item>
- <tag><c>int ERL_PORT_CREATION(t)</c></tag>
- <item>The creation number in port <c>t</c>.</item>
- <tag><c>ETERM *ERL_PORT_NODE(t)</c></tag>
- <item></item>
- <tag><c>ETERM *ERL_PORT_NODE_UTF8(t)</c></tag>
- <item>The node in port <c>t</c>.</item>
- <tag><c>int ERL_REF_NUMBER(t)</c></tag>
- <item>The first part of the reference number in ref <c>t</c>.
- Use only for compatibility.</item>
- <tag><c>int ERL_REF_NUMBERS(t)</c></tag>
- <item>Pointer to the array of reference numbers in ref
- <c>t</c>.</item>
- <tag><c>int ERL_REF_LEN(t)</c></tag>
- <item>The number of used reference numbers in ref
- <c>t</c>.</item>
- <tag><c>int ERL_REF_CREATION(t)</c></tag>
- <item>The creation number in ref <c>t</c>.</item>
- <tag><c>int ERL_TUPLE_SIZE(t)</c></tag>
- <item>The number of elements in tuple <c>t</c>.</item>
- <tag><c>ETERM *ERL_CONS_HEAD(t)</c></tag>
- <item>The head element of list <c>t</c>.</item>
- <tag><c>ETERM *ERL_CONS_TAIL(t)</c></tag>
- <item>A list representing the tail elements of list
- <c>t</c>.</item>
- </taglist>
- </description>
-
- <funcs>
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_cons(head, tail)</nametext></name>
- <fsummary>Prepend a term to the head of a list.</fsummary>
- <type>
- <v>ETERM *head;</v>
- <v>ETERM *tail;</v>
- </type>
- <desc>
- <p>Concatenates two Erlang terms, prepending <c>head</c>
- onto <c>tail</c> and thereby creating a
- <c>cons</c> cell.
- To make a proper list, <c>tail</c> is always to be a list
- or an empty list. Notice that <c>NULL</c> is not a valid list.</p>
- <list type="bulleted">
- <item><c>head</c> is the new term to be added.</item>
- <item><c>tail</c> is the existing list to which
- <c>head</c> is concatenated.</item>
- </list>
- <p>The function returns a new list.</p>
- <p><c>ERL_CONS_HEAD(list)</c> and
- <c>ERL_CONS_TAIL(list)</c>
- can be used to retrieve the head and tail components
- from the list. <c>erl_hd(list)</c> and
- <c>erl_tl(list)</c> do
- the same thing, but check that the argument really is a list.</p>
- <p><em>Example:</em></p>
- <code type="none"><![CDATA[
-ETERM *list,*anAtom,*anInt;
-anAtom = erl_mk_atom("madonna");
-anInt = erl_mk_int(21);
-list = erl_mk_empty_list();
-list = erl_cons(anAtom, list);
-list = erl_cons(anInt, list);
- ... /* do some work */
-erl_free_compound(list);
- ]]></code>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_copy_term(term)</nametext></name>
- <fsummary>Create a copy of an Erlang term.</fsummary>
- <type>
- <v>ETERM *term;</v>
- </type>
- <desc>
- <p>Creates and returns a copy of the Erlang term
- <c>term</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_element(position, tuple)</nametext></name>
- <fsummary>Extract an element from an Erlang tuple.</fsummary>
- <type>
- <v>int position;</v>
- <v>ETERM *tuple;</v>
- </type>
- <desc>
- <p>Extracts a specified element from an Erlang tuple.</p>
- <list type="bulleted">
- <item><c>position</c> specifies which element to retrieve
- from <c>tuple</c>. The elements are numbered starting
- from 1.</item>
- <item><c>tuple</c> is an Erlang term containing at least
- <c>position</c> elements.</item>
- </list>
- <p>Returns a new Erlang term corresponding to the requested element, or
- <c>NULL</c> if <c>position</c> was greater
- than the arity of <c>tuple</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_hd(list)</nametext></name>
- <fsummary>Extract the first element from a list.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Extracts the first element from a list.</p>
- <p><c>list</c> is an Erlang term containing a list.</p>
- <p>Returns an Erlang term corresponding to the head
- head element in the list, or a <c>NULL</c> pointer if
- <c>list</c> was not a list.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>void</ret><nametext>erl_init(NULL, 0)</nametext></name>
- <fsummary>Initialization routine.</fsummary>
- <type>
- <v>void *NULL;</v>
- <v>int 0;</v>
- </type>
- <desc>
- <p>This function must be called before any of the others in the
- <c>Erl_Interface</c> library to initialize the
- library functions. The arguments must be specified as
- <c>erl_init(NULL,0)</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>int</ret><nametext>erl_iolist_length(list)</nametext></name>
- <fsummary>Return the length of an I/O list.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Returns the length of an I/O list.</p>
- <p><c>list</c> is an Erlang term containing an I/O list.</p>
- <p>Returns the length of <c>list</c>, or
- <c>-1</c> if <c>list</c> is not an I/O list.</p>
- <p>For the definition of an I/O list, see
- <seealso marker="#erl_iolist_to_binary">
- <c>erl_iolist_to_binary</c></seealso>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_iolist_to_binary(term)</nametext></name>
- <fsummary>Convert an I/O list to a binary.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Converts an I/O list to a binary term.</p>
- <p><c>list</c> is an Erlang term containing a list.</p>
- <p>Returns an Erlang binary term, or <c>NULL</c> if
- <c>list</c> was not an I/O list.</p>
- <p>Informally, an I/O list is a deep list of characters and
- binaries that can be sent to an Erlang port. In BNF, an I/O
- list is formally defined as follows:</p>
- <code type="none"><![CDATA[
-iolist ::= []
- | Binary
- | [iohead | iolist]
- ;
-iohead ::= Binary
- | Byte (integer in the range [0..255])
- | iolist
- ;
- ]]></code>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>char *</ret><nametext>erl_iolist_to_string(list)</nametext></name>
- <fsummary>Convert an I/O list to a <c>NULL</c>-terminated string.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Converts an I/O list to a <c>NULL</c>-terminated C string.</p>
- <p><c>list</c> is an Erlang term containing an I/O list.
- The I/O list must not contain the integer 0, as C strings may not
- contain this value except as a terminating marker.</p>
- <p>Returns a pointer to a dynamically allocated
- buffer containing a string. If <c>list</c> is not an I/O
- list, or if <c>list</c> contains the integer 0,
- <c>NULL</c> is returned. It
- is the caller's responsibility to free the allocated buffer
- with <c>erl_free()</c>.</p>
- <p>For the definition of an I/O list, see
- <seealso marker="#erl_iolist_to_binary">
- <c>erl_iolist_to_binary</c></seealso>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>int</ret><nametext>erl_length(list)</nametext></name>
- <fsummary>Determine the length of a list.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Determines the length of a proper list.</p>
- <p><c>list</c> is an Erlang term containing a proper list.
- In a proper list, all tails except the last point to another list
- cell, and the last tail points to an empty list.</p>
- <p>Returns <c>-1</c> if <c>list</c> is not a proper
- list.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_atom(string)</nametext></name>
- <fsummary>Create an atom.</fsummary>
- <type>
- <v>const char *string;</v>
- </type>
- <desc>
- <p>Creates an atom.</p>
- <p><c>string</c> is the sequence of characters that will be
- used to create the atom.</p>
- <p>Returns an Erlang term containing an atom. Notice that it is
- the caller's responsibility to ensure that <c>string</c>
- contains a valid name for an atom.</p>
- <p><c>ERL_ATOM_PTR(atom)</c> and
- <c>ERL_ATOM_PTR_UTF8(atom)</c>
- can be used to retrieve the atom name (as a <c>NULL</c>-terminated string).
- <c>ERL_ATOM_SIZE(atom)</c>
- and <c>ERL_ATOM_SIZE_UTF8(atom)</c> return the length
- of the atom name.</p>
- <note>
- <p>The UTF-8 variants were introduced in Erlang/OTP R16 and the
- string returned by <c>ERL_ATOM_PTR(atom)</c> was not
- <c>NULL</c>-terminated on older releases.</p>
- </note>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_binary(bptr, size)</nametext></name>
- <fsummary>Create a binary object.</fsummary>
- <type>
- <v>char *bptr;</v>
- <v>int size;</v>
- </type>
- <desc>
- <p>Produces an Erlang binary object from a
- buffer containing a sequence of bytes.</p>
- <list type="bulleted">
- <item><c>bptr</c> is a pointer to a buffer containing
- data to be converted.</item>
- <item><c>size</c> indicates the length of
- <c>bptr</c>.</item>
- </list>
- <p>Returns an Erlang binary object.</p>
- <p><c>ERL_BIN_PTR(bin)</c> retrieves a pointer to
- the binary data. <c>ERL_BIN_SIZE(bin)</c> retrieves the
- size.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_empty_list()</nametext></name>
- <fsummary>Create an empty Erlang list.</fsummary>
- <desc>
- <p>Creates and returns an empty Erlang list.
- Notice that <c>NULL</c> is not used to represent an empty list;
- Use this function instead.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_estring(string, len)</nametext></name>
- <fsummary>Create an Erlang string.</fsummary>
- <type>
- <v>char *string;</v>
- <v>int len;</v>
- </type>
- <desc>
- <p>Creates a list from a sequence of bytes.</p>
- <list type="bulleted">
- <item><c>string</c> is a buffer containing a sequence of
- bytes. The buffer does not need to be <c>NULL</c>-terminated.</item>
- <item><c>len</c> is the length of
- <c>string</c>.</item>
- </list>
- <p>Returns an Erlang list object corresponding to
- the character sequence in <c>string</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_float(f)</nametext></name>
- <fsummary>Create an Erlang float.</fsummary>
- <type>
- <v>double f;</v>
- </type>
- <desc>
- <p>Creates an Erlang float.</p>
- <p><c>f</c> is a value to be converted to an Erlang
- float.</p>
- <p>Returns an Erlang float object with the value
- specified in <c>f</c> or <c>NULL</c> if
- <c>f</c> is not finite.</p>
- <p><c>ERL_FLOAT_VALUE(t)</c> can be used to retrieve the
- value from an Erlang float.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_int(n)</nametext></name>
- <fsummary>Create an Erlang integer.</fsummary>
- <type>
- <v>int n;</v>
- </type>
- <desc>
- <p>Creates an Erlang integer.</p>
- <p><c>n</c> is a value to be converted to an Erlang
- integer.</p>
- <p>Returns an Erlang integer object with the
- value specified in <c>n</c>.</p>
- <p><c>ERL_INT_VALUE(t)</c> can be used to retrieve the
- value from an Erlang integer.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_list(array, arrsize)</nametext></name>
- <fsummary>Create a list from an array.</fsummary>
- <type>
- <v>ETERM **array;</v>
- <v>int arrsize;</v>
- </type>
- <desc>
- <p>Creates an Erlang list from an array of Erlang terms, such
- that each element in the list corresponds to one element in
- the array.</p>
- <list type="bulleted">
- <item><c>array</c> is an array of Erlang terms.</item>
- <item><c>arrsize</c> is the number of elements in
- <c>array</c>.</item>
- </list>
- <p>The function creates an Erlang list object, whose length
- <c>arrsize</c> and whose elements are taken from the
- terms in <c>array</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_long_ref(node, n1, n2, n3, creation)</nametext></name>
- <fsummary>Create an Erlang reference.</fsummary>
- <type>
- <v>const char *node;</v>
- <v>unsigned int n1, n2, n3;</v>
- <v>unsigned int creation;</v>
- </type>
- <desc>
- <p>Creates an Erlang reference, with 82 bits.</p>
- <list type="bulleted">
- <item><c>node</c> is the name of the C-node.</item>
- <item><c>n1</c>, <c>n2</c>, and
- <c>n3</c> can be seen as one big number
- <c>n1*2^64+n2*2^32+n3</c>, which is to be chosen
- uniquely for each reference created for a given C-node.</item>
- <item><c>creation</c> is an arbitrary number.</item>
- </list>
- <p>Notice that <c>n3</c> and <c>creation</c>
- are limited in precision, so only the low 18 and 2 bits of these
- numbers are used.</p>
- <p>Returns an Erlang reference object.</p>
- <p><c>ERL_REF_NODE(ref)</c>,
- <c>ERL_REF_NUMBERS(ref)</c>,
- <c>ERL_REF_LEN(ref)</c>, and
- <c>ERL_REF_CREATION(ref)</c> can be used to retrieve the
- values used to create the reference.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_pid(node, number, serial, creation)</nametext></name>
- <fsummary>Create a process identifier.</fsummary>
- <type>
- <v>const char *node;</v>
- <v>unsigned int number;</v>
- <v>unsigned int serial;</v>
- <v>unsigned int creation;</v>
- </type>
- <desc>
- <p>Creates an Erlang process identifier (pid). The
- resulting pid can be used by Erlang processes wishing to
- communicate with the C-node.</p>
- <list type="bulleted">
- <item><c>node</c> is the name of the C-node.</item>
- <item><c>number</c>, <c>serial</c>, and
- <c>creation</c> are
- arbitrary numbers. Notice that these are limited in
- precision, so only the low 15, 3, and 2 bits of these numbers
- are used.</item>
- </list>
- <p>Returns an Erlang pid object.</p>
- <p><c>ERL_PID_NODE(pid)</c>,
- <c>ERL_PID_NUMBER(pid)</c>,
- <c>ERL_PID_SERIAL(pid)</c>, and
- <c>ERL_PID_CREATION(pid)</c>
- can be used to retrieve the four values used to create the pid.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_port(node, number, creation)</nametext></name>
- <fsummary>Create a port identifier.</fsummary>
- <type>
- <v>const char *node;</v>
- <v>unsigned int number;</v>
- <v>unsigned int creation;</v>
- </type>
- <desc>
- <p>Creates an Erlang port identifier.</p>
- <list type="bulleted">
- <item><c>node</c> is the name of the C-node.</item>
- <item><c>number</c> and <c>creation</c> are
- arbitrary numbers. Notice that these are limited in
- precision, so only the low 18 and 2 bits of these numbers
- are used.</item>
- </list>
- <p>Returns an Erlang port object.</p>
- <p><c>ERL_PORT_NODE(port)</c>,
- <c>ERL_PORT_NUMBER(port)</c>,
- and <c>ERL_PORT_CREATION</c> can be used to retrieve the
- three values used to create the port.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_ref(node, number, creation)</nametext></name>
- <fsummary>Create an old Erlang reference.</fsummary>
- <type>
- <v>const char *node;</v>
- <v>unsigned int number;</v>
- <v>unsigned int creation;</v>
- </type>
- <desc>
- <p>Creates an old Erlang reference, with
- only 18 bits - use <c>erl_mk_long_ref</c> instead.</p>
- <list type="bulleted">
- <item><c>node</c> is the name of the C-node.</item>
- <item><c>number</c> is to be chosen uniquely for each
- reference created for a given C-node.</item>
- <item><c>creation</c> is an arbitrary number.</item>
- </list>
- <p>Notice that <c>number</c> and <c>creation</c>
- are limited in precision, so only the low 18 and 2 bits of these
- numbers are used.</p>
- <p>Returns an Erlang reference object.</p>
- <p><c>ERL_REF_NODE(ref)</c>,
- <c>ERL_REF_NUMBER(ref)</c>, and
- <c>ERL_REF_CREATION(ref)</c> can be used to retrieve the
- three values used to create the reference.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_string(string)</nametext></name>
- <fsummary>Create a string.</fsummary>
- <type>
- <v>char *string;</v>
- </type>
- <desc>
- <p>Creates a list from a <c>NULL</c>-terminated string.</p>
- <p><c>string</c> is a <c>NULL</c>-terminated sequence of
- characters
- (that is, a C string) from which the list will be created.</p>
- <p>Returns an Erlang list.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_tuple(array, arrsize)</nametext></name>
- <fsummary>Create an Erlang tuple from an array.</fsummary>
- <type>
- <v>ETERM **array;</v>
- <v>int arrsize;</v>
- </type>
- <desc>
- <p>Creates an Erlang tuple from an array of Erlang terms.</p>
- <list type="bulleted">
- <item><c>array</c> is an array of Erlang terms.</item>
- <item><c>arrsize</c> is the number of elements in
- <c>array</c>.</item>
- </list>
- <p>The function creates an Erlang tuple, whose arity is
- <c>size</c> and whose elements are taken from the terms
- in <c>array</c>.</p>
- <p>To retrieve the size of a tuple, either use function
- <c>erl_size</c> (which checks the type of the
- checked term and works for a binary as well as for a tuple) or
- <c>ERL_TUPLE_SIZE(tuple)</c> returns the arity of a tuple.
- <c>erl_size()</c> does the same thing, but it checks
- that the argument is a tuple.
- <c>erl_element(index,tuple)</c> returns the element
- corresponding to a given position in the tuple.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_uint(n)</nametext></name>
- <fsummary>Create an unsigned integer.</fsummary>
- <type>
- <v>unsigned int n;</v>
- </type>
- <desc>
- <p>Creates an Erlang unsigned integer.</p>
- <p><c>n</c> is a value to be converted to an Erlang
- unsigned integer.</p>
- <p>Returns an Erlang unsigned integer object with
- the value specified in <c>n</c>.</p>
- <p><c>ERL_INT_UVALUE(t)</c> can be used to retrieve the
- value from an Erlang unsigned integer.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_mk_var(name)</nametext></name>
- <fsummary>Create an Erlang variable.</fsummary>
- <type>
- <v>char *name;</v>
- </type>
- <desc>
- <p>Creates an unbound Erlang variable. The variable can later be bound
- through pattern matching or assignment.</p>
- <p><c>name</c> specifies a name for the variable.</p>
- <p>Returns an Erlang variable object with the
- name <c>name</c>.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>int</ret><nametext>erl_print_term(stream, term)</nametext></name>
- <fsummary>Print an Erlang term.</fsummary>
- <type>
- <v>FILE *stream;</v>
- <v>ETERM *term;</v>
- </type>
- <desc>
- <p>Prints the specified Erlang term to the specified output stream.</p>
- <list type="bulleted">
- <item><c>stream</c> indicates where the function is to
- send its output.</item>
- <item><c>term</c> is the Erlang term to print.</item>
- </list>
- <p>Returns the number of characters written on success, otherwise a
- negative value.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>void</ret><nametext>erl_set_compat_rel(release_number)</nametext></name>
- <fsummary>Set the Erl_Interface library in compatibility mode.</fsummary>
- <type>
- <v>unsigned release_number;</v>
- </type>
- <desc>
- <p>By default, the <c>Erl_Interface</c> library is only
- guaranteed to be compatible with other Erlang/OTP components from the
- same release as the <c>Erl_Interface</c> library itself.
- For example, <c>Erl_Interface</c> from Erlang/OTP R10
- is not compatible
- with an Erlang emulator from Erlang/OTP R9 by default.</p>
- <p>A call to <c>erl_set_compat_rel(release_number)</c> sets
- the <c>Erl_Interface</c> library in compatibility mode of
- release <c>release_number</c>. Valid range of
- <c>release_number</c>
- is [7, current release]. This makes it possible to
- communicate with Erlang/OTP components from earlier releases.</p>
- <note>
- <p>If this function is called, it may only be called once
- directly after the call to function
- <seealso marker="#erl_init">erl_init()</seealso>.</p>
- </note>
- <warning>
- <p>You may run into trouble if this feature is used
- carelessly. Always ensure that all communicating
- components are either from the same Erlang/OTP release, or
- from release X and release Y where all components
- from release Y are in compatibility mode of release X.</p>
- </warning>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>int</ret><nametext>erl_size(term)</nametext></name>
- <fsummary>Return the arity of a tuple or binary.</fsummary>
- <type>
- <v>ETERM *term;</v>
- </type>
- <desc>
- <p>Returns either the arity of an Erlang tuple or the
- number of bytes in an Erlang binary object.</p>
- <p><c>term</c> is an Erlang tuple or an Erlang binary
- object.</p>
- <p>Returns the size of <c>term</c> as described
- above, or <c>-1</c> if <c>term</c> is not one of the two
- supported types.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_tl(list)</nametext></name>
- <fsummary>Extract the tail from a list.</fsummary>
- <type>
- <v>ETERM *list;</v>
- </type>
- <desc>
- <p>Extracts the tail from a list.</p>
- <p><c>list</c> is an Erlang term containing a list.</p>
- <p>Returns an Erlang list corresponding to the
- original list minus the first element, or <c>NULL</c> pointer if
- <c>list</c> was not a list.</p>
- </desc>
- </func>
-
- <func>
- <name since=""><ret>ETERM *</ret><nametext>erl_var_content(term, name)</nametext></name>
- <fsummary>Extract the content of a variable.</fsummary>
- <type>
- <v>ETERM *term;</v>
- <v>char *name;</v>
- </type>
- <desc>
- <p>Returns the contents of the specified variable in an Erlang term.</p>
- <list type="bulleted">
- <item><c>term</c> is an Erlang term. In order for this
- function to succeed,
- <c>term</c> must either be an Erlang variable with
- the specified name, or it must be an Erlang list or tuple
- containing a variable with the specified name. Other Erlang
- types cannot contain variables.</item>
- <item><c>name</c> is the name of an Erlang variable.
- </item>
- </list>
- <p>Returns the Erlang object corresponding to the value of
- <c>name</c> in <c>term</c>. If no variable
- with the name <c>name</c> is found in
- <c>term</c>, or if <c>term</c> is
- not a valid Erlang term, <c>NULL</c> is returned.</p>
- </desc>
- </func>
- </funcs>
-</cref>