X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2Fmpl.hh;h=fb1b5664c36e900b4e817f626cd5dfec857e5b1f;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=bb9115eb2f0b1cb9bb991de6b63f3f24f7849bd3;hpb=54eed72c506b09ef5b4be0b62fecedfbc0e3f261;p=senf.git diff --git a/Utils/mpl.hh b/Utils/mpl.hh index bb9115e..fb1b566 100644 --- a/Utils/mpl.hh +++ b/Utils/mpl.hh @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Copyright (C) 2007 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -23,8 +23,8 @@ /** \file \brief mpl public header */ -#ifndef HH_mpl_ -#define HH_mpl_ 1 +#ifndef HH_SENF_Utils_mpl_ +#define HH_SENF_Utils_mpl_ 1 // Custom includes #include "../config.hh" @@ -36,9 +36,19 @@ namespace senf { namespace mpl { - /** \defgroup senfmpl Low-level template meta programming helpers + /** \defgroup senfmpl Template meta programming helpers */ + /** \brief Marker class for empty default values etc. + + This is like Boosts \c boost::mpl::na just an empty class used as template default argument + to mark missing arguments + + \note Don't use this as an empty base class. We may add some informative members to this. + \ingroup senfmpl + */ + struct nil {}; + /** \brief Return-value type used to implement overload selection The senf::mpl::rv type is used together with \ref SENF_MPL_RV() to select template @@ -96,8 +106,8 @@ namespace mpl { never called. This number is than forwarded as template argument to \c select which is specialized for - each case. Therefore, choice has a \c frobble() member whereas - choice has a \c dazzle() member. + each case. Therefore, choice\ has a \c frobble() member whereas + choice\ has a \c dazzle() member. \see \ref SENF_MPL_RV \ingroup senfmpl @@ -146,6 +156,8 @@ namespace mpl { */ template struct take_class {}; +#ifndef SENF_MPL_SLOT_NOEXPAND + /** \brief Define MPL slot The slot macros \ref SENF_MPL_SLOT_DEF(), \ref SENF_MPL_SLOT_SET() and \ref @@ -210,6 +222,8 @@ namespace mpl { # define SENF_MPL_SLOT_GET(name) \ SENF_MPL_SLOT_I_GET(name) +#endif + }} ///////////////////////////////hh.e////////////////////////////////////////