Micro template library A library for building device drivers
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

47 lines
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__ */