X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2Ftype_traits.mpp;h=07558f113c89eca4d77afb3610d39b239cc93439;hb=4101c2b818ec67e7469ebb44f030eed2185c4ab0;hp=7681a979e99e4bde8a0e05068deebf0f1bfb6772;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/type_traits.mpp b/senf/Utils/type_traits.mpp index 7681a97..07558f1 100644 --- a/senf/Utils/type_traits.mpp +++ b/senf/Utils/type_traits.mpp @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -37,9 +37,9 @@ #include #include -// ///////////////////////////mpp.p//////////////////////////////////////// -#elif BOOST_PP_IS_ITERATING // //////////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-///////////////////////////mpp.p//////////////////////////////////////// +#elif BOOST_PP_IS_ITERATING //-//////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Local Macros #define mpp_Arg(n) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(n)), _type) @@ -47,49 +47,83 @@ #define mpp_OtherArgs_(z,n,d) BOOST_PP_COMMA_IF( BOOST_PP_DEC(n) ) typename traits::mpp_Arg(n) #define mpp_OtherArgs() BOOST_PP_REPEAT_FROM_TO( 1, BOOST_PP_ITERATION(), mpp_OtherArgs_, _ ) -// //////////////////////////////////////////////////////////////////////// -#if BOOST_PP_ITERATION_FLAGS()==1 // ////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +#define mpp_ArgN() BOOST_PP_ITERATION() +#define mpp_CurArg() mpp_Arg(BOOST_PP_ITERATION()) + +#define mpp_TrailTplArgs() BOOST_PP_ENUM_TRAILING_PARAMS( BOOST_PP_ITERATION(), class A ) +#define mpp_Args() BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), A ) + +//-//////////////////////////////////////////////////////////////////////// +#if BOOST_PP_ITERATION_FLAGS()==1 //-////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// template -struct function_traits_remove_arg +struct function_traits_remove_arg { typedef Traits traits; typedef boost::function_traits type; }; -template < class C, class RV - BOOST_PP_ENUM_TRAILING_PARAMS( BOOST_PP_ITERATION(), class A ) > -struct remove_member_pointer +template < class C, class RV mpp_TrailTplArgs()> +struct remove_member_pointer { - typedef RV type (BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), A )); + typedef RV type (mpp_Args()); }; -template < class C, class RV - BOOST_PP_ENUM_TRAILING_PARAMS( BOOST_PP_ITERATION(), class A ) > -struct member_class +template < class C, class RV mpp_TrailTplArgs() > +struct member_class { typedef C type; }; template -struct function_traits_arg_type +struct function_traits_arg_type +{ + typedef typename Traits::mpp_CurArg() type; +}; + +template +struct remove_member_pointer { - typedef typename Traits::mpp_Arg(BOOST_PP_ITERATION()) type; + typedef T type (mpp_Args()); }; -// //////////////////////////////////////////////////////////////////////// -#endif // ///////////////////////////////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +template +struct remove_member_pointer +{ + typedef T type (mpp_Args()); +}; + +//-//////////////////////////////////////////////////////////////////////// +#endif //-///////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Undefine local Macros -#undef mpp_OtherArgs_ +#undef mpp_Args +#undef mpp_TrailTplArgs +#undef mpp_CurArg +#undef mpp_ArgN #undef mpp_OtherArgs +#undef mpp_OtherArgs_ #undef mpp_Arg -// //////////////////////////////////////////////////////////////////////// -#endif // ///////////////////////////////////////////////////////////////// -// ///////////////////////////mpp.e//////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +/* + (save-excursion (re-search-backward "^// Undefine local Macros") + (forward-line 1) (delete-region (point) (progn (search-forward + "//-////") (forward-line -1) (point))) (insert "\n") (let ((b (point)) + (e (progn (insert (save-excursion (re-search-backward + "^// Local Macros") (search-forward "#define") (beginning-of-line) + (buffer-substring (point) (progn (search-forward "//-////") + (search-backward "#define") (forward-line 1) (point))))) (point)))) + (reverse-region b e) (shell-command-on-region b e "grep -F '#define'" nil + t) (goto-char b) (while (looking-at "#define") (delete-char 7) (insert + "#undef") (skip-chars-forward " ") (re-search-forward "[^a-zA-Z0-9_]") + (delete-region (1- (point)) (progn (end-of-line) (point))) (forward-line + 1)))) +*/ +#endif //-///////////////////////////////////////////////////////////////// +//-///////////////////////////mpp.e//////////////////////////////////////// // Local Variables: