Sophie

Sophie

distrib > Mandriva > 2011.0 > x86_64 > by-pkgid > e4e5aca55b6d7244e6bae95bf4fde3ca > files > 372

lib64edelib-devel-2.0-1.x86_64.rpm

<!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"/>
<title>edelib: edelib macros</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">edelib
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a>  </div>
  <div class="headertitle">
<div class="title">edelib macros</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gaf4689a912d0c49e9eb5244659d8702ad">E_DEBUG</a>(...)&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_DEBUG, __VA_ARGS__)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gad8e20debadc37298389feb2ffe904a5d">E_WARNING</a>(...)&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_WARNING, __VA_ARGS__)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gabaacffc3c0f14e4dd180b1e38c62c5a0">E_FATAL</a>(...)&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_FATAL, __VA_ARGS__)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga06190892c613d62224455b01c5459c15">E_ASSERT</a>(expr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gae4c765721ec0a156916181b895c87db8">E_STRLOC</a>&#160;&#160;&#160;__FILE__ &quot;:&quot; _E_STRLOC_STRINGIFY(__LINE__)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY</a>(expr)&#160;&#160;&#160;(expr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga2f0a48912ef84501c76aec74c833f139">E_UNLIKELY</a>(expr)&#160;&#160;&#160;(expr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga5f27fd36cc1de2310c5c8671af5da145">E_RETURN_IF_FAIL</a>(expr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga811d20a45794a3f87c68c965c355330b">E_RETURN_VAL_IF_FAIL</a>(expr, val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga4c883ed6ca3f93856f51356dae945348">E_DIR_SEPARATOR</a>&#160;&#160;&#160;'/'</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga1c33ff77ec518424c4e353b341d222fc">E_DIR_SEPARATOR_STR</a>&#160;&#160;&#160;&quot;/&quot;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga4b92b207cc305470f23afd5c80def4f8">EDE_APPLICATION_WITH_NLS_PATH</a>(name, path)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga0db6bc4ec9f27d895bd7b67600cf6bf2">EDE_CONSOLE_APPLICATION_WITH_NLS_PATH</a>(name, path)&#160;&#160;&#160;<a class="el" href="group__macros.html#ga4d80b7de54cd23006ac164762ee83554">EDELIB_NS_PREPEND</a>(nls_support_init(name, path)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga55dc33a7fb72d8fcf5baf4542630d15a">EDE_APPLICATION</a>(name)&#160;&#160;&#160;<a class="el" href="group__macros.html#ga4b92b207cc305470f23afd5c80def4f8">EDE_APPLICATION_WITH_NLS_PATH</a>(name, &quot;dummy_path&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga9a785839a6901d4d7fe787603456494b">EDE_CONSOLE_APPLICATION</a>(name)&#160;&#160;&#160;<a class="el" href="group__macros.html#ga0db6bc4ec9f27d895bd7b67600cf6bf2">EDE_CONSOLE_APPLICATION_WITH_NLS_PATH</a>(name, &quot;dummy_path&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga8f7639974f6a5333e5108935f169c049">EDELIB_NS_USE</a>&#160;&#160;&#160;using namespace EDELIB_NS;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gac7c8e3390f62b8f5223c38fa9f3db4c5">EDELIB_NS_USING</a>(n)&#160;&#160;&#160;using EDELIB_NS::n;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga0685016c0c2b3902aa23a68e612efc4f">EDELIB_NS_USING_AS</a>(old_name, new_name)&#160;&#160;&#160;typedef EDELIB_NS::old_name new_name;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga4d80b7de54cd23006ac164762ee83554">EDELIB_NS_PREPEND</a>(n)&#160;&#160;&#160;EDELIB_NS::n</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga528a063f5b21c06b0e7b8114e6a6532d">EDELIB_NS_USING_LIST</a>(n, list)&#160;&#160;&#160;EDELIB_FOR_EACH(n, list)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gaef9b2427c1dfe072bc563a6051cc385c">E_DISABLE_CLASS_COPY</a>(klass)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#gac765ca4f59a21325b9ef147b8b49ea41">E_CLASS_GLOBAL_DECLARE</a>(klass)&#160;&#160;&#160;static klass* global(void);</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga313df07788bd80da721692e5a3306e76">E_CLASS_GLOBAL_IMPLEMENT</a>(klass)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga33dfda99592795f46eef62e29d73b167">E_CLASS_GLOBAL_EXPLICIT_DECLARE</a>(klass)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__macros.html#ga830676c97705359369aa2cdd6258df80">E_CLASS_GLOBAL_EXPLICIT_IMPLEMENT</a>(klass)</td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga06190892c613d62224455b01c5459c15"></a><!-- doxytag: member="Debug.h::E_ASSERT" ref="ga06190892c613d62224455b01c5459c15" args="(expr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga06190892c613d62224455b01c5459c15">E_ASSERT</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
                if(!(expr)) \
                edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_FATAL, <span class="stringliteral">&quot;Assertion failed: \&quot;%s\&quot; in %s (%d), function: \&quot;%s\&quot;\n&quot;</span>, \
                        #expr, __FILE__, __LINE__, _E_FUNCTION_NAME); \
        } <span class="keywordflow">while</span>(0);
