astyle --style=ansi
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@663 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
50d35c6196
commit
2a5dc20f8a
1 changed files with 124 additions and 115 deletions
|
@ -25,172 +25,181 @@
|
|||
|
||||
void free_function(bool &result)
|
||||
{
|
||||
result=true;
|
||||
result=true;
|
||||
}
|
||||
|
||||
class FunctorTest : public Test
|
||||
{
|
||||
public:
|
||||
FunctorTest() : Test("Functor.h") {}
|
||||
FunctorTest() : Test("Functor.h")
|
||||
{}
|
||||
|
||||
virtual void execute(TestResult &result)
|
||||
virtual void execute(TestResult &result)
|
||||
{
|
||||
printName(result);
|
||||
printName(result);
|
||||
|
||||
using namespace Loki;
|
||||
using namespace Loki;
|
||||
|
||||
bool r;
|
||||
bool r;
|
||||
|
||||
TestFunctor testFunctor;
|
||||
TestClass testClass;
|
||||
TestFunctor testFunctor;
|
||||
TestClass testClass;
|
||||
|
||||
|
||||
#ifndef LOKI_DISABLE_TYPELIST_MACROS
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> function(testFunction);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> function2(testFunction);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functor(testFunctor);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functor2(testFunctor);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> classFunctor(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> classFunctor2(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functorCopy(function);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functorCopy2(function);
|
||||
|
||||
Functor<void,NullType> bindFunctor(BindFirst(function,testResult));
|
||||
Functor<void,NullType> bindFunctor2(BindFirst(function,testResult));
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> function(testFunction);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> function2(testFunction);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functor(testFunctor);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functor2(testFunctor);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> classFunctor(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> classFunctor2(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functorCopy(function);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> functorCopy2(function);
|
||||
|
||||
Functor<void> chainFunctor(Chain(bindFunctor,bindFunctor));
|
||||
Functor<void> chainFunctor2(Chain(bindFunctor,bindFunctor));
|
||||
Functor<void,NullType> bindFunctor(BindFirst(function,testResult));
|
||||
Functor<void,NullType> bindFunctor2(BindFirst(function,testResult));
|
||||
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> member_func(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> free_func(&free_function);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> NULL_func;
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> NULL_func0;
|
||||
Functor<void> chainFunctor(Chain(bindFunctor,bindFunctor));
|
||||
Functor<void> chainFunctor2(Chain(bindFunctor,bindFunctor));
|
||||
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> member_func(&testClass,&TestClass::member);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> free_func(&free_function);
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> NULL_func;
|
||||
Functor<void,LOKI_TYPELIST_1(bool &)> NULL_func0;
|
||||
#else
|
||||
Functor<void,Seq<bool &> > function(testFunction);
|
||||
Functor<void,Seq<bool &> > function2(testFunction);
|
||||
Functor<void,Seq<bool &> > functor(testFunctor);
|
||||
Functor<void,Seq<bool &> > functor2(testFunctor);
|
||||
Functor<void,Seq<bool &> > classFunctor(&testClass,&TestClass::member);
|
||||
Functor<void,Seq<bool &> > classFunctor2(&testClass,&TestClass::member);
|
||||
Functor<void,Seq<bool &> > functorCopy(function);
|
||||
Functor<void,Seq<bool &> > functorCopy2(function);
|
||||
//TODO:
|
||||
//Functor<void,NullType> bindFunctor(BindFirst(function,testResult));
|
||||
//Functor<void> chainFunctor(Chain(bindFunctor,bindFunctor));
|
||||
|
||||
Functor<void,Seq<bool &> > function(testFunction);
|
||||
Functor<void,Seq<bool &> > function2(testFunction);
|
||||
Functor<void,Seq<bool &> > functor(testFunctor);
|
||||
Functor<void,Seq<bool &> > functor2(testFunctor);
|
||||
Functor<void,Seq<bool &> > classFunctor(&testClass,&TestClass::member);
|
||||
Functor<void,Seq<bool &> > classFunctor2(&testClass,&TestClass::member);
|
||||
Functor<void,Seq<bool &> > functorCopy(function);
|
||||
Functor<void,Seq<bool &> > functorCopy2(function);
|
||||
//TODO:
|
||||
//Functor<void,NullType> bindFunctor(BindFirst(function,testResult));
|
||||
//Functor<void> chainFunctor(Chain(bindFunctor,bindFunctor));
|
||||
#endif
|
||||
|
||||
testResult=false;
|
||||
function(testResult);
|
||||
bool functionResult=testResult;
|
||||
testResult=false;
|
||||
function(testResult);
|
||||
bool functionResult=testResult;
|
||||
|
||||
testResult=false;
|
||||
functor(testResult);
|
||||
bool functorResult=testResult;
|
||||
testResult=false;
|
||||
functor(testResult);
|
||||
bool functorResult=testResult;
|
||||
|
||||
testResult=false;
|
||||
classFunctor(testResult);
|
||||
bool classFunctorResult=testResult;
|
||||
testResult=false;
|
||||
classFunctor(testResult);
|
||||
bool classFunctorResult=testResult;
|
||||
|
||||
testResult=false;
|
||||
functorCopy(testResult);
|
||||
bool functorCopyResult=testResult;
|
||||
testResult=false;
|
||||
functorCopy(testResult);
|
||||
bool functorCopyResult=testResult;
|
||||
|
||||
#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
|
||||
#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
|
||||
|
||||
bool functionCompare = function==function2;
|
||||
bool functorCompare = functor!=functor2; // is this a bug?
|
||||
bool classFunctorCompare = classFunctor==classFunctor2;
|
||||
bool functorCopyCompare = functorCopy==functorCopy2;
|
||||
bool functionCompare = function==function2;
|
||||
bool functorCompare = functor!=functor2; // is this a bug?
|
||||
bool classFunctorCompare = classFunctor==classFunctor2;
|
||||
bool functorCopyCompare = functorCopy==functorCopy2;
|
||||
|
||||
bool free_mem = free_func!=member_func;
|
||||
bool mem_free = member_func!=free_func;
|
||||
bool free_mem = free_func!=member_func;
|
||||
bool mem_free = member_func!=free_func;
|
||||
|
||||
bool null0 = NULL_func == NULL_func0;
|
||||
bool null1 = NULL_func != free_func;
|
||||
bool null2 = NULL_func != member_func;
|
||||
bool null3 = free_func != NULL_func;
|
||||
bool null4 = member_func != NULL_func;
|
||||
bool null0 = NULL_func == NULL_func0;
|
||||
bool null1 = NULL_func != free_func;
|
||||
bool null2 = NULL_func != member_func;
|
||||
bool null3 = free_func != NULL_func;
|
||||
bool null4 = member_func != NULL_func;
|
||||
|
||||
|
||||
#ifdef LOKI_DISABLE_TYPELIST_MACROS
|
||||
bool bindFunctorCompare = bindFunctor==bindFunctor2;
|
||||
bool chainFunctorCompare = chainFunctor==chainFunctor2;
|
||||
|
||||
bool bindFunctorCompare = bindFunctor==bindFunctor2;
|
||||
bool chainFunctorCompare = chainFunctor==chainFunctor2;
|
||||
#endif
|
||||
|
||||
bool compare = functionCompare &&
|
||||
functorCompare &&
|
||||
classFunctorCompare &&
|
||||
functorCopyCompare &&
|
||||
mem_free &&
|
||||
free_mem &&
|
||||
null0 &&
|
||||
null1 &&
|
||||
null2 &&
|
||||
null3 &&
|
||||
null4
|
||||
bool compare = functionCompare &&
|
||||
functorCompare &&
|
||||
classFunctorCompare &&
|
||||
functorCopyCompare &&
|
||||
mem_free &&
|
||||
free_mem &&
|
||||
null0 &&
|
||||
null1 &&
|
||||
null2 &&
|
||||
null3 &&
|
||||
null4
|
||||
#ifndef LOKI_DISABLE_TYPELIST_MACROS
|
||||
;
|
||||
;
|
||||
#else
|
||||
&& bindFunctorCompare
|
||||
&& chainFunctorCompare;
|
||||
|
||||
&& bindFunctorCompare
|
||||
&& chainFunctorCompare;
|
||||
#endif
|
||||
|
||||
#else
|
||||
bool compare=true;
|
||||
|
||||
bool compare=true;
|
||||
#endif //LOKI_FUNCTORS_ARE_COMPARABLE
|
||||
|
||||
|
||||
#ifdef LOKI_DISABLE_TYPELIST_MACROS
|
||||
testResult=false;
|
||||
bindFunctor();
|
||||
bool bindFunctorResult=testResult;
|
||||
|
||||
testResult=false;
|
||||
chainFunctor();
|
||||
bool chainFunctorResult=testResult;
|
||||
testResult=false;
|
||||
bindFunctor();
|
||||
bool bindFunctorResult=testResult;
|
||||
|
||||
r=functionResult && functorResult && classFunctorResult && functorCopyResult && bindFunctorResult &&
|
||||
chainFunctorResult && compare;
|
||||
#else
|
||||
//TODO!
|
||||
r=functionResult && functorResult && classFunctorResult && functorCopyResult && compare;
|
||||
#endif
|
||||
testAssert("Functor",r,result);
|
||||
testResult=false;
|
||||
chainFunctor();
|
||||
bool chainFunctorResult=testResult;
|
||||
|
||||
std::cout << '\n';
|
||||
r=functionResult && functorResult && classFunctorResult && functorCopyResult && bindFunctorResult &&
|
||||
chainFunctorResult && compare;
|
||||
#else
|
||||
//TODO!
|
||||
r=functionResult && functorResult && classFunctorResult && functorCopyResult && compare;
|
||||
#endif
|
||||
|
||||
testAssert("Functor",r,result);
|
||||
|
||||
std::cout << '\n';
|
||||
}
|
||||
|
||||
private:
|
||||
static bool testResult;
|
||||
static bool testResult;
|
||||
|
||||
static void testFunction(bool &result)
|
||||
static void testFunction(bool &result)
|
||||
{
|
||||
result=true;
|
||||
result=true;
|
||||
}
|
||||
|
||||
class TestFunctor
|
||||
{
|
||||
public:
|
||||
void operator()(bool &result)
|
||||
{
|
||||
result=true;
|
||||
}
|
||||
bool operator==(const TestFunctor& rhs) const
|
||||
{
|
||||
const TestFunctor* p = &rhs;
|
||||
return this==p;
|
||||
}
|
||||
};
|
||||
class TestFunctor
|
||||
{
|
||||
public:
|
||||
void operator()(bool &result)
|
||||
{
|
||||
result=true;
|
||||
}
|
||||
bool operator==(const TestFunctor& rhs) const
|
||||
{
|
||||
const TestFunctor* p = &rhs;
|
||||
return this==p;
|
||||
}
|
||||
};
|
||||
|
||||
class TestClass
|
||||
{
|
||||
public:
|
||||
void member(bool &result)
|
||||
{
|
||||
result=true;
|
||||
}
|
||||
};
|
||||
} functorTest;
|
||||
class TestClass
|
||||
{
|
||||
public:
|
||||
void member(bool &result)
|
||||
{
|
||||
result=true;
|
||||
}
|
||||
};
|
||||
}
|
||||
functorTest;
|
||||
|
||||
bool FunctorTest::testResult;
|
||||
|
||||
|
|
Loading…
Reference in a new issue