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