Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > b20ed37ad2015c2b401b7ad4b1a772d1 > files > 42

eet-devel-1.3.2-1.fc14.x86_64.rpm

<html>
<head>
    <title>Eet: Eet Data Serialization</title>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
    <meta name="author" content="Andres Blanc" >
    
    <link rel="icon" href="img/favicon.png" type="image/x-icon">
    <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
    <link rel="icon" href="img/favicon.png" type="image/ico">
    <link rel="shortcut icon" href="img/favicon.png" type="image/ico">

    <link rel="stylesheet" type="text/css" media="screen" href="e.css">
    <link rel="stylesheet" type="text/css" media="screen" href="edoxy.css">
</head>

<body>

<div id="container">

<div id="header">
<div class="layout">
    
    <h1><span>Enlightenment</span></h1>
    <h2><span>Beauty at your fingertips</span></h2>

    <div class="menu-container">
        <div class="menu">
            <ul>
	        <li class="current"><a href="http://web.enlightenment.org/p.php?p=docs">Docs</a></li>
                <li><a href="http://trac.enlightenment.org/e">Tracker</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=contact">Contact</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=support">Support</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=download">Download</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=about">About</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=news">News</a></li>
                <li><a href="http://www.enlightenment.org/">Home</a></li>
            </ul>
        </div>
    </div>

    <div class="doxytitle">
        Eet Documentation <small>at 2 Jul 2010</small>
    </div>

    <div class="menu-container">
        <div class="submenu">
            <ul class="current">
                <li><a href="Examples.html">Examples</a></li>
                <li><a href="files.html">Files</a></li>
                <li><a href="modules.html">Modules</a></li>
                <li><a href="globals.html">Globals</a></li>
                <li><a href="pages.html">Related Pages</a></li>
	        <li class="current"><a href="index.html">Main Page</a></li>
            </ul>
        </div>
    </div>


    <div class="clear"></div>
</div>
</div>