</pre></div><p>Check if expression evaluates to false, in which case it will abort program, outputing offending expression, file name and line number. If platform supports, it will try to output short stack content. </p>

<p>Referenced by <a class="el" href="classedelib_1_1list.html#ae683fe63c33c388e9ba1c6392dd477eb">list&lt; EdbusData &gt;::clear()</a>, <a class="el" href="classedelib_1_1list.html#ad7adac82317fc7926555f5ca40a5fa7b">list&lt; EdbusData &gt;::erase()</a>, and <a class="el" href="classedelib_1_1EdbusContainer.html#adc83f10ad5dd3f037242af690efc1676">EdbusContainer&lt; EdbusData &gt;::unhook()</a>.</p>

</div>
</div>
<a class="anchor" id="gac765ca4f59a21325b9ef147b8b49ea41"></a><!-- doxytag: member="edelib&#45;global.h::E_CLASS_GLOBAL_DECLARE" ref="gac765ca4f59a21325b9ef147b8b49ea41" args="(klass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gac765ca4f59a21325b9ef147b8b49ea41">E_CLASS_GLOBAL_DECLARE</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">klass</td><td>)</td>
          <td>&#160;&#160;&#160;static klass* global(void);</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Declare members to access single class instance. These classes has <em>global()</em> member and will always return one class instance. This macro us placed in class declaration.</p>
<p><em>E_CLASS_GLOBAL_DECLARE</em> and <em>E_CLASS_GLOBAL_IMPLEMENT</em> will create object on stack. Object will be created when <em>global()</em> was called for the first time, and will be destroyed when program quits. </p>

</div>
</div>
<a class="anchor" id="ga33dfda99592795f46eef62e29d73b167"></a><!-- doxytag: member="edelib&#45;global.h::E_CLASS_GLOBAL_EXPLICIT_DECLARE" ref="ga33dfda99592795f46eef62e29d73b167" args="(klass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga33dfda99592795f46eef62e29d73b167">E_CLASS_GLOBAL_EXPLICIT_DECLARE</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">klass</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">static</span> <span class="keywordtype">void</span> init(<span class="keywordtype">void</span>);                    \
        static <span class="keywordtype">void</span> shutdown(<span class="keywordtype">void</span>);                \
        static <span class="keywordtype">bool</span> inited(<span class="keywordtype">void</span>);                  \
        static klass* global(<span class="keywordtype">void</span>);
