<html> <head> <title>Eet: _Eet_Data_Descriptor_Class Struct Reference</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_Descriptor_Class Struct Reference<br/> <small> [<a class="el" href="group__Eet__Data__Group.html">Eet Data Serialization</a>]</small> </h1><!-- doxytag: class="_Eet_Data_Descriptor_Class" --> <p>Instructs Eet about memory management for different needs under serialization and parse process. <a href="#_details">More...</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Data Fields</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e3696014d6907dadd55840bf6008317"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::version" ref="a4e3696014d6907dadd55840bf6008317" args="" --> int </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a4e3696014d6907dadd55840bf6008317">version</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">ABI version as <a class="el" href="group__Eet__Data__Group.html#ga61a090586eff90415b429f1017acf8a7" title="The version of Eet_Data_Descriptor_Class at the time of the distribution of the sources...">EET_DATA_DESCRIPTOR_CLASS_VERSION</a>. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cfe16ee62c58ab68bb6feb47829749f"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::name" ref="a4cfe16ee62c58ab68bb6feb47829749f" args="" --> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a4cfe16ee62c58ab68bb6feb47829749f">name</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Name of data type to be serialized. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e55b214032157b06162b57eaac9fe66"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::size" ref="a5e55b214032157b06162b57eaac9fe66" args="" --> int </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a5e55b214032157b06162b57eaac9fe66">size</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Size in bytes of data type to be serialized. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3b1a9a994a11ed2af8d62ef3ba2a15a"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::mem_alloc" ref="ad3b1a9a994a11ed2af8d62ef3ba2a15a" args=")(size_t size)" --> void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad3b1a9a994a11ed2af8d62ef3ba2a15a">mem_alloc</a> )(size_t <a class="el" href="struct__Eet__Data__Descriptor__Class.html#a5e55b214032157b06162b57eaac9fe66">size</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to allocate memory (usually malloc()) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac237e2ec9a8a5d329671508e8060ec49"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::mem_free" ref="ac237e2ec9a8a5d329671508e8060ec49" args=")(void *mem)" --> void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#ac237e2ec9a8a5d329671508e8060ec49">mem_free</a> )(void *mem)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to free memory (usually free()) <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22bc69a254d0ac3c959ba3622b322f63"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::str_alloc" ref="a22bc69a254d0ac3c959ba3622b322f63" args=")(const char *str)" --> char *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a22bc69a254d0ac3c959ba3622b322f63">str_alloc</a> )(const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to allocate a string <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03b50b2ded747c5ec1eb8f6602a82c72"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::str_free" ref="a03b50b2ded747c5ec1eb8f6602a82c72" args=")(const char *str)" --> void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a03b50b2ded747c5ec1eb8f6602a82c72">str_free</a> )(const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to free a string <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad43310e52e0f44cbb08ce00ba8090044">list_next</a> )(void *l)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to iterate to the next element of a list. <a href="#ad43310e52e0f44cbb08ce00ba8090044"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21020cc0f59ec00c29ac3b76af157ed1"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::list_append" ref="a21020cc0f59ec00c29ac3b76af157ed1" args=")(void *l, void *d)" --> void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a21020cc0f59ec00c29ac3b76af157ed1">list_append</a> )(void *l, void *d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to append data <code>d</code> to list which head node is <code>l</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe434c6b73d54c9fe2080f4ccccc108d"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::list_data" ref="abe434c6b73d54c9fe2080f4ccccc108d" args=")(void *l)" --> void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#abe434c6b73d54c9fe2080f4ccccc108d">list_data</a> )(void *l)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">retrieves the data from node <code>l</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a722f4cf6802befce7909f3666870d413"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::list_free" ref="a722f4cf6802befce7909f3666870d413" args=")(void *l)" --> void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a722f4cf6802befce7909f3666870d413">list_free</a> )(void *l)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">free all the nodes from the list which head node is <code>l</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af62ca8b71158f6a8b6774ad79d34f331"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::hash_foreach" ref="af62ca8b71158f6a8b6774ad79d34f331" args=")(void *h, int(*func)(void *h, const char *k, void *dt, void *fdt), void *fdt)" --> void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#af62ca8b71158f6a8b6774ad79d34f331">hash_foreach</a> )(void *h, int(*func)(void *h, const char *k, void *dt, void *fdt), void *fdt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">iterates over all elements in the hash <code>h</code> in no specific order <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b3d9fb7c840c6c63c4f5ffb48ab4ec2"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::hash_add" ref="a2b3d9fb7c840c6c63c4f5ffb48ab4ec2" args=")(void *h, const char *k, void *d)" --> void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a2b3d9fb7c840c6c63c4f5ffb48ab4ec2">hash_add</a> )(void *h, const char *k, void *d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">add a new data <code>d</code> as key <code>k</code> in hash <code>h</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad01dd9a4888b4775bbf18205f62b0ee1"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::hash_free" ref="ad01dd9a4888b4775bbf18205f62b0ee1" args=")(void *h)" --> void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad01dd9a4888b4775bbf18205f62b0ee1">hash_free</a> )(void *h)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">free all entries from the hash <code>h</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cff52e990fee9e358b623e19c29c642"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::str_direct_alloc" ref="a3cff52e990fee9e358b623e19c29c642" args=")(const char *str)" --> char *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a3cff52e990fee9e358b623e19c29c642">str_direct_alloc</a> )(const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to allocate a string directly from file backed/mmaped region pointed by <code>str</code> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c92e581a649866e3710b8b2fb0f7c22"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::str_direct_free" ref="a1c92e581a649866e3710b8b2fb0f7c22" args=")(const char *str)" --> void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a1c92e581a649866e3710b8b2fb0f7c22">str_direct_free</a> )(const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how to free a string returned by str_direct_alloc <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#acb2de73295b1a3e400e96e8d64f67108">type_get</a> )(const void *data, Eina_Bool *unknow)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">convert any kind of data type to a name that define an Eet_Data_Element. <a href="#acb2de73295b1a3e400e96e8d64f67108"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f4f232c50a3d48a7d4e989de254ea41"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::type_set" ref="a1f4f232c50a3d48a7d4e989de254ea41" args=")(const char *type, void *data, Eina_Bool unknow)" --> Eina_Bool(* </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__Eet__Data__Descriptor__Class.html#a1f4f232c50a3d48a7d4e989de254ea41">type_set</a> )(const char *type, void *data, Eina_Bool unknow)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set the type at a particular adress <br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Instructs Eet about memory management for different needs under serialization and parse process. </p> <p>If using Eina data types, it is advised to use the helpers <a class="el" 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> and <a class="el" href="group__Eet__Data__Group.html#ga6d1a295596ac973969692d139353ed6a" title="This macro is an helper that set all the parameter of an Eet_Data_Descriptor_Class...">EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET()</a>. </p> <hr/><h2>Field Documentation</h2> <a class="anchor" id="ad43310e52e0f44cbb08ce00ba8090044"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::list_next" ref="ad43310e52e0f44cbb08ce00ba8090044" args=")(void *l)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void*(* <a class="el" href="struct__Eet__Data__Descriptor__Class.html#ad43310e52e0f44cbb08ce00ba8090044">_Eet_Data_Descriptor_Class::list_next</a>)(void *l)</td> </tr> </table> </div> <div class="memdoc"> <p>how to iterate to the next element of a list. </p> <p>Receives and should return the list node. </p> <p>Referenced by <a class="el" href="eet__data_8c_source.html#l01390">eet_data_descriptor_new()</a>, and <a class="el" href="eet__data_8c_source.html#l01304">eet_eina_stream_data_descriptor_class_set()</a>.</p> </div> </div> <a class="anchor" id="acb2de73295b1a3e400e96e8d64f67108"></a><!-- doxytag: member="_Eet_Data_Descriptor_Class::type_get" ref="acb2de73295b1a3e400e96e8d64f67108" args=")(const void *data, Eina_Bool *unknow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char*(* <a class="el" href="struct__Eet__Data__Descriptor__Class.html#acb2de73295b1a3e400e96e8d64f67108">_Eet_Data_Descriptor_Class::type_get</a>)(const void *data, Eina_Bool *unknow)</td> </tr> </table> </div> <div class="memdoc"> <p>convert any kind of data type to a name that define an Eet_Data_Element. </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 ©2010 Enlightenment</td> <td class="generated">Docs generated Fri Jul 2 11:41:28 2010</td> </tr></table> </div> </body> </html>