<div id="content">
<div class="layout">
<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="contents">
<h1>Eet Data Serialization</h1>
<p>Convenience functions to serialize and parse complex data structures to binary blobs.  
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html">_Eet_Data_Descriptor_Class</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Instructs Eet about memory management for different needs under serialization and parse process.  <a href="struct__Eet__Data__Descriptor__Class.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Cipher__Group.html">Eet Data Serialization using A Ciphers</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Most of the <a class="el" href="group__Eet__Data__Group.html">Eet Data Serialization</a> have alternative versions that accounts for ciphers to protect their content. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga23f233441eb2d0eccafe51c1641ff5c9"></a><!-- doxytag: member="Eet_Data_Group::EET_T_UNKNOW" ref="ga23f233441eb2d0eccafe51c1641ff5c9" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9">EET_T_UNKNOW</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unknown data encoding type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga74d89b710e845c708ae7b0ca98016957"></a><!-- doxytag: member="Eet_Data_Group::EET_T_CHAR" ref="ga74d89b710e845c708ae7b0ca98016957" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga74d89b710e845c708ae7b0ca98016957">EET_T_CHAR</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: char. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacf536867efdf1164af97f0d57bc43894"></a><!-- doxytag: member="Eet_Data_Group::EET_T_SHORT" ref="gacf536867efdf1164af97f0d57bc43894" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gacf536867efdf1164af97f0d57bc43894">EET_T_SHORT</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: short. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e196733795867f14c6e387af7287baa"></a><!-- doxytag: member="Eet_Data_Group::EET_T_INT" ref="ga4e196733795867f14c6e387af7287baa" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga4e196733795867f14c6e387af7287baa">EET_T_INT</a>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: int. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabdf13bbc0df675742aef8e1e87ccb1ef"></a><!-- doxytag: member="Eet_Data_Group::EET_T_LONG_LONG" ref="gabdf13bbc0df675742aef8e1e87ccb1ef" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gabdf13bbc0df675742aef8e1e87ccb1ef">EET_T_LONG_LONG</a>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: long long. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga447b1b41e09b24ac6b3fbbac8d3efb30"></a><!-- doxytag: member="Eet_Data_Group::EET_T_FLOAT" ref="ga447b1b41e09b24ac6b3fbbac8d3efb30" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga447b1b41e09b24ac6b3fbbac8d3efb30">EET_T_FLOAT</a>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: float. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac2d8336b1127fd382c65416cf45cd3e8"></a><!-- doxytag: member="Eet_Data_Group::EET_T_DOUBLE" ref="gac2d8336b1127fd382c65416cf45cd3e8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac2d8336b1127fd382c65416cf45cd3e8">EET_T_DOUBLE</a>&nbsp;&nbsp;&nbsp;6</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: double. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga09a1341cc158fda0ba60ad2386ecd795"></a><!-- doxytag: member="Eet_Data_Group::EET_T_UCHAR" ref="ga09a1341cc158fda0ba60ad2386ecd795" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga09a1341cc158fda0ba60ad2386ecd795">EET_T_UCHAR</a>&nbsp;&nbsp;&nbsp;7</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: unsigned char. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8811200857e44566037ff3871cd05b12"></a><!-- doxytag: member="Eet_Data_Group::EET_T_USHORT" ref="ga8811200857e44566037ff3871cd05b12" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga8811200857e44566037ff3871cd05b12">EET_T_USHORT</a>&nbsp;&nbsp;&nbsp;8</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: unsigned short. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacf6a3c9f06e10e20be5b02cd8c6a220b"></a><!-- doxytag: member="Eet_Data_Group::EET_T_UINT" ref="gacf6a3c9f06e10e20be5b02cd8c6a220b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gacf6a3c9f06e10e20be5b02cd8c6a220b">EET_T_UINT</a>&nbsp;&nbsp;&nbsp;9</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: unsigned int. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac984c4b3f0ad353a14679cf39a70ebd7"></a><!-- doxytag: member="Eet_Data_Group::EET_T_ULONG_LONG" ref="gac984c4b3f0ad353a14679cf39a70ebd7" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac984c4b3f0ad353a14679cf39a70ebd7">EET_T_ULONG_LONG</a>&nbsp;&nbsp;&nbsp;10</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: unsigned long long. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d2cf409bf3f151156d74d18ac59e3d1"></a><!-- doxytag: member="Eet_Data_Group::EET_T_STRING" ref="ga0d2cf409bf3f151156d74d18ac59e3d1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga0d2cf409bf3f151156d74d18ac59e3d1">EET_T_STRING</a>&nbsp;&nbsp;&nbsp;11</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: char *. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3331b98e4c2a0e7336a0f542e88789bd"></a><!-- doxytag: member="Eet_Data_Group::EET_T_INLINED_STRING" ref="ga3331b98e4c2a0e7336a0f542e88789bd" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga3331b98e4c2a0e7336a0f542e88789bd">EET_T_INLINED_STRING</a>&nbsp;&nbsp;&nbsp;12</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: char * (but compressed inside the resulting eet). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9f1da67bf8dca0b19012b3a38e5a1a41"></a><!-- doxytag: member="Eet_Data_Group::EET_T_NULL" ref="ga9f1da67bf8dca0b19012b3a38e5a1a41" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga9f1da67bf8dca0b19012b3a38e5a1a41">EET_T_NULL</a>&nbsp;&nbsp;&nbsp;13</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: (void *) (only use it if you know why). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac4e1fc36a3042aec9e90832046994a08"></a><!-- doxytag: member="Eet_Data_Group::EET_T_F32P32" ref="gac4e1fc36a3042aec9e90832046994a08" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac4e1fc36a3042aec9e90832046994a08">EET_T_F32P32</a>&nbsp;&nbsp;&nbsp;14</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: fixed point 32.32. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac8050f11d766b6682273c6c250e2c163"></a><!-- doxytag: member="Eet_Data_Group::EET_T_F16P16" ref="gac8050f11d766b6682273c6c250e2c163" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac8050f11d766b6682273c6c250e2c163">EET_T_F16P16</a>&nbsp;&nbsp;&nbsp;15</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: fixed point 16.16. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga844a1125845d282948fe8081c983975c"></a><!-- doxytag: member="Eet_Data_Group::EET_T_F8P24" ref="ga844a1125845d282948fe8081c983975c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga844a1125845d282948fe8081c983975c">EET_T_F8P24</a>&nbsp;&nbsp;&nbsp;16</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Data type: fixed point 8.24. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6f7f811187af5c15535ca56c69bd5f7e"></a><!-- doxytag: member="Eet_Data_Group::EET_T_LAST" ref="ga6f7f811187af5c15535ca56c69bd5f7e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga6f7f811187af5c15535ca56c69bd5f7e">EET_T_LAST</a>&nbsp;&nbsp;&nbsp;18</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Last data type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae97a13f08f6f48335a60e2a910aec41f"></a><!-- doxytag: member="Eet_Data_Group::EET_G_UNKNOWN" ref="gae97a13f08f6f48335a60e2a910aec41f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gae97a13f08f6f48335a60e2a910aec41f">EET_G_UNKNOWN</a>&nbsp;&nbsp;&nbsp;100</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unknown group data encoding type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0db274e50f3cc8c9e4844d94d63a4433"></a><!-- doxytag: member="Eet_Data_Group::EET_G_ARRAY" ref="ga0db274e50f3cc8c9e4844d94d63a4433" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga0db274e50f3cc8c9e4844d94d63a4433">EET_G_ARRAY</a>&nbsp;&nbsp;&nbsp;101</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fixed size array group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa1ca41d2def763d6f5ce4d94eaf2581d"></a><!-- doxytag: member="Eet_Data_Group::EET_G_VAR_ARRAY" ref="gaa1ca41d2def763d6f5ce4d94eaf2581d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gaa1ca41d2def763d6f5ce4d94eaf2581d">EET_G_VAR_ARRAY</a>&nbsp;&nbsp;&nbsp;102</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Variable size array group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadcfddbc1928d1068eba93326201c6232"></a><!-- doxytag: member="Eet_Data_Group::EET_G_LIST" ref="gadcfddbc1928d1068eba93326201c6232" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gadcfddbc1928d1068eba93326201c6232">EET_G_LIST</a>&nbsp;&nbsp;&nbsp;103</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Linked list group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab4cb1f8b97b17e36694fbe2f0ced86ce"></a><!-- doxytag: member="Eet_Data_Group::EET_G_HASH" ref="gab4cb1f8b97b17e36694fbe2f0ced86ce" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gab4cb1f8b97b17e36694fbe2f0ced86ce">EET_G_HASH</a>&nbsp;&nbsp;&nbsp;104</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Hash table group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga52795c9c05702fbcd4e7df2952b492da"></a><!-- doxytag: member="Eet_Data_Group::EET_G_UNION" ref="ga52795c9c05702fbcd4e7df2952b492da" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga52795c9c05702fbcd4e7df2952b492da">EET_G_UNION</a>&nbsp;&nbsp;&nbsp;105</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Union group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2c61448d5d371152de980526819404dd"></a><!-- doxytag: member="Eet_Data_Group::EET_G_VARIANT" ref="ga2c61448d5d371152de980526819404dd" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga2c61448d5d371152de980526819404dd">EET_G_VARIANT</a>&nbsp;&nbsp;&nbsp;106</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Selectable subtype group. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6f151c2439d3149c7efde702165f88e6"></a><!-- doxytag: member="Eet_Data_Group::EET_G_LAST" ref="ga6f151c2439d3149c7efde702165f88e6" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga6f151c2439d3149c7efde702165f88e6">EET_G_LAST</a>&nbsp;&nbsp;&nbsp;107</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Last group type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac35ee01ce34edb6c37ca07d4603f20d8">EET_I_LIMIT</a>&nbsp;&nbsp;&nbsp;128</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Other type exist but are reserved for internal purpose.  <a href="#gac35ee01ce34edb6c37ca07d4603f20d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga61a090586eff90415b429f1017acf8a7">EET_DATA_DESCRIPTOR_CLASS_VERSION</a>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The version of <a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> at the time of the distribution of the sources.  <a href="#ga61a090586eff90415b429f1017acf8a7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga7e41116c11d7d8d62513d9615fb15058">EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET</a>(Clas, Type)&nbsp;&nbsp;&nbsp;(eet_eina_stream_data_descriptor_class_set(Clas, #Type , sizeof (Type)))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with stream.  <a href="#ga7e41116c11d7d8d62513d9615fb15058"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga6d1a295596ac973969692d139353ed6a">EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET</a>(Clas, Type)&nbsp;&nbsp;&nbsp;(eet_eina_file_data_descriptor_class_set(Clas, #Type , sizeof (Type)))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with file.  <a href="#ga6d1a295596ac973969692d139353ed6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, struct_type, name, member, type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a basic data element to a data descriptor.  <a href="#gac38ce778d7eba37cfca8a19efb7a9b3a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725">EET_DATA_DESCRIPTOR_ADD_SUB</a>(edd, struct_type, name, member, subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a sub-element type to a data descriptor.  <a href="#ga6c1f33c4c503be76f64555c3ab999725"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04">EET_DATA_DESCRIPTOR_ADD_LIST</a>(edd, struct_type, name, member, subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a linked list type to a data descriptor.  <a href="#gabb4c7833ba053f2322e6b667a9ec7f04"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gad5e348ead4ba0b441c1e020f9bf23365">EET_DATA_DESCRIPTOR_ADD_HASH</a>(edd, struct_type, name, member, subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a hash type to a data descriptor.  <a href="#gad5e348ead4ba0b441c1e020f9bf23365"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gabc903baa4d5dc50a98f5e1a68d66fd2b">EET_DATA_DESCRIPTOR_ADD_ARRAY</a>(edd, struct_type, name, member, subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a fixed size array type to a data descriptor.  <a href="#gabc903baa4d5dc50a98f5e1a68d66fd2b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga7adad32d2eba76566533353632f00ae4">EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY</a>(edd, struct_type, name, member, subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a variable size array type to a data descriptor.  <a href="#ga7adad32d2eba76566533353632f00ae4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga07b711dca3d4bcaa0ccb8ced48341b90">EET_DATA_DESCRIPTOR_ADD_UNION</a>(edd, struct_type, name, member, type_member, unified_type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an union type to a data descriptor.  <a href="#ga07b711dca3d4bcaa0ccb8ced48341b90"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga8851a40b130061262a8dd009f0457a65">EET_DATA_DESCRIPTOR_ADD_VARIANT</a>(edd, struct_type, name, member, type_member, unified_type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a automatically selectable type to a data descriptor.  <a href="#ga8851a40b130061262a8dd009f0457a65"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gad0daa543d93a64add80961ae5387d45a">EET_DATA_DESCRIPTOR_ADD_MAPPING</a>(unified_type, name, subtype)&nbsp;&nbsp;&nbsp;eet_data_descriptor_element_add(unified_type, name, EET_T_UNKNOW, EET_G_UNKNOWN, 0, 0, NULL, subtype);</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a mapping to a data descriptor that will be used by union, variant or inherited type.  <a href="#gad0daa543d93a64add80961ae5387d45a"></a><br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _Eet_Data_Descriptor&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opaque handle that have information on a type members.  <a href="#ga4baec0e840012480a0958c5c3bca276d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gace5d1ff83e06ad08d15aadef3916082f"></a><!-- doxytag: member="Eet_Data_Group::Eet_Data_Descriptor_Class" ref="gace5d1ff83e06ad08d15aadef3916082f" args="" -->
typedef struct <br class="typebreak"/>
<a class="el" href="struct__Eet__Data__Descriptor__Class.html">_Eet_Data_Descriptor_Class</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f">Eet_Data_Descriptor_Class</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Instructs Eet about memory management for different needs under serialization and parse process. <br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EINA_DEPRECATED EAPI <br class="typebreak"/>
<a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac7b48d27d4f65892bcef30fc031e8228">eet_data_descriptor_new</a> (const char *name, int size, void *(*func_list_next)(void *l), void *(*func_list_append)(void *l, void *d), void *(*func_list_data)(void *l), void *(*func_list_free)(void *l), void(*func_hash_foreach)(void *h, int(*func)(void *h, const char *k, void *dt, void *fdt), void *fdt), void *(*func_hash_add)(void *h, const char *k, void *d), void(*func_hash_free)(void *h))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new empty data structure descriptor.  <a href="#gac7b48d27d4f65892bcef30fc031e8228"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1">eet_data_descriptor_stream_new</a> (const <a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *eddc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function creates a new data descriptore and returns a handle to the new data descriptor.  <a href="#gae300b4a97dbaab30a200edbb97f108c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga2a7251edf1f60ced86c4860207331bb6">eet_data_descriptor_file_new</a> (const <a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *eddc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function creates a new data descriptore and returns a handle to the new data descriptor.  <a href="#ga2a7251edf1f60ced86c4860207331bb6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI Eina_Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gaa0b4282ed6fad8db4879a1dee3259a89">eet_eina_stream_data_descriptor_class_set</a> (<a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *eddc, const char *name, int size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with a stream.  <a href="#gaa0b4282ed6fad8db4879a1dee3259a89"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI Eina_Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga301ed7fccb37dc03845b8c10450921b0">eet_eina_file_data_descriptor_class_set</a> (<a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *eddc, const char *name, int size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with a file.  <a href="#ga301ed7fccb37dc03845b8c10450921b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga3e2b601720973d0e1f4683768a593c4d">eet_data_descriptor_free</a> (<a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function frees a data descriptor when it is not needed anymore.  <a href="#ga3e2b601720973d0e1f4683768a593c4d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34">eet_data_descriptor_element_add</a> (<a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd, const char *name, int type, int group_type, int offset, int count, const char *counter_name, <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *subtype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is an internal used by macros.  <a href="#ga450fd478c0c2531a5d2beb4f1af7cd34"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga4d1807cbbc448304f22a8808318a3429">eet_data_read</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd, const char *name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a data structure from an eet file and decodes it.  <a href="#ga4d1807cbbc448304f22a8808318a3429"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gac66d1c49e3490bc5d803982d833ff8aa">eet_data_write</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd, const char *name, const void *data, int compress)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a data structure from memory and store in an eet file.  <a href="#gac66d1c49e3490bc5d803982d833ff8aa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga73eea56513db9eeb5a0f30514471fa75">eet_data_text_dump</a> (const void *data_in, int size_in, void(*dumpfunc)(void *data, const char *str), void *dumpdata)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump an eet encoded data structure into ascii text.  <a href="#ga73eea56513db9eeb5a0f30514471fa75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#ga7ec4079e08e657a80bee05bd12e1b972">eet_data_text_undump</a> (const char *text, int textlen, int *size_ret)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Take an ascii encoding from <a class="el" href="group__Eet__Data__Group.html#ga73eea56513db9eeb5a0f30514471fa75" title="Dump an eet encoded data structure into ascii text.">eet_data_text_dump()</a> and re-encode in binary.  <a href="#ga7ec4079e08e657a80bee05bd12e1b972"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gae4ead9639aa9d6ce0db2354b5636f56d">eet_data_dump</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, const char *name, void(*dumpfunc)(void *data, const char *str), void *dumpdata)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump an eet encoded data structure from an eet file into ascii text.  <a href="#gae4ead9639aa9d6ce0db2354b5636f56d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gafb1d3207c31e349ed184645e21aa838d">eet_data_undump</a> (<a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *ef, const char *name, const char *text, int textlen, int compress)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Take an ascii encoding from <a class="el" href="group__Eet__Data__Group.html#gae4ead9639aa9d6ce0db2354b5636f56d" title="Dump an eet encoded data structure from an eet file into ascii text.">eet_data_dump()</a> and re-encode in binary.  <a href="#gafb1d3207c31e349ed184645e21aa838d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gaad95530fdaec27047c41a5ceace5c231">eet_data_descriptor_decode</a> (<a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd, const void *data_in, int size_in)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode a data structure from an arbitary location in memory.  <a href="#gaad95530fdaec27047c41a5ceace5c231"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EAPI void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d">eet_data_descriptor_encode</a> (<a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *edd, const void *data_in, int *size_ret)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encode a dsata struct to memory and return that encoded data.  <a href="#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Convenience functions to serialize and parse complex data structures to binary blobs. </p>
<p>While Eet core just handles binary blobs, it is often required to save some structured data of different types, such as strings, integers, lists, hashes and so on.</p>
<p>Eet can serialize and then parse data types given some construction instructions. These are defined in two levels:</p>
<ul>
<li><a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> to tell generic memory handling, such as the size of the type, how to allocate memory, strings, lists, hashes and so on.</li>
</ul>
<ul>
<li><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d" title="Opaque handle that have information on a type members.">Eet_Data_Descriptor</a> to tell inside such type, the members and their offsets inside the memory blob, their types and names. These members can be simple types or other <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d" title="Opaque handle that have information on a type members.">Eet_Data_Descriptor</a>, allowing hierarchical types to be defined.</li>
</ul>
<p>Given that C provides no introspection, this process can be quite cumbersome, so we provide lots of macros and convenience functions to aid creating the types.</p>
<p>Example:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;<a class="code" href="Eet_8h.html" title="The file that provides the eet functions.">Eet.h</a>&gt;</span>
<span class="preprocessor"> #include &lt;Evas.h&gt;</span>

 <span class="keyword">typedef</span> <span class="keyword">struct </span>_blah2
 {
    <span class="keywordtype">char</span> *string;
 } Blah2;

 <span class="keyword">typedef</span> <span class="keyword">struct </span>_blah3
 {
    <span class="keywordtype">char</span> *string;
 } Blah3;

 <span class="keyword">typedef</span> <span class="keyword">struct </span>_blah
 {
    <span class="keywordtype">char</span> character;
    <span class="keywordtype">short</span> sixteen;
    <span class="keywordtype">int</span> integer;
    <span class="keywordtype">long</span> <span class="keywordtype">long</span> lots;
    <span class="keywordtype">float</span> floating;
    <span class="keywordtype">double</span> floating_lots;
    <span class="keywordtype">char</span> *string;
    Blah2 *blah2;
    Eina_List *blah3;
 } Blah;

 <span class="keywordtype">int</span>
 main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
 {
    Blah blah;
    Blah2 blah2;
    Blah3 blah3;
    <a class="code" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d" title="Opaque handle that have information on a type members.">Eet_Data_Descriptor</a> *edd, *edd2, *edd3;
    <a class="code" href="struct__Eet__Data__Descriptor__Class.html" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> eddc, eddc2, eddc3;
    <span class="keywordtype">void</span> *data;
    <span class="keywordtype">int</span> size;
    FILE *f;
    Blah *blah_in;

    <a class="code" href="group__Eet__Group.html#ga9903687bfa20fe9a9e59d4c1d213e89a" title="Initialize the EET library.">eet_init</a>();

    <a class="code" href="group__Eet__Data__Group.html#ga7e41116c11d7d8d62513d9615fb15058" title="This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class...">EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET</a>(&amp;eddc3, Blah3);
    edd3 = <a class="code" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_stream_new</a>(&amp;eddc3);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd3, Blah3, <span class="stringliteral">&quot;string3&quot;</span>, <span class="keywordtype">string</span>, <a class="code" href="group__Eet__Data__Group.html#ga0d2cf409bf3f151156d74d18ac59e3d1" title="Data type: char *.">EET_T_STRING</a>);

    <a class="code" href="group__Eet__Data__Group.html#ga7e41116c11d7d8d62513d9615fb15058" title="This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class...">EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET</a>(&amp;eddc2, Blah2);
    edd2 = <a class="code" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_stream_new</a>(&amp;eddc2);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd2, Blah2, <span class="stringliteral">&quot;string2&quot;</span>, <span class="keywordtype">string</span>, <a class="code" href="group__Eet__Data__Group.html#ga0d2cf409bf3f151156d74d18ac59e3d1" title="Data type: char *.">EET_T_STRING</a>);

    <a class="code" href="group__Eet__Data__Group.html#ga7e41116c11d7d8d62513d9615fb15058" title="This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class...">EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET</a>(&amp;eddc, Blah);
    edd = <a class="code" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_stream_new</a>(&amp;eddc);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;character&quot;</span>, character, <a class="code" href="group__Eet__Data__Group.html#ga74d89b710e845c708ae7b0ca98016957" title="Data type: char.">EET_T_CHAR</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;sixteen&quot;</span>, sixteen, <a class="code" href="group__Eet__Data__Group.html#gacf536867efdf1164af97f0d57bc43894" title="Data type: short.">EET_T_SHORT</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;integer&quot;</span>, integer, <a class="code" href="group__Eet__Data__Group.html#ga4e196733795867f14c6e387af7287baa" title="Data type: int.">EET_T_INT</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;lots&quot;</span>, lots, <a class="code" href="group__Eet__Data__Group.html#gabdf13bbc0df675742aef8e1e87ccb1ef" title="Data type: long long.">EET_T_LONG_LONG</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;floating&quot;</span>, floating, <a class="code" href="group__Eet__Data__Group.html#ga447b1b41e09b24ac6b3fbbac8d3efb30" title="Data type: float.">EET_T_FLOAT</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;floating_lots&quot;</span>, floating_lots, <a class="code" href="group__Eet__Data__Group.html#gac2d8336b1127fd382c65416cf45cd3e8" title="Data type: double.">EET_T_DOUBLE</a>);
    <a class="code" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC</a>(edd, Blah, <span class="stringliteral">&quot;string&quot;</span>, <span class="keywordtype">string</span>, <a class="code" href="group__Eet__Data__Group.html#ga0d2cf409bf3f151156d74d18ac59e3d1" title="Data type: char *.">EET_T_STRING</a>);
    <a class="code" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB</a>(edd, Blah, <span class="stringliteral">&quot;blah2&quot;</span>, blah2, edd2);
    <a class="code" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST</a>(edd, Blah, <span class="stringliteral">&quot;blah3&quot;</span>, blah3, edd3);

    blah3.string = <span class="stringliteral">&quot;PANTS&quot;</span>;

    blah2.string = <span class="stringliteral">&quot;subtype string here!&quot;</span>;

    blah.character = <span class="charliteral">&#39;7&#39;</span>;
    blah.sixteen = 0x7777;
    blah.integer = 0xc0def00d;
    blah.lots = 0xdeadbeef31337777;
    blah.floating = 3.141592654;
    blah.floating_lots = 0.777777777777777;
    blah.string = <span class="stringliteral">&quot;bite me like a turnip&quot;</span>;
    blah.blah2 = &amp;blah2;
    blah.blah3 = eina_list_append(NULL, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);
    blah.blah3 = eina_list_append(blah.blah3, &amp;blah3);

    data = <a class="code" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode</a>(edd, &amp;blah, &amp;size);
    printf(<span class="stringliteral">&quot;-----DECODING\n&quot;</span>);
    blah_in = <a class="code" href="group__Eet__Data__Group.html#gaad95530fdaec27047c41a5ceace5c231" title="Decode a data structure from an arbitary location in memory.">eet_data_descriptor_decode</a>(edd, data, size);

    printf(<span class="stringliteral">&quot;-----DECODED!\n&quot;</span>);
    printf(<span class="stringliteral">&quot;%c\n&quot;</span>, blah_in-&gt;character);
    printf(<span class="stringliteral">&quot;%x\n&quot;</span>, (<span class="keywordtype">int</span>)blah_in-&gt;sixteen);
    printf(<span class="stringliteral">&quot;%x\n&quot;</span>, blah_in-&gt;integer);
    printf(<span class="stringliteral">&quot;%lx\n&quot;</span>, blah_in-&gt;lots);
    printf(<span class="stringliteral">&quot;%f\n&quot;</span>, (<span class="keywordtype">double</span>)blah_in-&gt;floating);
    printf(<span class="stringliteral">&quot;%f\n&quot;</span>, (<span class="keywordtype">double</span>)blah_in-&gt;floating_lots);
    printf(<span class="stringliteral">&quot;%s\n&quot;</span>, blah_in-&gt;string);
    printf(<span class="stringliteral">&quot;%p\n&quot;</span>, blah_in-&gt;blah2);
    printf(<span class="stringliteral">&quot;  %s\n&quot;</span>, blah_in-&gt;blah2-&gt;string);
      {
         Eina_List *l;
         Blah3 *blah3_in;

         EINA_LIST_FOREACH(blah_in-&gt;blah3, l, blah3_in)
           {
              printf(<span class="stringliteral">&quot;%p\n&quot;</span>, blah3_in);
              printf(<span class="stringliteral">&quot;  %s\n&quot;</span>, blah3_in-&gt;string);
           }
      }
    <a class="code" href="group__Eet__Data__Group.html#ga3e2b601720973d0e1f4683768a593c4d" title="This function frees a data descriptor when it is not needed anymore.">eet_data_descriptor_free</a>(edd);
    <a class="code" href="group__Eet__Data__Group.html#ga3e2b601720973d0e1f4683768a593c4d" title="This function frees a data descriptor when it is not needed anymore.">eet_data_descriptor_free</a>(edd2);
    <a class="code" href="group__Eet__Data__Group.html#ga3e2b601720973d0e1f4683768a593c4d" title="This function frees a data descriptor when it is not needed anymore.">eet_data_descriptor_free</a>(edd3);

    <a class="code" href="group__Eet__Group.html#gacbc7583179399d3b3e7b003e911f866f" title="Shut down the EET library.">eet_shutdown</a>();

   <span class="keywordflow">return</span> 0;
 }