</pre></div><p>Much the same as <em>E_CLASS_GLOBAL_DECLARE</em>, except object is allocated on heap. Unlike it, this macro will provide <em>init()</em> and <em>shutdown()</em> members so class instance can be explicitly created and destroyed. If <em>shutdown()</em> wasn't called at the end of the program, allocated memory will not be freed.</p>
<p>If <em>init()</em> wasn't called before <em>global()</em>, assertion will pop up. </p>

</div>
</div>
<a class="anchor" id="ga830676c97705359369aa2cdd6258df80"></a><!-- doxytag: member="edelib&#45;global.h::E_CLASS_GLOBAL_EXPLICIT_IMPLEMENT" ref="ga830676c97705359369aa2cdd6258df80" args="(klass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga830676c97705359369aa2cdd6258df80">E_CLASS_GLOBAL_EXPLICIT_IMPLEMENT</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">klass</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">klass* klass##_instance = NULL;                                        \
                                                                           \
        void klass::init(<span class="keywordtype">void</span>) {                                               \
                if(!klass##_instance)                                              \
                        klass##_instance = <span class="keyword">new</span> klass();                                \
        }                                                                      \
                                                                           \
        void klass::shutdown(<span class="keywordtype">void</span>) {                                           \
                delete klass##_instance;                                           \
                klass##_instance = NULL;                                           \
        }                                                                      \
                                                                           \
        bool klass::inited(<span class="keywordtype">void</span>) {                                             \
                return (klass##_instance != NULL);                                 \
        }                                                                      \
                                                                           \
        klass* klass::global(<span class="keywordtype">void</span>) {                                           \
                E_ASSERT(klass##_instance != NULL &amp;&amp; <span class="stringliteral">&quot;Did you run init() first?&quot;</span>); \
                return klass##_instance;                                           \
        }
</pre></div><p>Implement needed ingredients for <em>E_CLASS_GLOBAL_EXPLICIT_DECLARE</em>. Goes where class code is implemented. </p>

</div>
</div>
<a class="anchor" id="ga313df07788bd80da721692e5a3306e76"></a><!-- doxytag: member="edelib&#45;global.h::E_CLASS_GLOBAL_IMPLEMENT" ref="ga313df07788bd80da721692e5a3306e76" args="(klass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga313df07788bd80da721692e5a3306e76">E_CLASS_GLOBAL_IMPLEMENT</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">klass</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">klass* klass::global(<span class="keywordtype">void</span>) {        \
                static klass obj;               \
                return &amp;obj;                    \
        }
</pre></div><p>Implement needed ingredients to allow this class has only one instance. Should be placed in class implementation. </p>

</div>
</div>
<a class="anchor" id="gaf4689a912d0c49e9eb5244659d8702ad"></a><!-- doxytag: member="Debug.h::E_DEBUG" ref="gaf4689a912d0c49e9eb5244659d8702ad" args="(...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gaf4689a912d0c49e9eb5244659d8702ad">E_DEBUG</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td>&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_DEBUG, __VA_ARGS__)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Should be used for output debug information in stderr. </p>

</div>
</div>
<a class="anchor" id="ga4c883ed6ca3f93856f51356dae945348"></a><!-- doxytag: member="Directory.h::E_DIR_SEPARATOR" ref="ga4c883ed6ca3f93856f51356dae945348" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga4c883ed6ca3f93856f51356dae945348">E_DIR_SEPARATOR</a>&#160;&#160;&#160;'/'</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Platfom specific directory separator as single character </p>

</div>
</div>
<a class="anchor" id="ga1c33ff77ec518424c4e353b341d222fc"></a><!-- doxytag: member="Directory.h::E_DIR_SEPARATOR_STR" ref="ga1c33ff77ec518424c4e353b341d222fc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga1c33ff77ec518424c4e353b341d222fc">E_DIR_SEPARATOR_STR</a>&#160;&#160;&#160;&quot;/&quot;</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Platfom specific directory separator as static string </p>

</div>
</div>
<a class="anchor" id="gaef9b2427c1dfe072bc563a6051cc385c"></a><!-- doxytag: member="edelib&#45;global.h::E_DISABLE_CLASS_COPY" ref="gaef9b2427c1dfe072bc563a6051cc385c" args="(klass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gaef9b2427c1dfe072bc563a6051cc385c">E_DISABLE_CLASS_COPY</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">klass</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">klass(<span class="keyword">const</span> klass&amp;);            \
        klass&amp; operator=(klass&amp;);
</pre></div><p>Disable class copying facility. Should be placed in private section of class declaration. </p>

</div>
</div>
<a class="anchor" id="gabaacffc3c0f14e4dd180b1e38c62c5a0"></a><!-- doxytag: member="Debug.h::E_FATAL" ref="gabaacffc3c0f14e4dd180b1e38c62c5a0" args="(...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gabaacffc3c0f14e4dd180b1e38c62c5a0">E_FATAL</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td>&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_FATAL, __VA_ARGS__)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Display error and call abort(). </p>

</div>
</div>
<a class="anchor" id="gaccd65ffc08fa0a20638addbb1d1b6fc5"></a><!-- doxytag: member="Debug.h::E_LIKELY" ref="gaccd65ffc08fa0a20638addbb1d1b6fc5" args="(expr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;(expr)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>E_LIKELY and E_UNLIKELY macros give a hint to compiler about expected results. Gcc can use these information for optimizations. These macros are inspired with G_LIKELY and G_UNLIKELY from glib.</p>
<dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY(expr)</a> is _not_ the same as !E_UNLIKELY(expr). </dd></dl>

</div>
</div>
<a class="anchor" id="ga5f27fd36cc1de2310c5c8671af5da145"></a><!-- doxytag: member="Debug.h::E_RETURN_IF_FAIL" ref="ga5f27fd36cc1de2310c5c8671af5da145" args="(expr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga5f27fd36cc1de2310c5c8671af5da145">E_RETURN_IF_FAIL</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                                            \
                if <a class="code" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY</a>(expr) { }                                       \
                else {                                                      \
                        E_WARNING(<a class="code" href="group__macros.html#gae4c765721ec0a156916181b895c87db8">E_STRLOC</a> <span class="stringliteral">&quot;: Condition &#39;%s&#39; failed\n&quot;</span>, #expr); \
                        return;                                                 \
                }                                                           \
        } <span class="keywordflow">while</span>(0)
</pre></div><p>E_RETURN_IF_FAIL is used for precondition and postcondition checks. When given expression fails, macro will return from current function, outputting information how condition failed. </p>

</div>
</div>
<a class="anchor" id="ga811d20a45794a3f87c68c965c355330b"></a><!-- doxytag: member="Debug.h::E_RETURN_VAL_IF_FAIL" ref="ga811d20a45794a3f87c68c965c355330b" args="(expr, val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga811d20a45794a3f87c68c965c355330b">E_RETURN_VAL_IF_FAIL</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">val&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                                                            \
                if <a class="code" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY</a>(expr) { }                                       \
                else {                                                      \
                        E_WARNING(<a class="code" href="group__macros.html#gae4c765721ec0a156916181b895c87db8">E_STRLOC</a> <span class="stringliteral">&quot;: Condition &#39;%s&#39; failed\n&quot;</span>, #expr); \
                        return (val);                                           \
                }                                                           \
        } <span class="keywordflow">while</span>(0)
