[DEV] change to build on C++11
This commit is contained in:
parent
e5989608b8
commit
20797c0e97
@ -163,8 +163,8 @@ namespace esignal {
|
|||||||
*/
|
*/
|
||||||
template<class classType, class Func, class... Arg>
|
template<class classType, class Func, class... Arg>
|
||||||
Connection connect(classType* _class, Func _func, Arg... _arg) {
|
Connection connect(classType* _class, Func _func, Arg... _arg) {
|
||||||
std::unique_ptr<Executor> executer(new Executor([=]( auto&&... cargs ){
|
std::unique_ptr<Executor> executer(new Executor([=](const Args& ... _argBase){
|
||||||
(*_class.*_func)(cargs..., _arg... );
|
(*_class.*_func)(_argBase..., _arg... );
|
||||||
}));
|
}));
|
||||||
std::size_t uid = executer->m_uid;
|
std::size_t uid = executer->m_uid;
|
||||||
m_executors.push_back(std::move(executer));
|
m_executors.push_back(std::move(executer));
|
||||||
@ -184,9 +184,9 @@ namespace esignal {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TYPE* directPointer = obj2.get();
|
TYPE* directPointer = obj2.get();
|
||||||
std::unique_ptr<ExecutorShared> executer(new ExecutorShared(_class, [=]( auto&&... cargs ){
|
std::unique_ptr<ExecutorShared> executer(new ExecutorShared(_class, [=]( const Args& ... _argBase){
|
||||||
// TODO : Check if compilator does not use the shared ptr ...
|
// TODO : Check if compilator does not use the shared ptr ...
|
||||||
(*directPointer.*_func)(cargs..., _args... );
|
(*directPointer.*_func)(_argBase..., _args... );
|
||||||
}));
|
}));
|
||||||
m_executors.push_back(std::move(executer));
|
m_executors.push_back(std::move(executer));
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ def create(target, module_name):
|
|||||||
'esignal/Connection.h',
|
'esignal/Connection.h',
|
||||||
'esignal/details/Signal.hxx',
|
'esignal/details/Signal.hxx',
|
||||||
])
|
])
|
||||||
my_module.compile_version("c++", 2014)
|
my_module.compile_version("c++", 2011)
|
||||||
my_module.add_module_depend(['etk'])
|
my_module.add_module_depend(['etk'])
|
||||||
my_module.add_path(tools.get_current_path(__file__))
|
my_module.add_path(tools.get_current_path(__file__))
|
||||||
my_module.compile_flags('c++', [
|
my_module.compile_flags('c++', [
|
||||||
|
@ -166,25 +166,35 @@ TEST(test_signal_static_func, localFunctionMixedIntString) {
|
|||||||
EXPECT_EQ(tmpRetString, "plTGY");
|
EXPECT_EQ(tmpRetString, "plTGY");
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Func, class... Arg>
|
#if __CPP_VERSION__ >= 2014
|
||||||
auto complete_args(Func _f, Arg... _arg) {
|
template<class Func, class... Arg>
|
||||||
return [=]( auto&&... cargs ){
|
auto complete_args(Func _f, Arg... _arg) {
|
||||||
return _f( cargs..., _arg... );
|
return [=]( auto&&... cargs ){
|
||||||
};
|
return _f( cargs..., _arg... );
|
||||||
}
|
};
|
||||||
|
}
|
||||||
TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
|
TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
|
||||||
clear();
|
clear();
|
||||||
esignal::Signal<int32_t, std::string> signal;
|
esignal::Signal<int32_t, std::string> signal;
|
||||||
EXPECT_EQ(signal.size(), 0);
|
EXPECT_EQ(signal.size(), 0);
|
||||||
EXPECT_EQ(signal.empty(), true);
|
EXPECT_EQ(signal.empty(), true);
|
||||||
esignal::Connection connection1 = signal.connect(complete_args(&callbackPolyargs, 'c', 12365));
|
esignal::Connection connection1 = signal.connect(complete_args(&callbackPolyargs, 'c', 12365));
|
||||||
EXPECT_EQ(signal.size(), 1);
|
EXPECT_EQ(signal.size(), 1);
|
||||||
EXPECT_EQ(signal.empty(), false);
|
EXPECT_EQ(signal.empty(), false);
|
||||||
signal.emit(246, "plop567");
|
signal.emit(246, "plop567");
|
||||||
EXPECT_EQ(tmpRetInt32, 246 + 12365);
|
EXPECT_EQ(tmpRetInt32, 246 + 12365);
|
||||||
EXPECT_EQ(tmpRetString, "plop567c");
|
EXPECT_EQ(tmpRetString, "plop567c");
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
template<class Func, class... ARGS_BASE, class... ARGS_CURR>
|
||||||
|
std::function<void(const ARGS_BASE&...)> complete_args(Func _f, ARGS_BASE... _arg) {
|
||||||
|
return [=](const ARGS_BASE&..., ARGS_CURR...){
|
||||||
|
return _f( cargs..., _arg... );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
TEST(test_signal_static_func, localFunctionConstIntStringPolyArgWithJAJA) {
|
TEST(test_signal_static_func, localFunctionConstIntStringPolyArgWithJAJA) {
|
||||||
@ -275,20 +285,21 @@ TEST(test_signal_static_func, connect_disconnect_multiple) {
|
|||||||
EXPECT_EQ(signal.empty(), false);
|
EXPECT_EQ(signal.empty(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __CPP_VERSION__ >= 2014
|
||||||
static void callbackDisconnect(esignal::Connection* _connection) {
|
static void callbackDisconnect(esignal::Connection* _connection) {
|
||||||
_connection->disconnect();
|
_connection->disconnect();
|
||||||
}
|
}
|
||||||
TEST(test_signal_static_func, disconnect_inCallback) {
|
TEST(test_signal_static_func, disconnect_inCallback) {
|
||||||
esignal::Signal<> signal;
|
esignal::Signal<> signal;
|
||||||
EXPECT_EQ(signal.size(), 0);
|
EXPECT_EQ(signal.size(), 0);
|
||||||
EXPECT_EQ(signal.empty(), true);
|
EXPECT_EQ(signal.empty(), true);
|
||||||
esignal::Connection connection1;
|
esignal::Connection connection1;
|
||||||
connection1 = signal.connect(complete_args(&callbackDisconnect, &connection1));
|
connection1 = signal.connect(complete_args(&callbackDisconnect, &connection1));
|
||||||
EXPECT_EQ(signal.size(), 1);
|
EXPECT_EQ(signal.size(), 1);
|
||||||
EXPECT_EQ(signal.empty(), false);
|
EXPECT_EQ(signal.empty(), false);
|
||||||
signal.emit();
|
signal.emit();
|
||||||
EXPECT_EQ(signal.size(), 0);
|
EXPECT_EQ(signal.size(), 0);
|
||||||
EXPECT_EQ(signal.empty(), true);
|
EXPECT_EQ(signal.empty(), true);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user