<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>lensfun: Auxiliary definitions and functions</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], }); MathJax.Hub.Config({ messageStyle: "none" }); </script><script type="text/javascript" src="http://lensfun.sourceforge.net/mathjax/MathJax.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">lensfun  <span id="projectnumber">0.3.2.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',false,false,'search.php','Search'); }); </script> <div id="main-nav"></div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Auxiliary definitions and functions</div> </div> </div><!--header--> <div class="contents"> <p>These functions will help handling basic structures of the library. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:ga87f344eef72d0022dc6127a2dbb8e315"><td class="memItemLeft" align="right" valign="top"><a id="ga87f344eef72d0022dc6127a2dbb8e315"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga87f344eef72d0022dc6127a2dbb8e315">LF_VERSION_MAJOR</a>   0</td></tr> <tr class="memdesc:ga87f344eef72d0022dc6127a2dbb8e315"><td class="mdescLeft"> </td><td class="mdescRight">Major library version number. <br /></td></tr> <tr class="separator:ga87f344eef72d0022dc6127a2dbb8e315"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gae5ffedbf31cb567fea19f22f3b832736"><td class="memItemLeft" align="right" valign="top"><a id="gae5ffedbf31cb567fea19f22f3b832736"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gae5ffedbf31cb567fea19f22f3b832736">LF_VERSION_MINOR</a>   3</td></tr> <tr class="memdesc:gae5ffedbf31cb567fea19f22f3b832736"><td class="mdescLeft"> </td><td class="mdescRight">Minor library version number. <br /></td></tr> <tr class="separator:gae5ffedbf31cb567fea19f22f3b832736"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga68545712fa14d528824de0a504a65fb0"><td class="memItemLeft" align="right" valign="top"><a id="ga68545712fa14d528824de0a504a65fb0"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga68545712fa14d528824de0a504a65fb0">LF_VERSION_MICRO</a>   2</td></tr> <tr class="memdesc:ga68545712fa14d528824de0a504a65fb0"><td class="mdescLeft"> </td><td class="mdescRight">Library micro version number. <br /></td></tr> <tr class="separator:ga68545712fa14d528824de0a504a65fb0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3f8e91531bec41db25d188304f7cb09e"><td class="memItemLeft" align="right" valign="top"><a id="ga3f8e91531bec41db25d188304f7cb09e"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga3f8e91531bec41db25d188304f7cb09e">LF_VERSION_BUGFIX</a>   0</td></tr> <tr class="memdesc:ga3f8e91531bec41db25d188304f7cb09e"><td class="mdescLeft"> </td><td class="mdescRight">Library bugfix number. <br /></td></tr> <tr class="separator:ga3f8e91531bec41db25d188304f7cb09e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gadb61284c35976b971fb9614867c7b8e3"><td class="memItemLeft" align="right" valign="top"><a id="gadb61284c35976b971fb9614867c7b8e3"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gadb61284c35976b971fb9614867c7b8e3">LF_VERSION</a>   ((<a class="el" href="group__Auxiliary.html#ga87f344eef72d0022dc6127a2dbb8e315">LF_VERSION_MAJOR</a> << 24) | (<a class="el" href="group__Auxiliary.html#gae5ffedbf31cb567fea19f22f3b832736">LF_VERSION_MINOR</a> << 16) | (<a class="el" href="group__Auxiliary.html#ga68545712fa14d528824de0a504a65fb0">LF_VERSION_MICRO</a> << 8) | <a class="el" href="group__Auxiliary.html#ga3f8e91531bec41db25d188304f7cb09e">LF_VERSION_BUGFIX</a>)</td></tr> <tr class="memdesc:gadb61284c35976b971fb9614867c7b8e3"><td class="mdescLeft"> </td><td class="mdescRight">Full library version. <br /></td></tr> <tr class="separator:gadb61284c35976b971fb9614867c7b8e3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gadfa8d1c0a59f050b1cfdb6c9e5429f28"><td class="memItemLeft" align="right" valign="top"><a id="gadfa8d1c0a59f050b1cfdb6c9e5429f28"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gadfa8d1c0a59f050b1cfdb6c9e5429f28">LF_MAX_DATABASE_VERSION</a>   1</td></tr> <tr class="memdesc:gadfa8d1c0a59f050b1cfdb6c9e5429f28"><td class="mdescLeft"> </td><td class="mdescRight">Latest database version supported by this release. <br /></td></tr> <tr class="separator:gadfa8d1c0a59f050b1cfdb6c9e5429f28"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9ae3c2b1412f3c0ce107e769981b5ab1"><td class="memItemLeft" align="right" valign="top"><a id="ga9ae3c2b1412f3c0ce107e769981b5ab1"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga9ae3c2b1412f3c0ce107e769981b5ab1">LF_EXPORT</a></td></tr> <tr class="memdesc:ga9ae3c2b1412f3c0ce107e769981b5ab1"><td class="mdescLeft"> </td><td class="mdescRight">This macro expands to an appropiate symbol visibility declaration. <br /></td></tr> <tr class="separator:ga9ae3c2b1412f3c0ce107e769981b5ab1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac1e8a42306d8e67cb94ca31c3956ee78"><td class="memItemLeft" align="right" valign="top"><a id="gac1e8a42306d8e67cb94ca31c3956ee78"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gac1e8a42306d8e67cb94ca31c3956ee78">DEPRECATED</a></td></tr> <tr class="memdesc:gac1e8a42306d8e67cb94ca31c3956ee78"><td class="mdescLeft"> </td><td class="mdescRight">For marking deprecated functions, see <a href="http://stackoverflow.com/a/21265197">http://stackoverflow.com/a/21265197</a>. <br /></td></tr> <tr class="separator:gac1e8a42306d8e67cb94ca31c3956ee78"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf022c6523998cec18c6b369c68fe1dce"><td class="memItemLeft" align="right" valign="top"><a id="gaf022c6523998cec18c6b369c68fe1dce"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gaf022c6523998cec18c6b369c68fe1dce">cbool</a>   int</td></tr> <tr class="memdesc:gaf022c6523998cec18c6b369c68fe1dce"><td class="mdescLeft"> </td><td class="mdescRight">C-compatible bool type; don't bother to define Yet Another Boolean Type. <br /></td></tr> <tr class="separator:gaf022c6523998cec18c6b369c68fe1dce"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:ga46c9b84f7edf9fd1d31faf8fc1af356f"><td class="memItemLeft" align="right" valign="top">typedef char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a></td></tr> <tr class="separator:ga46c9b84f7edf9fd1d31faf8fc1af356f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga19c5027d3f79aa9902a6c52ec2442cf0"><td class="memItemLeft" align="right" valign="top">typedef unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga19c5027d3f79aa9902a6c52ec2442cf0">lf_u8</a></td></tr> <tr class="separator:ga19c5027d3f79aa9902a6c52ec2442cf0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga73946d21941af989e2174237ac987368"><td class="memItemLeft" align="right" valign="top">typedef unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga73946d21941af989e2174237ac987368">lf_u16</a></td></tr> <tr class="separator:ga73946d21941af989e2174237ac987368"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacfd74f92d5e6bfa031b97bd8cc5ea5e7"><td class="memItemLeft" align="right" valign="top">typedef unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gacfd74f92d5e6bfa031b97bd8cc5ea5e7">lf_u32</a></td></tr> <tr class="separator:gacfd74f92d5e6bfa031b97bd8cc5ea5e7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gae6b8f15fe3a4588351ad1693c48b871b"><td class="memItemLeft" align="right" valign="top">typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gae6b8f15fe3a4588351ad1693c48b871b">lf_f32</a></td></tr> <tr class="separator:gae6b8f15fe3a4588351ad1693c48b871b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa07f26aa3829cde04456e32a90fb001e"><td class="memItemLeft" align="right" valign="top">typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gaa07f26aa3829cde04456e32a90fb001e">lf_f64</a></td></tr> <tr class="separator:gaa07f26aa3829cde04456e32a90fb001e"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:gaf84c98d42624e1181549de773ac49ad7"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gaf84c98d42624e1181549de773ac49ad7">lfError</a> { <a class="el" href="group__Auxiliary.html#ggaf84c98d42624e1181549de773ac49ad7a6419ef83b513591890978b83dd296765">LF_NO_ERROR</a> = 0, <a class="el" href="group__Auxiliary.html#ggaf84c98d42624e1181549de773ac49ad7abd9119e4f0c6ced5e417c2768fe84642">LF_WRONG_FORMAT</a>, <a class="el" href="group__Auxiliary.html#ggaf84c98d42624e1181549de773ac49ad7a71f196890e0a9df960968cb0aa7987bf">LF_NO_DATABASE</a> }</td></tr> <tr class="separator:gaf84c98d42624e1181549de773ac49ad7"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga675c7ad6ae2c3b98e46a60f3deda317b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga675c7ad6ae2c3b98e46a60f3deda317b">lf_free</a> (void *data)</td></tr> <tr class="separator:ga675c7ad6ae2c3b98e46a60f3deda317b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8cfd1f7b20aa190b3ac4556301fdf299"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (const <a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> str)</td></tr> <tr class="memdesc:ga8cfd1f7b20aa190b3ac4556301fdf299"><td class="mdescLeft"> </td><td class="mdescRight">Get a string corresponding to current locale from a multi-language string. <a href="#ga8cfd1f7b20aa190b3ac4556301fdf299">More...</a><br /></td></tr> <tr class="separator:ga8cfd1f7b20aa190b3ac4556301fdf299"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf0aef8080a85de39b7477d5fb04b5f2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#gaf0aef8080a85de39b7477d5fb04b5f2e">lf_mlstr_add</a> (<a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> str, const char *lang, const char *trstr)</td></tr> <tr class="memdesc:gaf0aef8080a85de39b7477d5fb04b5f2e"><td class="mdescLeft"> </td><td class="mdescRight">Add a new translated string to a multi-language string. <a href="#gaf0aef8080a85de39b7477d5fb04b5f2e">More...</a><br /></td></tr> <tr class="separator:gaf0aef8080a85de39b7477d5fb04b5f2e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga157d8dc84f49be865d284af2cfa31910"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Auxiliary.html#ga157d8dc84f49be865d284af2cfa31910">lf_mlstr_dup</a> (const <a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> str)</td></tr> <tr class="memdesc:ga157d8dc84f49be865d284af2cfa31910"><td class="mdescLeft"> </td><td class="mdescRight">Create a complete copy of a multi-language string. <a href="#ga157d8dc84f49be865d284af2cfa31910">More...</a><br /></td></tr> <tr class="separator:ga157d8dc84f49be865d284af2cfa31910"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>These functions will help handling basic structures of the library. </p> <h2 class="groupheader">Typedef Documentation</h2> <a id="gae6b8f15fe3a4588351ad1693c48b871b"></a> <h2 class="memtitle"><span class="permalink"><a href="#gae6b8f15fe3a4588351ad1693c48b871b">◆ </a></span>lf_f32</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef float <a class="el" href="group__Auxiliary.html#gae6b8f15fe3a4588351ad1693c48b871b">lf_f32</a></td> </tr> </table> </div><div class="memdoc"> <p>The type of a 32-bit floating-point pixel </p> </div> </div> <a id="gaa07f26aa3829cde04456e32a90fb001e"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaa07f26aa3829cde04456e32a90fb001e">◆ </a></span>lf_f64</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef double <a class="el" href="group__Auxiliary.html#gaa07f26aa3829cde04456e32a90fb001e">lf_f64</a></td> </tr> </table> </div><div class="memdoc"> <p>The type of a 64-bit floating-point pixel </p> </div> </div> <a id="ga73946d21941af989e2174237ac987368"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga73946d21941af989e2174237ac987368">◆ </a></span>lf_u16</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef unsigned short <a class="el" href="group__Auxiliary.html#ga73946d21941af989e2174237ac987368">lf_u16</a></td> </tr> </table> </div><div class="memdoc"> <p>The type of a 16-bit pixel </p> </div> </div> <a id="gacfd74f92d5e6bfa031b97bd8cc5ea5e7"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacfd74f92d5e6bfa031b97bd8cc5ea5e7">◆ </a></span>lf_u32</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef unsigned int <a class="el" href="group__Auxiliary.html#gacfd74f92d5e6bfa031b97bd8cc5ea5e7">lf_u32</a></td> </tr> </table> </div><div class="memdoc"> <p>The type of a 32-bit pixel </p> </div> </div> <a id="ga19c5027d3f79aa9902a6c52ec2442cf0"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga19c5027d3f79aa9902a6c52ec2442cf0">◆ </a></span>lf_u8</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef unsigned char <a class="el" href="group__Auxiliary.html#ga19c5027d3f79aa9902a6c52ec2442cf0">lf_u8</a></td> </tr> </table> </div><div class="memdoc"> <p>The type of a 8-bit pixel </p> </div> </div> <a id="ga46c9b84f7edf9fd1d31faf8fc1af356f"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga46c9b84f7edf9fd1d31faf8fc1af356f">◆ </a></span>lfMLstr</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef char* <a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a></td> </tr> </table> </div><div class="memdoc"> <p>The storage of "multi-language" strings is simple yet flexible, handy and effective. The first (default) string comes first, terminated by \0 as usual, after that a language code follows, then \0 again, then the translated value and so on. The list terminates as soon as a \0 is encountered instead of next string, e.g. last string in list is terminated with two null characters. </p> </div> </div> <h2 class="groupheader">Enumeration Type Documentation</h2> <a id="gaf84c98d42624e1181549de773ac49ad7"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaf84c98d42624e1181549de773ac49ad7">◆ </a></span>lfError</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__Auxiliary.html#gaf84c98d42624e1181549de773ac49ad7">lfError</a></td> </tr> </table> </div><div class="memdoc"> <p>liblensfun error codes: negative codes are -errno, positive are here </p> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggaf84c98d42624e1181549de773ac49ad7a6419ef83b513591890978b83dd296765"></a>LF_NO_ERROR </td><td class="fielddoc"><p>No error occured </p> </td></tr> <tr><td class="fieldname"><a id="ggaf84c98d42624e1181549de773ac49ad7abd9119e4f0c6ced5e417c2768fe84642"></a>LF_WRONG_FORMAT </td><td class="fielddoc"><p>Wrong XML data format </p> </td></tr> <tr><td class="fieldname"><a id="ggaf84c98d42624e1181549de773ac49ad7a71f196890e0a9df960968cb0aa7987bf"></a>LF_NO_DATABASE </td><td class="fielddoc"><p>No database could be loaded </p> </td></tr> </table> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="ga675c7ad6ae2c3b98e46a60f3deda317b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga675c7ad6ae2c3b98e46a60f3deda317b">◆ </a></span>lf_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lf_free </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>The basics of memory allocation: never free objects allocated by the library yourselves, instead use this function. It is a direct equivalent of standard C free(), however you should not use free() in the event that the library uses a separate heap. </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>A pointer to memory to be freed. </td></tr> </table> </dd> </dl> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="lenstool_8cpp-example.html#a27">lenstool.cpp</a>, and <a class="el" href="tfun_8cpp-example.html#a32">tfun.cpp</a>.</dd> </dl> </div> </div> <a id="gaf0aef8080a85de39b7477d5fb04b5f2e"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaf0aef8080a85de39b7477d5fb04b5f2e">◆ </a></span>lf_mlstr_add()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> lf_mlstr_add </td> <td>(</td> <td class="paramtype"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> </td> <td class="paramname"><em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>lang</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>trstr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Add a new translated string to a multi-language string. </p> <p>This uses realloc() so returned value may differ from input. </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">str</td><td>The string to append to. Can be NULL. </td></tr> <tr><td class="paramname">lang</td><td>The language for the new added string. If NULL, the default string is replaced (the first one in list, without a language designator). </td></tr> <tr><td class="paramname">trstr</td><td>The translated string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The reallocated multi-language string. To free a multi-language string, use <a class="el" href="group__Auxiliary.html#ga675c7ad6ae2c3b98e46a60f3deda317b">lf_free()</a>. </dd></dl> </div> </div> <a id="ga157d8dc84f49be865d284af2cfa31910"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga157d8dc84f49be865d284af2cfa31910">◆ </a></span>lf_mlstr_dup()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> lf_mlstr_dup </td> <td>(</td> <td class="paramtype">const <a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> </td> <td class="paramname"><em>str</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Create a complete copy of a multi-language string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">str</td><td>The string to create a copy of </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A new allocated multi-language string </dd></dl> </div> </div> <a id="ga8cfd1f7b20aa190b3ac4556301fdf299"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga8cfd1f7b20aa190b3ac4556301fdf299">◆ </a></span>lf_mlstr_get()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* lf_mlstr_get </td> <td>(</td> <td class="paramtype">const <a class="el" href="group__Auxiliary.html#ga46c9b84f7edf9fd1d31faf8fc1af356f">lfMLstr</a> </td> <td class="paramname"><em>str</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get a string corresponding to current locale from a multi-language string. </p> <p>Current locale is determined from LC_MESSAGES category at the time of the call, e.g. if you change LC_MESSAGES at runtime, next calls to <a class="el" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299" title="Get a string corresponding to current locale from a multi-language string. ">lf_mlstr_get()</a> will return the string for the new locale. </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="example_8c-example.html#a8">example.c</a>, and <a class="el" href="tfun_8cpp-example.html#a4">tfun.cpp</a>.</dd> </dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Dec 15 2017 20:15:22 for lensfun by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>