</pre></div><p>Check if expression evaluates to the true (same as E_RETURN_IF_FAIL), but return user specified value if expression fails. </p>

</div>
</div>
<a class="anchor" id="gae4c765721ec0a156916181b895c87db8"></a><!-- doxytag: member="Debug.h::E_STRLOC" ref="gae4c765721ec0a156916181b895c87db8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gae4c765721ec0a156916181b895c87db8">E_STRLOC</a>&#160;&#160;&#160;__FILE__ &quot;:&quot; _E_STRLOC_STRINGIFY(__LINE__)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Stringify current location with file name and line number. </p>

</div>
</div>
<a class="anchor" id="ga2f0a48912ef84501c76aec74c833f139"></a><!-- doxytag: member="Debug.h::E_UNLIKELY" ref="ga2f0a48912ef84501c76aec74c833f139" args="(expr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga2f0a48912ef84501c76aec74c833f139">E_UNLIKELY</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;(expr)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__macros.html#gaccd65ffc08fa0a20638addbb1d1b6fc5">E_LIKELY</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad8e20debadc37298389feb2ffe904a5d"></a><!-- doxytag: member="Debug.h::E_WARNING" ref="gad8e20debadc37298389feb2ffe904a5d" args="(...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gad8e20debadc37298389feb2ffe904a5d">E_WARNING</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td>&#160;&#160;&#160;edelib_log(E_LOG_DOMAIN, EDELIB_ERROR_MESSAGE_WARNING, __VA_ARGS__)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Should be use for output warnings in stderr. </p>