</pre></div> <hr/><h2>Define Documentation</h2>
<a class="anchor" id="gabc903baa4d5dc50a98f5e1a68d66fd2b"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_ARRAY" ref="gabc903baa4d5dc50a98f5e1a68d66fd2b" args="(edd, struct_type, name, member, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_ARRAY</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#ga0db274e50f3cc8c9e4844d94d63a4433" title="Fixed size array group type.">EET_G_ARRAY</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        <span class="comment">/* 0,  */</span><span class="keyword">sizeof</span>(___ett.member)/<span class="keyword">sizeof</span>(___ett.member[0]), NULL, subtype); \
     }
</pre></div>
<p>Add a fixed size array type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The type of hash member to add.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add a fixed size array of other data types. All the parameters are the same as for <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, with the <code>subtype</code> being the exception. This must be the data descriptor of the element that is in each member of the hash to be stored.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.2 </dd></dl>

</div>
</div>
<a class="anchor" id="gac38ce778d7eba37cfca8a19efb7a9b3a"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_BASIC" ref="gac38ce778d7eba37cfca8a19efb7a9b3a" args="(edd, struct_type, name, member, type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_BASIC</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, type, <a class="code" href="group__Eet__Data__Group.html#gae97a13f08f6f48335a60e2a910aec41f" title="Unknown group data encoding type.">EET_G_UNKNOWN</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        0, <span class="comment">/* 0,  */</span>NULL, NULL); \
     }
