You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by rl...@apache.org on 2020/02/05 15:43:45 UTC

[celix-site] branch master updated: Added Doxygen documentation for release 2.2.0 to the website

This is an automated email from the ASF dual-hosted git repository.

rlenferink pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/celix-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 2cf89b9  Added Doxygen documentation for release 2.2.0 to the website
2cf89b9 is described below

commit 2cf89b94600cc5ef4dd031fe5f305f67b4d987bb
Author: Roy Lenferink <le...@gmail.com>
AuthorDate: Wed Feb 5 16:43:21 2020 +0100

    Added Doxygen documentation for release 2.2.0 to the website
    
    A script to generate the Doxygen documentation is added as well.
    
    As described on doxygen.nl: 'Documents produced by doxygen are derivative works derived from the input used in their production; they are not affected by this license.'
---
 README.md                                          |    6 +-
 generate_celix_doxygen.sh                          |   56 +
 source/docs/2.2.0/docs.md                          |    4 +-
 static/docs/2.2.0/html/README_8md.html             |   97 ++
 static/docs/2.2.0/html/annotated.html              |  113 ++
 static/docs/2.2.0/html/arrowdown.png               |  Bin 0 -> 246 bytes
 static/docs/2.2.0/html/arrowright.png              |  Bin 0 -> 229 bytes
 static/docs/2.2.0/html/bc_s.png                    |  Bin 0 -> 676 bytes
 static/docs/2.2.0/html/bdwn.png                    |  Bin 0 -> 147 bytes
 static/docs/2.2.0/html/celix__api_8h.html          |  120 ++
 static/docs/2.2.0/html/celix__api_8h_source.html   |  106 ++
 static/docs/2.2.0/html/celix__bundle_8h.html       |  250 +++
 .../2.2.0/html/celix__bundle_8h__dep__incl.map     |    3 +
 .../2.2.0/html/celix__bundle_8h__dep__incl.md5     |    1 +
 .../2.2.0/html/celix__bundle_8h__dep__incl.png     |  Bin 0 -> 5120 bytes
 static/docs/2.2.0/html/celix__bundle_8h__incl.map  |    2 +
 static/docs/2.2.0/html/celix__bundle_8h__incl.md5  |    1 +
 static/docs/2.2.0/html/celix__bundle_8h__incl.png  |  Bin 0 -> 6461 bytes
 .../docs/2.2.0/html/celix__bundle_8h_source.html   |  106 ++
 .../2.2.0/html/celix__bundle__activator_8h.html    |  352 ++++
 .../celix__bundle__activator_8h__dep__incl.map     |    3 +
 .../celix__bundle__activator_8h__dep__incl.md5     |    1 +
 .../celix__bundle__activator_8h__dep__incl.png     |  Bin 0 -> 5441 bytes
 .../html/celix__bundle__activator_8h__incl.map     |    3 +
 .../html/celix__bundle__activator_8h__incl.md5     |    1 +
 .../html/celix__bundle__activator_8h__incl.png     |  Bin 0 -> 16776 bytes
 .../html/celix__bundle__activator_8h_source.html   |  106 ++
 .../docs/2.2.0/html/celix__bundle__context_8h.html | 1749 ++++++++++++++++++++
 .../html/celix__bundle__context_8h__dep__incl.map  |    4 +
 .../html/celix__bundle__context_8h__dep__incl.md5  |    1 +
 .../html/celix__bundle__context_8h__dep__incl.png  |  Bin 0 -> 12711 bytes
 .../2.2.0/html/celix__bundle__context_8h__incl.map |    2 +
 .../2.2.0/html/celix__bundle__context_8h__incl.md5 |    1 +
 .../2.2.0/html/celix__bundle__context_8h__incl.png |  Bin 0 -> 12553 bytes
 .../html/celix__bundle__context_8h_source.html     |  169 ++
 .../docs/2.2.0/html/celix__dm__component_8h.html   |  759 +++++++++
 .../html/celix__dm__component_8h__dep__incl.map    |    3 +
 .../html/celix__dm__component_8h__dep__incl.md5    |    1 +
 .../html/celix__dm__component_8h__dep__incl.png    |  Bin 0 -> 5433 bytes
 .../2.2.0/html/celix__dm__component_8h__incl.map   |    3 +
 .../2.2.0/html/celix__dm__component_8h__incl.md5   |    1 +
 .../2.2.0/html/celix__dm__component_8h__incl.png   |  Bin 0 -> 23347 bytes
 .../2.2.0/html/celix__dm__component_8h_source.html |  127 ++
 static/docs/2.2.0/html/celix__dm__info_8h.html     |  310 ++++
 .../2.2.0/html/celix__dm__info_8h__dep__incl.map   |    5 +
 .../2.2.0/html/celix__dm__info_8h__dep__incl.md5   |    1 +
 .../2.2.0/html/celix__dm__info_8h__dep__incl.png   |  Bin 0 -> 11629 bytes
 .../docs/2.2.0/html/celix__dm__info_8h__incl.map   |    2 +
 .../docs/2.2.0/html/celix__dm__info_8h__incl.md5   |    1 +
 .../docs/2.2.0/html/celix__dm__info_8h__incl.png   |  Bin 0 -> 8496 bytes
 .../docs/2.2.0/html/celix__dm__info_8h_source.html |  121 ++
 .../html/celix__dm__service__dependency_8h.html    |  643 +++++++
 .../celix__dm__service__dependency_8h__incl.map    |    3 +
 .../celix__dm__service__dependency_8h__incl.md5    |    1 +
 .../celix__dm__service__dependency_8h__incl.png    |  Bin 0 -> 14708 bytes
 .../celix__dm__service__dependency_8h_source.html  |  133 ++
 static/docs/2.2.0/html/celix__framework_8h.html    |  304 ++++
 .../2.2.0/html/celix__framework_8h__dep__incl.map  |    3 +
 .../2.2.0/html/celix__framework_8h__dep__incl.md5  |    1 +
 .../2.2.0/html/celix__framework_8h__dep__incl.png  |  Bin 0 -> 5064 bytes
 .../docs/2.2.0/html/celix__framework_8h__incl.map  |    2 +
 .../docs/2.2.0/html/celix__framework_8h__incl.md5  |    1 +
 .../docs/2.2.0/html/celix__framework_8h__incl.png  |  Bin 0 -> 6735 bytes
 .../2.2.0/html/celix__framework_8h_source.html     |  106 ++
 static/docs/2.2.0/html/classes.html                |  107 ++
 static/docs/2.2.0/html/closed.png                  |  Bin 0 -> 132 bytes
 .../html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html |  107 ++
 .../html/dir_bc286dd6b945a73064974dfd7e40f558.html |  121 ++
 .../html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html |  107 ++
 static/docs/2.2.0/html/doc.png                     |  Bin 0 -> 746 bytes
 static/docs/2.2.0/html/doxygen.css                 | 1475 +++++++++++++++++
 static/docs/2.2.0/html/doxygen.png                 |  Bin 0 -> 3779 bytes
 static/docs/2.2.0/html/dynsections.js              |   97 ++
 static/docs/2.2.0/html/files.html                  |  112 ++
 static/docs/2.2.0/html/folderclosed.png            |  Bin 0 -> 616 bytes
 static/docs/2.2.0/html/folderopen.png              |  Bin 0 -> 597 bytes
 static/docs/2.2.0/html/functions.html              |  284 ++++
 static/docs/2.2.0/html/functions_vars.html         |  284 ++++
 static/docs/2.2.0/html/globals.html                |  494 ++++++
 static/docs/2.2.0/html/globals_defs.html           |  138 ++
 static/docs/2.2.0/html/globals_enum.html           |  111 ++
 static/docs/2.2.0/html/globals_eval.html           |  123 ++
 static/docs/2.2.0/html/globals_func.html           |  349 ++++
 static/docs/2.2.0/html/globals_type.html           |  183 ++
 static/docs/2.2.0/html/graph_legend.html           |  120 ++
 static/docs/2.2.0/html/graph_legend.md5            |    1 +
 static/docs/2.2.0/html/graph_legend.png            |  Bin 0 -> 17247 bytes
 static/docs/2.2.0/html/index.html                  |   99 ++
 static/docs/2.2.0/html/jquery.js                   |   68 +
 static/docs/2.2.0/html/nav_f.png                   |  Bin 0 -> 153 bytes
 static/docs/2.2.0/html/nav_g.png                   |  Bin 0 -> 95 bytes
 static/docs/2.2.0/html/nav_h.png                   |  Bin 0 -> 98 bytes
 static/docs/2.2.0/html/open.png                    |  Bin 0 -> 123 bytes
 static/docs/2.2.0/html/search/all_0.html           |   26 +
 static/docs/2.2.0/html/search/all_0.js             |    9 +
 static/docs/2.2.0/html/search/all_1.html           |   26 +
 static/docs/2.2.0/html/search/all_1.js             |    5 +
 static/docs/2.2.0/html/search/all_2.html           |   26 +
 static/docs/2.2.0/html/search/all_2.js             |  132 ++
 static/docs/2.2.0/html/search/all_3.html           |   26 +
 static/docs/2.2.0/html/search/all_3.js             |   18 +
 static/docs/2.2.0/html/search/all_4.html           |   26 +
 static/docs/2.2.0/html/search/all_4.js             |    4 +
 static/docs/2.2.0/html/search/all_5.html           |   26 +
 static/docs/2.2.0/html/search/all_5.js             |    5 +
 static/docs/2.2.0/html/search/all_6.html           |   26 +
 static/docs/2.2.0/html/search/all_6.js             |    4 +
 static/docs/2.2.0/html/search/all_7.html           |   26 +
 static/docs/2.2.0/html/search/all_7.js             |    7 +
 static/docs/2.2.0/html/search/all_8.html           |   26 +
 static/docs/2.2.0/html/search/all_8.js             |    4 +
 static/docs/2.2.0/html/search/all_9.html           |   26 +
 static/docs/2.2.0/html/search/all_9.js             |    9 +
 static/docs/2.2.0/html/search/all_a.html           |   26 +
 static/docs/2.2.0/html/search/all_a.js             |   12 +
 static/docs/2.2.0/html/search/all_b.html           |   26 +
 static/docs/2.2.0/html/search/all_b.js             |    6 +
 static/docs/2.2.0/html/search/classes_0.html       |   26 +
 static/docs/2.2.0/html/search/classes_0.js         |   14 +
 static/docs/2.2.0/html/search/close.png            |  Bin 0 -> 273 bytes
 static/docs/2.2.0/html/search/defines_0.html       |   26 +
 static/docs/2.2.0/html/search/defines_0.js         |   13 +
 static/docs/2.2.0/html/search/defines_1.html       |   26 +
 static/docs/2.2.0/html/search/defines_1.js         |    4 +
 static/docs/2.2.0/html/search/enums_0.html         |   26 +
 static/docs/2.2.0/html/search/enums_0.js           |    5 +
 static/docs/2.2.0/html/search/enumvalues_0.html    |   26 +
 static/docs/2.2.0/html/search/enumvalues_0.js      |    9 +
 static/docs/2.2.0/html/search/files_0.html         |   26 +
 static/docs/2.2.0/html/search/files_0.js           |   11 +
 static/docs/2.2.0/html/search/files_1.html         |   26 +
 static/docs/2.2.0/html/search/files_1.js           |    4 +
 static/docs/2.2.0/html/search/functions_0.html     |   26 +
 static/docs/2.2.0/html/search/functions_0.js       |   82 +
 static/docs/2.2.0/html/search/mag_sel.png          |  Bin 0 -> 563 bytes
 static/docs/2.2.0/html/search/nomatches.html       |   12 +
 static/docs/2.2.0/html/search/search.css           |  271 +++
 static/docs/2.2.0/html/search/search.js            |  791 +++++++++
 static/docs/2.2.0/html/search/search_l.png         |  Bin 0 -> 604 bytes
 static/docs/2.2.0/html/search/search_m.png         |  Bin 0 -> 158 bytes
 static/docs/2.2.0/html/search/search_r.png         |  Bin 0 -> 612 bytes
 static/docs/2.2.0/html/search/searchdata.js        |   39 +
 static/docs/2.2.0/html/search/typedefs_0.html      |   26 +
 static/docs/2.2.0/html/search/typedefs_0.js        |   21 +
 static/docs/2.2.0/html/search/typedefs_1.html      |   26 +
 static/docs/2.2.0/html/search/typedefs_1.js        |   11 +
 static/docs/2.2.0/html/search/variables_0.html     |   26 +
 static/docs/2.2.0/html/search/variables_0.js       |    9 +
 static/docs/2.2.0/html/search/variables_1.html     |   26 +
 static/docs/2.2.0/html/search/variables_1.js       |    5 +
 static/docs/2.2.0/html/search/variables_2.html     |   26 +
 static/docs/2.2.0/html/search/variables_2.js       |    5 +
 static/docs/2.2.0/html/search/variables_3.html     |   26 +
 static/docs/2.2.0/html/search/variables_3.js       |    4 +
 static/docs/2.2.0/html/search/variables_4.html     |   26 +
 static/docs/2.2.0/html/search/variables_4.js       |    4 +
 static/docs/2.2.0/html/search/variables_5.html     |   26 +
 static/docs/2.2.0/html/search/variables_5.js       |    5 +
 static/docs/2.2.0/html/search/variables_6.html     |   26 +
 static/docs/2.2.0/html/search/variables_6.js       |    4 +
 static/docs/2.2.0/html/search/variables_7.html     |   26 +
 static/docs/2.2.0/html/search/variables_7.js       |    7 +
 static/docs/2.2.0/html/search/variables_8.html     |   26 +
 static/docs/2.2.0/html/search/variables_8.js       |    4 +
 static/docs/2.2.0/html/search/variables_9.html     |   26 +
 static/docs/2.2.0/html/search/variables_9.js       |    8 +
 static/docs/2.2.0/html/search/variables_a.html     |   26 +
 static/docs/2.2.0/html/search/variables_a.js       |   12 +
 static/docs/2.2.0/html/search/variables_b.html     |   26 +
 static/docs/2.2.0/html/search/variables_b.js       |    6 +
 static/docs/2.2.0/html/splitbar.png                |  Bin 0 -> 314 bytes
 ...uctcelix__bundle__tracker__options-members.html |  106 ++
 .../structcelix__bundle__tracker__options.html     |  206 +++
 ...celix__dm__component__info__struct-members.html |  107 ++
 .../structcelix__dm__component__info__struct.html  |  195 +++
 ..._dependency__manager__info__struct-members.html |  103 ++
 ...lix__dm__dependency__manager__info__struct.html |  139 ++
 ...celix__dm__interface__info__struct-members.html |  103 ++
 .../structcelix__dm__interface__info__struct.html  |  139 ++
 ...ice__dependency__callback__options-members.html |  109 ++
 ...dm__service__dependency__callback__options.html |  223 +++
 ..._service__dependency__info__struct-members.html |  105 ++
 ...lix__dm__service__dependency__info__struct.html |  167 ++
 ...uctcelix__service__filter__options-members.html |  106 ++
 .../structcelix__service__filter__options.html     |  188 +++
 ...ix__service__registration__options-members.html |  107 ++
 ...tructcelix__service__registration__options.html |  208 +++
 ...tructcelix__service__tracker__info-members.html |  105 ++
 .../html/structcelix__service__tracker__info.html  |  173 ++
 ...tcelix__service__tracking__options-members.html |  112 ++
 .../structcelix__service__tracking__options.html   |  305 ++++
 ...ix__service__tracking__options__coll__graph.map |    3 +
 ...ix__service__tracking__options__coll__graph.md5 |    1 +
 ...ix__service__tracking__options__coll__graph.png |  Bin 0 -> 5288 bytes
 ...structcelix__service__use__options-members.html |  107 ++
 .../html/structcelix__service__use__options.html   |  220 +++
 ...ctcelix__service__use__options__coll__graph.map |    3 +
 ...ctcelix__service__use__options__coll__graph.md5 |    1 +
 ...ctcelix__service__use__options__coll__graph.png |  Bin 0 -> 4343 bytes
 static/docs/2.2.0/html/sync_off.png                |  Bin 0 -> 853 bytes
 static/docs/2.2.0/html/sync_on.png                 |  Bin 0 -> 845 bytes
 static/docs/2.2.0/html/tab_a.png                   |  Bin 0 -> 142 bytes
 static/docs/2.2.0/html/tab_b.png                   |  Bin 0 -> 169 bytes
 static/docs/2.2.0/html/tab_h.png                   |  Bin 0 -> 177 bytes
 static/docs/2.2.0/html/tab_s.png                   |  Bin 0 -> 184 bytes
 static/docs/2.2.0/html/tabs.css                    |   60 +
 206 files changed, 16024 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index 3060d33..e60a1a5 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,11 @@ See [Hugo](https://gohugo.io/) for more info and for details how to install Hugo
 ### Copy documentation dir from celix repo
 
  - Run `git submodule init` and `git submodule update` to retrieve the Celix sources.
- - Run `./extract_celix_docs.sh` to copy the markdown files from the Celix main repository to the site repository.
+ - Run `./extract_celix_docs.sh "<version number>"` to copy the markdown files from the Celix main repository to the site repository.
 
-### Create Doxygen documentation
+### Doxygen documentation
 
-TODO
+ - Run `./generate_celix_doxygen.sh "<version number>"` to generate the Doxygen pages for the specified Celix release.
 
 ### Generate the static website
 
diff --git a/generate_celix_doxygen.sh b/generate_celix_doxygen.sh
new file mode 100644
index 0000000..efd708c
--- /dev/null
+++ b/generate_celix_doxygen.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A script to generate Doxygen documentation for the specified release
+
+ROOT_DIR=$(pwd)
+CELIX_SRC_DIR="celix-src"
+DOCS_DIR="static/docs"
+
+RELEASE_VERSION=${1}
+if [[ -z ${RELEASE_VERSION} ]]; then
+    echo "Celix release not specified!"
+    echo ""
+    echo "Run with:"
+    echo "  ./generate_celix_doxygen.sh <released version>"
+    echo "    e.g."
+    echo "  ./generate_celix_doxygen.sh \"2.1.0\""
+
+    exit 1
+fi
+
+RELEASE_DIR="${DOCS_DIR}/${RELEASE_VERSION}"
+DOXYGEN_DOCS_DIR="${DOCS_DIR}/${RELEASE_VERSION}/html"
+
+if [[ ! -d "${DOXYGEN_DOCS_DIR}" ]]; then
+    mkdir -p ${RELEASE_DIR}
+
+    # Set the PROJECT_NUMBER to the released version
+    sed -i -E 's/^(PROJECT_NUMBER[[:blank:]]*=[[:blank:]]*).*/\1'"${RELEASE_VERSION}"'/' ${CELIX_SRC_DIR}/Doxyfile
+
+    # Set output directory (used as environment variable in the Doxyfile)
+    export DOXYGEN_OUTPUT_DIR="${ROOT_DIR}/${RELEASE_DIR}"
+
+    # Generate documentation
+    cd ${ROOT_DIR}/${CELIX_SRC_DIR}
+    doxygen Doxyfile
+
+    cd ${ROOT_DIR}
+else
+    echo "Not generating Doxygen documentation, Doxygen directory already exists for release!"
+    exit 1
+fi
diff --git a/source/docs/2.2.0/docs.md b/source/docs/2.2.0/docs.md
index ee9c156..7161804 100644
--- a/source/docs/2.2.0/docs.md
+++ b/source/docs/2.2.0/docs.md
@@ -13,7 +13,9 @@ Please follow the links below to find appropriate content:
  - [CMake Commands](./celix/documents/cmake_commands/README.html)
  - [Building](./celix/documents/building/README.html)
  - [Subprojects](./celix/documents/subprojects/README.html)
- 
+
+The Doxygen documentation for release 2.2.0 is available <a href="html/index.html" target="_blank">here</a>.
+
 View the 2.2.0 changelog [here](./celix/CHANGES.html).
  
 > The [Celix mailing list](/support/mailing-list.html) is an excellent place to reach out for help. If you don't find 
diff --git a/static/docs/2.2.0/html/README_8md.html b/static/docs/2.2.0/html/README_8md.html
new file mode 100644
index 0000000..b3416da
--- /dev/null
+++ b/static/docs/2.2.0/html/README_8md.html
@@ -0,0 +1,97 @@
+<!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.11"/>
+<title>Celix: README.md 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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">README.md File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/annotated.html b/static/docs/2.2.0/html/annotated.html
new file mode 100644
index 0000000..c11f22a
--- /dev/null
+++ b/static/docs/2.2.0/html/annotated.html
@@ -0,0 +1,113 @@
+<!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.11"/>
+<title>Celix: Class List</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="header">
+  <div class="headertitle">
+<div class="title">Class List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__bundle__tracker__options.html" target="_self">celix_bundle_tracker_options</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__dm__component__info__struct.html" target="_self">celix_dm_component_info_struct</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__dm__dependency__manager__info__struct.html" target="_self">celix_dm_dependency_manager_info_struct</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__dm__interface__info__struct.html" target="_self">celix_dm_interface_info_struct</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__dm__service__dependency__callback__options.html" target="_self">celix_dm_service_dependency_callback_options</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__dm__service__dependency__info__struct.html" target="_self">celix_dm_service_dependency_info_struct</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__service__filter__options.html" target="_self">celix_service_filter_options</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__service__registration__options.html" target="_self">celix_service_registration_options</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__service__tracker__info.html" target="_self">celix_service_tracker_info</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__service__tracking__options.html" target="_self">celix_service_tracking_options</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structcelix__service__use__options.html" target="_self">celix_service_use_options</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/arrowdown.png b/static/docs/2.2.0/html/arrowdown.png
new file mode 100644
index 0000000..0b63f6d
Binary files /dev/null and b/static/docs/2.2.0/html/arrowdown.png differ
diff --git a/static/docs/2.2.0/html/arrowright.png b/static/docs/2.2.0/html/arrowright.png
new file mode 100644
index 0000000..c6ee22f
Binary files /dev/null and b/static/docs/2.2.0/html/arrowright.png differ
diff --git a/static/docs/2.2.0/html/bc_s.png b/static/docs/2.2.0/html/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/static/docs/2.2.0/html/bc_s.png differ
diff --git a/static/docs/2.2.0/html/bdwn.png b/static/docs/2.2.0/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/static/docs/2.2.0/html/bdwn.png differ
diff --git a/static/docs/2.2.0/html/celix__api_8h.html b/static/docs/2.2.0/html/celix__api_8h.html
new file mode 100644
index 0000000..830e2d9
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__api_8h.html
@@ -0,0 +1,120 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_api.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_api.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;properties.h&quot;</code><br />
+<code>#include &quot;array_list.h&quot;</code><br />
+<code>#include &quot;celix_constants.h&quot;</code><br />
+<code>#include &quot;bundle.h&quot;</code><br />
+<code>#include &quot;bundle_context.h&quot;</code><br />
+<code>#include &quot;framework.h&quot;</code><br />
+<code>#include &quot;celix_array_list.h&quot;</code><br />
+<code>#include &quot;celix_utils_api.h&quot;</code><br />
+<code>#include &quot;<a class="el" href="celix__bundle_8h_source.html">celix_bundle.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="celix__bundle__context_8h_source.html">celix_bundle_context.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="celix__framework_8h_source.html">celix_framework.h</a>&quot;</code><br />
+<code>#include &quot;celix_framework_factory.h&quot;</code><br />
+<code>#include &quot;celix_launcher.h&quot;</code><br />
+<code>#include &quot;celix_dependency_manager.h&quot;</code><br />
+<code>#include &quot;<a class="el" href="celix__dm__component_8h_source.html">celix_dm_component.h</a>&quot;</code><br />
+<code>#include &quot;dm_service_dependency.h&quot;</code><br />
+<code>#include &quot;<a class="el" href="celix__bundle__activator_8h_source.html">celix_bundle_activator.h</a>&quot;</code><br />
+</div>
+<p><a href="celix__api_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__api_8h_source.html b/static/docs/2.2.0/html/celix__api_8h_source.html
new file mode 100644
index 0000000..ab3bb52
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__api_8h_source.html
@@ -0,0 +1,106 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_api.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_api.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__api_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more  [...]
+<div class="ttc" id="celix__bundle__activator_8h_html"><div class="ttname"><a href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a></div></div>
+<div class="ttc" id="celix__bundle_8h_html"><div class="ttname"><a href="celix__bundle_8h.html">celix_bundle.h</a></div></div>
+<div class="ttc" id="celix__framework_8h_html"><div class="ttname"><a href="celix__framework_8h.html">celix_framework.h</a></div></div>
+<div class="ttc" id="celix__dm__component_8h_html"><div class="ttname"><a href="celix__dm__component_8h.html">celix_dm_component.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h.html b/static/docs/2.2.0/html/celix__bundle_8h.html
new file mode 100644
index 0000000..6c288cb
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h.html
@@ -0,0 +1,250 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">celix_bundle.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;celix_types.h&quot;</code><br />
+<code>#include &quot;bundle_state.h&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for celix_bundle.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__bundle_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle_8h" id="libs_2framework_2include_2celix__bundle_8h">
+</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__bundle_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle_8hdep" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle_8hdep" id="libs_2framework_2include_2celix__bundle_8hdep">
+<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+</map>
+</div>
+</div>
+<p><a href="celix__bundle_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="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a8a9b02c9438f05099ff2bde9fea8c3cd"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a> (const celix_bundle_t *bnd)</td></tr>
+<tr class="separator:a8a9b02c9438f05099ff2bde9fea8c3cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7106fcc7b06c0506dd7e1678ba024a35"><td class="memItemLeft" align="right" valign="top">celix_bundle_state_e&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a> (const celix_bundle_t *bnd)</td></tr>
+<tr class="separator:a7106fcc7b06c0506dd7e1678ba024a35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5cbe24596271fc91c79c8f42c8b92bc5"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle_getEntry</a> (const celix_bundle_t *bnd, const char *path)</td></tr>
+<tr class="separator:a5cbe24596271fc91c79c8f42c8b92bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5abd44b1259599d08f2312760fb32170"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a> (const celix_bundle_t *bnd)</td></tr>
+<tr class="separator:a5abd44b1259599d08f2312760fb32170"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a391c2aa2fdf3c8d0c65fc07a07bb7545"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a> (const celix_bundle_t *bnd)</td></tr>
+<tr class="separator:a391c2aa2fdf3c8d0c65fc07a07bb7545"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a5cbe24596271fc91c79c8f42c8b92bc5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* celix_bundle_getEntry </td>
+          <td>(</td>
+          <td class="paramtype">const celix_bundle_t *&#160;</td>
+          <td class="paramname"><em>bnd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>path</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns a the use-able entry path for the provided relative path to a bundle resource.</p>
+<p>For example if there is a resource entry in the bundle at path 'META-INF/descriptors/foo.descriptor` this call will return a absolute or relative path to the extracted location of the bundle resource, e.g.: .cache/bundle5/version0.0/META-INF/descriptors/foo.descriptor</p>
+<p>The caller is responsible for freeing the returned path entry. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">bnd</td><td>The bundle </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A use-able path to the bundle resource entry of NULL if the entry is not found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a5abd44b1259599d08f2312760fb32170"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* celix_bundle_getGroup </td>
+          <td>(</td>
+          <td class="paramtype">const celix_bundle_t *&#160;</td>
+          <td class="paramname"><em>bnd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8a9b02c9438f05099ff2bde9fea8c3cd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundle_getId </td>
+          <td>(</td>
+          <td class="paramtype">const celix_bundle_t *&#160;</td>
+          <td class="paramname"><em>bnd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the bundle id. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">bnd</td><td>The bundle </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The bundle id or &lt; 0 if something went wrong. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a7106fcc7b06c0506dd7e1678ba024a35"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_bundle_state_e celix_bundle_getState </td>
+          <td>(</td>
+          <td class="paramtype">const celix_bundle_t *&#160;</td>
+          <td class="paramname"><em>bnd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the bundle state. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">bnd</td><td>The bundle </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The bundle state or OSGI_FRAMEWORK_BUNDLE_UNKNOWN if something went wrong. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a391c2aa2fdf3c8d0c65fc07a07bb7545"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* celix_bundle_getSymbolicName </td>
+          <td>(</td>
+          <td class="paramtype">const celix_bundle_t *&#160;</td>
+          <td class="paramname"><em>bnd</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map
new file mode 100644
index 0000000..200107e
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_bundle.h" name="libs/framework/include/celix_bundle.h">
+<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5
new file mode 100644
index 0000000..e7fbc3f
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5
@@ -0,0 +1 @@
+a6612e25788d7125c063b8485ebd690c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png
new file mode 100644
index 0000000..557e80b
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.map b/static/docs/2.2.0/html/celix__bundle_8h__incl.map
new file mode 100644
index 0000000..3bb17b6
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h__incl.map
@@ -0,0 +1,2 @@
+<map id="libs/framework/include/celix_bundle.h" name="libs/framework/include/celix_bundle.h">
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle_8h__incl.md5
new file mode 100644
index 0000000..8b5d0ae
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h__incl.md5
@@ -0,0 +1 @@
+0316c239d1542705c9ab79c686bce4a0
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.png b/static/docs/2.2.0/html/celix__bundle_8h__incl.png
new file mode 100644
index 0000000..f78324c
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle_8h_source.html b/static/docs/2.2.0/html/celix__bundle_8h_source.html
new file mode 100644
index 0000000..74c0479
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle_8h_source.html
@@ -0,0 +1,106 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_bundle.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or mo [...]
+<div class="ttc" id="celix__bundle_8h_html_a7106fcc7b06c0506dd7e1678ba024a35"><div class="ttname"><a href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a></div><div class="ttdeci">celix_bundle_state_e celix_bundle_getState(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="celix__bundle_8h_html_a391c2aa2fdf3c8d0c65fc07a07bb7545"><div class="ttname"><a href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a></div><div class="ttdeci">const char * celix_bundle_getSymbolicName(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="celix__bundle_8h_html_a5abd44b1259599d08f2312760fb32170"><div class="ttname"><a href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a></div><div class="ttdeci">const char * celix_bundle_getGroup(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="celix__bundle_8h_html_a8a9b02c9438f05099ff2bde9fea8c3cd"><div class="ttname"><a href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a></div><div class="ttdeci">long celix_bundle_getId(const celix_bundle_t *bnd)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h.html b/static/docs/2.2.0/html/celix__bundle__activator_8h.html
new file mode 100644
index 0000000..a8f8a57
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h.html
@@ -0,0 +1,352 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle_activator.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">celix_bundle_activator.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;stdlib.h&gt;</code><br />
+<code>#include &quot;<a class="el" href="celix__bundle__context_8h_source.html">celix_bundle_context.h</a>&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for celix_bundle_activator.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__bundle__activator_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__activator_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle__activator_8h" id="libs_2framework_2include_2celix__bundle__activator_8h">
+<area shape="rect" id="node3" href="celix__bundle__context_8h.html" title="celix_bundle_context.h" alt="" coords="305,95,471,121"/>
+</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__bundle__activator_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__activator_8hdep" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle__activator_8hdep" id="libs_2framework_2include_2celix__bundle__activator_8hdep">
+<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="13,95,176,136"/>
+</map>
+</div>
+</div>
+<p><a href="celix__bundle__activator_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:a47b446e557ecaff78dafa19ba3e340c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">CELIX_GEN_BUNDLE_ACTIVATOR</a>(actType,  actStart,  actStop)</td></tr>
+<tr class="separator:a47b446e557ecaff78dafa19ba3e340c2"><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:a57025ac322aecc8acfac832748c780e6"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a> (celix_bundle_context_t *ctx, void **userData)</td></tr>
+<tr class="separator:a57025ac322aecc8acfac832748c780e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ac12a9b8d321ee1c1feee5bf047b666"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a> (void *userData, celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:a8ac12a9b8d321ee1c1feee5bf047b666"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae650439680848e3e3f7fc71b9e4dd213"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a> (void *userData, celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:ae650439680848e3e3f7fc71b9e4dd213"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d7cd41a721060d28c6ce8d94f9f0ca9"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a> (void *userData, celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:a8d7cd41a721060d28c6ce8d94f9f0ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a47b446e557ecaff78dafa19ba3e340c2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_GEN_BUNDLE_ACTIVATOR</td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">actType, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">actStart, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname">actStop&#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">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a>(celix_bundle_context_t *ctx __attribute__((unused)), <span class="keywordtype">void</span> **userData) {    \</div><div class="line">    celix_status_t status = CELIX_SUCCESS;                                                                             \</div><div class="line">    actType *data = (act [...]
+<div class="ttc" id="celix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
+<div class="ttc" id="celix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="celix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
+</div><!-- fragment --><p>This macro generates the required bundle activator functions for C. This can be used to more type safe bundle activator entries.</p>
+<p>The macro will create the following bundle activator functions:</p><ul>
+<li>bundleActivator_create which allocates a pointer to the provided type.</li>
+<li>bundleActivator_start/stop which will call the respectively provided typed start/stop functions.</li>
+<li>bundleActivator_destroy will free the allocated for the provided type.</li>
+</ul>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">type</td><td>The activator type (e.g. 'struct shell_activator'). </td></tr>
+    <tr><td class="paramname">start</td><td>the activator actStart function with the following signature: celix_status_t (*)(&lt;actType&gt;*, celix_bundle_context_t*). </td></tr>
+    <tr><td class="paramname">stop</td><td>the activator actStop function with the following signature: celix_status_t (*)(&lt;actType&gt;*, celix_bundle_context_t*). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a57025ac322aecc8acfac832748c780e6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_bundleActivator_create </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&#160;</td>
+          <td class="paramname"><em>userData</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Called when this bundle is started so the bundle can create an instance for its activator. The framework does not assume any type for the activator instance, this is implementation specific. The activator instance is handle as a void pointer by the framework, the implementation must cast it to the implementation specific type.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir"></td><td class="paramname">ctx</td><td>The execution context of the bundle being started. </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">userData</td><td>A pointer to the specific activator instance used by this bundle.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Status code indication failure or success:<ul>
+<li>CELIX_SUCCESS when no errors are encountered.</li>
+<li>Any other status code will mark the bundle as stopped and the framework will remove this bundle's listeners, unregister all services, and release all services used by this bundle. </li>
+</ul>
+</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8d7cd41a721060d28c6ce8d94f9f0ca9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_bundleActivator_destroy </td>
+          <td>(</td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>userData</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Called when this bundle is stopped so the bundle can destroy the instance of its activator. In general, this method should undo the work that the <code>bundleActivator_create()</code> function initialized.</p>
+<p>This method must complete and return to its caller in a timely manner.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">userData</td><td>The activator instance to be used. </td></tr>
+    <tr><td class="paramname">ctx</td><td>The execution context of the bundle being stopped.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Status code indication failure or success:<ul>
+<li>CELIX_SUCCESS when no errors are encountered.</li>
+<li>Any other status code will mark the bundle as stopped and the framework will remove this bundle's listeners, unregister all services, and release all services used by this bundle. </li>
+</ul>
+</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8ac12a9b8d321ee1c1feee5bf047b666"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_bundleActivator_start </td>
+          <td>(</td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>userData</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Called when this bundle is started so the Framework can perform the bundle-specific activities necessary to start this bundle. This method can be used to register services or to allocate any resources that this bundle needs.</p>
+<p>This method must complete and return to its caller in a timely manner.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">userData</td><td>The activator instance to be used. </td></tr>
+    <tr><td class="paramname">ctx</td><td>The execution context of the bundle being started.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Status code indication failure or success:<ul>
+<li>CELIX_SUCCESS when no errors are encountered.</li>
+<li>Any other status code will mark the bundle as stopped and the framework will remove this bundle's listeners, unregister all services, and release all services used by this bundle. </li>
+</ul>
+</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ae650439680848e3e3f7fc71b9e4dd213"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_bundleActivator_stop </td>
+          <td>(</td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>userData</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Called when this bundle is stopped so the Framework can perform the bundle-specific activities necessary to stop the bundle. In general, this method should undo the work that the <code>bundleActivator_start()</code> function started. There should be no active threads that were started by this bundle when this bundle returns. A stopped bundle must not call any Framework objects.</p>
+<p>This method must complete and return to its caller in a timely manner.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">userData</td><td>The activator instance to be used. </td></tr>
+    <tr><td class="paramname">ctx</td><td>The execution context of the bundle being stopped.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Status code indication failure or success:<ul>
+<li>CELIX_SUCCESS when no errors are encountered.</li>
+<li>Any other status code will mark the bundle as stopped and the framework will remove this bundle's listeners, unregister all services, and release all services used by this bundle. </li>
+</ul>
+</dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map
new file mode 100644
index 0000000..6b5b68e
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_bundle_activator.h" name="libs/framework/include/celix_bundle_activator.h">
+<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="13,95,176,136"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5
new file mode 100644
index 0000000..8070585
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5
@@ -0,0 +1 @@
+89d4ccc15c48c0fd1737b3270fabd80c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png
new file mode 100644
index 0000000..9bcb692
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map
new file mode 100644
index 0000000..a7c4bbc
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_bundle_activator.h" name="libs/framework/include/celix_bundle_activator.h">
+<area shape="rect" id="node3" href="$celix__bundle__context_8h.html" title="celix_bundle_context.h" alt="" coords="305,95,471,121"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5
new file mode 100644
index 0000000..7fde1d7
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5
@@ -0,0 +1 @@
+6ce611c622776f25c14bb4bef75766f0
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png
new file mode 100644
index 0000000..1f0591c
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html b/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html
new file mode 100644
index 0000000..85f1b8b
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html
@@ -0,0 +1,106 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle_activator.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_bundle_activator.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle__activator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="commen [...]
+<div class="ttc" id="celix__bundle__context_8h_html"><div class="ttname"><a href="celix__bundle__context_8h.html">celix_bundle_context.h</a></div></div>
+<div class="ttc" id="celix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
+<div class="ttc" id="celix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="celix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h.html b/static/docs/2.2.0/html/celix__bundle__context_8h.html
new file mode 100644
index 0000000..7bea31c
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h.html
@@ -0,0 +1,1749 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle_context.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#nested-classes">Classes</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">celix_bundle_context.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;celix_types.h&quot;</code><br />
+<code>#include &quot;celix_service_factory.h&quot;</code><br />
+<code>#include &quot;celix_properties.h&quot;</code><br />
+<code>#include &quot;celix_array_list.h&quot;</code><br />
+<code>#include &quot;celix_filter.h&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for celix_bundle_context.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__bundle__context_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__context_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle__context_8h" id="libs_2framework_2include_2celix__bundle__context_8h">
+</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__bundle__context_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__context_8hdep" alt=""/></div>
+<map name="libs_2framework_2include_2celix__bundle__context_8hdep" id="libs_2framework_2include_2celix__bundle__context_8hdep">
+<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="9,184,172,225"/>
+<area shape="rect" id="node3" href="celix__bundle__activator_8h.html" title="libs/framework/include\l/celix_bundle_activator.h" alt="" coords="65,95,244,136"/>
+</map>
+</div>
+</div>
+<p><a href="celix__bundle__context_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="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a8ebbfbe80221fe8adc8c3afbdceb570f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">OPTS_INIT</a></td></tr>
+<tr class="separator:a8ebbfbe80221fe8adc8c3afbdceb570f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6020a7ba8712efd0847fdf28e74eb69c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c">CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS</a></td></tr>
+<tr class="separator:a6020a7ba8712efd0847fdf28e74eb69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7199f710ea1c193d361e8c151a92bc6a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a">CELIX_EMPTY_SERVICE_FILTER_OPTIONS</a>&#160;&#160;&#160;{.serviceName = NULL, .versionRange = NULL, .filter = NULL, .serviceLanguage = NULL, .ignoreServiceLanguage = false}</td></tr>
+<tr class="separator:a7199f710ea1c193d361e8c151a92bc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae86a28f8d19f6c1e2951172335e0e909"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909">CELIX_EMPTY_SERVICE_TRACKING_OPTIONS</a></td></tr>
+<tr class="separator:ae86a28f8d19f6c1e2951172335e0e909"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6024cf4864950551fa9df01806a69865"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865">CELIX_EMPTY_SERVICE_USE_OPTIONS</a></td></tr>
+<tr class="separator:a6024cf4864950551fa9df01806a69865"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c68ea824e7268d26852785ea92c777c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c">CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS</a>&#160;&#160;&#160;{.callbackHandle = NULL, .onStarted = NULL, .onStopped = NULL, .onBundleEvent = NULL}</td></tr>
+<tr class="separator:a3c68ea824e7268d26852785ea92c777c"><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:a6bcc1ddc92a68053a0300553baa2e35a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></td></tr>
+<tr class="separator:a6bcc1ddc92a68053a0300553baa2e35a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54e95a32f444f0124896a4d193e3be22"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></td></tr>
+<tr class="separator:a54e95a32f444f0124896a4d193e3be22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e53ca7fd5a9c2b792ff0a8e048236d2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></td></tr>
+<tr class="separator:a4e53ca7fd5a9c2b792ff0a8e048236d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc6f11edf20a71cbade3668e4bc66ed6"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></td></tr>
+<tr class="separator:abc6f11edf20a71cbade3668e4bc66ed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6fb701de56577ab43263b5619604e86"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></td></tr>
+<tr class="separator:ae6fb701de56577ab43263b5619604e86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69f5283bcb563038d1a8e35e2a2b028b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></td></tr>
+<tr class="separator:a69f5283bcb563038d1a8e35e2a2b028b"><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:a5bc54fd14871cc88ed887c8cea8f7b78"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a> (celix_bundle_context_t *ctx, void *svc, const char *serviceName, celix_properties_t *properties)</td></tr>
+<tr class="separator:a5bc54fd14871cc88ed887c8cea8f7b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3caa917285feaad580b61d4c0c8430a9"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a> (celix_bundle_context_t *ctx, celix_service_factory_t *factory, const char *serviceName, celix_properties_t *props)</td></tr>
+<tr class="separator:a3caa917285feaad580b61d4c0c8430a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abcde0edf5b4969bdd67831cff3db0a43"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a> *opts)</td></tr>
+<tr class="separator:abcde0edf5b4969bdd67831cff3db0a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ebd82cb3d61aab769956d856293b9b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a> (celix_bundle_context_t *ctx, long serviceId)</td></tr>
+<tr class="separator:a1ebd82cb3d61aab769956d856293b9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac8322b5aa4adf9dcd8c288ce72a05414"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundleContext_findService</a> (celix_bundle_context_t *ctx, const char *serviceName)</td></tr>
+<tr class="separator:ac8322b5aa4adf9dcd8c288ce72a05414"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96a901f0597f9d2accf073153d90344c"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a> (celix_bundle_context_t *ctx, const char *serviceName)</td></tr>
+<tr class="separator:a96a901f0597f9d2accf073153d90344c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cfbbb7e17cb4a825a525c547f72b4b0"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *opts)</td></tr>
+<tr class="separator:a8cfbbb7e17cb4a825a525c547f72b4b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a41c34f8165addcbd0d65b4a0c23345d0"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *opts)</td></tr>
+<tr class="separator:a41c34f8165addcbd0d65b4a0c23345d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a612409acf5453dbc370d93b784153d51"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*set)(void *handle, void *svc))</td></tr>
+<tr class="separator:a612409acf5453dbc370d93b784153d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43e3bfd38ef956ffe861065e698a72e4"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*add)(void *handle, void *svc), void(*remove)(void *handle, void *svc))</td></tr>
+<tr class="separator:a43e3bfd38ef956ffe861065e698a72e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27980e1631d4575cc45c6c6ba38c6f71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a> *opts)</td></tr>
+<tr class="separator:a27980e1631d4575cc45c6c6ba38c6f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b4906a9e6fb34fe3ca5118539a81fc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a> (celix_bundle_context_t *ctx, long trackerId)</td></tr>
+<tr class="separator:a3b4906a9e6fb34fe3ca5118539a81fc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aec6e03faece0f8247de19d8c1527406d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a> (celix_bundle_context_t *ctx, long serviceId, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</td></tr>
+<tr class="separator:aec6e03faece0f8247de19d8c1527406d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac36cdb8a06bb34f9371d7bb32953c69e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</td></tr>
+<tr class="separator:ac36cdb8a06bb34f9371d7bb32953c69e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39270507a3766afbfcc9420c7270d262"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</td></tr>
+<tr class="separator:a39270507a3766afbfcc9420c7270d262"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e8a78de5f799d303231385b51085055"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *opts)</td></tr>
+<tr class="separator:a1e8a78de5f799d303231385b51085055"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1512520baedecad54a7bc307e0a6c7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *opts)</td></tr>
+<tr class="separator:ad1512520baedecad54a7bc307e0a6c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afde9ed40231b5c3bbba19559e68e77f6"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a> (celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:afde9ed40231b5c3bbba19559e68e77f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac7151f08ded1d7571867a44abe9f3531"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a> (celix_bundle_context_t *ctx, long bndId)</td></tr>
+<tr class="separator:ac7151f08ded1d7571867a44abe9f3531"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a727ee2600c19ce2fd42b3b80b695c7f6"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a> (celix_bundle_context_t *ctx, const char *bundleLoc, bool autoStart)</td></tr>
+<tr class="separator:a727ee2600c19ce2fd42b3b80b695c7f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a098adf1e9f65deb166110008bd4314dd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a> (celix_bundle_context_t *ctx, long bundleId)</td></tr>
+<tr class="separator:a098adf1e9f65deb166110008bd4314dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6e1553f9507d04c7a0ad91d067d479b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a> (celix_bundle_context_t *ctx, long bundleId)</td></tr>
+<tr class="separator:ad6e1553f9507d04c7a0ad91d067d479b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8df4bfbc27c99736c0209ef130cff98f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a> (celix_bundle_context_t *ctx, long bundleId)</td></tr>
+<tr class="separator:a8df4bfbc27c99736c0209ef130cff98f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3daf88ae43bb01e104f506c3a2dc8351"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a> (celix_bundle_context_t *ctx, void *callbackHandle, void(*onStarted)(void *handle, const celix_bundle_t *bundle), void(*onStopped)(void *handle, const celix_bundle_t *bundle))</td></tr>
+<tr class="separator:a3daf88ae43bb01e104f506c3a2dc8351"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa603acb136351b4135ce6a8c0b1fda71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a> *opts)</td></tr>
+<tr class="separator:aa603acb136351b4135ce6a8c0b1fda71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abb3cedf5ffa7a326cef2af64a1094635"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a> (celix_bundle_context_t *ctx, long bundleId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</td></tr>
+<tr class="separator:abb3cedf5ffa7a326cef2af64a1094635"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03a6d1c49c91c212ad7be115e1035840"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a> (celix_bundle_context_t *ctx, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</td></tr>
+<tr class="separator:a03a6d1c49c91c212ad7be115e1035840"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a80f61dd38b9da8447cd4f931779eaf16"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b" [...]
+<tr class="separator:a80f61dd38b9da8447cd4f931779eaf16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac36566dcc477bb2c123e5124527090c1"><td class="memItemLeft" align="right" valign="top">celix_dependency_manager_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a> (celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:ac36566dcc477bb2c123e5124527090c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3f7f55d1587f421f27518574a525ff63"><td class="memItemLeft" align="right" valign="top">celix_bundle_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a> (celix_bundle_context_t *ctx)</td></tr>
+<tr class="separator:a3f7f55d1587f421f27518574a525ff63"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa121100c5f5d03c0ccdda9c87286f7db"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a> (celix_bundle_context_t *ctx, const char *key, const char *defaultVal)</td></tr>
+<tr class="separator:aa121100c5f5d03c0ccdda9c87286f7db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ea27b2a81018583a464a10932cfae62"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a> (celix_bundle_context_t *ctx, const char *key, long defaultValue)</td></tr>
+<tr class="separator:a0ea27b2a81018583a464a10932cfae62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92be7dd7985a890c4b92bcb8497e8b9f"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a> (celix_bundle_context_t *ctx, const char *key, double defaultValue)</td></tr>
+<tr class="separator:a92be7dd7985a890c4b92bcb8497e8b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a41e6642ba1a739b5768911fa41e5d170"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a> (celix_bundle_context_t *ctx, const char *key, bool defaultValue)</td></tr>
+<tr class="separator:a41e6642ba1a739b5768911fa41e5d170"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a3c68ea824e7268d26852785ea92c777c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS&#160;&#160;&#160;{.callbackHandle = NULL, .onStarted = NULL, .onStopped = NULL, .onBundleEvent = NULL}</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>C Macro to create a empty celix_service_filter_options_t type. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7199f710ea1c193d361e8c151a92bc6a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_SERVICE_FILTER_OPTIONS&#160;&#160;&#160;{.serviceName = NULL, .versionRange = NULL, .filter = NULL, .serviceLanguage = NULL, .ignoreServiceLanguage = false}</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>C Macro to create a empty celix_service_filter_options_t type. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6020a7ba8712efd0847fdf28e74eb69c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">{ .svc = NULL, \</div><div class="line">    .factory = NULL, \</div><div class="line">    .serviceName = NULL, \</div><div class="line">    .properties = NULL, \</div><div class="line">    .serviceLanguage = NULL, \</div><div class="line">    .serviceVersion = NULL }</div></div><!-- fragment --><p>C Macro to create a empty celix_service_registration_options_t type. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae86a28f8d19f6c1e2951172335e0e909"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_SERVICE_TRACKING_OPTIONS</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">{ .filter.serviceName = NULL, \</div><div class="line">    .filter.versionRange = NULL, \</div><div class="line">    .filter.filter = NULL, \</div><div class="line">    .filter.serviceLanguage = NULL, \</div><div class="line">    .filter.ignoreServiceLanguage = <span class="keyword">false</span>, \</div><div class="line">    .callbackHandle = NULL, \</div><div class="line">    .set = NULL, \</div><div class="line">    .add = NULL, \</d [...]
+
+</div>
+</div>
+<a class="anchor" id="a6024cf4864950551fa9df01806a69865"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_SERVICE_USE_OPTIONS</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">{.filter.serviceName = NULL, \</div><div class="line">    .filter.versionRange = NULL, \</div><div class="line">    .filter.filter = NULL, \</div><div class="line">    .filter.serviceLanguage = NULL, \</div><div class="line">    .waitTimeoutInSeconds = 0.0F, \</div><div class="line">    .callbackHandle = NULL, \</div><div class="line">    .use = NULL, \</div><div class="line">    .useWithProperties = NULL, \</div><div class="line">     [...]
+
+</div>
+</div>
+<a class="anchor" id="a8ebbfbe80221fe8adc8c3afbdceb570f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OPTS_INIT</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Init macro so that the opts are correctly initialized for C++ compilers </p>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="ae6fb701de56577ab43263b5619604e86"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>  <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The Service Bundle Tracking options can be used to fine tune the requested bundle tracker options. </p>
+
+</div>
+</div>
+<a class="anchor" id="a54e95a32f444f0124896a4d193e3be22"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>  <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Service filter options which can be used to query for certain services. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6bcc1ddc92a68053a0300553baa2e35a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>  <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Service Registration Options when registering services to the Celix framework. </p>
+
+</div>
+</div>
+<a class="anchor" id="a69f5283bcb563038d1a8e35e2a2b028b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>  <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Service Tracker Info provided to the service tracker tracker callbacks. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4e53ca7fd5a9c2b792ff0a8e048236d2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>  <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Service Tracker Options used to fine tune which services to track and the callback to be used for the tracked services. </p>
+
+</div>
+</div>
+<a class="anchor" id="abc6f11edf20a71cbade3668e4bc66ed6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>  <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Service Use Options used to fine tune which services to use and which callbacks to use. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ac8322b5aa4adf9dcd8c288ce72a05414"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_findService </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>serviceName</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Finds the highest ranking service and returns the service id.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The required service name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>If found a valid service id (&gt;= 0) if not found -1. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a96a901f0597f9d2accf073153d90344c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_array_list_t* celix_bundleContext_findServices </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>serviceName</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Finds the services with the provided service name and returns a list of the found service ids.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The required service name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A array list with as value a long int. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a41c34f8165addcbd0d65b4a0c23345d0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_array_list_t* celix_bundleContext_findServicesWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Finds the services conform the provider filter options and returns a list of the found service ids.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">opts</td><td>The pointer to the filter options. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A array list with as value a long int. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8cfbbb7e17cb4a825a525c547f72b4b0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_findServiceWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Finds the highest ranking service and returns the service id.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">opts</td><td>The pointer to the filter options. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>If found a valid service id (&gt;= 0) if not found -1. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3f7f55d1587f421f27518574a525ff63"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_bundle_t* celix_bundleContext_getBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the bundle for this bundle context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac36566dcc477bb2c123e5124527090c1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_dependency_manager_t* celix_bundleContext_getDependencyManager </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the dependency manager for this bundle context.</p>
+<dl class="section return"><dt>Returns</dt><dd>the dependency manager or NULL if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa121100c5f5d03c0ccdda9c87286f7db"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* celix_bundleContext_getProperty </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>defaultVal</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the config property - or environment variable if the config property does not exist - for the provided name. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">key</td><td>The key of the property to receive. </td></tr>
+    <tr><td class="paramname">defaultVal</td><td>The default value to use if the property is not found (can be NULL). </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The property value for the provided key or the provided defaultValue is the key is not found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a41e6642ba1a739b5768911fa41e5d170"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_getPropertyAsBool </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>defaultValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the config property as converts it to bool. If the property is not a valid bool, the defaultValue will be returned. The rest of the behaviour is the same as celix_bundleContext_getProperty.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">key</td><td>The key of the property to receive. </td></tr>
+    <tr><td class="paramname">defaultVal</td><td>The default value to use if the property is not found. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The property value for the provided key or the provided defaultValue is the key is not found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a92be7dd7985a890c4b92bcb8497e8b9f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double celix_bundleContext_getPropertyAsDouble </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&#160;</td>
+          <td class="paramname"><em>defaultValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the config property as converts it to double. If the property is not a valid double, the defaultValue will be returned. The rest of the behaviour is the same as celix_bundleContext_getProperty.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">key</td><td>The key of the property to receive. </td></tr>
+    <tr><td class="paramname">defaultVal</td><td>The default value to use if the property is not found. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The property value for the provided key or the provided defaultValue is the key is not found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0ea27b2a81018583a464a10932cfae62"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_getPropertyAsLong </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>defaultValue</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Gets the config property as converts it to long. If the property is not a valid long, the defaultValue will be returned. The rest of the behaviour is the same as celix_bundleContext_getProperty.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">key</td><td>The key of the property to receive. </td></tr>
+    <tr><td class="paramname">defaultVal</td><td>The default value to use if the property is not found. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The property value for the provided key or the provided defaultValue is the key is not found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a727ee2600c19ce2fd42b3b80b695c7f6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_installBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>bundleLoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>autoStart</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Install and optional start a bundle. Will silently ignore bundle ids &lt; 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">bundleLoc</td><td>The bundle location to the bundle zip file. </td></tr>
+    <tr><td class="paramname">autoStart</td><td>If the bundle should also be started. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the bundleId (&gt;= 0) or &lt; 0 if the bundle could not be installed and possibly started. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac7151f08ded1d7571867a44abe9f3531"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_isBundleInstalled </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bndId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Check if whether a bundle is installed. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">bndId</td><td>The bundle id to check </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>true if the bundle is installed. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="afde9ed40231b5c3bbba19559e68e77f6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_array_list_t* celix_bundleContext_listBundles </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>List the installed and started bundle ids. The bundle ids does not include the framework bundle (bundle id 0).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A array with bundle ids (long). The caller is responsible for destroying the array. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a5bc54fd14871cc88ed887c8cea8f7b78"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_registerService </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>svc</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">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>Register a service to the Celix framework.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">svc</td><td>the service object. Normally a pointer to a service struct (i.e. a struct with function pointers) </td></tr>
+    <tr><td class="paramname">serviceName</td><td>the service name, cannot be NULL </td></tr>
+    <tr><td class="paramname">properties</td><td>The meta properties associated with the service. The service registration will take ownership of the properties (i.e. no destroy needed) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The serviceId (&gt;= 0) or &lt; 0 if the registration was unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3caa917285feaad580b61d4c0c8430a9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_registerServiceFactory </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">celix_service_factory_t *&#160;</td>
+          <td class="paramname"><em>factory</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">celix_properties_t *&#160;</td>
+          <td class="paramname"><em>props</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Register a service factory in the framework (for the C language). The service factory will be called for every bundle requesting/de-requesting a service. This gives the provider the option to create bundle specific service instances.</p>
+<p>When a service is requested for a bundle the getService of the factory service will be called. This function must return a valid pointer to a service conform the registered service name or NULL. When a service in no longer needed for a bundle (e.g. ending the useService(s) calls or when a service tracker is stopped) the ungetService function of the service factory will be called.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">factory</td><td>The pointer to the factory service. </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The required service name of the services this factory will produce. </td></tr>
+    <tr><td class="paramname">properties</td><td>The optional service factory properties. For a service consumer this will be seen as the service properties. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The serviceId (&gt;= 0) or &lt; 0 if the registration was unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="abcde0edf5b4969bdd67831cff3db0a43"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_registerServiceWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Register a service to the Celix framework using the provided service registration options.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">opts</td><td>The pointer to the registration options. The options are only in the during registration call. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The serviceId (&gt;= 0) or &lt; 0 if the registration was unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8df4bfbc27c99736c0209ef130cff98f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_startBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bundleId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Start the bundle with the provided bundle id. Will silently ignore bundle ids &lt; 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">bundleId</td><td>The bundle id to start. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>true if the bundle is found &amp; correctly started. False if not. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad6e1553f9507d04c7a0ad91d067d479b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_stopBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bundleId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Stop the bundle with the provided bundle id. Will silently ignore bundle ids &lt; 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">bundleId</td><td>The bundle id to stop. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>true if the bundle is found &amp; correctly stop. False if not. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3b4906a9e6fb34fe3ca5118539a81fc7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_bundleContext_stopTracker </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>trackerId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Stop the tracker with the provided track id. Could be a service tracker, bundle tracker or service tracker tracker. Only works for the trackers owned by the bundle of the bundle context.</p>
+<p>Will log a error if the provided tracker id is unknown. Will silently ignore trackerId &lt; 0. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3daf88ae43bb01e104f506c3a2dc8351"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackBundles </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bundle)&#160;</td>
+          <td class="paramname"><em>onStarted</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bundle)&#160;</td>
+          <td class="paramname"><em>onStopped</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>track bundles The add bundle callback will also be called for already installed bundles.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">add</td><td>The callback which will be called for started bundles. </td></tr>
+    <tr><td class="paramname">remove</td><td>The callback which will be called when bundles are stopped. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The bundle tracker id or &lt; 0 if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa603acb136351b4135ce6a8c0b1fda71"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackBundlesWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Tracks bundles using the provided bundle tracker options. The tracker options are only using during this call and can safely be freed/reused after this call returns. (i.e. can be on the stack)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">opts</td><td>The pointer to the bundle tracker options. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The bundle tracker id (&gt;=0) or &lt; 0 if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a612409acf5453dbc370d93b784153d51"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackService </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>set</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>track the highest ranking service with the provided serviceName. The highest ranking services will used for the callback. If a new and higher ranking services the callback with be called again with the new service. If a service is removed a the callback with be called with next highest ranking service or NULL as service.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The required service name to track </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">set</td><td>is a required callback, which will be called when a new highest ranking service is set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the tracker id (&gt;=0) or &lt; 0 if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a43e3bfd38ef956ffe861065e698a72e4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackServices </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>add</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>remove</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>track services with the provided serviceName.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The required service name to track </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">add</td><td>is a required callback, which will be called when a service is added and initially for the existing service. </td></tr>
+    <tr><td class="paramname">remove</td><td>is a required callback, which will be called when a service is removed </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the tracker id (&gt;=0) or &lt; 0 if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a27980e1631d4575cc45c6c6ba38c6f71"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackServicesWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Tracks services using the provided tracker options. The tracker options are only using during this call and can safely be freed/reused after this call returns.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">opts</td><td>The pointer to the tracker options. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the tracker id (&gt;=0) or &lt; 0 if unsuccessful. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a80f61dd38b9da8447cd4f931779eaf16"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long celix_bundleContext_trackServiceTrackers </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info)&#160;</td>
+          <td class="paramname"><em>trackerAdd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info)&#160;</td>
+          <td class="paramname"><em>trackerRemove</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Track the service tracker targeting the provided service name. This can be used to track if there is an interest in a certain service and ad-hoc act on that interest.</p>
+<p>Note that the celix_service_tracker_info_t pointer in the trackerAdd/trackerRemove callbacks are only valid during the callback.</p>
+<p>This tracker can be stopped with the celix_bundleContext_stopTracker function.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceName</td><td>The target service name for the service tracker to track. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The callback handle which will be provided as handle in the trackerAdd and trackerRemove callback. </td></tr>
+    <tr><td class="paramname">trackerAdd</td><td>Called when a service tracker is added, which tracks the provided service name. Will also be called for all existing service tracker when this tracker is started. </td></tr>
+    <tr><td class="paramname">trackerRemove</td><td>Called when a service tracker is removed, which tracks the provided service name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The tracker id or &lt;0 if something went wrong (will log an error). </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a098adf1e9f65deb166110008bd4314dd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_uninstallBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bundleId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Uninstall the bundle with the provided bundle id. If needed the bundle will be stopped first. Will silently ignore bundle ids &lt; 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">bundleId</td><td>The bundle id to uninstall. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>true if the bundle is correctly uninstalled. False if not. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1ebd82cb3d61aab769956d856293b9b9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_bundleContext_unregisterService </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>serviceId</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Unregister the service or service factory with service id. The service will only be unregistered if the bundle of the bundle context is the owner of the service.</p>
+<p>Will log an error if service id is unknown. Will silently ignore services ids &lt; 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceId</td><td>The service id </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abb3cedf5ffa7a326cef2af64a1094635"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_useBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bundleId</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bundle)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the bundle with the provided bundle id if it is in the active (started) state The provided callback will be called if the bundle is found and in the active (started) state.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">bundleId</td><td>The bundle id. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback which will be called for the currently started bundles. The bundle pointers are only guaranteed to be valid during the callback. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns true if the bundle is found and the callback is called. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a03a6d1c49c91c212ad7be115e1035840"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_bundleContext_useBundles </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bundle)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the currently active (started) bundles. The provided callback will be called for all the currently started bundles (excluding the framework bundle).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback which will be called for the currently started bundles. The bundle pointers are only guaranteed to be valid during the callback. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac36cdb8a06bb34f9371d7bb32953c69e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_useService </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the highest ranking service with the provided service name using the provided callback. The Celix framework will ensure that the targeted service cannot be removed during the callback.</p>
+<p>The svc is should only be considered valid during the callback. If no service is found the callback will not be invoked.</p>
+<p>This function will block till the callback is finished. As result it is possible to provide callback data from the stack.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceName</td><td>the required service name. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback, which will be called when service is retrieved. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if a service was found. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a39270507a3766afbfcc9420c7270d262"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_bundleContext_useServices </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the services with the provided service name using the provided callback. The Celix framework will ensure that the targeted service cannot be removed during the callback.</p>
+<p>The svc is should only be considered valid during the callback. If no service is found the callback will not be invoked.</p>
+<p>This function will block till the callback is finished. As result it is possible to provide callback data from the stack.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceName</td><td>the required service name. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback, which will be called for every service found. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad1512520baedecad54a7bc307e0a6c7b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_bundleContext_useServicesWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the services with the provided service filter options using the provided callback. The Celix framework will ensure that the targeted service cannot be removed during the callback.</p>
+<p>The svc is should only be considered valid during the callback. If no service is found the callback will not be invoked.</p>
+<p>This function will block till the callback is finished. As result it is possible to provide callback data from the stack.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">opts</td><td>The required options. Note that the serviceName is required. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aec6e03faece0f8247de19d8c1527406d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_useServiceWithId </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>serviceId</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">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, void *svc)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the service with the provided service id using the provided callback. The Celix framework will ensure that the targeted service cannot be removed during the callback.</p>
+<p>The svc is should only be considered valid during the callback. If no service is found the callback will not be invoked.</p>
+<p>This function will block till the callback is finished. As result it is possible to provide callback data from the stack.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context </td></tr>
+    <tr><td class="paramname">serviceId</td><td>the service id. </td></tr>
+    <tr><td class="paramname">serviceName</td><td>the service name of the service. Should match with the registered service name of the provided service id (sanity check) </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback, which will be called when service is retrieved. </td></tr>
+    <tr><td class="paramname">bool</td><td>returns true if a service was found. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e8a78de5f799d303231385b51085055"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_bundleContext_useServiceWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_bundle_context_t *&#160;</td>
+          <td class="paramname"><em>ctx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the services with the provided service filter options using the provided callback. The Celix framework will ensure that the targeted service cannot be removed during the callback.</p>
+<p>The svc is should only be considered valid during the callback. If no service is found the callback will not be invoked.</p>
+<p>This function will block till the callback is finished. As result it is possible to provide callback data from the stack.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">opts</td><td>The required options. Note that the serviceName is required. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if a service was found. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map
new file mode 100644
index 0000000..e90bcfb
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map
@@ -0,0 +1,4 @@
+<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
+<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="9,184,172,225"/>
+<area shape="rect" id="node3" href="$celix__bundle__activator_8h.html" title="libs/framework/include\l/celix_bundle_activator.h" alt="" coords="65,95,244,136"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5
new file mode 100644
index 0000000..7ddc7ee
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5
@@ -0,0 +1 @@
+e60e73611e86a52f66970472d1fd882b
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png
new file mode 100644
index 0000000..49e7a48
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map
new file mode 100644
index 0000000..bd8270e
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map
@@ -0,0 +1,2 @@
+<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
+</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5
new file mode 100644
index 0000000..bc08f1b
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5
@@ -0,0 +1 @@
+6dc4d34e9d261e5261f8cc40f8e0bcbe
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png
new file mode 100644
index 0000000..38c6f15
Binary files /dev/null and b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h_source.html b/static/docs/2.2.0/html/celix__bundle__context_8h_source.html
new file mode 100644
index 0000000..503ef7b
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__bundle__context_8h_source.html
@@ -0,0 +1,169 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_bundle_context.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_bundle_context.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle__context_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment" [...]
+<div class="ttc" id="celix__bundle__context_8h_html_a612409acf5453dbc370d93b784153d51"><div class="ttname"><a href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a></div><div class="ttdeci">long celix_bundleContext_trackService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*set)(void *handle, void *svc))</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html_a70cc8aee445c1a24782454393f12ff98"><div class="ttname"><a href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">bool ignoreServiceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:222</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a3daf88ae43bb01e104f506c3a2dc8351"><div class="ttname"><a href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a></div><div class="ttdeci">long celix_bundleContext_trackBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*onStarted)(void *handle, const celix_bundle_t *bundle), void(*onStopped)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_afde9ed40231b5c3bbba19559e68e77f6"><div class="ttname"><a href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_listBundles(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="structcelix__service__use__options_html"><div class="ttname"><a href="structcelix__service__use__options.html">celix_service_use_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:485</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a3f7f55d1587f421f27518574a525ff63"><div class="ttname"><a href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a></div><div class="ttdeci">celix_bundle_t * celix_bundleContext_getBundle(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html"><div class="ttname"><a href="structcelix__service__filter__options.html">celix_service_filter_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:193</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a80f61dd38b9da8447cd4f931779eaf16"><div class="ttname"><a href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a></div><div class="ttdeci">long celix_bundleContext_trackServiceTrackers(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const celix_service_tracker_info_t *info), void(*trackerRemove)(void *handle, const ce [...]
+<div class="ttc" id="celix__bundle__context_8h_html_ad1512520baedecad54a7bc307e0a6c7b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a></div><div class="ttdeci">void celix_bundleContext_useServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_ae44ee7cc15427e406a67b0396201700c"><div class="ttname"><a href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:119</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html_a65bea04c378ef46d841046ffbb2f805c"><div class="ttname"><a href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *versionRange OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:204</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a8df4bfbc27c99736c0209ef130cff98f"><div class="ttname"><a href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a></div><div class="ttdeci">bool celix_bundleContext_startBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_ac36cdb8a06bb34f9371d7bb32953c69e"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a></div><div class="ttdeci">bool celix_bundleContext_useService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_aa121100c5f5d03c0ccdda9c87286f7db"><div class="ttname"><a href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a></div><div class="ttdeci">const char * celix_bundleContext_getProperty(celix_bundle_context_t *ctx, const char *key, const char *defaultVal)</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_a94eb8e6e1af0cca435d99aa5d2457fca"><div class="ttname"><a href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_factory_t *factory OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:99</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html"><div class="ttname"><a href="structcelix__service__registration__options.html">celix_service_registration_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:75</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_a86179f0c7a032f3309440a2cd8d91a61"><div class="ttname"><a href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:105</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a41c34f8165addcbd0d65b4a0c23345d0"><div class="ttname"><a href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a8cfbbb7e17cb4a825a525c547f72b4b0"><div class="ttname"><a href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_findServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_abcde0edf5b4969bdd67831cff3db0a43"><div class="ttname"><a href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_registerServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_registration_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a098adf1e9f65deb166110008bd4314dd"><div class="ttname"><a href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a></div><div class="ttdeci">bool celix_bundleContext_uninstallBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a43e3bfd38ef956ffe861065e698a72e4"><div class="ttname"><a href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a></div><div class="ttdeci">long celix_bundleContext_trackServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*add)(void *handle, void *svc), void(*remove)(void *handle, void *svc))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a27980e1631d4575cc45c6c6ba38c6f71"><div class="ttname"><a href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_tracking_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a41e6642ba1a739b5768911fa41e5d170"><div class="ttname"><a href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a></div><div class="ttdeci">bool celix_bundleContext_getPropertyAsBool(celix_bundle_context_t *ctx, const char *key, bool defaultValue)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a6bcc1ddc92a68053a0300553baa2e35a"><div class="ttname"><a href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></div><div class="ttdeci">struct celix_service_registration_options celix_service_registration_options_t</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_a6e1274cc3b190b3dc05c7c145f57d407"><div class="ttname"><a href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_properties_t *properties OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:114</div></div>
+<div class="ttc" id="structcelix__service__use__options_html_a31a9834b87a5c2c3ed6b8532cd85c653"><div class="ttname"><a href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:501</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_aec6e03faece0f8247de19d8c1527406d"><div class="ttname"><a href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithId(celix_bundle_context_t *ctx, long serviceId, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html_a9286701a4c946d1ed28afde05cd34d51"><div class="ttname"><a href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:215</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a39270507a3766afbfcc9420c7270d262"><div class="ttname"><a href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a></div><div class="ttdeci">void celix_bundleContext_useServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a92be7dd7985a890c4b92bcb8497e8b9f"><div class="ttname"><a href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a></div><div class="ttdeci">double celix_bundleContext_getPropertyAsDouble(celix_bundle_context_t *ctx, const char *key, double defaultValue)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a4e53ca7fd5a9c2b792ff0a8e048236d2"><div class="ttname"><a href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></div><div class="ttdeci">struct celix_service_tracking_options celix_service_tracking_options_t</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a5bc54fd14871cc88ed887c8cea8f7b78"><div class="ttname"><a href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a></div><div class="ttdeci">long celix_bundleContext_registerService(celix_bundle_context_t *ctx, void *svc, const char *serviceName, celix_properties_t *properties)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_aa603acb136351b4135ce6a8c0b1fda71"><div class="ttname"><a href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackBundlesWithOptions(celix_bundle_context_t *ctx, const celix_bundle_tracking_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a1e8a78de5f799d303231385b51085055"><div class="ttname"><a href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a03a6d1c49c91c212ad7be115e1035840"><div class="ttname"><a href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a></div><div class="ttdeci">void celix_bundleContext_useBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a0ea27b2a81018583a464a10932cfae62"><div class="ttname"><a href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a></div><div class="ttdeci">long celix_bundleContext_getPropertyAsLong(celix_bundle_context_t *ctx, const char *key, long defaultValue)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_ae6fb701de56577ab43263b5619604e86"><div class="ttname"><a href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></div><div class="ttdeci">struct celix_bundle_tracker_options celix_bundle_tracking_options_t</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_abc6f11edf20a71cbade3668e4bc66ed6"><div class="ttname"><a href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></div><div class="ttdeci">struct celix_service_use_options celix_service_use_options_t</div></div>
+<div class="ttc" id="structcelix__service__tracker__info_html_a5baca60295d208fe0581a564c3627f65"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info::serviceLanguage</a></div><div class="ttdeci">const char * serviceLanguage</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:773</div></div>
+<div class="ttc" id="structcelix__service__use__options_html_ae24e3e35d7d92d5b41d58b53506bcca0"><div class="ttname"><a href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">double waitTimeoutInSeconds OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:496</div></div>
+<div class="ttc" id="structcelix__bundle__tracker__options_html"><div class="ttname"><a href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:659</div></div>
+<div class="ttc" id="structcelix__service__tracking__options_html"><div class="ttname"><a href="structcelix__service__tracking__options.html">celix_service_tracking_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:292</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a727ee2600c19ce2fd42b3b80b695c7f6"><div class="ttname"><a href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a></div><div class="ttdeci">long celix_bundleContext_installBundle(celix_bundle_context_t *ctx, const char *bundleLoc, bool autoStart)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_abb3cedf5ffa7a326cef2af64a1094635"><div class="ttname"><a href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a></div><div class="ttdeci">bool celix_bundleContext_useBundle(celix_bundle_context_t *ctx, long bundleId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_ac36566dcc477bb2c123e5124527090c1"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a></div><div class="ttdeci">celix_dependency_manager_t * celix_bundleContext_getDependencyManager(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="structcelix__service__tracker__info_html_a5f695cf6d8cd69e0c419298ded657546"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">celix_service_tracker_info::serviceName</a></div><div class="ttdeci">const char * serviceName</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:768</div></div>
+<div class="ttc" id="structcelix__service__tracker__info_html"><div class="ttname"><a href="structcelix__service__tracker__info.html">celix_service_tracker_info</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:759</div></div>
+<div class="ttc" id="structcelix__service__use__options_html_addad49a12179fff8b2dbf5313d70952f"><div class="ttname"><a href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:489</div></div>
+<div class="ttc" id="structcelix__service__tracking__options_html_a2fcaf1b7274379695cc9a4bb1c719d86"><div class="ttname"><a href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:301</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_a9c24c1179305b68840149449b1fa6d87"><div class="ttname"><a href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">void *svc OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:83</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a3b4906a9e6fb34fe3ca5118539a81fc7"><div class="ttname"><a href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a></div><div class="ttdeci">void celix_bundleContext_stopTracker(celix_bundle_context_t *ctx, long trackerId)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a54e95a32f444f0124896a4d193e3be22"><div class="ttname"><a href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></div><div class="ttdeci">struct celix_service_filter_options celix_service_filter_options_t</div></div>
+<div class="ttc" id="structcelix__bundle__tracker__options_html_a80ebdcbb840fa97d81e1250fba2d20af"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:663</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a1ebd82cb3d61aab769956d856293b9b9"><div class="ttname"><a href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a></div><div class="ttdeci">void celix_bundleContext_unregisterService(celix_bundle_context_t *ctx, long serviceId)</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a69f5283bcb563038d1a8e35e2a2b028b"><div class="ttname"><a href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></div><div class="ttdeci">struct celix_service_tracker_info celix_service_tracker_info_t</div></div>
+<div class="ttc" id="structcelix__bundle__tracker__options_html_a54a11feb78bd514c95f7c9aecaa7f212"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">bool includeFrameworkBundle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:694</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a96a901f0597f9d2accf073153d90344c"><div class="ttname"><a href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServices(celix_bundle_context_t *ctx, const char *serviceName)</div></div>
+<div class="ttc" id="structcelix__service__registration__options_html_af9b1a622c06a3053ed3917649241fc23"><div class="ttname"><a href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceVersion OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:128</div></div>
+<div class="ttc" id="structcelix__service__tracker__info_html_a6978e4b5f2fcc2d42a42f0e7ed3bb7c8"><div class="ttname"><a href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">celix_service_tracker_info::bundleId</a></div><div class="ttdeci">long bundleId</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:778</div></div>
+<div class="ttc" id="structcelix__service__tracking__options_html_a9272f1870b544b28329545b84f3425c2"><div class="ttname"><a href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:296</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_ac7151f08ded1d7571867a44abe9f3531"><div class="ttname"><a href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a></div><div class="ttdeci">bool celix_bundleContext_isBundleInstalled(celix_bundle_context_t *ctx, long bndId)</div></div>
+<div class="ttc" id="structcelix__service__tracker__info_html_a3cd52ce46875995a973fb6b65967d7e4"><div class="ttname"><a href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info::filter</a></div><div class="ttdeci">celix_filter_t * filter</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:763</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_ad6e1553f9507d04c7a0ad91d067d479b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a></div><div class="ttdeci">bool celix_bundleContext_stopBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html_addb2e1e8fcce127512d272383e78cbd1"><div class="ttname"><a href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:197</div></div>
+<div class="ttc" id="structcelix__service__filter__options_html_ac15f30b81e60826290a29fb12da6684a"><div class="ttname"><a href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:210</div></div>
+<div class="ttc" id="celix__bundle__context_8h_html_a3caa917285feaad580b61d4c0c8430a9"><div class="ttname"><a href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a></div><div class="ttdeci">long celix_bundleContext_registerServiceFactory(celix_bundle_context_t *ctx, celix_service_factory_t *factory, const char *serviceName, celix_properties_t *props)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h.html b/static/docs/2.2.0/html/celix__dm__component_8h.html
new file mode 100644
index 0000000..f282d23
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h.html
@@ -0,0 +1,759 @@
+<!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.11"/>
+<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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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" id="node7" href="celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="522,95,642,121"/>
+</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" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,95,174,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:a837dbb925f543da453bd88375e26537e"><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#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></td></tr>
+<tr class="separator:a837dbb925f543da453bd88375e26537e"><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#a837dbb925f543da453bd88375e26537e">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.htm [...]
+<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 class="anchor" id="aa19dcff16825fa2e91656ff136d877cf"></a>
+<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 class="anchor" id="af8861849eb5e4057def1bb12a5111d00"></a>
+<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 class="anchor" id="aad1f80b04be28b8e7bf495113c2fe452"></a>
+<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); <a class="code" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">\</a></div><div class="line"><a class="code [...]
+<div class="ttc" id="celix__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>
+</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 class="anchor" id="a9c73a72049f39d42d66b6d9c60d185dc"></a>
+<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 class="anchor" id="a837dbb925f543da453bd88375e26537e"></a>
+<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#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4"></a>
+<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 class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"></a>DM_CMP_STATE_INACTIVE&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"></a>DM_CMP_STATE_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"></a>DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" 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 class="anchor" id="aafd2f2eff931784f70eb2a37e943446a"></a>
+<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 class="anchor" id="ad7d4a85042adba432bd8d398d9c106b8"></a>
+<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 class="anchor" id="adf75af7d75d2c1f7e53d78f23f97d40c"></a>
+<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 class="anchor" id="af98630b8f8980c906d5aefc5f8a82c99"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">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 class="anchor" id="a56a8c5019a43eb96d62fd9e98cb56ba8"></a>
+<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 class="anchor" id="af62df6623e978a1cc62b3ca8ab5863c3"></a>
+<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 class="anchor" id="a99be995e9e94514fc4f6782dd48456ba"></a>
+<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 class="anchor" id="a3345d3bfa11070069d745131668d02ae"></a>
+<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 class="anchor" id="a5647f75ea3a3c3755940ee42f51320a8"></a>
+<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 class="anchor" id="ae0312e00f51f85d8e48b18020964e21f"></a>
+<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 class="anchor" id="a30de51befa422dc65ac89ae3d9b8319f"></a>
+<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 class="anchor" id="a7bbf1a0da294be7ba9ae8272f1b938d7"></a>
+<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 class="anchor" id="a3e4a6e8e87cc8d3b3655eaaa06ad261e"></a>
+<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 class="anchor" id="a0ce2c610cbe3a329ea6561eb5cda0d8d"></a>
+<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 class="anchor" id="a017e996f6b1db5e902bf3a9cc043634f"></a>
+<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 class="anchor" id="ab8bd7a13007bda2619c1764886eabeab"></a>
+<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 class="anchor" id="a45a01df6ed75d8530563d52f58a0b165"></a>
+<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 -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map
new file mode 100644
index 0000000..6f6a630
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_dm_component.h" name="libs/framework/include/celix_dm_component.h">
+<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,95,174,136"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5
new file mode 100644
index 0000000..9e64a5f
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5
@@ -0,0 +1 @@
+7e25806b199045afd87a691b9c1347d3
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png
new file mode 100644
index 0000000..8a2a20b
Binary files /dev/null and b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.map b/static/docs/2.2.0/html/celix__dm__component_8h__incl.map
new file mode 100644
index 0000000..26c0a6c
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_dm_component.h" name="libs/framework/include/celix_dm_component.h">
+<area shape="rect" id="node7" href="$celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="522,95,642,121"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5
new file mode 100644
index 0000000..37e5228
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5
@@ -0,0 +1 @@
+d32416cfedd0c6aff65050fbde4eaea6
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.png b/static/docs/2.2.0/html/celix__dm__component_8h__incl.png
new file mode 100644
index 0000000..b191d9c
Binary files /dev/null and b/static/docs/2.2.0/html/celix__dm__component_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h_source.html b/static/docs/2.2.0/html/celix__dm__component_8h_source.html
new file mode 100644
index 0000000..2fcba6f
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__component_8h_source.html
@@ -0,0 +1,127 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_dm_component.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_dm_component.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__component_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">  [...]
+<div class="ttc" id="celix__dm__component_8h_html_a7bbf1a0da294be7ba9ae8272f1b938d7"><div class="ttname"><a href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a></div><div class="ttdeci">bool celix_dmComponent_isActive(celix_dm_component_t *component)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ab8bd7a13007bda2619c1764886eabeab"><div class="ttname"><a href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCLanguageProperty(celix_dm_component_t *component, bool setCLangProp)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a56a8c5019a43eb96d62fd9e98cb56ba8"><div class="ttname"><a href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a></div><div class="ttdeci">void celix_dmComponent_destroy(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_af98630b8f8980c906d5aefc5f8a82c99"><div class="ttname"><a href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a></div><div class="ttdeci">celix_dm_component_state_t celix_dmComponent_currentState(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a017e996f6b1db5e902bf3a9cc043634f"><div class="ttname"><a href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ad7d4a85042adba432bd8d398d9c106b8"><div class="ttname"><a href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="celix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a5647f75ea3a3c3755940ee42f51320a8"><div class="ttname"><a href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a></div><div class="ttdeci">void * celix_dmComponent_getImplementation(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_adf75af7d75d2c1f7e53d78f23f97d40c"><div class="ttname"><a href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a></div><div class="ttdeci">celix_dm_component_t * celix_dmComponent_create(celix_bundle_context_t *context, const char *name)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a837dbb925f543da453bd88375e26537e"><div class="ttname"><a href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></div><div class="ttdeci">enum celix_dm_component_state_enum celix_dm_component_state_t</div></div>
+<div class="ttc" id="celix__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>
+<div class="ttc" id="celix__dm__component_8h_html_a45a01df6ed75d8530563d52f58a0b165"><div class="ttname"><a href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setImplementation(celix_dm_component_t *component, void *implementation)</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:37</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ae0312e00f51f85d8e48b18020964e21f"><div class="ttname"><a href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getInterfaces(celix_dm_component_t *component, celix_array_list_t **servicesNames)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a0ce2c610cbe3a329ea6561eb5cda0d8d"><div class="ttname"><a href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a3e4a6e8e87cc8d3b3655eaaa06ad261e"><div class="ttname"><a href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeInterface(celix_dm_component_t *component, const void *service)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a></div><div class="ttdeci">celix_dm_component_state_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:35</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a99be995e9e94514fc4f6782dd48456ba"><div class="ttname"><a href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_dmComponent_getBundleContext(celix_dm_component_t *component)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a30de51befa422dc65ac89ae3d9b8319f"><div class="ttname"><a href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a></div><div class="ttdeci">const char * celix_dmComponent_getName(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_a3345d3bfa11070069d745131668d02ae"><div class="ttname"><a href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getComponentInfo(celix_dm_component_t *component, dm_component_info_pt *info)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:39</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:36</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_aafd2f2eff931784f70eb2a37e943446a"><div class="ttname"><a href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addInterface(celix_dm_component_t *component, const char *serviceName, const char *serviceVersion, const void *service, celix_properties_t *properties)</div></div>
+<div class="ttc" id="celix__dm__component_8h_html_af62df6623e978a1cc62b3ca8ab5863c3"><div class="ttname"><a href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a></div><div class="ttdeci">void celix_dmComponent_destroyComponentInfo(dm_component_info_pt info)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h.html b/static/docs/2.2.0/html/celix__dm__info_8h.html
new file mode 100644
index 0000000..98056f3
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h.html
@@ -0,0 +1,310 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_dm_info.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#nested-classes">Classes</a> &#124;
+<a href="#typedef-members">Typedefs</a>  </div>
+  <div class="headertitle">
+<div class="title">celix_dm_info.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_array_list.h&quot;</code><br />
+<code>#include &quot;celix_properties.h&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for celix_dm_info.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__dm__info_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__info_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__dm__info_8h" id="libs_2framework_2include_2celix__dm__info_8h">
+</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__info_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__info_8hdep" alt=""/></div>
+<map name="libs_2framework_2include_2celix__dm__info_8hdep" id="libs_2framework_2include_2celix__dm__info_8hdep">
+<area shape="rect" id="node2" href="celix__dm__component_8h.html" title="libs/framework/include\l/celix_dm_component.h" alt="" coords="5,95,180,136"/>
+<area shape="rect" id="node4" href="celix__dm__service__dependency_8h.html" title="libs/framework/include\l/celix_dm_service_dependency.h" alt="" coords="205,95,434,136"/>
+<area shape="rect" id="node3" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,184,174,225"/>
+</map>
+</div>
+</div>
+<p><a href="celix__dm__info_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="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a></td></tr>
+<tr class="separator:"><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:abb40885e5ab16c4701927d7095194ee2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a></td></tr>
+<tr class="separator:abb40885e5ab16c4701927d7095194ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c8c9b3b3b6d6cb2853ce22f337ed7f0"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">dm_interface_info_t</a></td></tr>
+<tr class="separator:a3c8c9b3b3b6d6cb2853ce22f337ed7f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a635d8bc54edda5e7e70f7b27943196b6"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">celix_dm_interface_info_t</a></td></tr>
+<tr class="separator:a635d8bc54edda5e7e70f7b27943196b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a06988849c18fd4848452086f36ed6e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a></td></tr>
+<tr class="separator:a0a06988849c18fd4848452086f36ed6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a553833e914505261622b13563c8a045e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</a></td></tr>
+<tr class="separator:a553833e914505261622b13563c8a045e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7fd4e90372051b1549c588095fb24fd4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">celix_dm_service_dependency_info_t</a></td></tr>
+<tr class="separator:a7fd4e90372051b1549c588095fb24fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4325313bb7b98b6eded2212a6edd065a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a></td></tr>
+<tr class="separator:a4325313bb7b98b6eded2212a6edd065a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a81bba27d8f869e77dd921c7cd8ac35d7"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7">dm_component_info_t</a></td></tr>
+<tr class="separator:a81bba27d8f869e77dd921c7cd8ac35d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a57ffe4e9f51e746fdf4ae50151150b16"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16">celix_dm_component_info_t</a></td></tr>
+<tr class="separator:a57ffe4e9f51e746fdf4ae50151150b16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a230d51a712bc30bd2b52126e17f63738"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a></td></tr>
+<tr class="separator:a230d51a712bc30bd2b52126e17f63738"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeaa11da320e45fdeef41c441bff70f02"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02">dm_dependency_manager_info_t</a></td></tr>
+<tr class="separator:aeaa11da320e45fdeef41c441bff70f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af06092e6852ba40f4241b4e539265e64"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64">celix_dependency_manager_info_t</a></td></tr>
+<tr class="separator:af06092e6852ba40f4241b4e539265e64"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="af06092e6852ba40f4241b4e539265e64"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="el" href="celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64">celix_dependency_manager_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a57ffe4e9f51e746fdf4ae50151150b16"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16">celix_dm_component_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a635d8bc54edda5e7e70f7b27943196b6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">celix_dm_interface_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7fd4e90372051b1549c588095fb24fd4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">celix_dm_service_dependency_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4325313bb7b98b6eded2212a6edd065a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>* <a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a81bba27d8f869e77dd921c7cd8ac35d7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7">dm_component_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a230d51a712bc30bd2b52126e17f63738"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>* <a class="el" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aeaa11da320e45fdeef41c441bff70f02"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="el" href="celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02">dm_dependency_manager_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abb40885e5ab16c4701927d7095194ee2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>* <a class="el" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3c8c9b3b3b6d6cb2853ce22f337ed7f0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">dm_interface_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0a06988849c18fd4848452086f36ed6e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>* <a class="el" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a553833e914505261622b13563c8a045e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map
new file mode 100644
index 0000000..b5aca6f
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map
@@ -0,0 +1,5 @@
+<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
+<area shape="rect" id="node2" href="$celix__dm__component_8h.html" title="libs/framework/include\l/celix_dm_component.h" alt="" coords="5,95,180,136"/>
+<area shape="rect" id="node4" href="$celix__dm__service__dependency_8h.html" title="libs/framework/include\l/celix_dm_service_dependency.h" alt="" coords="205,95,434,136"/>
+<area shape="rect" id="node3" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,184,174,225"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5
new file mode 100644
index 0000000..2c35076
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5
@@ -0,0 +1 @@
+3da1f0e45c57899d1bdd8a2ebdb12121
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png
new file mode 100644
index 0000000..7441891
Binary files /dev/null and b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.map b/static/docs/2.2.0/html/celix__dm__info_8h__incl.map
new file mode 100644
index 0000000..51b9c16
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h__incl.map
@@ -0,0 +1,2 @@
+<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
+</map>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5
new file mode 100644
index 0000000..c851fa6
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5
@@ -0,0 +1 @@
+bc8b6b691e51d889f40f318f0f6de927
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.png b/static/docs/2.2.0/html/celix__dm__info_8h__incl.png
new file mode 100644
index 0000000..79c3901
Binary files /dev/null and b/static/docs/2.2.0/html/celix__dm__info_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h_source.html b/static/docs/2.2.0/html/celix__dm__info_8h_source.html
new file mode 100644
index 0000000..1a7ab05
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__info_8h_source.html
@@ -0,0 +1,121 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_dm_info.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_dm_info.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__info_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or  [...]
+<div class="ttc" id="structcelix__dm__interface__info__struct_html"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:34</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
+<div class="ttc" id="structcelix__dm__interface__info__struct_html_a6fb90a86fdaa6aefde5e598f5ca85e2c"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct::properties</a></div><div class="ttdeci">celix_properties_t * properties</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:36</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html_a0c64e56c05452d29efc60ac8b75f7163"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">celix_dm_component_info_struct::state</a></div><div class="ttdeci">char * state</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:56</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html_abbbe72fb049ad5ebb5941421929ae51a"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">celix_dm_component_info_struct::interfaces</a></div><div class="ttdeci">celix_array_list_t * interfaces</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:57</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html_a293333dd64e557ab4b3d80c44d6d2499"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct::active</a></div><div class="ttdeci">bool active</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:55</div></div>
+<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html_a3d4be4557e6b124bd6b2c586fddfb75b"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct::components</a></div><div class="ttdeci">celix_array_list_t * components</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:66</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html_abb385ead04139565ed13ed34841d1bda"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct::dependency_list</a></div><div class="ttdeci">celix_array_list_t * dependency_list</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:58</div></div>
+<div class="ttc" id="structcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
+<div class="ttc" id="celix__dm__info_8h_html_a230d51a712bc30bd2b52126e17f63738"><div class="ttname"><a href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a></div><div class="ttdeci">struct celix_dm_dependency_manager_info_struct * dm_dependency_manager_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:68</div></div>
+<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html_ac51721859e70f844e4c23873aec85dfb"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct::bndId</a></div><div class="ttdeci">long bndId</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:65</div></div>
+<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:64</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_ac06a272ddf7c02e335be784082ba5e9f"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct::filter</a></div><div class="ttdeci">char * filter</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:43</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_ad9284f87c8033a14e5ba5de8118b7f09"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">celix_dm_service_dependency_info_struct::count</a></div><div class="ttdeci">size_t count</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:46</div></div>
+<div class="ttc" id="celix__dm__info_8h_html_a0a06988849c18fd4848452086f36ed6e"><div class="ttname"><a href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a></div><div class="ttdeci">struct celix_dm_service_dependency_info_struct * dm_service_dependency_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:48</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_a77659b20ca3bcc2b9282f4644bdcbe66"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">celix_dm_service_dependency_info_struct::available</a></div><div class="ttdeci">bool available</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:44</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_a8ad066c5fa5d75e9fb82add72cbfc705"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">celix_dm_service_dependency_info_struct::required</a></div><div class="ttdeci">bool required</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:45</div></div>
+<div class="ttc" id="celix__dm__info_8h_html_a4325313bb7b98b6eded2212a6edd065a"><div class="ttname"><a href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a></div><div class="ttdeci">struct celix_dm_component_info_struct * dm_component_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:60</div></div>
+<div class="ttc" id="celix__dm__info_8h_html_abb40885e5ab16c4701927d7095194ee2"><div class="ttname"><a href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a></div><div class="ttdeci">struct celix_dm_interface_info_struct * dm_interface_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:38</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h.html b/static/docs/2.2.0/html/celix__dm__service__dependency_8h.html
new file mode 100644
index 0000000..11211b5
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__service__dependency_8h.html
@@ -0,0 +1,643 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_dm_service_dependency.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#nested-classes">Classes</a> &#124;
+<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_service_dependency.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;celix_types.h&quot;</code><br />
+<code>#include &quot;celix_errno.h&quot;</code><br />
+<code>#include &quot;celix_threads.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_service_dependency.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__dm__service__dependency_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__service__dependency_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__dm__service__dependency_8h" id="libs_2framework_2include_2celix__dm__service__dependency_8h">
+<area shape="rect" id="node5" href="celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="404,95,524,121"/>
+</map>
+</div>
+</div>
+<p><a href="celix__dm__service__dependency_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="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a1b153c6b38f75362450aad5b3ad729f7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7">CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS</a></td></tr>
+<tr class="separator:a1b153c6b38f75362450aad5b3ad729f7"><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:a38a2114a58286eebc673a8dc5f314e43"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></td></tr>
+<tr class="separator:a38a2114a58286eebc673a8dc5f314e43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3aab7f5d65c74eb819047e5ec1f4c05f"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a>) (void *handle, void *service)</td></tr>
+<tr class="separator:a3aab7f5d65c74eb819047e5ec1f4c05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a77266cc94a0f019b29d75a8e54995d"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a>) (void *handle, void *oldService, void *newService)</td></tr>
+<tr class="separator:a8a77266cc94a0f019b29d75a8e54995d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb8ee50fcfc77f274578d85a70bb2b94"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a>) (void *handle, void *service, const celix_properties_t *props)</td></tr>
+<tr class="separator:afb8ee50fcfc77f274578d85a70bb2b94"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b4b49e1cbd6865c5dc14e94086f629f"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a>) (void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</td></tr>
+<tr class="separator:a6b4b49e1cbd6865c5dc14e94086f629f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5dd45f27aabacee9bce3ac0b3122b661"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></td></tr>
+<tr class="separator:a5dd45f27aabacee9bce3ac0b3122b661"><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:a80a698d57b244ab54ffad631a41ae88c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a> { <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a>, 
+<a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a>
+ }</td></tr>
+<tr class="separator:a80a698d57b244ab54ffad631a41ae88c"><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:a588b147bec75a501fac3b35076fc98a3"><td class="memItemLeft" align="right" valign="top">celix_dm_service_dependency_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a> (void)</td></tr>
+<tr class="separator:a588b147bec75a501fac3b35076fc98a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac282334d66c3cfc4fda1b67245172979"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a> (celix_dm_service_dependency_t *dep)</td></tr>
+<tr class="separator:ac282334d66c3cfc4fda1b67245172979"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c33bcf502f8683bce3cf382c4bdc76a"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a> (celix_dm_service_dependency_t *dependency, bool required)</td></tr>
+<tr class="separator:a0c33bcf502f8683bce3cf382c4bdc76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9aec79471c46aecc7412523fe839e549"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a> (celix_dm_service_dependency_t *dependency, bool addCLangFilter)</td></tr>
+<tr class="separator:a9aec79471c46aecc7412523fe839e549"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d833904b765bee7073ec41828ea7d2e"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a> stra [...]
+<tr class="separator:a9d833904b765bee7073ec41828ea7d2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8365396c6363ad98b66725243f97f8ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a> (celix_dm_service_dependency_t *dependency)</td></tr>
+<tr class="separator:a8365396c6363ad98b66725243f97f8ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2602a6526ef6cde42d606c9ed958cec7"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a> (celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)</td></tr>
+<tr class="separator:a2602a6526ef6cde42d606c9ed958cec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a487a41d56ea2bf1aa51cd7f7e83ff844"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a> (celix_dm_service_dependency_t *dependency)</td></tr>
+<tr class="separator:a487a41d56ea2bf1aa51cd7f7e83ff844"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a731a456c8e617acfa4d81a6357959c"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> set)</td></tr>
+<tr class="separator:a1a731a456c8e617acfa4d81a6357959c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9bdfec7b27301bd71dd4f45fcdd11568"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_prop [...]
+<tr class="separator:a9bdfec7b27301bd71dd4f45fcdd11568"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31898ef1ad5f9695dc85a24202020ebe"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a> (celix_dm_service_dependency_t *dependency, const <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_c [...]
+<tr class="separator:a31898ef1ad5f9695dc85a24202020ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebe0669933d37f9fd1c3fdc873127d78"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a> (celix_dm_service_dependency_t *dependency, void *handle)</td></tr>
+<tr class="separator:aebe0669933d37f9fd1c3fdc873127d78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b84d9164563664da40491151f7d7131"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a> (celix_dm_service_dependency_t *dep)</td></tr>
+<tr class="separator:a0b84d9164563664da40491151f7d7131"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb96da27c0087a05d885b0f55756de8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a> (celix_dm_service_dependency_t *dep, <a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</a> *info)</td></tr>
+<tr class="separator:acb96da27c0087a05d885b0f55756de8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="a1b153c6b38f75362450aad5b3ad729f7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">{ .set = NULL, \</div><div class="line">    .add = NULL, \</div><div class="line">    .remove = NULL, \</div><div class="line">    .swap = NULL, \</div><div class="line">    .setWithProps = NULL, \</div><div class="line">    .addWithProps = NULL, \</div><div class="line">    .removeWithProps = NULL, \</div><div class="line">    .swapWithProps = NULL }</div></div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="a5dd45f27aabacee9bce3ac0b3122b661"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>  <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a38a2114a58286eebc673a8dc5f314e43"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a>  <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8a77266cc94a0f019b29d75a8e54995d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* celix_dm_service_swap_fp) (void *handle, void *oldService, void *newService)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6b4b49e1cbd6865c5dc14e94086f629f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* celix_dm_service_swap_with_props_fp) (void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3aab7f5d65c74eb819047e5ec1f4c05f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* celix_dm_service_update_fp) (void *handle, void *service)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afb8ee50fcfc77f274578d85a70bb2b94"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* celix_dm_service_update_with_props_fp) (void *handle, void *service, const celix_properties_t *props)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="a80a698d57b244ab54ffad631a41ae88c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"></a>DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING&#160;</td><td class="fielddoc">
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"></a>DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND&#160;</td><td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a588b147bec75a501fac3b35076fc98a3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_dm_service_dependency_t* celix_dmServiceDependency_create </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Create a service dependency. Caller has ownership. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0b84d9164563664da40491151f7d7131"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</a>* celix_dmServiceDependency_createInfo </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dep</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Creates a service dependency info. The service dependency info struct contains information about the service dependency. The caller is the owner </p>
+
+</div>
+</div>
+<a class="anchor" id="ac282334d66c3cfc4fda1b67245172979"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_dmServiceDependency_destroy </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dep</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Destroys a service dependency. Caller has ownership. </p>
+
+</div>
+</div>
+<a class="anchor" id="acb96da27c0087a05d885b0f55756de8a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_dmServiceDependency_destroyInfo </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dep</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">dm_service_dependency_info_t</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>Destroy a provided service dependency info struct. </p>
+
+</div>
+</div>
+<a class="anchor" id="a487a41d56ea2bf1aa51cd7f7e83ff844"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* celix_dmServiceDependency_getFilter </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the service dependency filter. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8365396c6363ad98b66725243f97f8ea"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a> celix_dmServiceDependency_getStrategy </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Return the service dependency update strategy. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9aec79471c46aecc7412523fe839e549"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setAddCLanguageFilter </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>addCLangFilter</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Specify if the service dependency should add a C language filter for this dependency if no "service.lang" part is found the in the provided filter. Default is false </p>
+
+</div>
+</div>
+<a class="anchor" id="a1a731a456c8e617acfa4d81a6357959c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setCallback </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a>&#160;</td>
+          <td class="paramname"><em>set</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the set callbacks when services specified by the service dependency The first argument of the callbacks will be the component implement (</p><dl class="section see"><dt>See also</dt><dd>component_getImplementation) The second the argument a pointer to an instance of a service struct of the specified service dependency. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aebe0669933d37f9fd1c3fdc873127d78"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setCallbackHandle </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>handle</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the callback handle to be used in the callbacks. Note that this normally should not be set, because the result of component_getImplementation() is used This can be used in rare cases when the callbacks are actually interceptors. e.g. in the case of C++ support. </p>
+
+</div>
+</div>
+<a class="anchor" id="a31898ef1ad5f9695dc85a24202020ebe"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setCallbacksWithOptions </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a> *&#160;</td>
+          <td class="paramname"><em>opts</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the set, add, change, remove and swap function callbacks when services specified by the service dependency are (respectively) set, added, changed, removed or swapped.</p>
+<p>The version with the WithProps suffix will be called with as third argument the service properties. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9bdfec7b27301bd71dd4f45fcdd11568"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setCallbackWithProperties </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a>&#160;</td>
+          <td class="paramname"><em>set</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the set function callbacks when services specified by the service dependency The first argument of the callbacks will be the component implement (</p><dl class="section see"><dt>See also</dt><dd>component_getImplementation) The second argument of th callbacks will be a pointer to an instance of a service struct of the specified service dependency. The third argument of th callbacks will be a pointer to a service properties of the a service instance of the specified service depende [...]
+
+</div>
+</div>
+<a class="anchor" id="a0c33bcf502f8683bce3cf382c4bdc76a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setRequired </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>required</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Specify if the service dependency is required. default is false </p>
+
+</div>
+</div>
+<a class="anchor" id="a2602a6526ef6cde42d606c9ed958cec7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setService </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</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>serviceVersionRange</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname"><em>filter</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set the service name, version range and filter.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">serviceName</td><td>The service name. Must have a value. </td></tr>
+    <tr><td class="paramname">serviceVersionRange</td><td>The service version range, can be a NULL pointer. </td></tr>
+    <tr><td class="paramname">filter</td><td>The (additional) filter to use (e.g. "(location=front)"). Can be a NULL pointer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9d833904b765bee7073ec41828ea7d2e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_status_t celix_dmServiceDependency_setStrategy </td>
+          <td>(</td>
+          <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
+          <td class="paramname"><em>dependency</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a>&#160;</td>
+          <td class="paramname"><em>strategy</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Specify if the service dependency update strategy.</p>
+<p>The DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING strategy notifies the component in case the dependencies set changes (e.g. a dependency is added/removed): the component is responsible for protecting via locks the dependencies list and check (always under lock) if the service he's depending on is still available.</p>
+<p>The DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND (default when no strategy is explicitly set) reliefs the programmer from dealing with service dependencies' consistency issues: in case this strategy is adopted, the component is stopped and restarted (i.e. temporarily suspended) upon service dependencies' changes.</p>
+<p>Default strategy is DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map
new file mode 100644
index 0000000..3490ed3
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_dm_service_dependency.h" name="libs/framework/include/celix_dm_service_dependency.h">
+<area shape="rect" id="node5" href="$celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="404,95,524,121"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5
new file mode 100644
index 0000000..cd4e16b
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5
@@ -0,0 +1 @@
+e54ca2eb2af8cc6db5cc140b413fae0c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png
new file mode 100644
index 0000000..dd8e5ef
Binary files /dev/null and b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html b/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html
new file mode 100644
index 0000000..a11221d
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html
@@ -0,0 +1,133 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_dm_service_dependency.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_dm_service_dependency.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__service__dependency_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class=" [...]
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a8a77266cc94a0f019b29d75a8e54995d"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_fp)(void *handle, void *oldService, void *newService)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:40</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_ac282334d66c3cfc4fda1b67245172979"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a></div><div class="ttdeci">void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a38a2114a58286eebc673a8dc5f314e43"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></div><div class="ttdeci">enum celix_dm_service_dependency_strategy_enum celix_dm_service_dependency_strategy_t</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a9aec79471c46aecc7412523fe839e549"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setAddCLanguageFilter(celix_dm_service_dependency_t *dependency, bool addCLangFilter)</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_aebe0669933d37f9fd1c3fdc873127d78"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void *handle)</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a9663db4ef079c6300f95dadfe2c03813"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">celix_dm_service_dependency_callback_options::add</a></div><div class="ttdeci">celix_dm_service_update_fp add</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:47</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:35</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a2602a6526ef6cde42d606c9ed958cec7"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)</div></div>
+<div class="ttc" id="celix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a6b4b49e1cbd6865c5dc14e94086f629f"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_with_props_fp)(void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:43</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:34</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a9d833904b765bee7073ec41828ea7d2e"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a9bdfec7b27301bd71dd4f45fcdd11568"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set)</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a35b874e6fa5a6c3af03f09e6492e8b48"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">celix_dm_service_dependency_callback_options::swap</a></div><div class="ttdeci">celix_dm_service_swap_fp swap</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:49</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:36</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a54ee61c8ab040dc87de22588013316fd"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">celix_dm_service_dependency_callback_options::removeWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp removeWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:53</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a0c33bcf502f8683bce3cf382c4bdc76a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_acb96da27c0087a05d885b0f55756de8a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a></div><div class="ttdeci">void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a588b147bec75a501fac3b35076fc98a3"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a></div><div class="ttdeci">celix_dm_service_dependency_t * celix_dmServiceDependency_create(void)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a8365396c6363ad98b66725243f97f8ea"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a31898ef1ad5f9695dc85a24202020ebe"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a487a41d56ea2bf1aa51cd7f7e83ff844"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a></div><div class="ttdeci">const char * celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a1a731a456c8e617acfa4d81a6357959c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set)</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a1e0bfcf2034cd6d69d954256d101598d"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">celix_dm_service_dependency_callback_options::swapWithProps</a></div><div class="ttdeci">celix_dm_service_swap_with_props_fp swapWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:54</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a286bb094f7e4b4a9066e9b235aa8ade9"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">celix_dm_service_dependency_callback_options::setWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp setWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:51</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a5dd45f27aabacee9bce3ac0b3122b661"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></div><div class="ttdeci">struct celix_dm_service_dependency_callback_options celix_dm_service_dependency_callback_options_t</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a5cf7a8e9026d08803798c70cb6a30330"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">celix_dm_service_dependency_callback_options::addWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp addWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:52</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_a0b84d9164563664da40491151f7d7131"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a></div><div class="ttdeci">dm_service_dependency_info_t * celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:45</div></div>
+<div class="ttc" id="celix__dm__service__dependency_8h_html_afb8ee50fcfc77f274578d85a70bb2b94"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_update_with_props_fp)(void *handle, void *service, const celix_properties_t *props)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:42</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__framework_8h.html b/static/docs/2.2.0/html/celix__framework_8h.html
new file mode 100644
index 0000000..46bd008
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h.html
@@ -0,0 +1,304 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_framework.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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">celix_framework.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;celix_types.h&quot;</code><br />
+<code>#include &quot;celix_properties.h&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for celix_framework.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="celix__framework_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__framework_8h" alt=""/></div>
+<map name="libs_2framework_2include_2celix__framework_8h" id="libs_2framework_2include_2celix__framework_8h">
+</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__framework_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__framework_8hdep" alt=""/></div>
+<map name="libs_2framework_2include_2celix__framework_8hdep" id="libs_2framework_2include_2celix__framework_8hdep">
+<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+</map>
+</div>
+</div>
+<p><a href="celix__framework_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="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a671ba53e13abea3d4eb328a66b62802f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a> (const celix_framework_t *fw)</td></tr>
+<tr class="separator:a671ba53e13abea3d4eb328a66b62802f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2e913753f841b3b0b22c196b39d03b1"><td class="memItemLeft" align="right" valign="top">celix_bundle_context_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a> (const celix_framework_t *fw)</td></tr>
+<tr class="separator:aa2e913753f841b3b0b22c196b39d03b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae980ec9c8f83f8a3e65dc7da9d794f18"><td class="memItemLeft" align="right" valign="top">celix_bundle_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework_getFrameworkBundle</a> (const celix_framework_t *fw)</td></tr>
+<tr class="separator:ae980ec9c8f83f8a3e65dc7da9d794f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a192ba45dd2a7175fd4d19c70da59f9ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a> (celix_framework_t *fw, bool includeFrameworkBundle, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</td></tr>
+<tr class="separator:a192ba45dd2a7175fd4d19c70da59f9ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab158bb807ea2171c5d20076cb457c8d1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a> (celix_framework_t *fw, bool onlyActive, long bndId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</td></tr>
+<tr class="separator:ab158bb807ea2171c5d20076cb457c8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ae980ec9c8f83f8a3e65dc7da9d794f18"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_bundle_t* celix_framework_getFrameworkBundle </td>
+          <td>(</td>
+          <td class="paramtype">const celix_framework_t *&#160;</td>
+          <td class="paramname"><em>fw</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the framework bundle. This is the same as a 'normal' bundle, expect that this bundle cannot be uninstalled and the <code>celix_bundle_getEntry</code> return a entries relative from the working directory. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fw</td><td>The framework </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the bundle of the framework or NULL if something went wrong. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aa2e913753f841b3b0b22c196b39d03b1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">celix_bundle_context_t* celix_framework_getFrameworkContext </td>
+          <td>(</td>
+          <td class="paramtype">const celix_framework_t *&#160;</td>
+          <td class="paramname"><em>fw</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the framework bundle context. This is the same as a 'normal' bundle context and can be used to register, use and track services. The only difference is that the framework is the bundle. </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fw</td><td>The framework </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the bundle context of the framework or NULL if something went wrong. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a671ba53e13abea3d4eb328a66b62802f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* celix_framework_getUUID </td>
+          <td>(</td>
+          <td class="paramtype">const celix_framework_t *&#160;</td>
+          <td class="paramname"><em>fw</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Returns the framework UUID. This is unique for every created framework and will not be the same if the process is restarted. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab158bb807ea2171c5d20076cb457c8d1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool celix_framework_useBundle </td>
+          <td>(</td>
+          <td class="paramtype">celix_framework_t *&#160;</td>
+          <td class="paramname"><em>fw</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>onlyActive</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>bndId</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bnd)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the bundle with the provided bundle id The provided callback will be called if the bundle is found.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fw</td><td>The framework. </td></tr>
+    <tr><td class="paramname">onlyActive</td><td>If true only starting and active bundles will trigger the callback. </td></tr>
+    <tr><td class="paramname">bundleId</td><td>The bundle id. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback which will be called for the currently started bundles. The bundle pointers are only guaranteed to be valid during the callback. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns true if the bundle is found and the callback is called. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a192ba45dd2a7175fd4d19c70da59f9ab"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void celix_framework_useBundles </td>
+          <td>(</td>
+          <td class="paramtype">celix_framework_t *&#160;</td>
+          <td class="paramname"><em>fw</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>includeFrameworkBundle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&#160;</td>
+          <td class="paramname"><em>callbackHandle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void(*)(void *handle, const celix_bundle_t *bnd)&#160;</td>
+          <td class="paramname"><em>use</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Use the currently active (started) bundles. The provided callback will be called for all the currently started bundles.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ctx</td><td>The bundle context. </td></tr>
+    <tr><td class="paramname">includeFrameworkBundle</td><td>If true the callback will also be triggered for the framework bundle. </td></tr>
+    <tr><td class="paramname">callbackHandle</td><td>The data pointer, which will be used in the callbacks </td></tr>
+    <tr><td class="paramname">use</td><td>The callback which will be called for the currently started bundles. The bundle pointers are only guaranteed to be valid during the callback. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.map b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.map
new file mode 100644
index 0000000..93572c3
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.map
@@ -0,0 +1,3 @@
+<map id="libs/framework/include/celix_framework.h" name="libs/framework/include/celix_framework.h">
+<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+</map>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5
new file mode 100644
index 0000000..0e7094a
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5
@@ -0,0 +1 @@
+2bd3a4a884e8210ad5aadcf83d82c464
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png
new file mode 100644
index 0000000..a708808
Binary files /dev/null and b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.map b/static/docs/2.2.0/html/celix__framework_8h__incl.map
new file mode 100644
index 0000000..ab11cce
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h__incl.map
@@ -0,0 +1,2 @@
+<map id="libs/framework/include/celix_framework.h" name="libs/framework/include/celix_framework.h">
+</map>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.md5 b/static/docs/2.2.0/html/celix__framework_8h__incl.md5
new file mode 100644
index 0000000..bdbb839
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h__incl.md5
@@ -0,0 +1 @@
+f54583c4b22ac2cb4b459d9a083699ef
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.png b/static/docs/2.2.0/html/celix__framework_8h__incl.png
new file mode 100644
index 0000000..5362e46
Binary files /dev/null and b/static/docs/2.2.0/html/celix__framework_8h__incl.png differ
diff --git a/static/docs/2.2.0/html/celix__framework_8h_source.html b/static/docs/2.2.0/html/celix__framework_8h_source.html
new file mode 100644
index 0000000..c5012c7
--- /dev/null
+++ b/static/docs/2.2.0/html/celix__framework_8h_source.html
@@ -0,0 +1,106 @@
+<!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.11"/>
+<title>Celix: libs/framework/include/celix_framework.h Source File</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">celix_framework.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__framework_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or [...]
+<div class="ttc" id="celix__framework_8h_html_a671ba53e13abea3d4eb328a66b62802f"><div class="ttname"><a href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a></div><div class="ttdeci">const char * celix_framework_getUUID(const celix_framework_t *fw)</div></div>
+<div class="ttc" id="celix__framework_8h_html_a192ba45dd2a7175fd4d19c70da59f9ab"><div class="ttname"><a href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a></div><div class="ttdeci">void celix_framework_useBundles(celix_framework_t *fw, bool includeFrameworkBundle, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
+<div class="ttc" id="celix__framework_8h_html_ab158bb807ea2171c5d20076cb457c8d1"><div class="ttname"><a href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a></div><div class="ttdeci">bool celix_framework_useBundle(celix_framework_t *fw, bool onlyActive, long bndId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
+<div class="ttc" id="celix__framework_8h_html_aa2e913753f841b3b0b22c196b39d03b1"><div class="ttname"><a href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_framework_getFrameworkContext(const celix_framework_t *fw)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/classes.html b/static/docs/2.2.0/html/classes.html
new file mode 100644
index 0000000..91fab51
--- /dev/null
+++ b/static/docs/2.2.0/html/classes.html
@@ -0,0 +1,107 @@
+<!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.11"/>
+<title>Celix: Class Index</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="header">
+  <div class="headertitle">
+<div class="title">Class Index</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_C">C</a></div>
+<table class="classindex">
+<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="e [...]
+<tr><td valign="top"><a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__tracking__option [...]
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_C">C</a></div>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/closed.png b/static/docs/2.2.0/html/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/static/docs/2.2.0/html/closed.png differ
diff --git a/static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html b/static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
new file mode 100644
index 0000000..010acbf
--- /dev/null
+++ b/static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
@@ -0,0 +1,107 @@
+<!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.11"/>
+<title>Celix: libs Directory 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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">libs Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_edbb2ffdc3e165978e68de3a46f2e8a0"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html b/static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html
new file mode 100644
index 0000000..b17d8c9
--- /dev/null
+++ b/static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html
@@ -0,0 +1,121 @@
+<!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.11"/>
+<title>Celix: libs/framework/include Directory 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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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="headertitle">
+<div class="title">include Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:celix__api_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__api_8h.html">celix_api.h</a> <a href="celix__api_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__bundle_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle_8h.html">celix_bundle.h</a> <a href="celix__bundle_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__bundle__activator_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a> <a href="celix__bundle__activator_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__bundle__context_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html">celix_bundle_context.h</a> <a href="celix__bundle__context_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__dm__component_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html">celix_dm_component.h</a> <a href="celix__dm__component_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__dm__info_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__info_8h.html">celix_dm_info.h</a> <a href="celix__dm__info_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__dm__service__dependency_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html">celix_dm_service_dependency.h</a> <a href="celix__dm__service__dependency_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:celix__framework_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__framework_8h.html">celix_framework.h</a> <a href="celix__framework_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html b/static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
new file mode 100644
index 0000000..80f14fa
--- /dev/null
+++ b/static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
@@ -0,0 +1,107 @@
+<!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.11"/>
+<title>Celix: libs/framework Directory 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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </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>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">framework Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_bc286dd6b945a73064974dfd7e40f558"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/doc.png b/static/docs/2.2.0/html/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/static/docs/2.2.0/html/doc.png differ
diff --git a/static/docs/2.2.0/html/doxygen.css b/static/docs/2.2.0/html/doxygen.css
new file mode 100644
index 0000000..1425ec5
--- /dev/null
+++ b/static/docs/2.2.0/html/doxygen.css
@@ -0,0 +1,1475 @@
+/* The standard CSS for doxygen 1.8.11 */
+
+body, table, div, p, dl {
+	font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+.title {
+	font: 400 14px/28px Roboto,sans-serif;
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid #879ECB;
+	color: #354C7B;
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px cyan;
+}
+
+dt {
+	font-weight: bold;
+}
+
+div.multicol {
+	-moz-column-gap: 1em;
+	-webkit-column-gap: 1em;
+	-moz-column-count: 3;
+	-webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+	margin-top: 2px;
+}
+
+p.starttd {
+	margin-top: 0px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+}
+
+div.qindex, div.navpath {
+	width: 100%;
+	line-height: 140%;
+}
+
+div.navtab {
+	margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+	color: #3D578C;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: #4665A2;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a.qindex {
+	font-weight: bold;
+}
+
+a.qindexHL {
+	font-weight: bold;
+	background-color: #9CAFD4;
+	color: #ffffff;
+	border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+	color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+pre.fragment {
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+	background-color: #FBFCFD;
+	border: 1px solid #C4CFE5;
+}
+
+div.line {
+	font-family: monospace, fixed;
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.0;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
+div.line.glow {
+	background-color: cyan;
+	box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+	padding-right: 4px;
+	text-align: right;
+	border-right: 2px solid #0F0;
+	background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+	background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+	background-color: #C8C8C8;
+}
+
+div.ah, span.ah {
+	background-color: black;
+	font-weight: bold;
+	color: #ffffff;
+	margin-bottom: 3px;
+	margin-top: 3px;
+	padding: 0.2em;
+	border: solid thin #333;
+	border-radius: 0.5em;
+	-webkit-border-radius: .5em;
+	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
+	-webkit-box-shadow: 2px 2px 3px #999;
+	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	background-color: white;
+	color: black;
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
+}
+
+td.indexkey {
+	background-color: #EBEFF6;
+	font-weight: bold;
+	border: 1px solid #C4CFE5;
+	margin: 2px 0px 2px 0;
+	padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
+}
+
+td.indexvalue {
+	background-color: #EBEFF6;
+	border: 1px solid #C4CFE5;
+	padding: 2px 10px;
+	margin: 2px 0px;
+}
+
+tr.memlist {
+	background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.formulaDsp {
+	
+}
+
+img.formulaInl {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: #008000
+}
+
+span.keywordtype {
+	color: #604020
+}
+
+span.keywordflow {
+	color: #e08000
+}
+
+span.comment {
+	color: #800000
+}
+
+span.preprocessor {
+	color: #806020
+}
+
+span.stringliteral {
+	color: #002080
+}
+
+span.charliteral {
+	color: #008080
+}
+
+span.vhdldigit { 
+	color: #ff00ff 
+}
+
+span.vhdlchar { 
+	color: #000000 
+}
+
+span.vhdlkeyword { 
+	color: #700070 
+}
+
+span.vhdllogic { 
+	color: #ff0000 
+}
+
+blockquote {
+        background-color: #F7F8FB;
+        border-left: 2px solid #9CAFD4;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+	color: #003399;
+	font-weight: bold;
+}
+
+form.search {
+	margin-bottom: 0px;
+	margin-top: 0px;
+}
+
+input.search {
+	font-size: 75%;
+	color: #000080;
+	font-weight: normal;
+	background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+	background: #EBEFF6;
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: cyan;
+	box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: #F9FAFC;
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: #555;
+}
+
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: #4665A2;
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+	font-size: 80%;
+	color: #4665A2;
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.memnav {
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+	margin: 2px;
+	margin-right: 15px;
+	padding: 2px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 4px;
+        -moz-border-radius-topleft: 4px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 4px;
+        -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 6px 10px 2px 10px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+}
+
+.paramname {
+	color: #602020;
+	white-space: nowrap;
+}
+.paramname em {
+	font-style: normal;
+}
+.paramname code {
+        line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: #728DC1;
+        border-top:1px solid #5373B4;
+        border-left:1px solid #5373B4;
+        border-right:1px solid #C4CFE5;
+        border-bottom:1px solid #C4CFE5;
+	text-shadow: none;
+	color: white;
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #9CAFD4;
+        border-bottom: 1px solid #9CAFD4;
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: #F7F8FB;
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: #3D578C;
+}
+
+.arrow {
+    color: #9CAFD4;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: Arial, Helvetica;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: #728DC1;
+    color: white;
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderopen.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderclosed.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('doc.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+table.directory {
+    font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: #2A3D61;
+}
+
+table.doxtable caption {
+	caption-side: top;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        /*width: 100%;*/
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}       
+        
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: url('tab_b.png');
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image:url('tab_b.png');
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:#8AA0CC;
+	border:solid 1px #C2CDE4;
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:url('bc_s.png');
+	background-repeat:no-repeat;
+	background-position:right;
+	color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	text-decoration: none;
+	outline: none;
+	color: #283A5D;
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+	text-decoration: none;        
+}
+
+.navpath li.navelem a:hover
+{
+	color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}       
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0; 
+        padding: 0;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+	background-color: #F9FAFC;
+	margin:  0px;
+	border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #505050;
+}
+
+dl.todo
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #C08050;
+}
+
+dl.section dd {
+	margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectalign
+{
+        vertical-align: middle;
+}
+
+#projectname
+{
+	font: 300% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 120% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F4F6FA;
+        border: 1px solid #D8DFEE;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 8px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+	color: #4665A2;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	white-space: nowrap;
+	background-color: white;
+	border: 1px solid gray;
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: 1px 1px 7px gray;
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: grey;
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: #006318;
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before {
+	border-top-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
diff --git a/static/docs/2.2.0/html/doxygen.png b/static/docs/2.2.0/html/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/static/docs/2.2.0/html/doxygen.png differ
diff --git a/static/docs/2.2.0/html/dynsections.js b/static/docs/2.2.0/html/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/static/docs/2.2.0/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+   content.hide();
+   summary.show();
+   $(linkObj).addClass('closed').removeClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+   content.show();
+   summary.hide();
+   $(linkObj).removeClass('closed').addClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ } 
+ return false;
+}
+
+function updateStripes()
+{
+  $('table.directory tr').
+       removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+  $('table.directory tr').each(function() {
+    var l = this.id.split('_').length-1;
+    var i = $('#img'+this.id.substring(3));
+    var a = $('#arr'+this.id.substring(3));
+    if (l<level+1) {
+      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+      a.html('&#9660;');
+      $(this).show();
+    } else if (l==level+1) {
+      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+      a.html('&#9658;');
+      $(this).show();
+    } else {
+      $(this).hide();
+    }
+  });
+  updateStripes();
+}
+
+function toggleFolder(id)
+{
+  // the clicked row
+  var currentRow = $('#row_'+id);
+
+  // all rows after the clicked row
+  var rows = currentRow.nextAll("tr");
+
+  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+  // only match elements AFTER this one (can't hide elements before)
+  var childRows = rows.filter(function() { return this.id.match(re); });
+
+  // first row is visible we are HIDING
+  if (childRows.filter(':first').is(':visible')===true) {
+    // replace down arrow by right arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    currentRowSpans.filter(".arrow").html('&#9658;');
+    rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+  } else { // we are SHOWING
+    // replace right arrow by down arrow for current row
+    var currentRowSpans = currentRow.find("span");
+    currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+    currentRowSpans.filter(".arrow").html('&#9660;');
+    // replace down arrows by right arrows for child rows
+    var childRowsSpans = childRows.find("span");
+    childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+    childRowsSpans.filter(".arrow").html('&#9658;');
+    childRows.show(); //show all children
+  }
+  updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+  var rows = $('tr.inherit.'+id);
+  var img = $('tr.inherit_header.'+id+' img');
+  var src = $(img).attr('src');
+  if (rows.filter(':first').is(':visible')===true) {
+    rows.css('display','none');
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+  } else {
+    rows.css('display','table-row'); // using show() causes jump in firefox
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+  }
+}
+
diff --git a/static/docs/2.2.0/html/files.html b/static/docs/2.2.0/html/files.html
new file mode 100644
index 0000000..af3cc83
--- /dev/null
+++ b/static/docs/2.2.0/html/files.html
@@ -0,0 +1,112 @@
+<!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.11"/>
+<title>Celix: File List</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="header">
+  <div class="headertitle">
+<div class="title">File List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html" target="_self">libs</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html" target="_self">framework</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span id="img_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_')">&#160;</span><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__api_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__api_8h.html" target="_self">celix_api.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__bundle_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__bundle_8h.html" target="_self">celix_bundle.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__bundle__activator_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__bundle__activator_8h.html" target="_self">celix_bundle_activator.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__bundle__context_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__bundle__context_8h.html" target="_self">celix_bundle_context.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__dm__component_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__dm__component_8h.html" target="_self">celix_dm_component.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__dm__info_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__dm__info_8h.html" target="_self">celix_dm_info.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_6_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__dm__service__dependency_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__dm__service__dependency_8h.html" target="_self">celix_dm_service_dependency.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_7_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="celix__framework_8h_source.html"><span class="icondoc"></span></a><a class="el" href="celix__framework_8h.html" target="_self">celix_framework.h</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/folderclosed.png b/static/docs/2.2.0/html/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/static/docs/2.2.0/html/folderclosed.png differ
diff --git a/static/docs/2.2.0/html/folderopen.png b/static/docs/2.2.0/html/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/static/docs/2.2.0/html/folderopen.png differ
diff --git a/static/docs/2.2.0/html/functions.html b/static/docs/2.2.0/html/functions.html
new file mode 100644
index 0000000..d929ba5
--- /dev/null
+++ b/static/docs/2.2.0/html/functions.html
@@ -0,0 +1,284 @@
+<!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.11"/>
+<title>Celix: Class Members</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
+      <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li class="current"><a href="#index_u"><span>u</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>active
+: <a class="el" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct</a>
+</li>
+<li>add
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">celix_service_tracking_options</a>
+</li>
+<li>addWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">celix_service_tracking_options</a>
+</li>
+<li>addWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">celix_service_tracking_options</a>
+</li>
+<li>addWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>available
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>bndId
+: <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct</a>
+</li>
+<li>bundleId
+: <a class="el" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">celix_service_tracker_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>components
+: <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct</a>
+</li>
+<li>count
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>dependency_list
+: <a class="el" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>filter
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct</a>
+, <a class="el" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>id
+: <a class="el" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">celix_dm_component_info_struct</a>
+</li>
+<li>interfaces
+: <a class="el" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">celix_dm_component_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>name
+: <a class="el" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">celix_dm_component_info_struct</a>
+, <a class="el" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>onBundleEvent
+: <a class="el" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">celix_bundle_tracker_options</a>
+</li>
+<li>onStarted
+: <a class="el" href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">celix_bundle_tracker_options</a>
+</li>
+<li>onStopped
+: <a class="el" href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">celix_bundle_tracker_options</a>
+</li>
+<li>OPTS_INIT
+: <a class="el" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">celix_bundle_tracker_options</a>
+, <a class="el" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">celix_service_filter_options</a>
+, <a class="el" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">celix_service_registration_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">celix_service_tracking_options</a>
+, <a class="el" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">celix_service_use_options</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>properties
+: <a class="el" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>remove
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">celix_service_tracking_options</a>
+</li>
+<li>removeWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">celix_service_tracking_options</a>
+</li>
+<li>removeWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">celix_service_tracking_options</a>
+</li>
+<li>removeWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>required
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>serviceLanguage
+: <a class="el" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info</a>
+</li>
+<li>serviceName
+: <a class="el" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">celix_service_tracker_info</a>
+</li>
+<li>set
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">celix_service_tracking_options</a>
+</li>
+<li>setWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">celix_service_tracking_options</a>
+</li>
+<li>setWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">celix_service_tracking_options</a>
+</li>
+<li>setWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>state
+: <a class="el" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">celix_dm_component_info_struct</a>
+</li>
+<li>swap
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>swapWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">celix_dm_service_dependency_callback_options</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>use
+: <a class="el" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">celix_service_use_options</a>
+</li>
+<li>useWithOwner
+: <a class="el" href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">celix_service_use_options</a>
+</li>
+<li>useWithProperties
+: <a class="el" href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">celix_service_use_options</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/functions_vars.html b/static/docs/2.2.0/html/functions_vars.html
new file mode 100644
index 0000000..e91a2b8
--- /dev/null
+++ b/static/docs/2.2.0/html/functions_vars.html
@@ -0,0 +1,284 @@
+<!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.11"/>
+<title>Celix: Class Members - Variables</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="functions.html"><span>All</span></a></li>
+      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li class="current"><a href="#index_u"><span>u</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>active
+: <a class="el" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct</a>
+</li>
+<li>add
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">celix_service_tracking_options</a>
+</li>
+<li>addWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">celix_service_tracking_options</a>
+</li>
+<li>addWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">celix_service_tracking_options</a>
+</li>
+<li>addWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>available
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>bndId
+: <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct</a>
+</li>
+<li>bundleId
+: <a class="el" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">celix_service_tracker_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>components
+: <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct</a>
+</li>
+<li>count
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>dependency_list
+: <a class="el" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>filter
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct</a>
+, <a class="el" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>id
+: <a class="el" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">celix_dm_component_info_struct</a>
+</li>
+<li>interfaces
+: <a class="el" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">celix_dm_component_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>name
+: <a class="el" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">celix_dm_component_info_struct</a>
+, <a class="el" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>onBundleEvent
+: <a class="el" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">celix_bundle_tracker_options</a>
+</li>
+<li>onStarted
+: <a class="el" href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">celix_bundle_tracker_options</a>
+</li>
+<li>onStopped
+: <a class="el" href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">celix_bundle_tracker_options</a>
+</li>
+<li>OPTS_INIT
+: <a class="el" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">celix_bundle_tracker_options</a>
+, <a class="el" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">celix_service_filter_options</a>
+, <a class="el" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">celix_service_registration_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">celix_service_tracking_options</a>
+, <a class="el" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">celix_service_use_options</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>properties
+: <a class="el" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>remove
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">celix_service_tracking_options</a>
+</li>
+<li>removeWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">celix_service_tracking_options</a>
+</li>
+<li>removeWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">celix_service_tracking_options</a>
+</li>
+<li>removeWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>required
+: <a class="el" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">celix_dm_service_dependency_info_struct</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>serviceLanguage
+: <a class="el" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info</a>
+</li>
+<li>serviceName
+: <a class="el" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">celix_service_tracker_info</a>
+</li>
+<li>set
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">celix_dm_service_dependency_callback_options</a>
+, <a class="el" href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">celix_service_tracking_options</a>
+</li>
+<li>setWithOwner
+: <a class="el" href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">celix_service_tracking_options</a>
+</li>
+<li>setWithProperties
+: <a class="el" href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">celix_service_tracking_options</a>
+</li>
+<li>setWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>state
+: <a class="el" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">celix_dm_component_info_struct</a>
+</li>
+<li>swap
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">celix_dm_service_dependency_callback_options</a>
+</li>
+<li>swapWithProps
+: <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">celix_dm_service_dependency_callback_options</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>use
+: <a class="el" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">celix_service_use_options</a>
+</li>
+<li>useWithOwner
+: <a class="el" href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">celix_service_use_options</a>
+</li>
+<li>useWithProperties
+: <a class="el" href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">celix_service_use_options</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/globals.html b/static/docs/2.2.0/html/globals.html
new file mode 100644
index 0000000..5e171e9
--- /dev/null
+++ b/static/docs/2.2.0/html/globals.html
@@ -0,0 +1,494 @@
+<!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.11"/>
+<title>Celix: File Members</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li class="current"><a href="#index_o"><span>o</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>celix_bundle_getEntry()
+: <a class="el" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle.h</a>
+</li>
+<li>celix_bundle_getGroup()
+: <a class="el" href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle.h</a>
+</li>
+<li>celix_bundle_getId()
+: <a class="el" href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle.h</a>
+</li>
+<li>celix_bundle_getState()
+: <a class="el" href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle.h</a>
+</li>
+<li>celix_bundle_getSymbolicName()
+: <a class="el" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle.h</a>
+</li>
+<li>celix_bundle_tracking_options_t
+: <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleActivator_create()
+: <a class="el" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundle_activator.h</a>
+</li>
+<li>celix_bundleActivator_destroy()
+: <a class="el" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundle_activator.h</a>
+</li>
+<li>celix_bundleActivator_start()
+: <a class="el" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundle_activator.h</a>
+</li>
+<li>celix_bundleActivator_stop()
+: <a class="el" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundle_activator.h</a>
+</li>
+<li>celix_bundleContext_findService()
+: <a class="el" href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_findServices()
+: <a class="el" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_findServicesWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_findServiceWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getBundle()
+: <a class="el" href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getDependencyManager()
+: <a class="el" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getProperty()
+: <a class="el" href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getPropertyAsBool()
+: <a class="el" href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getPropertyAsDouble()
+: <a class="el" href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_getPropertyAsLong()
+: <a class="el" href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_installBundle()
+: <a class="el" href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_isBundleInstalled()
+: <a class="el" href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_listBundles()
+: <a class="el" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_registerService()
+: <a class="el" href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_registerServiceFactory()
+: <a class="el" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_registerServiceWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_startBundle()
+: <a class="el" href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_stopBundle()
+: <a class="el" href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_stopTracker()
+: <a class="el" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackBundles()
+: <a class="el" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackBundlesWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackService()
+: <a class="el" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackServices()
+: <a class="el" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackServicesWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_trackServiceTrackers()
+: <a class="el" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_uninstallBundle()
+: <a class="el" href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_unregisterService()
+: <a class="el" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useBundle()
+: <a class="el" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useBundles()
+: <a class="el" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useService()
+: <a class="el" href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useServices()
+: <a class="el" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useServicesWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useServiceWithId()
+: <a class="el" href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundle_context.h</a>
+</li>
+<li>celix_bundleContext_useServiceWithOptions()
+: <a class="el" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundle_context.h</a>
+</li>
+<li>celix_dependency_manager_info_t
+: <a class="el" href="celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64">celix_dm_info.h</a>
+</li>
+<li>celix_dm_cmp_lifecycle_fpt
+: <a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_component.h</a>
+</li>
+<li>celix_dm_component_info_t
+: <a class="el" href="celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16">celix_dm_info.h</a>
+</li>
+<li>CELIX_DM_COMPONENT_MAX_ID_LENGTH
+: <a class="el" href="celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf">celix_dm_component.h</a>
+</li>
+<li>CELIX_DM_COMPONENT_MAX_NAME_LENGTH
+: <a class="el" href="celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00">celix_dm_component.h</a>
+</li>
+<li>celix_dm_component_state_enum
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component.h</a>
+</li>
+<li>celix_dm_component_state_t
+: <a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component.h</a>
+</li>
+<li>celix_dm_interface_info_t
+: <a class="el" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">celix_dm_info.h</a>
+</li>
+<li>celix_dm_service_dependency_callback_options_t
+: <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_dependency_info_t
+: <a class="el" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">celix_dm_info.h</a>
+</li>
+<li>celix_dm_service_dependency_strategy_enum
+: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_dependency_strategy_t
+: <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_swap_fp
+: <a class="el" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_swap_with_props_fp
+: <a class="el" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_update_fp
+: <a class="el" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dm_service_update_with_props_fp
+: <a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmComponent_addInterface()
+: <a class="el" href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_addServiceDependency()
+: <a class="el" href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_create()
+: <a class="el" href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_currentState()
+: <a class="el" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_destroy()
+: <a class="el" href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_destroyComponentInfo()
+: <a class="el" href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_getBundleContext()
+: <a class="el" href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_getComponentInfo()
+: <a class="el" href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_getImplementation()
+: <a class="el" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_getInterfaces()
+: <a class="el" href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_getName()
+: <a class="el" href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_isActive()
+: <a class="el" href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_removeInterface()
+: <a class="el" href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_removeServiceDependency()
+: <a class="el" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dm_component.h</a>
+</li>
+<li>CELIX_DMCOMPONENT_SETCALLBACKS
+: <a class="el" href="celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_setCallbacks()
+: <a class="el" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_setCLanguageProperty()
+: <a class="el" href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dm_component.h</a>
+</li>
+<li>celix_dmComponent_setImplementation()
+: <a class="el" href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dm_component.h</a>
+</li>
+<li>celix_dmServiceDependency_create()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_createInfo()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_destroy()
+: <a class="el" href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_destroyInfo()
+: <a class="el" href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_getFilter()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_getStrategy()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setAddCLanguageFilter()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setCallback()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setCallbackHandle()
+: <a class="el" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setCallbacksWithOptions()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setCallbackWithProperties()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setRequired()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setService()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dm_service_dependency.h</a>
+</li>
+<li>celix_dmServiceDependency_setStrategy()
+: <a class="el" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dm_service_dependency.h</a>
+</li>
+<li>CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS
+: <a class="el" href="celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7">celix_dm_service_dependency.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_FILTER_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_TRACKING_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_USE_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865">celix_bundle_context.h</a>
+</li>
+<li>celix_framework_getFrameworkBundle()
+: <a class="el" href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework.h</a>
+</li>
+<li>celix_framework_getFrameworkContext()
+: <a class="el" href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework.h</a>
+</li>
+<li>celix_framework_getUUID()
+: <a class="el" href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework.h</a>
+</li>
+<li>celix_framework_useBundle()
+: <a class="el" href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework.h</a>
+</li>
+<li>celix_framework_useBundles()
+: <a class="el" href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework.h</a>
+</li>
+<li>CELIX_GEN_BUNDLE_ACTIVATOR
+: <a class="el" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">celix_bundle_activator.h</a>
+</li>
+<li>celix_service_filter_options_t
+: <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_bundle_context.h</a>
+</li>
+<li>celix_service_registration_options_t
+: <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_bundle_context.h</a>
+</li>
+<li>celix_service_tracker_info_t
+: <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_bundle_context.h</a>
+</li>
+<li>celix_service_tracking_options_t
+: <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_bundle_context.h</a>
+</li>
+<li>celix_service_use_options_t
+: <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_bundle_context.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>DM_CMP_STATE_INACTIVE
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">celix_dm_component.h</a>
+</li>
+<li>DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">celix_dm_component.h</a>
+</li>
+<li>DM_CMP_STATE_TRACKING_OPTIONAL
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">celix_dm_component.h</a>
+</li>
+<li>DM_CMP_STATE_WAITING_FOR_REQUIRED
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">celix_dm_component.h</a>
+</li>
+<li>dm_component_info_pt
+: <a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">celix_dm_info.h</a>
+</li>
+<li>dm_component_info_t
+: <a class="el" href="celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7">celix_dm_info.h</a>
+</li>
+<li>dm_dependency_manager_info_pt
+: <a class="el" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">celix_dm_info.h</a>
+</li>
+<li>dm_dependency_manager_info_t
+: <a class="el" href="celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02">celix_dm_info.h</a>
+</li>
+<li>dm_interface_info_pt
+: <a class="el" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">celix_dm_info.h</a>
+</li>
+<li>dm_interface_info_t
+: <a class="el" href="celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">celix_dm_info.h</a>
+</li>
+<li>dm_service_dependency_info_pt
+: <a class="el" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">celix_dm_info.h</a>
+</li>
+<li>dm_service_dependency_info_t
+: <a class="el" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">celix_dm_info.h</a>
+</li>
+<li>DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING
+: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">celix_dm_service_dependency.h</a>
+</li>
+<li>DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND
+: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">celix_dm_service_dependency.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>OPTS_INIT
+: <a class="el" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">celix_bundle_context.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/globals_defs.html b/static/docs/2.2.0/html/globals_defs.html
new file mode 100644
index 0000000..9abe70e
--- /dev/null
+++ b/static/docs/2.2.0/html/globals_defs.html
@@ -0,0 +1,138 @@
+<!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.11"/>
+<title>Celix: File Members</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="contents">
+&#160;<ul>
+<li>CELIX_DM_COMPONENT_MAX_ID_LENGTH
+: <a class="el" href="celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf">celix_dm_component.h</a>
+</li>
+<li>CELIX_DM_COMPONENT_MAX_NAME_LENGTH
+: <a class="el" href="celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00">celix_dm_component.h</a>
+</li>
+<li>CELIX_DMCOMPONENT_SETCALLBACKS
+: <a class="el" href="celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452">celix_dm_component.h</a>
+</li>
+<li>CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS
+: <a class="el" href="celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7">celix_dm_service_dependency.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_FILTER_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_TRACKING_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909">celix_bundle_context.h</a>
+</li>
+<li>CELIX_EMPTY_SERVICE_USE_OPTIONS
+: <a class="el" href="celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865">celix_bundle_context.h</a>
+</li>
+<li>CELIX_GEN_BUNDLE_ACTIVATOR
+: <a class="el" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">celix_bundle_activator.h</a>
+</li>
+<li>OPTS_INIT
+: <a class="el" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">celix_bundle_context.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/globals_enum.html b/static/docs/2.2.0/html/globals_enum.html
new file mode 100644
index 0000000..d69075e
--- /dev/null
+++ b/static/docs/2.2.0/html/globals_enum.html
@@ -0,0 +1,111 @@
+<!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.11"/>
+<title>Celix: File Members</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- 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 class="contents">
+&#160;<ul>
+<li>celix_dm_component_state_enum
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component.h</a>
+</li>
+<li>celix_dm_service_dependency_strategy_enum
+: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- 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.11
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/globals_eval.html b/static/docs/2.2.0/html/globals_eval.html
new file mode 100644
index 0000000..feab19f
--- /dev/null
+++ b/static/docs/2.2.0/html/globals_eval.html
@@ -0,0 +1,123 @@
+<!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.11"/>
+<title>Celix: File Members</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>
+<script type="text/javascript">
+  $(document).ready(function() { init_search(); });
+</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.0</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.11 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
... 7433 lines suppressed ...