</div>
</div>
<a class="anchor" id="ga55dc33a7fb72d8fcf5baf4542630d15a"></a><!-- doxytag: member="Ede.h::EDE_APPLICATION" ref="ga55dc33a7fb72d8fcf5baf4542630d15a" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga55dc33a7fb72d8fcf5baf4542630d15a">EDE_APPLICATION</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__macros.html#ga4b92b207cc305470f23afd5c80def4f8">EDE_APPLICATION_WITH_NLS_PATH</a>(name, &quot;dummy_path&quot;)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initialize common EDE code with application name. This macro uses <em>PREFIX</em> value to setup correct path for localization data, which means the header (<em><a class="el" href="Ede_8h_source.html">Ede.h</a></em>) should be included after <em>PREFIX</em> definition. </p>

</div>
</div>
<a class="anchor" id="ga4b92b207cc305470f23afd5c80def4f8"></a><!-- doxytag: member="Ede.h::EDE_APPLICATION_WITH_NLS_PATH" ref="ga4b92b207cc305470f23afd5c80def4f8" args="(name, path)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga4b92b207cc305470f23afd5c80def4f8">EDE_APPLICATION_WITH_NLS_PATH</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">path&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">extern</span> <span class="keywordtype">int</span> FL_NORMAL_SIZE;                      \
        FL_NORMAL_SIZE = 12;                            \
        EDELIB_NS_PREPEND(ApplicationBootstrap) __ede_application_bootstrap(name, path)
</pre></div><p>Initialize common EDE code with application name (must be binary name) and full path to locale directory. </p>

</div>
</div>
<a class="anchor" id="ga9a785839a6901d4d7fe787603456494b"></a><!-- doxytag: member="Ede.h::EDE_CONSOLE_APPLICATION" ref="ga9a785839a6901d4d7fe787603456494b" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga9a785839a6901d4d7fe787603456494b">EDE_CONSOLE_APPLICATION</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="group__macros.html#ga0db6bc4ec9f27d895bd7b67600cf6bf2">EDE_CONSOLE_APPLICATION_WITH_NLS_PATH</a>(name, &quot;dummy_path&quot;)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Same as EDE_APPLICATION but is intended for console applications. </p>

</div>
</div>
<a class="anchor" id="ga0db6bc4ec9f27d895bd7b67600cf6bf2"></a><!-- doxytag: member="Ede.h::EDE_CONSOLE_APPLICATION_WITH_NLS_PATH" ref="ga0db6bc4ec9f27d895bd7b67600cf6bf2" args="(name, path)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga0db6bc4ec9f27d895bd7b67600cf6bf2">EDE_CONSOLE_APPLICATION_WITH_NLS_PATH</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">path&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="group__macros.html#ga4d80b7de54cd23006ac164762ee83554">EDELIB_NS_PREPEND</a>(nls_support_init(name, path)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Same as EDE_APPLICATION_WITH_NLS_PATH but only for console applications. </p>