</pre></div>
<p>Add a basic data element to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The type of the member to encode.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro is a convenience macro provided to add a member to the data descriptor <code>edd</code>. The type of the structure is provided as the <code>struct_type</code> parameter (for example: struct my_struct). The <code>name</code> parameter defines a string that will be used to uniquely name that member of the struct (it is suggested to use the struct member itself). The <code>member</code> parameter is the actual struct member itself (for eet_dictionary_string_check example: values), and <code>type</code> is the basic data type of the member which must be one of: EET_T_CHAR, EET_T_SHORT, EET_T_INT, EET_T_LONG_LONG, EET_T_FLOAT, EET_T_DOUBLE, EET_T_UCHAR, EET_T_USHORT, EET_T_UINT, EET_T_ULONG_LONG or EET_T_STRING.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

</div>
</div>
<a class="anchor" id="gad5e348ead4ba0b441c1e020f9bf23365"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_HASH" ref="gad5e348ead4ba0b441c1e020f9bf23365" args="(edd, struct_type, name, member, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_HASH</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#gab4cb1f8b97b17e36694fbe2f0ced86ce" title="Hash table group type.">EET_G_HASH</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        0, <span class="comment">/* 0,  */</span>NULL, subtype); \
     }
</pre></div>
<p>Add a hash type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The type of hash member to add.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add a hash of other data types. All the parameters are the same as for <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, with the <code>subtype</code> being the exception. This must be the data descriptor of the element that is in each member of the hash to be stored.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

</div>
</div>
<a class="anchor" id="gabb4c7833ba053f2322e6b667a9ec7f04"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_LIST" ref="gabb4c7833ba053f2322e6b667a9ec7f04" args="(edd, struct_type, name, member, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_LIST</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#gadcfddbc1928d1068eba93326201c6232" title="Linked list group type.">EET_G_LIST</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        0, <span class="comment">/* 0,  */</span>NULL, subtype); \
     }
</pre></div>
<p>Add a linked list type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The type of linked list member to add.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add a linked list of other data types. All the parameters are the same as for <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, with the <code>subtype</code> being the exception. This must be the data descriptor of the element that is in each member of the linked list to be stored.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

</div>
</div>
<a class="anchor" id="gad0daa543d93a64add80961ae5387d45a"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_MAPPING" ref="gad0daa543d93a64add80961ae5387d45a" args="(unified_type, name, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_MAPPING</td>
          <td>(</td>
          <td class="paramtype">unified_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;eet_data_descriptor_element_add(unified_type, name, EET_T_UNKNOW, EET_G_UNKNOWN, 0, 0, NULL, subtype);</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a mapping to a data descriptor that will be used by union, variant or inherited type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>unified_type</em>&nbsp;</td><td>The data descriptor to add the mapping to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to get/set type. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The matching data descriptor.</td></tr>
  </table>
  </dd>
</dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.4</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga6c1f33c4c503be76f64555c3ab999725"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_SUB" ref="ga6c1f33c4c503be76f64555c3ab999725" args="(edd, struct_type, name, member, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_SUB</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#gae97a13f08f6f48335a60e2a910aec41f" title="Unknown group data encoding type.">EET_G_UNKNOWN</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        0, <span class="comment">/* 0,  */</span>NULL, subtype); \
     }
