Apache Celix  2.4.0
Apache Celix is a framework for C, C++14 and C++17 to develop dynamic modular software applications using component and in-process service-oriented programming.
FrameworkUtils.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #pragma once
21 
22 #include <string>
23 #include <vector>
24 
25 #include "celix_framework_utils.h"
26 
27 namespace celix {
28 
43  inline std::vector<std::string> listEmbeddedBundles() {
44  std::vector<std::string> list{};
45  auto* cList = celix_framework_utils_listEmbeddedBundles();
46  list.reserve(celix_arrayList_size(cList));
47  for (int i = 0; i< celix_arrayList_size(cList); ++i) {
48  auto* cStr = static_cast<char*>(celix_arrayList_get(cList, i));
49  std::unique_ptr<char, void(*)(void*)> strGuard{cStr, free}; //ensure RAII if emplace_back throws
50  list.emplace_back(cStr);
51  }
52  celix_arrayList_destroy(cList);
53  return list;
54  }
55 
68  inline std::size_t installEmbeddedBundles(celix::Framework& framework, bool autoStart = true) {
69  return celix_framework_utils_installEmbeddedBundles(framework.getCFramework(), autoStart);
70  }
71 
91 #if __cplusplus >= 201703L //C++17 or higher
92  inline std::size_t installBundleSet(celix::Framework& framework, std::string_view bundleSet, bool autoStart = true) {
93  return celix_framework_utils_installBundleSet(framework.getCFramework(), bundleSet.data(), autoStart);
94  }
95 #else
96  inline std::size_t installBundleSet(celix::Framework& framework, const std::string& bundleSet, bool autoStart = true) {
97  return celix_framework_utils_installBundleSet(framework.getCFramework(), bundleSet.c_str(), autoStart);
98  }
99 #endif
100 
101 }
celix::installEmbeddedBundles
std::size_t installEmbeddedBundles(celix::Framework &framework, bool autoStart=true)
Install the embedded bundles in the executable.
Definition: FrameworkUtils.h:68
celix
Definition: Bundle.h:27
celix::Framework::getCFramework
celix_framework_t * getCFramework() const
Get the C framework.
Definition: Framework.h:109
celix::installBundleSet
std::size_t installBundleSet(celix::Framework &framework, std::string_view bundleSet, bool autoStart=true)
Install bundles to the provided framework using the provided bundle set.
Definition: FrameworkUtils.h:92
celix::listEmbeddedBundles
std::vector< std::string > listEmbeddedBundles()
List the embedded bundles in the executable.
Definition: FrameworkUtils.h:43
celix::Framework
A Celix framework instance. A framework is also known as a system bundle.
Definition: Framework.h:38