</div>
</div>
<a class="anchor" id="ga4d80b7de54cd23006ac164762ee83554"></a><!-- doxytag: member="edelib&#45;global.h::EDELIB_NS_PREPEND" ref="ga4d80b7de54cd23006ac164762ee83554" args="(n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga4d80b7de54cd23006ac164762ee83554">EDELIB_NS_PREPEND</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n</td><td>)</td>
          <td>&#160;&#160;&#160;EDELIB_NS::n</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Prepend default edelib namespace to the given identifier. </p>

</div>
</div>
<a class="anchor" id="ga8f7639974f6a5333e5108935f169c049"></a><!-- doxytag: member="edelib&#45;global.h::EDELIB_NS_USE" ref="ga8f7639974f6a5333e5108935f169c049" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga8f7639974f6a5333e5108935f169c049">EDELIB_NS_USE</a>&#160;&#160;&#160;using namespace EDELIB_NS;</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This macro expands on <em>using namespace edelib;</em> or any other name used as the main edelib namespace name. This macro is also the preferred to use than above expression in case if namespace support was disabled.</p>
<p>On other hand, globally including everything from edelib namespace is not preferred either; via this way all edelib symbols will be known, causing possible name collisions. Alternative to this is to explicitly include desired names via EDELIB_NS_USING.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Please note how all <em>EDELIB_NS_*</em> must not be ended with semicolon! Semicolon is already present in the macro and this is the only exception for edelib macros. </dd></dl>

</div>
</div>
<a class="anchor" id="gac7c8e3390f62b8f5223c38fa9f3db4c5"></a><!-- doxytag: member="edelib&#45;global.h::EDELIB_NS_USING" ref="gac7c8e3390f62b8f5223c38fa9f3db4c5" args="(n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#gac7c8e3390f62b8f5223c38fa9f3db4c5">EDELIB_NS_USING</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n</td><td>)</td>
          <td>&#160;&#160;&#160;using EDELIB_NS::n;</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Bring this name to the global namespace. This is the preferred way since you explicitly add desired name to the global namespace. </p>

</div>
</div>
<a class="anchor" id="ga0685016c0c2b3902aa23a68e612efc4f"></a><!-- doxytag: member="edelib&#45;global.h::EDELIB_NS_USING_AS" ref="ga0685016c0c2b3902aa23a68e612efc4f" args="(old_name, new_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga0685016c0c2b3902aa23a68e612efc4f">EDELIB_NS_USING_AS</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">old_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">new_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;typedef EDELIB_NS::old_name new_name;</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Redefine the name from edelib namespace to the global one. In the case of possible name collisions when edelib name is introduced globally, this macro should be used to rename it. </p>

</div>
</div>
<a class="anchor" id="ga528a063f5b21c06b0e7b8114e6a6532d"></a><!-- doxytag: member="edelib&#45;global.h::EDELIB_NS_USING_LIST" ref="ga528a063f5b21c06b0e7b8114e6a6532d" args="(n, list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="group__macros.html#ga528a063f5b21c06b0e7b8114e6a6532d">EDELIB_NS_USING_LIST</a></td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">list&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;EDELIB_FOR_EACH(n, list)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Import given list of names, by using EDELIB_NS_USING on each, like: </p>
<div class="fragment"><pre class="fragment">   <a class="code" href="group__macros.html#ga528a063f5b21c06b0e7b8114e6a6532d">EDELIB_NS_USING_LIST</a>(3, (String, List, <a class="code" href="group__foreigncallback.html#ga840d063f335a061e140d960b810438d1">foreign_callback_add</a>))
</pre></div><p>Notice given number; it should always match list size. </p>

</div>
</div>
</div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 5 2012 17:49:02 for edelib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>