MessagePack for C++
Macros
filter.hpp File Reference
#include <msgpack/preprocessor/config/config.hpp>
#include <msgpack/preprocessor/control/if.hpp>
#include <msgpack/preprocessor/list/fold_right.hpp>
#include <msgpack/preprocessor/tuple/elem.hpp>
#include <msgpack/preprocessor/tuple/rem.hpp>

Go to the source code of this file.

Macros

#define MSGPACK_PP_LIST_FILTER(pred, data, list)   MSGPACK_PP_LIST_FILTER_I(pred, data, list)
 
#define MSGPACK_PP_LIST_FILTER_I(pred, data, list)   MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
 
#define MSGPACK_PP_LIST_FILTER_O(d, pdr, elem)   MSGPACK_PP_LIST_FILTER_O_I(d, MSGPACK_PP_TUPLE_REM_3 pdr, elem)
 
#define MSGPACK_PP_LIST_FILTER_O_I(d, im, elem)   MSGPACK_PP_LIST_FILTER_O_D(d, im, elem)
 
#define MSGPACK_PP_LIST_FILTER_O_D(d, pred, data, res, elem)   (pred, data, MSGPACK_PP_IF(pred##(d, data, elem), (elem, res), res))
 
#define MSGPACK_PP_LIST_FILTER_D(d, pred, data, list)   MSGPACK_PP_LIST_FILTER_D_I(d, pred, data, list)
 
#define MSGPACK_PP_LIST_FILTER_D_I(d, pred, data, list)   MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
 

Macro Definition Documentation

#define MSGPACK_PP_LIST_FILTER (   pred,
  data,
  list 
)    MSGPACK_PP_LIST_FILTER_I(pred, data, list)
#define MSGPACK_PP_LIST_FILTER_D (   d,
  pred,
  data,
  list 
)    MSGPACK_PP_LIST_FILTER_D_I(d, pred, data, list)
#define MSGPACK_PP_LIST_FILTER_D_I (   d,
  pred,
  data,
  list 
)    MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT_ ## d(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
#define MSGPACK_PP_LIST_FILTER_I (   pred,
  data,
  list 
)    MSGPACK_PP_TUPLE_ELEM(3, 2, MSGPACK_PP_LIST_FOLD_RIGHT(MSGPACK_PP_LIST_FILTER_O, (pred, data, MSGPACK_PP_NIL), list))
#define MSGPACK_PP_LIST_FILTER_O (   d,
  pdr,
  elem 
)    MSGPACK_PP_LIST_FILTER_O_I(d, MSGPACK_PP_TUPLE_REM_3 pdr, elem)
#define MSGPACK_PP_LIST_FILTER_O_D (   d,
  pred,
  data,
  res,
  elem 
)    (pred, data, MSGPACK_PP_IF(pred##(d, data, elem), (elem, res), res))
#define MSGPACK_PP_LIST_FILTER_O_I (   d,
  im,
  elem 
)    MSGPACK_PP_LIST_FILTER_O_D(d, im, elem)