]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - misc/mediasource/netradiant-src/libs/generic/functional.h
Rename mediasource to source
[voretournament/voretournament.git] / misc / mediasource / netradiant-src / libs / generic / functional.h
diff --git a/misc/mediasource/netradiant-src/libs/generic/functional.h b/misc/mediasource/netradiant-src/libs/generic/functional.h
deleted file mode 100644 (file)
index bd25348..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-
-#if !defined(INCLUDED_FUNCTIONAL_H)
-#define INCLUDED_FUNCTIONAL_H
-
-template<typename Object, typename R, R (Object::*member)()>
-class Member
-{
-public:
-  typedef Object& first_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object)
-  {
-    return (object.*member)();
-  }
-};
-
-template<typename Object, typename R, R (Object::*member)() const>
-class ConstMember
-{
-public:
-  typedef const Object& first_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object)
-  {
-    return (object.*member)();
-  }
-};
-
-template<typename Object, typename A1, typename R, R (Object::*member)(A1)>
-class Member1
-{
-public:
-  typedef Object& first_argument_type;
-  typedef A1 second_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a1)
-  {
-    return (object.*member)(a1);
-  }
-};
-
-template<typename Object, typename A1, typename R, R (Object::*member)(A1) const>
-class ConstMember1
-{
-public:
-  typedef const Object& first_argument_type;
-  typedef A1 second_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a1)
-  {
-    return (object.*member)(a1);
-  }
-};
-
-template<typename Object, typename A2, typename A3, typename R, R (Object::*member)(A2, A3)>
-class Member2
-{
-public:
-  typedef Object& first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a2, third_argument_type a3)
-  {
-    return (object.*member)(a2, a3);
-  }
-};
-
-template<typename Object, typename A2, typename A3, typename R, R (Object::*member)(A2, A3) const>
-class ConstMember2
-{
-public:
-  typedef const Object& first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a2, third_argument_type a3)
-  {
-    return (object.*member)(a2, a3);
-  }
-};
-
-template<typename Object, typename A2, typename A3, typename A4, typename R, R (Object::*member)(A2, A3, A4)>
-class Member3
-{
-public:
-  typedef Object& first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef A4 fourth_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a2, third_argument_type a3, fourth_argument_type a4)
-  {
-    return (object.*member)(a2, a3, a4);
-  }
-};
-
-template<typename Object, typename A2, typename A3, typename A4, typename R, R (Object::*member)(A2, A3, A4) const>
-class ConstMember3
-{
-public:
-  typedef const Object& first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef A4 fourth_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type object, second_argument_type a2, third_argument_type a3, fourth_argument_type a4)
-  {
-    return (object.*member)(a2, a3, a4);
-  }
-};
-
-template<typename R, R (*func)()> 
-class Function0
-{
-public:
-  typedef R result_type;
-  static result_type call()
-  {
-    return (func)();
-  }
-};
-
-template<typename A1, typename R, R (*func)(A1)> 
-class Function1
-{
-public:
-  typedef A1 first_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type a1)
-  {
-    return (func)(a1);
-  }
-};
-
-template<typename A1, typename A2, typename R, R (*func)(A1, A2)> 
-class Function2
-{
-public:
-  typedef A1 first_argument_type;
-  typedef A2 second_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type a1, second_argument_type a2)
-  {
-    return (func)(a1, a2);
-  }
-};
-
-template<typename A1, typename A2, typename A3, typename R, R (*func)(A1, A2, A3)> 
-class Function3
-{
-public:
-  typedef A1 first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type a1, second_argument_type a2, third_argument_type a3)
-  {
-    return (func)(a1, a2, a3);
-  }
-};
-
-template<typename A1, typename A2, typename A3, typename A4, typename R, R (*func)(A1, A2, A3, A4)> 
-class Function4
-{
-public:
-  typedef A1 first_argument_type;
-  typedef A2 second_argument_type;
-  typedef A3 third_argument_type;
-  typedef A4 fourth_argument_type;
-  typedef R result_type;
-  static result_type call(first_argument_type a1, second_argument_type a2, third_argument_type a3, fourth_argument_type a4)
-  {
-    return (func)(a1, a2, a3, a4);
-  }
-};
-
-template<typename Caller, typename FirstArgument = void*> 
-class Caller0To1
-{
-public:
-  typedef FirstArgument first_argument_type;
-  typedef typename Caller::result_type result_type;
-  static result_type call(first_argument_type)
-  {
-    return Caller::call();
-  }
-};
-
-template<typename Caller, typename FirstArgument = void*> 
-class Caller1To2
-{
-public:
-  typedef FirstArgument first_argument_type;
-  typedef typename Caller::first_argument_type second_argument_type;
-  typedef typename Caller::result_type result_type;
-  static result_type call(first_argument_type, second_argument_type a2)
-  {
-    return Caller::call(a2);
-  }
-};
-
-template<typename Caller, typename FirstArgument = void*> 
-class Caller2To3
-{
-public:
-  typedef FirstArgument first_argument_type;
-  typedef typename Caller::first_argument_type second_argument_type;
-  typedef typename Caller::second_argument_type third_argument_type;
-  typedef typename Caller::result_type result_type;
-  static result_type call(first_argument_type, second_argument_type a2, third_argument_type a3)
-  {
-    return Caller::call(a2, a3);
-  }
-};
-
-template<typename Caller, typename FirstArgument = void*> 
-class Caller3To4
-{
-public:
-  typedef FirstArgument first_argument_type;
-  typedef typename Caller::first_argument_type second_argument_type;
-  typedef typename Caller::second_argument_type third_argument_type;
-  typedef typename Caller::third_argument_type fourth_argument_type;
-  typedef typename Caller::result_type result_type;
-  static result_type call(first_argument_type, second_argument_type a2, third_argument_type a3, fourth_argument_type a4)
-  {
-    return Caller::call(a2, a3, a4);
-  }
-};
-
-template<typename Functor>
-class FunctorInvoke
-{
-public:
-  typedef typename Functor::result_type result_type;
-  inline result_type operator()(Functor functor)
-  {
-    return functor();
-  }
-};
-
-template<typename Functor>
-class Functor1Invoke
-{
-  typename Functor::first_argument_type a1;
-public:
-  typedef typename Functor::first_argument_type first_argument_type;
-  typedef typename Functor::result_type result_type;
-  Functor1Invoke(first_argument_type a1) : a1(a1)
-  {
-  }
-  inline result_type operator()(Functor functor)
-  {
-    return functor(a1);
-  }
-};
-
-template<typename Functor>
-class Functor2Invoke
-{
-  typename Functor::first_argument_type a1;
-  typename Functor::second_argument_type a2;
-public:
-  typedef typename Functor::first_argument_type first_argument_type;
-  typedef typename Functor::second_argument_type second_argument_type;
-  typedef typename Functor::result_type result_type;
-  Functor2Invoke(first_argument_type a1, second_argument_type a2)
-    : a1(a1), a2(a2)
-  {
-  }
-  inline result_type operator()(Functor functor)
-  {
-    return functor(a1, a2);
-  }
-};
-
-template<typename Functor>
-class Functor3Invoke
-{
-  typename Functor::first_argument_type a1;
-  typename Functor::second_argument_type a2;
-  typename Functor::third_argument_type a3;
-public:
-  typedef typename Functor::first_argument_type first_argument_type;
-  typedef typename Functor::second_argument_type second_argument_type;
-  typedef typename Functor::third_argument_type third_argument_type;
-  typedef typename Functor::result_type result_type;
-  Functor3Invoke(first_argument_type a1, second_argument_type a2, third_argument_type a3)
-    : a1(a1), a2(a2), a3(a3)
-  {
-  }
-  inline result_type operator()(Functor functor)
-  {
-    return functor(a1, a2, a3);
-  }
-};
-
-template<typename Other, typename True, typename False, typename Type>
-class TypeEqual
-{
-public:
-  typedef False type;
-};
-template<typename Other, typename True, typename False>
-class TypeEqual<Other, True, False, Other>
-{
-public:
-  typedef True type;
-};
-
-
-#endif