Micro template library A library for building device drivers
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

47 lignes
1.9 KiB

  1. /*!
  2. * \file utl/meta/meta.h
  3. * \brief Meta library forward header
  4. */
  5. #ifndef __utl_meta_meta_h__
  6. #define __utl_meta_meta_h__
  7. /*! \defgroup meta Meta
  8. * An embedded metaprogramming library for uTL.
  9. *
  10. * uTL::meta is a simple metaprogramming library used widely inside uTL.
  11. * The lib is provided to the end user via namespace \c utl::meta
  12. * The library assembles:
  13. *
  14. * - integral constant based, operation and arithmetic functionality\n
  15. * meta defines wrappers for all of integral types such as \c int, \c long, \c char, \c uint32_t etc...
  16. * and also facilities to emulate:
  17. * 1. <b>conditional (if)</b>
  18. * 2. <b>logical operations</b> like \c or, \c and, \c not, \c bitor, \c bitand etc...
  19. * 3. <b>math operations</b> like \c add, \c sub, \c modulo
  20. * 4. <b>comparison operations</b> like \c equal, \c not_equal etc...
  21. *
  22. * All of these operate on integral types.
  23. *
  24. * - <b>SFINAE</b> wrappers as syntactic sugar to the rest of the uTL.
  25. *
  26. * - Walter's Brown <b>detection idiom</b> to help uTL concept implementation.
  27. *
  28. * - <b>Higher order</b> metafunction tools for composition.\n
  29. * This module provides tools such as \c wrap, \c compose, \c fold, \c bind etc... The user can
  30. * wrap metafunctions as types and pass them around to other metafunctions. The evaluation
  31. * of these functions can be done both in aggressive or lazy maner using tools such as \c eval or \c invoke
  32. *
  33. * - <b>typelist "container"</b> implementation.\n
  34. * Typelist is a container like template type holding the parameter list as items in the container.
  35. * This facility has also all the expected eco-system of functions like \c push_front,
  36. * \c push_back, \c at etc...
  37. */
  38. #include <utl/meta/basic.h>
  39. #include <utl/meta/sfinae.h>
  40. #include <utl/meta/typelist.h>
  41. #include <utl/meta/detection.h>
  42. #include <utl/meta/invoke.h>
  43. #endif /* __utl_meta_meta_h__ */