This is an automated email from the ASF dual-hosted git repository.
pnoltes pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/celix.git
The following commit(s) were added to refs/heads/develop by this push:
new a3deb6b Cleanup dm interface (#186)
a3deb6b is described below
commit a3deb6b53581bfbd30495d6b386ef2ff35c185be
Author: Michael de Lang <[email protected]>
AuthorDate: Mon Apr 6 18:30:18 2020 +0000
Cleanup dm interface (#186)
* Cleanup dm interface, prevent lots of string copies and re-enable proper
move assign for ServiceDependency
---
libs/framework/include/celix/dm/Component.h | 38 +++---
libs/framework/include/celix/dm/Component_Impl.h | 52 ++++----
.../framework/include/celix/dm/ServiceDependency.h | 47 ++++---
.../include/celix/dm/ServiceDependency_Impl.h | 144 ++++++++++-----------
libs/framework/include/celix/dm/types.h | 2 +-
5 files changed, 148 insertions(+), 135 deletions(-)
diff --git a/libs/framework/include/celix/dm/Component.h
b/libs/framework/include/celix/dm/Component.h
index b5acf87..57b7959 100644
--- a/libs/framework/include/celix/dm/Component.h
+++ b/libs/framework/include/celix/dm/Component.h
@@ -34,11 +34,11 @@ namespace celix { namespace dm {
celix_bundle_context_t *context {nullptr};
celix_dm_component_t *cCmp {nullptr};
public:
- BaseComponent(celix_bundle_context_t *con, std::string name) :
context{con}, cCmp{nullptr} {
+ BaseComponent(celix_bundle_context_t *con, const std::string &name) :
context{con}, cCmp{nullptr} {
this->cCmp = celix_dmComponent_create(this->context, name.c_str());
celix_dmComponent_setImplementation(this->cCmp, this);
}
- virtual ~BaseComponent() {}
+ virtual ~BaseComponent() = default;
BaseComponent(const BaseComponent&) = delete;
BaseComponent& operator=(const BaseComponent&) = delete;
@@ -53,7 +53,7 @@ namespace celix { namespace dm {
*/
celix_bundle_context_t* bundleContext() const { return this->context; }
};
-
+
template<class T>
class Component : public BaseComponent {
@@ -74,8 +74,8 @@ namespace celix { namespace dm {
int (T::*stopFpNoExc)() = {};
int (T::*deinitFpNoExc)() = {};
public:
- Component(celix_bundle_context_t *context, std::string name);
- virtual ~Component();
+ Component(celix_bundle_context_t *context, const std::string &name);
+ ~Component() override;
/**
* Creates a Component using the provided bundle context
@@ -83,7 +83,7 @@ namespace celix { namespace dm {
* Will use new(nothrow) if exceptions are disabled.
* @return newly created DM Component or nullptr
*/
- static Component<T>* create(celix_bundle_context_t*, std::string name);
+ static Component<T>* create(celix_bundle_context_t*, const std::string
&name);
/**
* Creates a Component using the provided bundle context.
@@ -137,7 +137,7 @@ namespace celix { namespace dm {
* @param properties To (meta) properties to provide with the service
* @return the DM Component reference for chaining (fluent API)
*/
- template<class I> Component<T>& addInterfaceWithName(const std::string
serviceName, const std::string version = std::string{}, const Properties
properties = Properties{});
+ template<class I> Component<T>& addInterfaceWithName(const std::string
&serviceName, const std::string &version = std::string{}, const Properties
&properties = Properties{});
/**
* Adds a C++ interface to provide as service to the Celix framework.
@@ -147,7 +147,7 @@ namespace celix { namespace dm {
* @param properties To (meta) properties to provide with the service
* @return the DM Component reference for chaining (fluent API)
*/
- template<class I> Component<T>& addInterface(const std::string version
= std::string{}, const Properties properties = Properties{});
+ template<class I> Component<T>& addInterface(const std::string
&version = std::string{}, const Properties &properties = Properties{});
/**
* Adds a C interface to provide as service to the Celix framework.
@@ -157,7 +157,7 @@ namespace celix { namespace dm {
* @param version The version of the interface (e.g. "1.0.0"), can be
an empty string
* @param properties To (meta) properties to provide with the service
*/
- template<class I> Component<T>& addCInterface(const I* svc, const
std::string serviceName, const std::string version = std::string{}, const
Properties properties = Properties{});
+ template<class I> Component<T>& addCInterface(const I* svc, const
std::string &serviceName, const std::string &version = std::string{}, const
Properties &properties = Properties{});
/**
@@ -177,7 +177,7 @@ namespace celix { namespace dm {
* @return the Service Dependency reference for chaining (fluent API)
*/
template<class I>
- ServiceDependency<T,I>& createServiceDependency(const std::string name
= std::string{});
+ ServiceDependency<T,I>& createServiceDependency(const std::string
&name = std::string{});
/**
Removes a C++ service dependency from the component
@@ -193,7 +193,7 @@ namespace celix { namespace dm {
* @return the DM Component reference for chaining (fluent API)
*/
template<typename I>
- CServiceDependency<T,I>& createCServiceDependency(const std::string
name);
+ CServiceDependency<T,I>& createCServiceDependency(const std::string
&name);
/**
* Removes a C service dependency to the component
@@ -214,10 +214,10 @@ namespace celix { namespace dm {
* @return the DM Component reference for chaining (fluent API)
*/
Component<T>& setCallbacks(
- void (T::*init)(),
- void (T::*start)(),
- void (T::*stop)(),
- void (T::*deinit)()
+ void (T::*init)(),
+ void (T::*start)(),
+ void (T::*stop)(),
+ void (T::*deinit)()
);
/**
@@ -232,10 +232,10 @@ namespace celix { namespace dm {
* @return the DM Component reference for chaining (fluent API)
*/
Component<T>& setCallbacks(
- int (T::*init)(),
- int (T::*start)(),
- int (T::*stop)(),
- int (T::*deinit)()
+ int (T::*init)(),
+ int (T::*start)(),
+ int (T::*stop)(),
+ int (T::*deinit)()
);
/**
* Remove the previously registered callbacks for the component life
cycle control
diff --git a/libs/framework/include/celix/dm/Component_Impl.h
b/libs/framework/include/celix/dm/Component_Impl.h
index 64ee603..484c4d2 100644
--- a/libs/framework/include/celix/dm/Component_Impl.h
+++ b/libs/framework/include/celix/dm/Component_Impl.h
@@ -30,7 +30,7 @@
using namespace celix::dm;
template<class T>
-Component<T>::Component(celix_bundle_context_t *context, std::string name) :
BaseComponent(context, name) {}
+Component<T>::Component(celix_bundle_context_t *context, const std::string
&name) : BaseComponent(context, name) {}
template<class T>
Component<T>::~Component() {
@@ -39,21 +39,21 @@ Component<T>::~Component() {
template<class T>
template<class I>
-Component<T>& Component<T>::addInterfaceWithName(const std::string
serviceName, const std::string version, const Properties properties) {
+Component<T>& Component<T>::addInterfaceWithName(const std::string
&serviceName, const std::string &version, const Properties &properties) {
if (!serviceName.empty()) {
//setup c properties
celix_properties_t *cProperties = properties_create();
properties_set(cProperties, CELIX_FRAMEWORK_SERVICE_LANGUAGE,
CELIX_FRAMEWORK_SERVICE_CXX_LANGUAGE);
for (const auto& pair : properties) {
- properties_set(cProperties, (char *) pair.first.c_str(), (char *)
pair.second.c_str());
+ properties_set(cProperties, pair.first.c_str(),
pair.second.c_str());
}
T* cmpPtr = &this->getInstance();
I* intfPtr = static_cast<I*>(cmpPtr); //NOTE T should implement I
const char *cVersion = version.empty() ? nullptr : version.c_str();
- celix_dmComponent_addInterface(this->cComponent(), (char *)
serviceName.c_str(), (char *) cVersion,
- intfPtr, cProperties);
+ celix_dmComponent_addInterface(this->cComponent(),
serviceName.c_str(), cVersion,
+ intfPtr, cProperties);
} else {
std::cerr << "Cannot add interface with a empty name\n";
}
@@ -63,7 +63,7 @@ Component<T>& Component<T>::addInterfaceWithName(const
std::string serviceName,
template<class T>
template<class I>
-Component<T>& Component<T>::addInterface(const std::string version, const
Properties properties) {
+Component<T>& Component<T>::addInterface(const std::string &version, const
Properties &properties) {
//get name if not provided
static_assert(std::is_base_of<I,T>::value, "Component T must implement
Interface I");
std::string serviceName = typeName<I>();
@@ -72,23 +72,23 @@ Component<T>& Component<T>::addInterface(const std::string
version, const Proper
}
return this->addInterfaceWithName<I>(serviceName, version, properties);
-};
+}
template<class T>
template<class I>
-Component<T>& Component<T>::addCInterface(const I* svc, const std::string
serviceName, const std::string version, const Properties properties) {
+Component<T>& Component<T>::addCInterface(const I* svc, const std::string
&serviceName, const std::string &version, const Properties &properties) {
static_assert(std::is_standard_layout<I>::value, "Service I must be an
object with a standard layout");
celix_properties_t *cProperties = properties_create();
properties_set(cProperties, CELIX_FRAMEWORK_SERVICE_LANGUAGE,
CELIX_FRAMEWORK_SERVICE_C_LANGUAGE);
for (const auto& pair : properties) {
- properties_set(cProperties, (char*)pair.first.c_str(),
(char*)pair.second.c_str());
+ properties_set(cProperties, pair.first.c_str(), pair.second.c_str());
}
const char *cVersion = version.empty() ? nullptr : version.c_str();
- celix_dmComponent_addInterface(this->cComponent(),
(char*)serviceName.c_str(), (char*)cVersion, svc, cProperties);
+ celix_dmComponent_addInterface(this->cComponent(), serviceName.c_str(),
cVersion, svc, cProperties);
return *this;
-};
+}
template<class T>
template<class I>
@@ -96,11 +96,11 @@ Component<T>& Component<T>::removeCInterface(const I* svc){
static_assert(std::is_standard_layout<I>::value, "Service I must be an
object with a standard layout");
celix_dmComponent_removeInterface(this->cComponent(), svc);
return *this;
-};
+}
template<class T>
template<class I>
-ServiceDependency<T,I>& Component<T>::createServiceDependency(const
std::string name) {
+ServiceDependency<T,I>& Component<T>::createServiceDependency(const
std::string &name) {
static ServiceDependency<T,I> invalidDep{std::string{}, false};
auto dep = std::shared_ptr<ServiceDependency<T,I>> {new
ServiceDependency<T,I>(name)};
if (dep == nullptr) {
@@ -122,7 +122,7 @@ Component<T>& Component<T>::remove(ServiceDependency<T,I>&
dep) {
template<class T>
template<typename I>
-CServiceDependency<T,I>& Component<T>::createCServiceDependency(const
std::string name) {
+CServiceDependency<T,I>& Component<T>::createCServiceDependency(const
std::string &name) {
static CServiceDependency<T,I> invalidDep{std::string{}, false};
auto dep = std::shared_ptr<CServiceDependency<T,I>> {new
CServiceDependency<T,I>(name)};
if (dep == nullptr) {
@@ -138,7 +138,7 @@ template<class T>
template<typename I>
Component<T>& Component<T>::remove(CServiceDependency<T,I>& dep) {
celix_component_removeServiceDependency(cComponent(),
dep.cServiceDependency());
- this->dependencies.erase(std::remove(this->dependencies.begin(),
this->dependencies.end(), dep));
+ this->dependencies.erase(std::remove(this->dependencies.begin(),
this->dependencies.end(), dep));
return *this;
}
@@ -149,9 +149,9 @@ Component<T>* Component<T>::create(celix_bundle_context_t
*context) {
}
template<class T>
-Component<T>* Component<T>::create(celix_bundle_context_t *context,
std::string name) {
+Component<T>* Component<T>::create(celix_bundle_context_t *context, const
std::string &name) {
static Component<T> invalid{nullptr, std::string{}};
- Component<T>* cmp = new Component<T>(context, name);
+ Component<T>* cmp = new (std::nothrow) Component<T>(context, name);
if (cmp == nullptr) {
cmp = &invalid;
}
@@ -181,7 +181,7 @@ template<class T>
Component<T>& Component<T>::setInstance(std::shared_ptr<T> inst) {
this->valInstance.clear();
this->instance = std::unique_ptr<T> {nullptr};
- this->sharedInstance = inst;
+ this->sharedInstance = std::move(inst);
return *this;
}
@@ -204,10 +204,10 @@ Component<T>& Component<T>::setInstance(T&& inst) {
template<class T>
Component<T>& Component<T>::setCallbacks(
- void (T::*init)(),
- void (T::*start)(),
- void (T::*stop)(),
- void (T::*deinit)() ) {
+ void (T::*init)(),
+ void (T::*start)(),
+ void (T::*stop)(),
+ void (T::*deinit)() ) {
this->initFp = init;
this->startFp = start;
@@ -258,10 +258,10 @@ Component<T>& Component<T>::setCallbacks(
template<class T>
Component<T>& Component<T>::setCallbacks(
- int (T::*init)(),
- int (T::*start)(),
- int (T::*stop)(),
- int (T::*deinit)() ) {
+ int (T::*init)(),
+ int (T::*start)(),
+ int (T::*stop)(),
+ int (T::*deinit)() ) {
this->initFpNoExc = init;
this->startFpNoExc = start;
diff --git a/libs/framework/include/celix/dm/ServiceDependency.h
b/libs/framework/include/celix/dm/ServiceDependency.h
index b427302..b9163f3 100644
--- a/libs/framework/include/celix/dm/ServiceDependency.h
+++ b/libs/framework/include/celix/dm/ServiceDependency.h
@@ -41,8 +41,9 @@ namespace celix { namespace dm {
};
class BaseServiceDependency {
+ private:
+ bool valid;
protected:
- const bool valid;
celix_dm_service_dependency_t *cServiceDep {nullptr};
void setDepStrategy(DependencyUpdateStrategy strategy) {
@@ -70,6 +71,8 @@ namespace celix { namespace dm {
BaseServiceDependency(const BaseServiceDependency&) = delete;
BaseServiceDependency& operator=(const BaseServiceDependency&) =
delete;
+ BaseServiceDependency(BaseServiceDependency&&) noexcept = default;
+ BaseServiceDependency& operator=(BaseServiceDependency&&) noexcept =
default;
/**
* Whether the service dependency is valid.
@@ -89,12 +92,12 @@ namespace celix { namespace dm {
T* componentInstance {nullptr};
public:
TypedServiceDependency(bool valid) : BaseServiceDependency(valid) {}
- virtual ~TypedServiceDependency() = default;
+ ~TypedServiceDependency() override = default;
TypedServiceDependency(const TypedServiceDependency&) = delete;
TypedServiceDependency& operator=(const TypedServiceDependency&) =
delete;
- TypedServiceDependency(TypedServiceDependency&&) = default;
- TypedServiceDependency& operator=(TypedServiceDependency&&) = default;
+ TypedServiceDependency(TypedServiceDependency&&) noexcept = default;
+ TypedServiceDependency& operator=(TypedServiceDependency&&) noexcept =
default;
/**
* Set the component instance with a pointer
@@ -106,8 +109,13 @@ namespace celix { namespace dm {
class CServiceDependency : public TypedServiceDependency<T> {
using type = I;
public:
- CServiceDependency(const std::string name, bool valid = true);
- virtual ~CServiceDependency() = default;
+ CServiceDependency(const std::string &name, bool valid = true);
+ ~CServiceDependency() override = default;
+
+ CServiceDependency(const CServiceDependency&) = delete;
+ CServiceDependency& operator=(const CServiceDependency&) = delete;
+ CServiceDependency(CServiceDependency&&) noexcept = default;
+ CServiceDependency& operator=(CServiceDependency&&) noexcept = default;
/**
* Sets the service version range for the C service dependency.
@@ -115,7 +123,7 @@ namespace celix { namespace dm {
* @param serviceVersionRange The service version range, can be an
empty string
* @return the C service dependency reference for chaining (fluent API)
*/
- CServiceDependency<T,I>& setVersionRange(const std::string
serviceVersionRange);
+ CServiceDependency<T,I>& setVersionRange(const std::string
&serviceVersionRange);
/**
* Sets the service filter for the C service dependency.
@@ -123,7 +131,7 @@ namespace celix { namespace dm {
* @param filter The (additional) filter to use (e.g.
"(location=front)")
* @return the C service dependency reference for chaining (fluent API)
*/
- CServiceDependency<T,I>& setFilter(const std::string filter);
+ CServiceDependency<T,I>& setFilter(const std::string &filter);
/**
* Specify if the service dependency is required. Default is false
@@ -183,8 +191,8 @@ namespace celix { namespace dm {
* @return the C service dependency reference for chaining (fluent API)
*/
CServiceDependency<T,I>& setCallbacks(
- std::function<void(const I* service, Properties&& properties)>
add,
- std::function<void(const I* service, Properties&& properties)>
remove
+ std::function<void(const I* service, Properties&& properties)>
add,
+ std::function<void(const I* service, Properties&& properties)>
remove
);
/**
@@ -211,29 +219,34 @@ namespace celix { namespace dm {
class ServiceDependency : public TypedServiceDependency<T> {
using type = I;
public:
- ServiceDependency(const std::string name = std::string{}, bool valid =
true);
- virtual ~ServiceDependency() = default;
+ ServiceDependency(const std::string &name = std::string{}, bool valid
= true);
+ ~ServiceDependency() override = default;
+
+ ServiceDependency(const ServiceDependency&) = delete;
+ ServiceDependency& operator=(const ServiceDependency&) = delete;
+ ServiceDependency(ServiceDependency&&) noexcept = default;
+ ServiceDependency& operator=(ServiceDependency&&) noexcept = default;
/**
* Set the service name of the service dependency.
*
* @return the C++ service dependency reference for chaining (fluent
API)
*/
- ServiceDependency<T,I>& setName(const std::string name);
+ ServiceDependency<T,I>& setName(const std::string &_name);
/**
* Set the service filter of the service dependency.
*
* @return the C++ service dependency reference for chaining (fluent
API)
*/
- ServiceDependency<T,I>& setFilter(const std::string filter);
+ ServiceDependency<T,I>& setFilter(const std::string &filter);
/**
* Set the service version range of the service dependency.
*
* @return the C++ service dependency reference for chaining (fluent
API)
*/
- ServiceDependency<T,I>& setVersionRange(const std::string
versionRange);
+ ServiceDependency<T,I>& setVersionRange(const std::string
&versionRange);
/**
* Set the set callback for when the service dependency becomes
available
@@ -279,8 +292,8 @@ namespace celix { namespace dm {
* @return the C service dependency reference for chaining (fluent API)
*/
ServiceDependency<T,I>& setCallbacks(
- std::function<void(I* service, Properties&& properties)> add,
- std::function<void(I* service, Properties&& properties)> remove
+ std::function<void(I* service, Properties&& properties)> add,
+ std::function<void(I* service, Properties&& properties)> remove
);
/**
diff --git a/libs/framework/include/celix/dm/ServiceDependency_Impl.h
b/libs/framework/include/celix/dm/ServiceDependency_Impl.h
index 81d4530..ea4a04a 100644
--- a/libs/framework/include/celix/dm/ServiceDependency_Impl.h
+++ b/libs/framework/include/celix/dm/ServiceDependency_Impl.h
@@ -26,48 +26,48 @@
using namespace celix::dm;
template<class T, typename I>
-CServiceDependency<T,I>::CServiceDependency(const std::string name, bool
valid) : TypedServiceDependency<T>(valid) {
+CServiceDependency<T,I>::CServiceDependency(const std::string &name, bool
valid) : TypedServiceDependency<T>(valid) {
this->name = name;
this->setupService();
}
template<class T, typename I>
-CServiceDependency<T,I>& CServiceDependency<T,I>::setVersionRange(const
std::string serviceVersionRange) {
+CServiceDependency<T,I>& CServiceDependency<T,I>::setVersionRange(const
std::string &serviceVersionRange) {
this->versionRange = serviceVersionRange;
this->setupService();
return *this;
}
template<class T, typename I>
-CServiceDependency<T,I>& CServiceDependency<T,I>::setFilter(const std::string
filter) {
- this->filter = filter;
+CServiceDependency<T,I>& CServiceDependency<T,I>::setFilter(const std::string
&_filter) {
+ filter = _filter;
this->setupService();
return *this;
}
template<class T, typename I>
void CServiceDependency<T,I>::setupService() {
- if (!this->valid) {
+ if (!this->isValid()) {
return;
}
const char* cversion = this->versionRange.empty() ? nullptr :
versionRange.c_str();
const char* cfilter = filter.empty() ? nullptr : filter.c_str();
celix_dmServiceDependency_setService(this->cServiceDependency(),
this->name.c_str(), cversion, cfilter);
-};
+}
template<class T, typename I>
CServiceDependency<T,I>& CServiceDependency<T,I>::setAddLanguageFilter(bool
addLang) {
-// if (!this->valid) {
+// if (!this->isValid()) {
// *this;
// }
celix_serviceDependency_setAddCLanguageFilter(this->cServiceDependency(),
addLang);
this->setupService();
return *this;
-};
+}
template<class T, typename I>
CServiceDependency<T,I>& CServiceDependency<T,I>::setRequired(bool req) {
- if (!this->valid) {
+ if (!this->isValid()) {
return *this;
}
celix_dmServiceDependency_setRequired(this->cServiceDependency(), req);
@@ -76,7 +76,7 @@ CServiceDependency<T,I>&
CServiceDependency<T,I>::setRequired(bool req) {
template<class T, typename I>
CServiceDependency<T,I>&
CServiceDependency<T,I>::setStrategy(DependencyUpdateStrategy strategy) {
- if (!this->valid) {
+ if (!this->isValid()) {
return *this;
}
this->setDepStrategy(strategy);
@@ -115,14 +115,14 @@ CServiceDependency<T,I>&
CServiceDependency<T,I>::setCallbacks(
void (T::*add)(const I* service),
void (T::*remove)(const I* service)) {
this->setCallbacks(
- [this, add](const I* service, [[gnu::unused]] Properties&&
properties) {
- T *cmp = this->componentInstance;
- (cmp->*add)(service);
- },
- [this, remove](const I* service, [[gnu::unused]]
Properties&& properties) {
- T *cmp = this->componentInstance;
- (cmp->*remove)(service);
- }
+ [this, add](const I* service, [[gnu::unused]] Properties&&
properties) {
+ T *cmp = this->componentInstance;
+ (cmp->*add)(service);
+ },
+ [this, remove](const I* service, [[gnu::unused]] Properties&&
properties) {
+ T *cmp = this->componentInstance;
+ (cmp->*remove)(service);
+ }
);
return *this;
}
@@ -133,21 +133,21 @@ CServiceDependency<T,I>&
CServiceDependency<T,I>::setCallbacks(
void (T::*remove)(const I* service, Properties&& properties)
) {
this->setCallbacks(
- [this, add](const I* service, Properties&& properties) {
- T *cmp = this->componentInstance;
- (cmp->*add)(service, std::move(properties));
- },
- [this, remove](const I* service, Properties&& properties) {
- T *cmp = this->componentInstance;
- (cmp->*remove)(service, std::move(properties));
- }
+ [this, add](const I* service, Properties&& properties) {
+ T *cmp = this->componentInstance;
+ (cmp->*add)(service, std::move(properties));
+ },
+ [this, remove](const I* service, Properties&& properties) {
+ T *cmp = this->componentInstance;
+ (cmp->*remove)(service, std::move(properties));
+ }
);
return *this;
}
template<class T, typename I>
CServiceDependency<T,I>&
CServiceDependency<T,I>::setCallbacks(std::function<void(const I* service,
Properties&& properties)> add, std::function<void(const I* service,
Properties&& properties)> remove) {
- this->addFp = add;;
+ this->addFp = add;
this->removeFp = remove;
this->setupCallbacks();
return *this;
@@ -156,7 +156,7 @@ CServiceDependency<T,I>&
CServiceDependency<T,I>::setCallbacks(std::function<voi
template<class T, typename I>
void CServiceDependency<T,I>::setupCallbacks() {
- if (!this->valid) {
+ if (!this->isValid()) {
return;
}
@@ -214,17 +214,17 @@ int
CServiceDependency<T,I>::invokeCallback(std::function<void(const I*, Propert
}
template<class T, class I>
-ServiceDependency<T,I>::ServiceDependency(std::string name, bool valid) :
TypedServiceDependency<T>(valid) {
+ServiceDependency<T,I>::ServiceDependency(const std::string &name, bool valid)
: TypedServiceDependency<T>(valid) {
if (!name.empty()) {
this->setName(name);
} else {
this->setupService();
}
-};
+}
template<class T, class I>
void ServiceDependency<T,I>::setupService() {
- if (!this->valid) {
+ if (!this->isValid()) {
return;
}
@@ -276,25 +276,25 @@ void ServiceDependency<T,I>::setupService() {
}
template<class T, class I>
-ServiceDependency<T,I>& ServiceDependency<T,I>::setName(std::string name) {
- this->name = name;
+ServiceDependency<T,I>& ServiceDependency<T,I>::setName(const std::string
&_name) {
+ name = _name;
setupService();
return *this;
-};
+}
template<class T, class I>
-ServiceDependency<T,I>& ServiceDependency<T,I>::setFilter(std::string filter) {
- this->filter = filter;
+ServiceDependency<T,I>& ServiceDependency<T,I>::setFilter(const std::string
&_filter) {
+ filter = _filter;
setupService();
return *this;
-};
+}
template<class T, class I>
-ServiceDependency<T,I>& ServiceDependency<T,I>::setVersionRange(std::string
versionRange) {
- this->versionRange = versionRange;
+ServiceDependency<T,I>& ServiceDependency<T,I>::setVersionRange(const
std::string &_versionRange) {
+ versionRange = _versionRange;
setupService();
return *this;
-};
+}
template<class T, class I>
@@ -302,7 +302,7 @@ ServiceDependency<T,I>&
ServiceDependency<T,I>::setAddLanguageFilter(bool addLan
this->addCxxLanguageFilter = addLang;
setupService();
return *this;
-};
+}
//set callbacks
template<class T, class I>
@@ -336,14 +336,14 @@ ServiceDependency<T,I>&
ServiceDependency<T,I>::setCallbacks(
void (T::*add)(I* service),
void (T::*remove)(I* service)) {
this->setCallbacks(
- [this, add](I* srv, [[gnu::unused]] Properties&& props) {
- T *cmp = this->componentInstance;
- (cmp->*add)(srv);
- },
- [this, remove](I* srv, [[gnu::unused]] Properties&& props) {
- T *cmp = this->componentInstance;
- (cmp->*remove)(srv);
- }
+ [this, add](I* srv, [[gnu::unused]] Properties&& props) {
+ T *cmp = this->componentInstance;
+ (cmp->*add)(srv);
+ },
+ [this, remove](I* srv, [[gnu::unused]] Properties&& props) {
+ T *cmp = this->componentInstance;
+ (cmp->*remove)(srv);
+ }
);
return *this;
}
@@ -352,24 +352,24 @@ template<class T, class I>
ServiceDependency<T,I>& ServiceDependency<T,I>::setCallbacks(
void (T::*add)(I* service, Properties&& properties),
void (T::*remove)(I* service, Properties&& properties)
- ) {
+) {
this->setCallbacks(
- [this, add](I* srv, Properties&& props) {
- T *cmp = this->componentInstance;
- (cmp->*add)(srv, std::move(props));
- },
- [this, remove](I* srv, Properties&& props) {
- T *cmp = this->componentInstance;
- (cmp->*remove)(srv, std::move(props));
- }
+ [this, add](I* srv, Properties&& props) {
+ T *cmp = this->componentInstance;
+ (cmp->*add)(srv, std::move(props));
+ },
+ [this, remove](I* srv, Properties&& props) {
+ T *cmp = this->componentInstance;
+ (cmp->*remove)(srv, std::move(props));
+ }
);
return *this;
}
template<class T, class I>
ServiceDependency<T,I>& ServiceDependency<T,I>::setCallbacks(
- std::function<void(I* service, Properties&& properties)> add,
- std::function<void(I* service, Properties&& properties)>
remove) {
+ std::function<void(I* service, Properties&& properties)> add,
+ std::function<void(I* service, Properties&& properties)> remove) {
this->addFp = add;
this->removeFp = remove;
this->setupCallbacks();
@@ -386,7 +386,7 @@ template<class T, class I>
ServiceDependency<T,I>&
ServiceDependency<T,I>::setStrategy(DependencyUpdateStrategy strategy) {
this->setDepStrategy(strategy);
return *this;
-};
+}
template<class T, class I>
int ServiceDependency<T,I>::invokeCallback(std::function<void(I*,
Properties&&)> fp, const celix_properties_t *props, const void* service) {
@@ -396,15 +396,15 @@ int
ServiceDependency<T,I>::invokeCallback(std::function<void(I*, Properties&&)>
const char* key {nullptr};
const char* value {nullptr};
- if (props != nullptr) {
- hash_map_iterator_t iter =
hashMapIterator_construct((hash_map_pt)props);
- while(hashMapIterator_hasNext(&iter)) {
- key = (const char*) hashMapIterator_nextKey(&iter);
- value = celix_properties_get(props, key, "");
- //std::cout << "got property " << key << "=" << value << "\n";
- properties[key] = value;
- }
- }
+ if (props != nullptr) {
+ hash_map_iterator_t iter =
hashMapIterator_construct((hash_map_pt)props);
+ while(hashMapIterator_hasNext(&iter)) {
+ key = (const char*) hashMapIterator_nextKey(&iter);
+ value = celix_properties_get(props, key, "");
+ //std::cout << "got property " << key << "=" << value << "\n";
+ properties[key] = value;
+ }
+ }
fp(svc, std::move(properties)); //explicit move of lvalue properties.
return 0;
@@ -412,7 +412,7 @@ int
ServiceDependency<T,I>::invokeCallback(std::function<void(I*, Properties&&)>
template<class T, class I>
void ServiceDependency<T,I>::setupCallbacks() {
- if (!this->valid) {
+ if (!this->isValid()) {
return;
}
@@ -446,4 +446,4 @@ void ServiceDependency<T,I>::setupCallbacks() {
opts.addWithProps = cadd;
opts.removeWithProps = crem;
celix_dmServiceDependency_setCallbacksWithOptions(this->cServiceDependency(),
&opts);
-};
+}
diff --git a/libs/framework/include/celix/dm/types.h
b/libs/framework/include/celix/dm/types.h
index 123ba8a..0714bb3 100644
--- a/libs/framework/include/celix/dm/types.h
+++ b/libs/framework/include/celix/dm/types.h
@@ -49,7 +49,7 @@ namespace celix { namespace dm {
* Returns the deferred type name for the template I
*/
template<typename INTERFACE_TYPENAME>
- const std::string typeName() {
+ std::string typeName() {
std::string result;
#ifdef __GXX_RTTI