[DEV] change API internal signal => signal'S'

This commit is contained in:
Edouard DUPIN 2016-04-05 22:41:25 +02:00
parent c3c833632b
commit 3b41672f37
7 changed files with 66 additions and 49 deletions

View File

@ -70,7 +70,7 @@ esignal::ISignal<T_ARGS...>::ISignal(CLASS_TYPE* _class,
m_description(_description) {
// add a reference on the current signal ...
if (m_signalInterfaceLink != nullptr) {
m_signalInterfaceLink->signal.add(this);
m_signalInterfaceLink->signals.add(this);
}
}

View File

@ -9,54 +9,16 @@
#include <vector>
#include <map>
#include <esignal/InterfaceData.h>
namespace esignal {
class Base;
/**
* @brief Interface data to collect the Signal list (for abstarction connection)
*/
class InterfaceData {
private:
std::vector<esignal::Base*> m_list; //!< list of availlable Parameters
public:
/**
* @brief Constructor.
*/
InterfaceData();
/**
* @brief Destructor.
*/
virtual ~InterfaceData();
/**
* @brief Register a signal class pointer in the List of signal list
* @note This class does not destroy the parameter pointer!!!
* @param[in] _pointerOnSignal Pointer on the signal that might be added.
*/
void add(esignal::Base* _pointerOnSignal);
/**
* @brief Remove a signal class pointer in the List of signal list
* @note This class does not destroy the parameter pointer!!!
* @param[in] _pointerOnSignal Pointer on the signal that might be removed.
*/
void remove(esignal::Base* _pointerOnSignal);
/**
* @brief Get All the signal list:
* @return vector on all the signals names
*/
std::vector<std::string> getAll() const;
/**
* @brief Remove binding on all event class.
* @param[in] _sharedPtr sharedPtr to unlink (no type needed ...).
*/
void disconnect(const std::shared_ptr<void>& _sharedPtr);
};
/**
* @brief Interface to collect the Signal list (for abstarction connection)
* It create a simple "signal" member that permit to access at the signalproperties.
*/
class Interface {
public:
esignal::InterfaceData signal; //!< Interface to access at all signal properties...
esignal::InterfaceData signals; //!< Interface to access at all signals properties...
};
}

View File

@ -8,7 +8,7 @@
#include <memory>
#include <esignal/debug.h>
#include <esignal/Interface.h>
#include <esignal/InterfaceData.h>
#include <esignal/Base.h>
esignal::InterfaceData::InterfaceData() {

54
esignal/InterfaceData.h Normal file
View File

@ -0,0 +1,54 @@
/**
* @author Edouard DUPIN
*
* @copyright 2016, Edouard DUPIN, all right reserved
*
* @license APACHE v2.0 (see license file)
*/
#pragma once
#include <vector>
#include <map>
namespace esignal {
class Base;
/**
* @brief Interface data to collect the Signal list (for abstarction connection)
*/
class InterfaceData {
private:
std::vector<esignal::Base*> m_list; //!< list of availlable Parameters
public:
/**
* @brief Constructor.
*/
InterfaceData();
/**
* @brief Destructor.
*/
virtual ~InterfaceData();
/**
* @brief Register a signal class pointer in the List of signal list
* @note This class does not destroy the parameter pointer!!!
* @param[in] _pointerOnSignal Pointer on the signal that might be added.
*/
void add(esignal::Base* _pointerOnSignal);
/**
* @brief Remove a signal class pointer in the List of signal list
* @note This class does not destroy the parameter pointer!!!
* @param[in] _pointerOnSignal Pointer on the signal that might be removed.
*/
void remove(esignal::Base* _pointerOnSignal);
/**
* @brief Get All the signal list:
* @return vector on all the signals names
*/
std::vector<std::string> getAll() const;
/**
* @brief Remove binding on all event class.
* @param[in] _sharedPtr sharedPtr to unlink (no type needed ...).
*/
void disconnect(const std::shared_ptr<void>& _sharedPtr);
};
}

View File

@ -19,14 +19,14 @@ esignal::ISignal<T_ARGS...>::ISignal(esignal::Interface* _signalInterfaceLink,
m_description(_description) {
// add a reference on the current signal ...
if (m_signalInterfaceLink != nullptr) {
m_signalInterfaceLink->signal.add(this);
m_signalInterfaceLink->signals.add(this);
}
}
template<class... T_ARGS>
esignal::ISignal<T_ARGS...>::~ISignal() {
if (m_signalInterfaceLink != nullptr) {
m_signalInterfaceLink->signal.remove(this);
m_signalInterfaceLink->signals.remove(this);
}
}

View File

@ -33,7 +33,7 @@ def create(target, module_name):
my_module.add_src_file([
'esignal/debug.cpp',
'esignal/Connection.cpp',
'esignal/Interface.cpp',
'esignal/InterfaceData.cpp',
'esignal/Base.cpp',
'esignal/details/LockSharedPtrRef.cpp',
'esignal/details/RefCount.cpp',
@ -43,6 +43,7 @@ def create(target, module_name):
my_module.add_header_file([
'esignal/debug.h',
'esignal/Interface.h',
'esignal/InterfaceData.h',
'esignal/Base.h',
'esignal/Signal.h',
'esignal/ISignal.h',

View File

@ -103,25 +103,25 @@ TEST(test_isignal_counter, localbasicInterfaceGetListSignal) {
list.push_back("int");
list.push_back("string");
list.push_back("float");
EXPECT_EQ(localClass.signal.getAll(), list);
EXPECT_EQ(localClass.signals.getAll(), list);
}
TEST(test_isignal_counter, localbasicInterfaceDisconnectNullPtr) {
testISignal localClass;
localClass.signal.disconnect(nullptr);
localClass.signals.disconnect(nullptr);
}
TEST(test_isignal_counter, localbasicInterfaceDisconnectSharedPtr) {
testISignal localClass;
std::shared_ptr<testCallbackIShared> tmp = std::make_shared<testCallbackIShared>();
localClass.signal.disconnect(tmp);
localClass.signals.disconnect(tmp);
EXPECT_EQ(localClass.m_signalInt.size(), 0);
EXPECT_EQ(localClass.m_signalInt.empty(), true);
localClass.m_signalInt.connect(tmp, &testCallbackIShared::callbackConstInt);
EXPECT_EQ(localClass.m_signalInt.size(), 1);
EXPECT_EQ(localClass.m_signalInt.empty(), false);
localClass.m_signalInt.emit(34567);
localClass.signal.disconnect(tmp);
localClass.signals.disconnect(tmp);
EXPECT_EQ(localClass.m_signalInt.size(), 0);
EXPECT_EQ(localClass.m_signalInt.empty(), true);
}