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.
 
 
 
 

42 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 consist of:
  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. * All of these operate on integral types.
  22. * - <b>SFINAE</b> wrappers as syntactic sugar to the rest of the uTL.
  23. * - Walter's Brown <b>detection idiom</b> to help uTL concept implementation.
  24. * - <b>Higher order</b> metafunction tools for composition.\n
  25. * This module provides tools such as \c wrap, \c compose, \c fold, \c bind etc... The user can
  26. * wrap metafunctions as types and pass them around other metafunctions. The evaluation
  27. * of these functions can be done both aggressive or lazy using tools such as \c eval or \c invoke
  28. * - <b>typelist "container"</b> implementation.\n
  29. * Typelist is a container like template type holding the parameter list as items in the container.
  30. * This facility has also all the expected eco-system of functions like \c push_front,
  31. * \c push_back, \c at etc...
  32. */
  33. #include <utl/meta/basic.h>
  34. #include <utl/meta/sfinae.h>
  35. #include <utl/meta/typelist.h>
  36. #include <utl/meta/detection.h>
  37. #include <utl/meta/invoke.h>
  38. #endif /* __utl_meta_meta_h__ */