blob: 5b1c477de3c3990e178d99eb785d60dacf8f7dbb [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Celix: libs/framework/include/celix_dm_component.h File Reference</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>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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">Celix
&#160;<span id="projectnumber">2.2.1</span>
</div>
<div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">celix_dm_component.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdbool.h&gt;</code><br />
<code>#include &quot;celix_types.h&quot;</code><br />
<code>#include &quot;celix_errno.h&quot;</code><br />
<code>#include &quot;properties.h&quot;</code><br />
<code>#include &quot;array_list.h&quot;</code><br />
<code>#include &quot;<a class="el" href="celix__dm__info_8h_source.html">celix_dm_info.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for celix_dm_component.h:</div>
<div class="dyncontent">
<div class="center"><img src="celix__dm__component_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__component_8h" alt=""/></div>
<map name="libs_2framework_2include_2celix__dm__component_8h" id="libs_2framework_2include_2celix__dm__component_8h">
<area shape="rect" title=" " alt="" coords="176,5,336,47"/>
<area shape="rect" title=" " alt="" coords="173,169,248,196"/>
<area shape="rect" title=" " alt="" coords="26,95,125,121"/>
<area shape="rect" title=" " alt="" coords="149,95,245,121"/>
<area shape="rect" title=" " alt="" coords="269,95,360,121"/>
<area shape="rect" title=" " alt="" coords="384,95,471,121"/>
<area shape="rect" href="celix__dm__info_8h.html" title=" " alt="" coords="495,95,608,121"/>
<area shape="rect" title=" " alt="" coords="418,169,538,196"/>
<area shape="rect" title=" " alt="" coords="563,169,687,196"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="celix__dm__component_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__component_8hdep" alt=""/></div>
<map name="libs_2framework_2include_2celix__dm__component_8hdep" id="libs_2framework_2include_2celix__dm__component_8hdep">
<area shape="rect" title=" " alt="" coords="5,5,165,47"/>
<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="10,95,161,136"/>
</map>
</div>
</div>
<p><a href="celix__dm__component_8h_source.html">Go to the source code of this file.</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:aa19dcff16825fa2e91656ff136d877cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf">CELIX_DM_COMPONENT_MAX_ID_LENGTH</a>&#160;&#160;&#160;64</td></tr>
<tr class="separator:aa19dcff16825fa2e91656ff136d877cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8861849eb5e4057def1bb12a5111d00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00">CELIX_DM_COMPONENT_MAX_NAME_LENGTH</a>&#160;&#160;&#160;128</td></tr>
<tr class="separator:af8861849eb5e4057def1bb12a5111d00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad1f80b04be28b8e7bf495113c2fe452"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452">CELIX_DMCOMPONENT_SETCALLBACKS</a>(dmCmp, type, init, start, stop, deinit)</td></tr>
<tr class="separator:aad1f80b04be28b8e7bf495113c2fe452"><td class="memSeparator" colspan="2">&#160;</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:afd49054c559adbeb9627fa3d45d6c02a"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a></td></tr>
<tr class="separator:afd49054c559adbeb9627fa3d45d6c02a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c73a72049f39d42d66b6d9c60d185dc"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>) (void *userData)</td></tr>
<tr class="separator:a9c73a72049f39d42d66b6d9c60d185dc"><td class="memSeparator" colspan="2">&#160;</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:ab8b6c8d35fe5b976b8f58a6816e6c4e4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a> { <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a> = 1,
<a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a> = 2,
<a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</a> = 3,
<a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a> = 4
}</td></tr>
<tr class="separator:ab8b6c8d35fe5b976b8f58a6816e6c4e4"><td class="memSeparator" colspan="2">&#160;</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:adf75af7d75d2c1f7e53d78f23f97d40c"><td class="memItemLeft" align="right" valign="top">celix_dm_component_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a> (celix_bundle_context_t *context, const char *name)</td></tr>
<tr class="separator:adf75af7d75d2c1f7e53d78f23f97d40c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a8c5019a43eb96d62fd9e98cb56ba8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a> (celix_dm_component_t *cmp)</td></tr>
<tr class="separator:a56a8c5019a43eb96d62fd9e98cb56ba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8bd7a13007bda2619c1764886eabeab"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a> (celix_dm_component_t *component, bool setCLangProp)</td></tr>
<tr class="separator:ab8bd7a13007bda2619c1764886eabeab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafd2f2eff931784f70eb2a37e943446a"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a> (celix_dm_component_t *component, const char *serviceName, const char *serviceVersion, const void *service, celix_properties_t *properties)</td></tr>
<tr class="separator:aafd2f2eff931784f70eb2a37e943446a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4a6e8e87cc8d3b3655eaaa06ad261e"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a> (celix_dm_component_t *component, const void *service)</td></tr>
<tr class="separator:a3e4a6e8e87cc8d3b3655eaaa06ad261e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45a01df6ed75d8530563d52f58a0b165"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a> (celix_dm_component_t *component, void *implementation)</td></tr>
<tr class="separator:a45a01df6ed75d8530563d52f58a0b165"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0312e00f51f85d8e48b18020964e21f"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a> (celix_dm_component_t *component, celix_array_list_t **servicesNames)</td></tr>
<tr class="separator:ae0312e00f51f85d8e48b18020964e21f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7d4a85042adba432bd8d398d9c106b8"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a> (celix_dm_component_t *component, celix_dm_service_dependency_t *dep)</td></tr>
<tr class="separator:ad7d4a85042adba432bd8d398d9c106b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ce2c610cbe3a329ea6561eb5cda0d8d"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a> (celix_dm_component_t *component, celix_dm_service_dependency_t *dependency)</td></tr>
<tr class="separator:a0ce2c610cbe3a329ea6561eb5cda0d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af98630b8f8980c906d5aefc5f8a82c99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a> (celix_dm_component_t *cmp)</td></tr>
<tr class="separator:af98630b8f8980c906d5aefc5f8a82c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5647f75ea3a3c3755940ee42f51320a8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a> (celix_dm_component_t *cmp)</td></tr>
<tr class="separator:a5647f75ea3a3c3755940ee42f51320a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30de51befa422dc65ac89ae3d9b8319f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a> (celix_dm_component_t *cmp)</td></tr>
<tr class="separator:a30de51befa422dc65ac89ae3d9b8319f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99be995e9e94514fc4f6782dd48456ba"><td class="memItemLeft" align="right" valign="top">celix_bundle_context_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a> (celix_dm_component_t *component)</td></tr>
<tr class="separator:a99be995e9e94514fc4f6782dd48456ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a017e996f6b1db5e902bf3a9cc043634f"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a> (celix_dm_component_t *component, <a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> init, <a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> start, <a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> stop, <a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> deinit)</td></tr>
<tr class="separator:a017e996f6b1db5e902bf3a9cc043634f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3345d3bfa11070069d745131668d02ae"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a> (celix_dm_component_t *component, <a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a> *info)</td></tr>
<tr class="separator:a3345d3bfa11070069d745131668d02ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bbf1a0da294be7ba9ae8272f1b938d7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a> (celix_dm_component_t *component)</td></tr>
<tr class="separator:a7bbf1a0da294be7ba9ae8272f1b938d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af62df6623e978a1cc62b3ca8ab5863c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a> (<a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a> info)</td></tr>
<tr class="separator:af62df6623e978a1cc62b3ca8ab5863c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="aa19dcff16825fa2e91656ff136d877cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa19dcff16825fa2e91656ff136d877cf">&#9670;&nbsp;</a></span>CELIX_DM_COMPONENT_MAX_ID_LENGTH</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CELIX_DM_COMPONENT_MAX_ID_LENGTH&#160;&#160;&#160;64</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af8861849eb5e4057def1bb12a5111d00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8861849eb5e4057def1bb12a5111d00">&#9670;&nbsp;</a></span>CELIX_DM_COMPONENT_MAX_NAME_LENGTH</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CELIX_DM_COMPONENT_MAX_NAME_LENGTH&#160;&#160;&#160;128</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aad1f80b04be28b8e7bf495113c2fe452"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad1f80b04be28b8e7bf495113c2fe452">&#9670;&nbsp;</a></span>CELIX_DMCOMPONENT_SETCALLBACKS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CELIX_DMCOMPONENT_SETCALLBACKS</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">dmCmp, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">type, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">init, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">start, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">stop, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">deinit&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <span class="keywordflow">do</span> { \</div>
<div class="line"> int (*tmp_init)(type) = (init); \</div>
<div class="line"> int (*tmp_start)(type) = (start); \</div>
<div class="line"> int (*tmp_stop)(type) = (stop); \</div>
<div class="line"> int (*tmp_deinit)(type) = (deinit); \</div>
<div class="line"> celix_dmComponent_setCallbacks((dmCmp), (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_init, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_start, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_stop, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_deinit); \</div>
<div class="line"> } <span class="keywordflow">while</span>(0)</div>
</div><!-- fragment --><p>Set the component life cycle callbacks using a MACRO for improving the type safety. </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a9c73a72049f39d42d66b6d9c60d185dc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c73a72049f39d42d66b6d9c60d185dc">&#9670;&nbsp;</a></span>celix_dm_cmp_lifecycle_fpt</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef int(* celix_dm_cmp_lifecycle_fpt) (void *userData)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afd49054c559adbeb9627fa3d45d6c02a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd49054c559adbeb9627fa3d45d6c02a">&#9670;&nbsp;</a></span>celix_dm_component_state_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a> <a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8b6c8d35fe5b976b8f58a6816e6c4e4">&#9670;&nbsp;</a></span>celix_dm_component_state_enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"></a>DM_CMP_STATE_INACTIVE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"></a>DM_CMP_STATE_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"></a>DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"></a>DM_CMP_STATE_TRACKING_OPTIONAL&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="aafd2f2eff931784f70eb2a37e943446a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafd2f2eff931784f70eb2a37e943446a">&#9670;&nbsp;</a></span>celix_dmComponent_addInterface()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_addInterface </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>serviceName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>serviceVersion</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>service</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">celix_properties_t *&#160;</td>
<td class="paramname"><em>properties</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a C interface to provide as service to the Celix framework.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">serviceName</td><td>the service name. </td></tr>
<tr><td class="paramname">version</td><td>The version of the interface (e.g. "1.0.0"), Can be a NULL pointer. </td></tr>
<tr><td class="paramname">properties</td><td>To (meta) properties to provide with the service. Can be a NULL pointer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad7d4a85042adba432bd8d398d9c106b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7d4a85042adba432bd8d398d9c106b8">&#9670;&nbsp;</a></span>celix_dmComponent_addServiceDependency()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_addServiceDependency </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
<td class="paramname"><em>dep</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a C service dependency to the component </p>
</div>
</div>
<a id="adf75af7d75d2c1f7e53d78f23f97d40c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf75af7d75d2c1f7e53d78f23f97d40c">&#9670;&nbsp;</a></span>celix_dmComponent_create()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_dm_component_t* celix_dmComponent_create </td>
<td>(</td>
<td class="paramtype">celix_bundle_context_t *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a DM Component Caller has ownership. </p>
</div>
</div>
<a id="af98630b8f8980c906d5aefc5f8a82c99"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af98630b8f8980c906d5aefc5f8a82c99">&#9670;&nbsp;</a></span>celix_dmComponent_currentState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a> celix_dmComponent_currentState </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>cmp</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the current state of the component. </p>
</div>
</div>
<a id="a56a8c5019a43eb96d62fd9e98cb56ba8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a8c5019a43eb96d62fd9e98cb56ba8">&#9670;&nbsp;</a></span>celix_dmComponent_destroy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void celix_dmComponent_destroy </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>cmp</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys a DM Component </p>
</div>
</div>
<a id="af62df6623e978a1cc62b3ca8ab5863c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af62df6623e978a1cc62b3ca8ab5863c3">&#9670;&nbsp;</a></span>celix_dmComponent_destroyComponentInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void celix_dmComponent_destroyComponentInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a>&#160;</td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys a DM Component info struct. </p>
</div>
</div>
<a id="a99be995e9e94514fc4f6782dd48456ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99be995e9e94514fc4f6782dd48456ba">&#9670;&nbsp;</a></span>celix_dmComponent_getBundleContext()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_bundle_context_t* celix_dmComponent_getBundleContext </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns bundle context for the bundle where this DM component is part of. </p>
</div>
</div>
<a id="a3345d3bfa11070069d745131668d02ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3345d3bfa11070069d745131668d02ae">&#9670;&nbsp;</a></span>celix_dmComponent_getComponentInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_getComponentInfo </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a> *&#160;</td>
<td class="paramname"><em>info</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a DM Component info struct. Containing information about the component. Caller has ownership. </p>
</div>
</div>
<a id="a5647f75ea3a3c3755940ee42f51320a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5647f75ea3a3c3755940ee42f51320a8">&#9670;&nbsp;</a></span>celix_dmComponent_getImplementation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* celix_dmComponent_getImplementation </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>cmp</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the implementation of the component. e.g. the component handle/self/this pointer. </p>
</div>
</div>
<a id="ae0312e00f51f85d8e48b18020964e21f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0312e00f51f85d8e48b18020964e21f">&#9670;&nbsp;</a></span>celix_dmComponent_getInterfaces()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_getInterfaces </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">celix_array_list_t **&#160;</td>
<td class="paramname"><em>servicesNames</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an arraylist of service names. The caller owns the arraylist and strings (char *) </p>
</div>
</div>
<a id="a30de51befa422dc65ac89ae3d9b8319f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30de51befa422dc65ac89ae3d9b8319f">&#9670;&nbsp;</a></span>celix_dmComponent_getName()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* celix_dmComponent_getName </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>cmp</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the DM component name. This is used when printing information about the component. </p>
</div>
</div>
<a id="a7bbf1a0da294be7ba9ae8272f1b938d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7bbf1a0da294be7ba9ae8272f1b938d7">&#9670;&nbsp;</a></span>celix_dmComponent_isActive()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool celix_dmComponent_isActive </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3e4a6e8e87cc8d3b3655eaaa06ad261e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e4a6e8e87cc8d3b3655eaaa06ad261e">&#9670;&nbsp;</a></span>celix_dmComponent_removeInterface()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_removeInterface </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>service</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removed a C interface from a component the Celix framework.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">serviceName</td><td>the service name. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>CELIX_SUCCESS when removed, CELIX_ILLEGAL_ARGUMENT when the component does not provide the interface </dd></dl>
</div>
</div>
<a id="a0ce2c610cbe3a329ea6561eb5cda0d8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ce2c610cbe3a329ea6561eb5cda0d8d">&#9670;&nbsp;</a></span>celix_dmComponent_removeServiceDependency()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_removeServiceDependency </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
<td class="paramname"><em>dependency</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes a C service dependency to the component </p>
</div>
</div>
<a id="a017e996f6b1db5e902bf3a9cc043634f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a017e996f6b1db5e902bf3a9cc043634f">&#9670;&nbsp;</a></span>celix_dmComponent_setCallbacks()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_setCallbacks </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>&#160;</td>
<td class="paramname"><em>init</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>&#160;</td>
<td class="paramname"><em>stop</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>&#160;</td>
<td class="paramname"><em>deinit</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the component life cycle callbacks. The first argument will be the component implementation (</p><dl class="section see"><dt>See also</dt><dd>component_getImplementation) </dd></dl>
</div>
</div>
<a id="ab8bd7a13007bda2619c1764886eabeab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8bd7a13007bda2619c1764886eabeab">&#9670;&nbsp;</a></span>celix_dmComponent_setCLanguageProperty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_setCLanguageProperty </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>setCLangProp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Specify if a default 'service.lang=C' should be added to the properties of interfaces if no 'service.lang' has been provided. Default is false. Note that this should be set before using component_addInterface. </p>
</div>
</div>
<a id="a45a01df6ed75d8530563d52f58a0b165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45a01df6ed75d8530563d52f58a0b165">&#9670;&nbsp;</a></span>celix_dmComponent_setImplementation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_status_t celix_dmComponent_setImplementation </td>
<td>(</td>
<td class="paramtype">celix_dm_component_t *&#160;</td>
<td class="paramname"><em>component</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>implementation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the implementation of the component. e.g. the component handle/self/this pointer. </p>
</div>
</div>
</div><!-- contents -->
<div class="ttc" id="acelix__dm__component_8h_html_a9c73a72049f39d42d66b6d9c60d185dc"><div class="ttname"><a href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a></div><div class="ttdeci">int(* celix_dm_cmp_lifecycle_fpt)(void *userData)</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:45</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>