| [/============================================================================== |
| Copyright (C) 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger |
| |
| Use, modification and distribution is subject to the Boost Software |
| License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
| http://www.boost.org/LICENSE_1_0.txt) |
| ===============================================================================/] |
| [section Preface] |
| |
| [:['["Algorithms + Data Structures = Programs.]]] |
| [:*--Niklaus Wirth*] |
| |
| [heading Description] |
| |
| Fusion is a library for working with heterogenous collections of data, |
| commonly referred to as tuples. A set of containers (vector, list, set and map) |
| is provided, along with views that provide a transformed presentation |
| of their underlying data. Collectively the containers and views are referred to |
| as sequences, and Fusion has a suite of algorithms that operate upon the |
| various sequence types, using an iterator concept that binds everything |
| together. |
| |
| The architecture is modeled after __mpl__ which in turn is modeled after |
| __stl__. It is named "fusion" because the library is a "fusion" of compile |
| time metaprogramming with runtime programming. |
| |
| [heading Motivation] |
| |
| Tuples are powerful beasts. After having developed two significant projects |
| (__spirit__ and __phoenix__) that relied heavily metaprogramming, it |
| became apparent that tuples are a powerful means to simplify otherwise tricky |
| tasks; especially those that require a combination of metaprogramming and |
| manipulation of heterogenous data types with values. While __mpl__ is an |
| extremely powerful metaprogramming tool, __mpl__ focuses on type |
| manipulation only. Ultimately, you'll have to map these types to real |
| values to make them useful in the runtime world where all the real action |
| takes place. |
| |
| As __spirit__ and __phoenix__ evolved, patterns and idioms related to tuple |
| manipulation emerged. Soon, it became clear that those patterns and idioms |
| were best assembled in a tuples algorithms library. __david_abrahams__ |
| outlined such a scheme in 2002. At that time, it just so happened that |
| __spirit__ and __phoenix__ had an adhoc collection of tuple manipulation |
| and traversal routines. It was an instant /AHA!/ moment. |
| |
| [heading How to use this manual] |
| |
| Some icons are used to mark certain topics indicative of their relevance. |
| These icons precede some text to indicate: |
| |
| [table Icons |
| [[Icon] [Name] [Meaning]] |
| [[__note__] [Note] [Information provided is auxiliary but will |
| give the reader a deeper insight into a specific |
| topic. May be skipped.]] |
| [[__alert__] [Alert] [Information provided is of utmost importance.]] |
| [[__caution__] [Caution] [A mild warning.]] |
| [[__tip__] [Tip] [A potentially useful and helpful piece of |
| information.]] |
| ] |
| |
| This documentation is automatically generated by Boost QuickBook documentation |
| tool. QuickBook can be found in the __boost_tools__. |
| |
| [heading Support] |
| |
| Please direct all questions to Spirit's mailing list. You can subscribe to the |
| __spirit_list__. The mailing list has a searchable archive. A search link to |
| this archive is provided in __spirit__'s home page. You may also read and post |
| messages to the mailing list through __spirit_general__ (thanks to __gmane__). |
| The news group mirrors the mailing list. Here is a link to the archives: |
| __mlist_archive__. |
| |
| [endsect] |
| |