preface.qbk 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. [/==============================================================================
  2. Copyright (C) 2001-2011 Joel de Guzman
  3. Copyright (C) 2006 Dan Marsden
  4. Use, modification and distribution is subject to the Boost Software
  5. License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  6. http://www.boost.org/LICENSE_1_0.txt)
  7. ===============================================================================/]
  8. [section Preface]
  9. [:['["Algorithms + Data Structures = Programs.]]]
  10. [:*--Niklaus Wirth*]
  11. [heading Description]
  12. Fusion is a library for working with heterogeneous collections of data,
  13. commonly referred to as tuples. A set of containers (vector, list, set and map)
  14. is provided, along with views that provide a transformed presentation
  15. of their underlying data. Collectively the containers and views are referred to
  16. as sequences, and Fusion has a suite of algorithms that operate upon the
  17. various sequence types, using an iterator concept that binds everything
  18. together.
  19. The architecture is modeled after __mpl__ which in turn is modeled after
  20. __stl__. It is named "fusion" because the library is a "fusion" of compile
  21. time metaprogramming with runtime programming.
  22. [heading Motivation]
  23. Tuples are powerful beasts. After having developed two significant projects
  24. (__spirit__ and __phoenix__) that relied heavily metaprogramming, it
  25. became apparent that tuples are a powerful means to simplify otherwise tricky
  26. tasks; especially those that require a combination of metaprogramming and
  27. manipulation of heterogeneous data types with values. While __mpl__ is an
  28. extremely powerful metaprogramming tool, __mpl__ focuses on type
  29. manipulation only. Ultimately, you'll have to map these types to real
  30. values to make them useful in the runtime world where all the real action
  31. takes place.
  32. As __spirit__ and __phoenix__ evolved, patterns and idioms related to tuple
  33. manipulation emerged. Soon, it became clear that those patterns and idioms
  34. were best assembled in a tuples algorithms library. __david_abrahams__
  35. outlined such a scheme in 2002. At that time, it just so happened that
  36. __spirit__ and __phoenix__ had an adhoc collection of tuple manipulation
  37. and traversal routines. It was an instant /AHA!/ moment.
  38. [heading How to use this manual]
  39. Some icons are used to mark certain topics indicative of their relevance.
  40. These icons precede some text to indicate:
  41. [note Information provided is auxiliary but will give the reader a deeper
  42. insight into a specific topic. May be skipped.]
  43. [important Information provided is of utmost importance.]
  44. [caution A mild warning.]
  45. [tip A potentially useful and helpful piece of information.]
  46. This documentation is automatically generated by Boost QuickBook documentation
  47. tool. QuickBook can be found in the __boost_tools__.
  48. [heading Support]
  49. Please direct all questions to Spirit's mailing list. You can subscribe to the
  50. __spirit_list__. The mailing list has a searchable archive. Here is a link to
  51. the archives: __list_archive__.
  52. [endsect]