[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>
|
||||
Connection connect(classType* _class, Func _func, Arg... _arg) {
|
||||
std::unique_ptr<Executor> executer(new Executor([=]( auto&&... cargs ){
|
||||
(*_class.*_func)(cargs..., _arg... );
|
||||
std::unique_ptr<Executor> executer(new Executor([=](const Args& ... _argBase){
|
||||
(*_class.*_func)(_argBase..., _arg... );
|
||||
}));
|
||||
std::size_t uid = executer->m_uid;
|
||||
m_executors.push_back(std::move(executer));
|
||||
@ -184,9 +184,9 @@ namespace esignal {
|
||||
return;
|
||||
}
|
||||
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 ...
|
||||
(*directPointer.*_func)(cargs..., _args... );
|
||||
(*directPointer.*_func)(_argBase..., _args... );
|
||||
}));
|
||||
m_executors.push_back(std::move(executer));
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ def create(target, module_name):
|
||||
'esignal/Connection.h',
|
||||
'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_path(tools.get_current_path(__file__))
|
||||
my_module.compile_flags('c++', [
|
||||
|
@ -166,25 +166,35 @@ TEST(test_signal_static_func, localFunctionMixedIntString) {
|
||||
EXPECT_EQ(tmpRetString, "plTGY");
|
||||
}
|
||||
|
||||
template<class Func, class... Arg>
|
||||
auto complete_args(Func _f, Arg... _arg) {
|
||||
return [=]( auto&&... cargs ){
|
||||
return _f( cargs..., _arg... );
|
||||
};
|
||||
}
|
||||
|
||||
TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
|
||||
clear();
|
||||
esignal::Signal<int32_t, std::string> signal;
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
esignal::Connection connection1 = signal.connect(complete_args(&callbackPolyargs, 'c', 12365));
|
||||
EXPECT_EQ(signal.size(), 1);
|
||||
EXPECT_EQ(signal.empty(), false);
|
||||
signal.emit(246, "plop567");
|
||||
EXPECT_EQ(tmpRetInt32, 246 + 12365);
|
||||
EXPECT_EQ(tmpRetString, "plop567c");
|
||||
}
|
||||
#if __CPP_VERSION__ >= 2014
|
||||
template<class Func, class... Arg>
|
||||
auto complete_args(Func _f, Arg... _arg) {
|
||||
return [=]( auto&&... cargs ){
|
||||
return _f( cargs..., _arg... );
|
||||
};
|
||||
}
|
||||
TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
|
||||
clear();
|
||||
esignal::Signal<int32_t, std::string> signal;
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
esignal::Connection connection1 = signal.connect(complete_args(&callbackPolyargs, 'c', 12365));
|
||||
EXPECT_EQ(signal.size(), 1);
|
||||
EXPECT_EQ(signal.empty(), false);
|
||||
signal.emit(246, "plop567");
|
||||
EXPECT_EQ(tmpRetInt32, 246 + 12365);
|
||||
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
|
||||
TEST(test_signal_static_func, localFunctionConstIntStringPolyArgWithJAJA) {
|
||||
@ -275,20 +285,21 @@ TEST(test_signal_static_func, connect_disconnect_multiple) {
|
||||
EXPECT_EQ(signal.empty(), false);
|
||||
}
|
||||
|
||||
|
||||
static void callbackDisconnect(esignal::Connection* _connection) {
|
||||
_connection->disconnect();
|
||||
}
|
||||
TEST(test_signal_static_func, disconnect_inCallback) {
|
||||
esignal::Signal<> signal;
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
esignal::Connection connection1;
|
||||
connection1 = signal.connect(complete_args(&callbackDisconnect, &connection1));
|
||||
EXPECT_EQ(signal.size(), 1);
|
||||
EXPECT_EQ(signal.empty(), false);
|
||||
signal.emit();
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
}
|
||||
#if __CPP_VERSION__ >= 2014
|
||||
static void callbackDisconnect(esignal::Connection* _connection) {
|
||||
_connection->disconnect();
|
||||
}
|
||||
TEST(test_signal_static_func, disconnect_inCallback) {
|
||||
esignal::Signal<> signal;
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
esignal::Connection connection1;
|
||||
connection1 = signal.connect(complete_args(&callbackDisconnect, &connection1));
|
||||
EXPECT_EQ(signal.size(), 1);
|
||||
EXPECT_EQ(signal.empty(), false);
|
||||
signal.emit();
|
||||
EXPECT_EQ(signal.size(), 0);
|
||||
EXPECT_EQ(signal.empty(), true);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user