</pre></div>
<p>Add a sub-element type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The type of sub-type struct to add.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add a sub-type (a struct that's pointed to by this one). All the parameters are the same as for <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, with the <code>subtype</code> being the exception. This must be the data descriptor of the struct that is pointed to by this element.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

</div>
</div>
<a class="anchor" id="ga07b711dca3d4bcaa0ccb8ced48341b90"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_UNION" ref="ga07b711dca3d4bcaa0ccb8ced48341b90" args="(edd, struct_type, name, member, type_member, unified_type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_UNION</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type_member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unified_type&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett;                     \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#ga52795c9c05702fbcd4e7df2952b492da" title="Union group type.">EET_G_UNION</a>, \
                                        (<span class="keywordtype">char</span> *) (&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        (<span class="keywordtype">char</span> *) (&amp;(___ett.type_member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        NULL, unified_type); \
     }
</pre></div>
<p>Add an union type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type_member</em>&nbsp;</td><td>The member that give hints on what is in the union. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>unified_type</em>&nbsp;</td><td>Describe all possible type the union could handle.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add an union with a member that specify what is inside. The <code>unified_type</code> is an Eet_Data_Descriptor, but only the entry that match the name returned by type_get will be used for each serialized data. The type_get and type_set callback of unified_type should be defined.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.4</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga7adad32d2eba76566533353632f00ae4"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY" ref="ga7adad32d2eba76566533353632f00ae4" args="(edd, struct_type, name, member, subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">subtype&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett; \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#gaa1ca41d2def763d6f5ce4d94eaf2581d" title="Variable size array group type.">EET_G_VAR_ARRAY</a>, \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        (<span class="keywordtype">char</span> *)(&amp;(___ett.member ## _count)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), <span class="comment">/* 0,  */</span>NULL, subtype); \
     }
</pre></div>
<p>Add a variable size array type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>The type of hash member to add.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily add a fixed size array of other data types. All the parameters are the same as for <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, with the <code>subtype</code> being the exception. This must be the data descriptor of the element that is in each member of the hash to be stored.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.2 </dd></dl>

</div>
</div>
<a class="anchor" id="ga8851a40b130061262a8dd009f0457a65"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_ADD_VARIANT" ref="ga8851a40b130061262a8dd009f0457a65" args="(edd, struct_type, name, member, type_member, unified_type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_ADD_VARIANT</td>
          <td>(</td>
          <td class="paramtype">edd, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type_member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unified_type&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">{ \
        struct_type ___ett;                     \
        \
        <a class="code" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add</a>(edd, name, <a class="code" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, <a class="code" href="group__Eet__Data__Group.html#ga2c61448d5d371152de980526819404dd" title="Selectable subtype group.">EET_G_VARIANT</a>, \
                                        (<span class="keywordtype">char</span> *) (&amp;(___ett.member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        (<span class="keywordtype">char</span> *) (&amp;(___ett.type_member)) - (<span class="keywordtype">char</span> *)(&amp;(___ett)), \
                                        NULL, unified_type); \
     }
</pre></div>
<p>Add a automatically selectable type to a data descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to add the type to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>struct_type</em>&nbsp;</td><td>The type of the struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name to use to encode/decode this member (must be a constant global and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>member</em>&nbsp;</td><td>The struct member itself to be encoded. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type_member</em>&nbsp;</td><td>The member that give hints on what is in the union. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>unified_type</em>&nbsp;</td><td>Describe all possible type the union could handle.</td></tr>
  </table>
  </dd>
</dl>
<p>This macro lets you easily define what the content of <code>member</code> points to depending of the content of <code>type_member</code>. The type_get and type_set callback of unified_type should be defined. If the the type is not know at the time of restoring it, eet will still call type_set of <code>unified_type</code> but the pointer will be set to a serialized binary representation of what eet know. This make it possible, to save this pointer again by just returning the string given previously and telling it by setting unknow to EINA_TRUE.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.4</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga61a090586eff90415b429f1017acf8a7"></a><!-- doxytag: member="Eet.h::EET_DATA_DESCRIPTOR_CLASS_VERSION" ref="ga61a090586eff90415b429f1017acf8a7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_DATA_DESCRIPTOR_CLASS_VERSION&nbsp;&nbsp;&nbsp;3</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The version of <a class="el" href="group__Eet__Data__Group.html#gace5d1ff83e06ad08d15aadef3916082f" title="Instructs Eet about memory management for different needs under serialization and...">Eet_Data_Descriptor_Class</a> at the time of the distribution of the sources. </p>
<p>One should define this to its version member so it is compatible with abi changes, or at least will not crash with them. </p>

</div>
</div>
<a class="anchor" id="ga6d1a295596ac973969692d139353ed6a"></a><!-- doxytag: member="Eet.h::EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET" ref="ga6d1a295596ac973969692d139353ed6a" args="(Clas, Type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET</td>
          <td>(</td>
          <td class="paramtype">Clas, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Type&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;(eet_eina_file_data_descriptor_class_set(Clas, #Type , sizeof (Type)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Clas</em>&nbsp;</td><td>The Eet_Data_Descriptor_Class you want to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Type</em>&nbsp;</td><td>The type of the structure described by this class. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>EINA_TRUE if the structure was correctly set (The only reason that could make it fail is if you did give wrong parameter).</dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

</div>
</div>
<a class="anchor" id="ga7e41116c11d7d8d62513d9615fb15058"></a><!-- doxytag: member="Eet.h::EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET" ref="ga7e41116c11d7d8d62513d9615fb15058" args="(Clas, Type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET</td>
          <td>(</td>
          <td class="paramtype">Clas, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Type&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;(eet_eina_stream_data_descriptor_class_set(Clas, #Type , sizeof (Type)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with stream. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>Clas</em>&nbsp;</td><td>The Eet_Data_Descriptor_Class you want to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>Type</em>&nbsp;</td><td>The type of the structure described by this class. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>EINA_TRUE if the structure was correctly set (The only reason that could make it fail is if you did give wrong parameter).</dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

</div>
</div>
<a class="anchor" id="gac35ee01ce34edb6c37ca07d4603f20d8"></a><!-- doxytag: member="Eet.h::EET_I_LIMIT" ref="gac35ee01ce34edb6c37ca07d4603f20d8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EET_I_LIMIT&nbsp;&nbsp;&nbsp;128</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Other type exist but are reserved for internal purpose. </p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga4baec0e840012480a0958c5c3bca276d"></a><!-- doxytag: member="Eet.h::Eet_Data_Descriptor" ref="ga4baec0e840012480a0958c5c3bca276d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Opaque handle that have information on a type members. </p>
<p>The members are added by means of <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, <a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB()</a>, <a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST()</a>, <a class="el" href="group__Eet__Data__Group.html#gad5e348ead4ba0b441c1e020f9bf23365" title="Add a hash type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_HASH()</a> or <a class="el" href="group__Eet__Data__Group.html#ga450fd478c0c2531a5d2beb4f1af7cd34" title="This function is an internal used by macros.">eet_data_descriptor_element_add()</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_stream_new()</a> </dd>
<dd>
<a class="el" href="group__Eet__Data__Group.html#ga2a7251edf1f60ced86c4860207331bb6" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_file_new()</a> </dd>
<dd>
<a class="el" href="group__Eet__Data__Group.html#ga3e2b601720973d0e1f4683768a593c4d" title="This function frees a data descriptor when it is not needed anymore.">eet_data_descriptor_free()</a> </dd></dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gaad95530fdaec27047c41a5ceace5c231"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_decode" ref="gaad95530fdaec27047c41a5ceace5c231" args="(Eet_Data_Descriptor *edd, const void *data_in, int size_in)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void* eet_data_descriptor_decode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data_in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size_in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Decode a data structure from an arbitary location in memory. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to use when decoding. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data_in</em>&nbsp;</td><td>The pointer to the data to decode into a struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size_in</em>&nbsp;</td><td>The size of the data pointed to in bytes. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>NULL on failure, or a valid decoded struct pointer on success.</dd></dl>
<p>This function will decode a data structure that has been encoded using <a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode()</a>, and return a data structure with all its elements filled out, if successful, or NULL on failure.</p>
<p>The data to be decoded is stored at the memory pointed to by <code>data_in</code>, and is described by the descriptor pointed to by <code>edd</code>. The data size is passed in as the value to <code>size_in</code>, ande must be greater than 0 to succeed.</p>
<p>This function is useful for decoding data structures delivered to the application by means other than an eet file, such as an IPC or socket connection, raw files, shared memory etc.</p>
<p>Please see <a class="el" href="group__Eet__Data__Group.html#ga4d1807cbbc448304f22a8808318a3429" title="Read a data structure from an eet file and decodes it.">eet_data_read()</a> for more information.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga139dd65b6d66537da27f3e9dd620a631" title="Decode a data structure from an arbitary location in memory using a cipher.">eet_data_descriptor_decode_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03651">eet_data_descriptor_decode_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga450fd478c0c2531a5d2beb4f1af7cd34"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_element_add" ref="ga450fd478c0c2531a5d2beb4f1af7cd34" args="(Eet_Data_Descriptor *edd, const char *name, int type, int group_type, int offset, int count, const char *counter_name, Eet_Data_Descriptor *subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void eet_data_descriptor_element_add </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>group_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>counter_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>subtype</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function is an internal used by macros. </p>
<p>This function is used by macros <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, <a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB()</a> and <a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST()</a>. It is complex to use by hand and should be left to be used by the macros, and thus is not documented.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor handle to add element (member). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of element to be serialized. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The type of element to be serialized, like <a class="el" href="group__Eet__Data__Group.html#ga4e196733795867f14c6e387af7287baa" title="Data type: int.">EET_T_INT</a>. If <a class="el" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, then it is considered to be a group, list or hash. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>group_type</em>&nbsp;</td><td>If element type is <a class="el" href="group__Eet__Data__Group.html#ga23f233441eb2d0eccafe51c1641ff5c9" title="Unknown data encoding type.">EET_T_UNKNOW</a>, then the <code>group_type</code> will speficy if it is a list (<a class="el" href="group__Eet__Data__Group.html#gadcfddbc1928d1068eba93326201c6232" title="Linked list group type.">EET_G_LIST</a>), array (<a class="el" href="group__Eet__Data__Group.html#ga0db274e50f3cc8c9e4844d94d63a4433" title="Fixed size array group type.">EET_G_ARRAY</a>) and so on. If <a class="el" href="group__Eet__Data__Group.html#gae97a13f08f6f48335a60e2a910aec41f" title="Unknown group data encoding type.">EET_G_UNKNOWN</a>, then the member is a subtype (pointer to another type defined by another <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d" title="Opaque handle that have information on a type members.">Eet_Data_Descriptor</a>). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>byte offset inside the source memory to be serialized. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>number of elements (if <a class="el" href="group__Eet__Data__Group.html#ga0db274e50f3cc8c9e4844d94d63a4433" title="Fixed size array group type.">EET_G_ARRAY</a> or <a class="el" href="group__Eet__Data__Group.html#gaa1ca41d2def763d6f5ce4d94eaf2581d" title="Variable size array group type.">EET_G_VAR_ARRAY</a>). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>counter_name</em>&nbsp;</td><td>variable that defines the name of number of elements. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subtype</em>&nbsp;</td><td>If contains a subtype, then its data descriptor.</td></tr>
  </table>
  </dd>
</dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l01455">eet_data_descriptor_element_add()</a>, <a class="el" href="Eet_8h_source.html#l01531">EET_G_LAST</a>, <a class="el" href="Eet_8h_source.html#l01529">EET_G_UNION</a>, <a class="el" href="Eet_8h_source.html#l01524">EET_G_UNKNOWN</a>, <a class="el" href="Eet_8h_source.html#l01526">EET_G_VAR_ARRAY</a>, <a class="el" href="Eet_8h_source.html#l01530">EET_G_VARIANT</a>, <a class="el" href="Eet_8h_source.html#l01522">EET_T_LAST</a>, <a class="el" href="Eet_8h_source.html#l01518">EET_T_NULL</a>, <a class="el" href="Eet_8h_source.html#l01516">EET_T_STRING</a>, and <a class="el" href="Eet_8h_source.html#l01505">EET_T_UNKNOW</a>.</p>

<p>Referenced by <a class="el" href="eet__data_8c_source.html#l01455">eet_data_descriptor_element_add()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa7c3b3a8cbeffc34c21dbbb1decc3c2d"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_encode" ref="gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" args="(Eet_Data_Descriptor *edd, const void *data_in, int *size_ret)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void* eet_data_descriptor_encode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data_in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>size_ret</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Encode a dsata struct to memory and return that encoded data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to use when encoding. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data_in</em>&nbsp;</td><td>The pointer to the struct to encode into data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size_ret</em>&nbsp;</td><td>pointer to the an int to be filled with the decoded size. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>NULL on failure, or a valid encoded data chunk on success.</dd></dl>
<p>This function takes a data structutre in memory and encodes it into a serialised chunk of data that can be decoded again by <a class="el" href="group__Eet__Data__Group.html#gaad95530fdaec27047c41a5ceace5c231" title="Decode a data structure from an arbitary location in memory.">eet_data_descriptor_decode()</a>. This is useful for being able to transmit data structures across sockets, pipes, IPC or shared file mechanisms, without having to worry about memory space, machine type, endianess etc.</p>
<p>The parameter <code>edd</code> must point to a valid data descriptor, and <code>data_in</code> must point to the right data structure to encode. If not, the encoding may fail.</p>
<p>On success a non NULL valid pointer is returned and what <code>size_ret</code> points to is set to the size of this decoded data, in bytes. When the encoded data is no longer needed, call free() on it. On failure NULL is returned and what <code>size_ret</code> points to is set to 0.</p>
<p>Please see <a class="el" href="group__Eet__Data__Group.html#gac66d1c49e3490bc5d803982d833ff8aa" title="Write a data structure from memory and store in an eet file.">eet_data_write()</a> for more information.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#gab765474a660b0dfe5f00d99a960206db" title="Encode a data struct to memory and return that encoded data using a cipher.">eet_data_descriptor_encode_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03811">eet_data_descriptor_encode_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2a7251edf1f60ced86c4860207331bb6"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_file_new" ref="ga2a7251edf1f60ced86c4860207331bb6" args="(const Eet_Data_Descriptor_Class *eddc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a>* eet_data_descriptor_file_new </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *&nbsp;</td>
          <td class="paramname"> <em>eddc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function creates a new data descriptore and returns a handle to the new data descriptor. </p>
<p>On creation it will be empty, containing no contents describing anything other than the shell of the data structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>eddc</em>&nbsp;</td><td>The data descriptor to free.</td></tr>
  </table>
  </dd>
</dl>
<p>You add structure members to the data descriptor using the macros <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, <a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB()</a> and <a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST()</a>, depending on what type of member you are adding to the description.</p>
<p>Once you have described all the members of a struct you want loaded, or saved eet can load and save those members for you, encode them into endian-independant serialised data chunks for transmission across a a network or more.</p>
<p>This function use str_direct_alloc and str_direct_free. It is usefull when the eet_data you are reading come from a file and have a dictionnary. This will reduce memory use, improve the possibility for the OS to page this string out. But be carrefull all EET_T_STRING are pointer to a mmapped area and it will point to nowhere if you close the file. So as long as you use this strings, you need to have the Eet_File open.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

</div>
</div>
<a class="anchor" id="ga3e2b601720973d0e1f4683768a593c4d"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_free" ref="ga3e2b601720973d0e1f4683768a593c4d" args="(Eet_Data_Descriptor *edd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void eet_data_descriptor_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function frees a data descriptor when it is not needed anymore. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to free.</td></tr>
  </table>
  </dd>
</dl>
<p>This function takes a data descriptor handle as a parameter and frees all data allocated for the data descriptor and the handle itself. After this call the descriptor is no longer valid.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

</div>
</div>
<a class="anchor" id="gac7b48d27d4f65892bcef30fc031e8228"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_new" ref="gac7b48d27d4f65892bcef30fc031e8228" args="(const char *name, int size, void *(*func_list_next)(void *l), void *(*func_list_append)(void *l, void *d), void *(*func_list_data)(void *l), void *(*func_list_free)(void *l), void(*func_hash_foreach)(void *h, int(*func)(void *h, const char *k, void *dt, void *fdt), void *fdt), void *(*func_hash_add)(void *h, const char *k, void *d), void(*func_hash_free)(void *h))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EINA_DEPRECATED EAPI <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a>* eet_data_descriptor_new </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *l)&nbsp;</td>
          <td class="paramname"> <em>func_list_next</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *l, void *d)&nbsp;</td>
          <td class="paramname"> <em>func_list_append</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *l)&nbsp;</td>
          <td class="paramname"> <em>func_list_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *l)&nbsp;</td>
          <td class="paramname"> <em>func_list_free</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *h, int(*func)(void *h, const char *k, void *dt, void *fdt), void *fdt)&nbsp;</td>
          <td class="paramname"> <em>func_hash_foreach</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *h, const char *k, void *d)&nbsp;</td>
          <td class="paramname"> <em>func_hash_add</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *h)&nbsp;</td>
          <td class="paramname"> <em>func_hash_free</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new empty data structure descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The string name of this data structure (most be a global constant and never change). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The size of the struct (in bytes). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_list_next</em>&nbsp;</td><td>The function to get the next list node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_list_append</em>&nbsp;</td><td>The function to append a member to a list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_list_data</em>&nbsp;</td><td>The function to get the data from a list node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_list_free</em>&nbsp;</td><td>The function to free an entire linked list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_hash_foreach</em>&nbsp;</td><td>The function to iterate through all hash table entries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_hash_add</em>&nbsp;</td><td>The function to add a member to a hash table. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func_hash_free</em>&nbsp;</td><td>The function to free an entire hash table. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A new empty data descriptor.</dd></dl>
<p>This function creates a new data descriptore and returns a handle to the new data descriptor. On creation it will be empty, containing no contents describing anything other than the shell of the data structure.</p>
<p>You add structure members to the data descriptor using the macros <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, <a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB()</a> and <a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST()</a>, depending on what type of member you are adding to the description.</p>
<p>Once you have described all the members of a struct you want loaded, or saved eet can load and save those members for you, encode them into endian-independant serialised data chunks for transmission across a a network or more.</p>
<p>The function pointers to the list and hash table functions are only needed if you use those data types, else you can pass NULL instead.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0</dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>use <a class="el" href="group__Eet__Data__Group.html#gae300b4a97dbaab30a200edbb97f108c1" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_stream_new()</a> or <a class="el" href="group__Eet__Data__Group.html#ga2a7251edf1f60ced86c4860207331bb6" title="This function creates a new data descriptore and returns a handle to the new data...">eet_data_descriptor_file_new()</a> </dd></dl>

<p>References <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a2b3d9fb7c840c6c63c4f5ffb48ab4ec2">_Eet_Data_Descriptor_Class::hash_add</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#af62ca8b71158f6a8b6774ad79d34f331">_Eet_Data_Descriptor_Class::hash_foreach</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad01dd9a4888b4775bbf18205f62b0ee1">_Eet_Data_Descriptor_Class::hash_free</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a21020cc0f59ec00c29ac3b76af157ed1">_Eet_Data_Descriptor_Class::list_append</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#abe434c6b73d54c9fe2080f4ccccc108d">_Eet_Data_Descriptor_Class::list_data</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a722f4cf6802befce7909f3666870d413">_Eet_Data_Descriptor_Class::list_free</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad43310e52e0f44cbb08ce00ba8090044">_Eet_Data_Descriptor_Class::list_next</a>, <a class="el" href="Eet_8h_source.html#l01581">_Eet_Data_Descriptor_Class::name</a>, <a class="el" href="Eet_8h_source.html#l01582">_Eet_Data_Descriptor_Class::size</a>, and <a class="el" href="Eet_8h_source.html#l01580">_Eet_Data_Descriptor_Class::version</a>.</p>

</div>
</div>
<a class="anchor" id="gae300b4a97dbaab30a200edbb97f108c1"></a><!-- doxytag: member="Eet.h::eet_data_descriptor_stream_new" ref="gae300b4a97dbaab30a200edbb97f108c1" args="(const Eet_Data_Descriptor_Class *eddc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI <a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a>* eet_data_descriptor_stream_new </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *&nbsp;</td>
          <td class="paramname"> <em>eddc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function creates a new data descriptore and returns a handle to the new data descriptor. </p>
<p>On creation it will be empty, containing no contents describing anything other than the shell of the data structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>eddc</em>&nbsp;</td><td>The data descriptor to free.</td></tr>
  </table>
  </dd>
</dl>
<p>You add structure members to the data descriptor using the macros <a class="el" href="group__Eet__Data__Group.html#gac38ce778d7eba37cfca8a19efb7a9b3a" title="Add a basic data element to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_BASIC()</a>, <a class="el" href="group__Eet__Data__Group.html#ga6c1f33c4c503be76f64555c3ab999725" title="Add a sub-element type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_SUB()</a> and <a class="el" href="group__Eet__Data__Group.html#gabb4c7833ba053f2322e6b667a9ec7f04" title="Add a linked list type to a data descriptor.">EET_DATA_DESCRIPTOR_ADD_LIST()</a>, depending on what type of member you are adding to the description.</p>
<p>Once you have described all the members of a struct you want loaded, or saved eet can load and save those members for you, encode them into endian-independant serialised data chunks for transmission across a a network or more.</p>
<p>This function specially ignore str_direct_alloc and str_direct_free. It is usefull when the eet_data you are reading don't have a dictionnary like network stream or ipc. It also mean that all string will be allocated and duplicated in memory.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

</div>
</div>
<a class="anchor" id="gae4ead9639aa9d6ce0db2354b5636f56d"></a><!-- doxytag: member="Eet.h::eet_data_dump" ref="gae4ead9639aa9d6ce0db2354b5636f56d" args="(Eet_File *ef, const char *name, void(*dumpfunc)(void *data, const char *str), void *dumpdata)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI int eet_data_dump </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *&nbsp;</td>
          <td class="paramname"> <em>ef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *data, const char *str)&nbsp;</td>
          <td class="paramname"> <em>dumpfunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>dumpdata</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Dump an eet encoded data structure from an eet file into ascii text. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ef</em>&nbsp;</td><td>A valid eet file handle. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the entry. eg: "/base/file_i_want". </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dumpfunc</em>&nbsp;</td><td>The function to call passed a string when new data is converted to text </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dumpdata</em>&nbsp;</td><td>The data to pass to the <code>dumpfunc</code> callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure</dd></dl>
<p>This function will take an open and valid eet file from <a class="el" href="group__Eet__File__Group.html#ga5f55956b860aa2c77af9b1a880c4c256" title="Open an eet file on disk, and returns a handle to it.">eet_open()</a> request the data encoded by <a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode()</a> corresponding to the key <code>name</code> and convert it into human readable ascii text. It does this by calling the <code>dumpfunc</code> callback for all new text that is generated. This callback should append to any existing text buffer and will be passed the pointer <code>dumpdata</code> as a parameter as well as a string with new text to be appended.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga74af6c94c8de90b547c4620946413d6b" title="Dump an eet encoded data structure from an eet file into ascii text using a cipher...">eet_data_dump_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03487">eet_data_dump_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga4d1807cbbc448304f22a8808318a3429"></a><!-- doxytag: member="Eet.h::eet_data_read" ref="ga4d1807cbbc448304f22a8808318a3429" args="(Eet_File *ef, Eet_Data_Descriptor *edd, const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void* eet_data_read </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *&nbsp;</td>
          <td class="paramname"> <em>ef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a data structure from an eet file and decodes it. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ef</em>&nbsp;</td><td>The eet file handle to read from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor handle to use when decoding. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The key the data is stored under in the eet file. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the decoded data structure.</dd></dl>
<p>This function decodes a data structure stored in an eet file, returning a pointer to it if it decoded successfully, or NULL on failure. This can save a programmer dozens of hours of work in writing configuration file parsing and writing code, as eet does all that work for the program and presents a program-friendly data structure, just as the programmer likes. Eet can handle members being added or deleted from the data in storage and safely zero-fills unfilled members if they were not found in the data. It checks sizes and headers whenever it reads data, allowing the programmer to not worry about corrupt data.</p>
<p>Once a data structure has been described by the programmer with the fields they wish to save or load, storing or retrieving a data structure from an eet file, or from a chunk of memory is as simple as a single function call.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga418b7f00fc7f2e0cc94b33787eddbe08" title="Read a data structure from an eet file and decodes it using a cipher.">eet_data_read_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l01541">eet_data_read_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga73eea56513db9eeb5a0f30514471fa75"></a><!-- doxytag: member="Eet.h::eet_data_text_dump" ref="ga73eea56513db9eeb5a0f30514471fa75" args="(const void *data_in, int size_in, void(*dumpfunc)(void *data, const char *str), void *dumpdata)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI int eet_data_text_dump </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data_in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size_in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *data, const char *str)&nbsp;</td>
          <td class="paramname"> <em>dumpfunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>dumpdata</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Dump an eet encoded data structure into ascii text. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data_in</em>&nbsp;</td><td>The pointer to the data to decode into a struct. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size_in</em>&nbsp;</td><td>The size of the data pointed to in bytes. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dumpfunc</em>&nbsp;</td><td>The function to call passed a string when new data is converted to text </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dumpdata</em>&nbsp;</td><td>The data to pass to the <code>dumpfunc</code> callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure</dd></dl>
<p>This function will take a chunk of data encoded by <a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode()</a> and convert it into human readable ascii text. It does this by calling the <code>dumpfunc</code> callback for all new text that is generated. This callback should append to any existing text buffer and will be passed the pointer <code>dumpdata</code> as a parameter as well as a string with new text to be appended.</p>
<p>Example:</p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> output(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *<span class="keywordtype">string</span>)
 {
   printf(<span class="stringliteral">&quot;%s&quot;</span>, <span class="keywordtype">string</span>);
 }

 <span class="keywordtype">void</span> dump(<span class="keyword">const</span> <span class="keywordtype">char</span> *file)
 {
   FILE *f;
   <span class="keywordtype">int</span> len;
   <span class="keywordtype">void</span> *data;

   f = fopen(file, <span class="stringliteral">&quot;r&quot;</span>);
   fseek(f, 0, SEEK_END);
   len = ftell(f);
   rewind(f);
   data = malloc(len);
   fread(data, len, 1, f);
   fclose(f);
   <a class="code" href="group__Eet__Data__Group.html#ga73eea56513db9eeb5a0f30514471fa75" title="Dump an eet encoded data structure into ascii text.">eet_data_text_dump</a>(data, len, output, NULL);
 }
</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#gaa55cc17257b9b8be41d27eac87c8ad9c" title="Dump an eet encoded data structure into ascii text using a cipher.">eet_data_text_dump_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03534">eet_data_text_dump_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga7ec4079e08e657a80bee05bd12e1b972"></a><!-- doxytag: member="Eet.h::eet_data_text_undump" ref="ga7ec4079e08e657a80bee05bd12e1b972" args="(const char *text, int textlen, int *size_ret)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI void* eet_data_text_undump </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>textlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>size_ret</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take an ascii encoding from <a class="el" href="group__Eet__Data__Group.html#ga73eea56513db9eeb5a0f30514471fa75" title="Dump an eet encoded data structure into ascii text.">eet_data_text_dump()</a> and re-encode in binary. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>text</em>&nbsp;</td><td>The pointer to the string data to parse and encode. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>textlen</em>&nbsp;</td><td>The size of the string in bytes (not including 0 byte terminator). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size_ret</em>&nbsp;</td><td>This gets filled in with the encoded data blob size in bytes. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The encoded data on success, NULL on failure.</dd></dl>
<p>This function will parse the string pointed to by <code>text</code> and return an encoded data lump the same way <a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode()</a> takes an in-memory data struct and encodes into a binary blob. <code>text</code> is a normal C string.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga99e8a3acd6c3fbe552b0f9d474ae4f0d" title="Take an ascii encoding from eet_data_text_dump() and re-encode in binary using a...">eet_data_text_undump_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03582">eet_data_text_undump_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="gafb1d3207c31e349ed184645e21aa838d"></a><!-- doxytag: member="Eet.h::eet_data_undump" ref="gafb1d3207c31e349ed184645e21aa838d" args="(Eet_File *ef, const char *name, const char *text, int textlen, int compress)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI int eet_data_undump </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *&nbsp;</td>
          <td class="paramname"> <em>ef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>textlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>compress</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Take an ascii encoding from <a class="el" href="group__Eet__Data__Group.html#gae4ead9639aa9d6ce0db2354b5636f56d" title="Dump an eet encoded data structure from an eet file into ascii text.">eet_data_dump()</a> and re-encode in binary. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ef</em>&nbsp;</td><td>A valid eet file handle. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the entry. eg: "/base/file_i_want". </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>text</em>&nbsp;</td><td>The pointer to the string data to parse and encode. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>textlen</em>&nbsp;</td><td>The size of the string in bytes (not including 0 byte terminator). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>compress</em>&nbsp;</td><td>Compression flags (1 == compress, 0 = don't compress). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure</dd></dl>
<p>This function will parse the string pointed to by <code>text</code>, encode it the same way <a class="el" href="group__Eet__Data__Group.html#gaa7c3b3a8cbeffc34c21dbbb1decc3c2d" title="Encode a dsata struct to memory and return that encoded data.">eet_data_descriptor_encode()</a> takes an in-memory data struct and encodes into a binary blob.</p>
<p>The data (optionally compressed) will be in ram, pending a flush to disk (it will stay in ram till the eet file handle is closed though).</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga58060eca71513b8634a32e076dc8dd85" title="Take an ascii encoding from eet_data_dump() and re-encode in binary using a cipher...">eet_data_undump_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l03619">eet_data_undump_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="gac66d1c49e3490bc5d803982d833ff8aa"></a><!-- doxytag: member="Eet.h::eet_data_write" ref="gac66d1c49e3490bc5d803982d833ff8aa" args="(Eet_File *ef, Eet_Data_Descriptor *edd, const char *name, const void *data, int compress)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI int eet_data_write </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Eet__File__Group.html#ga8d9779184a9870c1a225f1f40c76e8a7">Eet_File</a> *&nbsp;</td>
          <td class="paramname"> <em>ef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Eet__Data__Group.html#ga4baec0e840012480a0958c5c3bca276d">Eet_Data_Descriptor</a> *&nbsp;</td>
          <td class="paramname"> <em>edd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>compress</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write a data structure from memory and store in an eet file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ef</em>&nbsp;</td><td>The eet file handle to write to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>edd</em>&nbsp;</td><td>The data descriptor to use when encoding. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The key to store the data under in the eet file. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>A pointer to the data structure to ssave and encode. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>compress</em>&nbsp;</td><td>Compression flags for storage. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>bytes written on successful write, 0 on failure.</dd></dl>
<p>This function is the reverse of <a class="el" href="group__Eet__Data__Group.html#ga4d1807cbbc448304f22a8808318a3429" title="Read a data structure from an eet file and decodes it.">eet_data_read()</a>, saving a data structure to an eet file.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__Eet__Data__Cipher__Group.html#ga9e46230c55006296f141ed9a5807c759" title="Write a data structure from memory and store in an eet file using a cipher.">eet_data_write_cipher()</a></dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0.0 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l01605">eet_data_write_cipher()</a>.</p>

</div>
</div>
<a class="anchor" id="ga301ed7fccb37dc03845b8c10450921b0"></a><!-- doxytag: member="Eet.h::eet_eina_file_data_descriptor_class_set" ref="ga301ed7fccb37dc03845b8c10450921b0" args="(Eet_Data_Descriptor_Class *eddc, const char *name, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI Eina_Bool eet_eina_file_data_descriptor_class_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *&nbsp;</td>
          <td class="paramname"> <em>eddc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with a file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>eddc</em>&nbsp;</td><td>The Eet_Data_Descriptor_Class you want to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the structure described by this class. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The size of the structure described by this class. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>EINA_TRUE if the structure was correctly set (The only reason that could make it fail is if you did give wrong parameter).</dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

<p>References <a class="el" href="eet__data_8c_source.html#l01304">eet_eina_stream_data_descriptor_class_set()</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a2b3d9fb7c840c6c63c4f5ffb48ab4ec2">_Eet_Data_Descriptor_Class::hash_add</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a3cff52e990fee9e358b623e19c29c642">_Eet_Data_Descriptor_Class::str_direct_alloc</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a1c92e581a649866e3710b8b2fb0f7c22">_Eet_Data_Descriptor_Class::str_direct_free</a>, and <a class="el" href="Eet_8h_source.html#l01580">_Eet_Data_Descriptor_Class::version</a>.</p>

</div>
</div>
<a class="anchor" id="gaa0b4282ed6fad8db4879a1dee3259a89"></a><!-- doxytag: member="Eet.h::eet_eina_stream_data_descriptor_class_set" ref="gaa0b4282ed6fad8db4879a1dee3259a89" args="(Eet_Data_Descriptor_Class *eddc, const char *name, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EAPI Eina_Bool eet_eina_stream_data_descriptor_class_set </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Eet__Data__Descriptor__Class.html">Eet_Data_Descriptor_Class</a> *&nbsp;</td>
          <td class="paramname"> <em>eddc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function is an helper that set all the parameter of an Eet_Data_Descriptor_Class correctly when you use Eina data type with a stream. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>eddc</em>&nbsp;</td><td>The Eet_Data_Descriptor_Class you want to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the structure described by this class. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The size of the structure described by this class. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>EINA_TRUE if the structure was correctly set (The only reason that could make it fail is if you did give wrong parameter).</dd></dl>
<dl class="since"><dt><b>Since:</b></dt><dd>1.2.3 </dd></dl>

<p>References <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a2b3d9fb7c840c6c63c4f5ffb48ab4ec2">_Eet_Data_Descriptor_Class::hash_add</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#af62ca8b71158f6a8b6774ad79d34f331">_Eet_Data_Descriptor_Class::hash_foreach</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad01dd9a4888b4775bbf18205f62b0ee1">_Eet_Data_Descriptor_Class::hash_free</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a21020cc0f59ec00c29ac3b76af157ed1">_Eet_Data_Descriptor_Class::list_append</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#abe434c6b73d54c9fe2080f4ccccc108d">_Eet_Data_Descriptor_Class::list_data</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a722f4cf6802befce7909f3666870d413">_Eet_Data_Descriptor_Class::list_free</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad43310e52e0f44cbb08ce00ba8090044">_Eet_Data_Descriptor_Class::list_next</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad3b1a9a994a11ed2af8d62ef3ba2a15a">_Eet_Data_Descriptor_Class::mem_alloc</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ac237e2ec9a8a5d329671508e8060ec49">_Eet_Data_Descriptor_Class::mem_free</a>, <a class="el" href="Eet_8h_source.html#l01581">_Eet_Data_Descriptor_Class::name</a>, <a class="el" href="Eet_8h_source.html#l01582">_Eet_Data_Descriptor_Class::size</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a22bc69a254d0ac3c959ba3622b322f63">_Eet_Data_Descriptor_Class::str_alloc</a>, <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a03b50b2ded747c5ec1eb8f6602a82c72">_Eet_Data_Descriptor_Class::str_free</a>, and <a class="el" href="Eet_8h_source.html#l01580">_Eet_Data_Descriptor_Class::version</a>.</p>

<p>Referenced by <a class="el" href="eet__data_8c_source.html#l01328">eet_eina_file_data_descriptor_class_set()</a>.</p>

</div>
</div>
</div>
 
 <div id="push"></div>
 </div> <!-- #content -->
  </div> <!-- .layout -->
 
 </div> <!-- #container -->
 
 
  <div id="footer">
    <table><tr>
      <td class="poweredby"><img src="doxygen.png"></td>
      <td class="copyright">Copyright &copy;2010 Enlightenment</td>
      <td class="generated">Docs generated Fri Jul 2 11:41:22 2010</td>
    </tr></table>
  </div>


</body>
</html>