diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 deleted file mode 100644 index c2c1c2f0..00000000 --- a/doc/Jamfile.v2 +++ /dev/null @@ -1,16 +0,0 @@ -project boost/libs/fusion/doc ; -import boostbook : boostbook ; -using quickbook ; - -boostbook quickbook - : - fusion.qbk - : - boost.root=../../../.. - boost.libraries=../../../libraries.htm - chunk.section.depth=4 - chunk.first.sections=1 - toc.section.depth=3 - toc.max.depth=1 - ; - diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk deleted file mode 100644 index f0b628d4..00000000 --- a/doc/acknowledgements.qbk +++ /dev/null @@ -1,16 +0,0 @@ -[section Acknowledgements] - -Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey -Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan -Marsden, Eric Niebler, Joao Abecasis and Andy Little. These people are -instrumental in the design and development of Fusion. - -Special thanks to Ronald Garcia, the review manager and to all the people in the -boost community who participated in the review: Andreas Pokorny, Andreas Huber, -Jeff Flinn, David Abrahams, Pedro Lamarao, Larry Evans, Ryan Gallagher, Andy -Little, Gennadiy Rozental, Tobias Schwinger, Joao Abecasis, Eric Niebler, Oleg -Abrosimov, Gary Powell, Eric Friedman, Darren Cook, Martin Bonner and Douglas -Gregor. - -[endsect] - diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk deleted file mode 100644 index 519b8087..00000000 --- a/doc/algorithms.qbk +++ /dev/null @@ -1,2415 +0,0 @@ -[section Algorithms] -[heading Lazy Evaluation] - -Unlike __mpl__, Fusion algorithms are lazy and non sequence-type -preserving. What does that mean? It means that when you operate on a -sequence through a Fusion algorithm that returns a sequence, the sequence -returned may not be of the same class as the original. This is by design. -Runtime efficiency is given a high priority. Like __mpl__, and unlike -__stl__, fusion algorithms are functional in nature such that algorithms -are non mutating (no side effects). However, due to the high cost of -returning full sequences such as vectors and lists, /Views/ are returned -from Fusion algorithms instead. For example, the __transform__ algorithm -does not actually return a transformed version of the original sequence. -__transform__ returns a __transform_view__. This view holds a reference to -the original sequence plus the transform function. Iteration over the -__transform_view__ will apply the transform function over the sequence -elements on demand. This /lazy/ evaluation scheme allows us to chain as -many algorithms as we want without incurring a high runtime penalty. - -[heading Sequence Extension] - -The /lazy/ evaluation scheme where __algorithms__ return __views__ also -allows operations such as __push_back__ to be totally generic. In Fusion, -__push_back__ is actually a generic algorithm that works on all sequences. -Given an input sequence `s` and a value `x`, Fusion's __push_back__ -algorithm simply returns a __joint_view__: a view that holds a reference to -the original sequence `s` and the value `x`. Functions that were once -sequence specific and need to be implemented N times over N different -sequences are now implemented only once. That is to say that Fusion -sequences are cheaply extensible. However, an important caveat is that the -result of a sequence extending operation like __push_back__ does not retain -the properties of the original sequence such as associativity of __set__s. -To regain the original sequence, __conversion__ functions are provided. You -may use one of the __conversion__ functions to convert back to the original -sequence type. - -[heading Header] - #include - -[section Concepts] - -[section Polymorphic Function Object] - -[heading Description] - -A type of function object with a nested metafunction `result`. `result` -returns the result type of calling the function object, given the argument -types. - -[variablelist Notation - [[`F`][A Polymorphic Function Object type]] - [[`f`][A Polymorphic Function Object]] - [[`T1 ...TN`][Arbitrary types]] - [[`t1 ...tN`][Objects with types `T1 ...TN`]] -] - -[heading Refinement of] -__mpl_metafunction_class__ - -[heading Expression requirements] - -[table - [[Expression][Return Type][Runtime Complexity]] - [[`f(t1, ...tN)`][`F::result::type`][Unspecified]] -] - -[endsect] - -[endsect] - -[section Iteration] - -The iteration algorithms provide the fundamental algorithms for traversing -a sequence repeatedly applying an operation to its elements. - -[heading Header] - #include - -[section Functions] - -[section fold] - -[heading Description] -Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F - > - typename __result_of_fold__::type fold( - Sequence& seq, State const& initial_state, F const& f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__,`f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] - [[`initial_state`][Any type][Initial state]] - [[`f`][A model of binary __poly_func_obj__][Operation's argument]] -] - -[heading Expression Semantics] - fold(seq, initial_state, f); - -[*Return type]: Any type - -[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `f`. - -[heading Header] - #include - -[heading Example] - struct make_string - { - template - struct apply - { - typedef std::string type; - }; - - template - std::string operator()(const T& t, const std::string& str) const - { - return str + boost::lexical_cast(t); - } - }; - ... - const __vector__ vec(1,2); - assert(__fold__(vec,std::string(""), make_string()) == "12"); - -[endsect] - -[section accumulate] - -[heading Description] -Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. -__accumulate__ is equivalent to __fold__. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F - > - typename __result_of_accumulate__::type accumulate( - Sequence& seq, State const& initial_state, F const& f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(eN ....f(e2,f(e1,initial_state)))` must be a valid expression for each element `e1` to `eN` in `seq`][Operation's argument]] - [[`initial_state`][Any type][Initial state]] - [[`f`][A model of binary __poly_func_obj__][Operation's argument]] -] - -[heading Expression Semantics] - accumulate(seq, initial_state, f); - -[*Return type]: Any type - -[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `f`. - -[heading Header] - #include - -[heading Example] - struct make_string - { - template - struct apply - { - typedef std::string type; - }; - - template - std::string operator()(const T& t, const std::string& str) const - { - return str + boost::lexical_cast(t); - } - }; - ... - const __vector__ vec(1,2); - assert(__accumulate__(vec,std::string(""), make_string()) == "12"); - -[endsect] - -[section for_each] - -[heading Description] -Applies a unary function object to each element of a sequence. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_for_each__::type for_each( - Sequence& seq, F const& f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] - [[`f`][A unary function object][Operation's argument]] -] - -[heading Expression Semantics] - __for_each__(seq, f); - -[*Return type]: `void` - -[*Semantics]: Calls `f(e)` for each element `e` in `seq`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `f`. - -[heading Header] - #include - -[heading Example] - struct increment - { - template - void operator()(T& t) const - { - ++t; - } - }; - ... - __vector__ vec(1,2); - __for_each__(vec, increment()); - assert(vec == __make_vector__(2,3)); - -[endsect] - -[endsect] - -[section Metafunctions] - -[section fold] - -[heading Description] -Returns the result type of __fold__. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F> - struct fold - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] - [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [A model of binary __poly_func_obj__] [The operation to be applied on forward traversal]] -] - -[heading Expression Semantics] - __result_of_fold__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of applying `fold` to a sequence of type `Sequence`, with an initial state of -type `State` and binary __poly_func_obj__ of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - #include - -[endsect] - -[section accumulate] - -[heading Description] -Returns the result type of __accumulate__. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F> - struct accumulate - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] - [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [A model of binary __poly_func_obj__] [The operation to be applied on forward traversal]] -] - -[heading Expression Semantics] - __result_of_accumulate__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of applying `accumulate` to a sequence of type `Sequence`, with an initial state of -type `State` and binary __poly_func_obj__ of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - #include - -[endsect] - -[section for_each] -A metafunction returning the result type of applying __for_each__ to a sequence. The -return type of __for_each__ is always `void`. - -[heading Description] - -[heading Synopsis] - template< - typename Sequence, - typename F - > - struct for_each - { - typedef void type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`F`] [Any type] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_for_each__::type - -[*Return type]: `void`. - -[*Semantics]: Returns the return type of __for_each__ for a sequence of type `Sequence` and a unary function object `F`. -The return type is always `void`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[endsect] - -[endsect] - -[section Query] -The query algorithms provide support for searching and analyzing sequences. - -[heading Header] - #include - -[section Functions] - -[section any] - -[heading Description] -For a sequence `seq` and unary function object `f`, `any` returns true if `f` returns true for at least one element of `seq`. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_any__::type any( - Sequence const& seq, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(e)` must be a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] - [[`f`][A unary function object][The search predicate]] -] - -[heading Expression semantics] - __any__(seq, f); - -[*Return type]: `bool` - -[*Semantics]: Returns true if and only if `f(e)` evaluates to `true` for some element `e` in `seq`. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - struct odd - { - template - bool operator()(T t) const - { - return t % 2; - } - }; - ... - assert(__any__(__make_vector__(1,2), odd())); - assert(!__any__(__make_vector__(2,4), odd())); - -[endsect] - -[section all] - -[heading Description] -For a sequence `seq` and unary function object `f`, `all` returns true if `f` returns true for every element of `seq`. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_all__::type all( - Sequence const& seq, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for every element `e` in `seq`][The sequence to search]] - [[`f`][A unary function object][The search predicate]] -] - -[heading Expression Semantics] - __all__(seq, f); - -[*Return type]: `bool` - -[*Semantics]: Returns true if and only if `f(e)` evaluates to `true` for every element `e` in `seq`. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - struct odd - { - template - bool operator()(T t) const - { - return t % 2; - } - }; - ... - assert(__all__(__make_vector__(1,3), odd())); - assert(!__all__(__make_vector__(1,2), odd())); - -[endsect] - -[section none] - -[heading Description] -For a sequence `seq` and unary function object `f`, `none` returns true if `f` returns false for every element of `seq`. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_none__::type none( - Sequence const& seq, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for every element `e` in `seq`][The sequence to search]] - [[`f`][A unary function object][The search predicate]] -] - -[heading Expression Semantics] - __none__(seq, f); - -[*Return type]: `bool` - -[*Semantics]: Returns true if and only if `f(e)` evaluates to `false` for every element `e` in `seq`. Result equivalent to `!any(seq, f)`. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - struct odd - { - template - bool operator()(T t) const - { - return t % 2; - } - }; - ... - assert(__none__(__make_vector__(2,4), odd())); - assert(!__none__(__make_vector__(1,2), odd())); - -[endsect] - -[section find] - -[heading Description] -Finds the first element of a given type within a sequence. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - __unspecified__ find(Sequence const& seq); - - template< - typename Sequence, - typename T - > - __unspecified__ find(Sequence& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][The sequence to search]] - [[`T`][Any type][The type to search for]] -] - -[heading Expression Semantics] - __find__(seq) - -[*Return type]: A model of the same iterator category as the iterators of `seq`. - -[*Semantics]: Returns an iterator to the first element of `seq` of type `T`, or `__end__(seq)` if there is no such element. -Equivalent to `__find_if__ >(seq)` - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - const __vector__ vec('a','0'); - assert(*__find__(vec) == '0'); - assert(__find__(vec) == __end__(vec)); - -[endsect] - -[section find_if] -Finds the first element within a sequence with a type for which a given __mpl_lambda_expression__ evaluates to -`boost::mpl::true_`. - -[heading Description] - -[heading Synopsis] - template< - typename Sequence, - typename F - > - __unspecified__ find_if(Sequence const& seq); - - template< - typename Sequence, - typename F - > - __unspecified__ find_if(Sequence& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][The sequence to search]] - [[`F`][A unary __mpl_lambda_expression__][The search predicate]] -] - -[heading Expression Semantics] - __find_if__(seq) - -[*Return type]: An iterator of the same iterator category as the iterators of `seq`. - -[*Semantics]: Returns the first element of `seq` for which __mpl_lambda_expression__ `F` evaluates to `boost::mpl::true_`, -or `__end__(seq)` if there is no such element. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1.0,2); - assert(*__find_if__ >(vec) == 2); - assert(__find_if__ >(vec) == __end__(vec)); - -[endsect] - -[section count] - -[heading Description] -Returns the number of elements of a given type within a sequence. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - typename __result_of_count__::type count( - Sequence const& seq, T const& t); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `e == t` must be a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] - [[`T`][Any type][The type to count]] -] - -[heading Expression Semantics] - __count__(seq, t); - -[*Return type]: `int` - -[*Semantics]: Returns the number of elements of type `T` and equal to `t` in `seq`. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1.0,2,3); - assert(__count__(vec,2) == 1); - -[endsect] - -[section count_if] - -[heading Description] -Returns the number of elements within a sequence with a type for which a given unary function object evaluates to -`true`. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_count_if__::type count_if( - Sequence const& seq, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] - [[`f`][A unary function object][The search predicate]] -] - -[heading Expression Semantics] - __count_if__(seq, f) - -[*Return type]: `int` - -[*Semantics]: Returns the number of elements in `seq` where `f` evaluates to `true`. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2,3); - assert(__count_if__(vec,odd()) == 2); - -[endsect] - -[endsect] - -[section Metafunctions] - -[section any] - -[heading Description] -A metafunction returning the result type of __any__. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - struct any - { - typedef bool type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_any__::type - -[*Return type]: `bool`. - -[*Semantics]: Returns the return type of __any__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section all] - -[heading Description] -A metafunction returning the result type of __all__. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - struct all - { - typedef bool type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_all__::type - -[*Return type]: `bool`. - -[*Semantics]: Returns the return type of __all__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section none] - -[heading Description] -A metafunction returning the result type of __none__. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - struct none - { - typedef bool type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_none__::type - -[*Return type]: `bool`. - -[*Semantics]: Returns the return type of __none__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section find] - -[heading Description] -Returns the result type of `find`, given the sequence and search types. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct find - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [Model of __forward_sequence__] [Operation's argument]] - [[`T`] [Any type] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_find__::type - -[*Return type]: A model of the same iterator category as the iterators of `Sequence`. - -[*Semantics]: Returns an iterator to the first element of type `T` in `Sequence`, or `__result_of_end__::type` if there is no such element. - -[heading Complexity] -Linear, at most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[endsect] - -[section find_if] - -[heading Description] -Returns the result type of `find_if` given the sequence and predicate types. - -[heading Synopsis] - template< - typename Sequence, - typename Pred - > - struct find_if - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`Pred`] [A model of __mpl_lambda_expression__] [Operation's arguments]] -] - -[heading Expression Semantics] - __result_of_find_if__::type - -[*Return type]: A model of the same iterator category as the iterators of `Sequence`. - -[*Semantics]: Returns an iterator to the first element in `Sequence` for which `Pred` evaluates to true. Returns `__result_of_end__::type` if there is no such element. - -[heading Complexity] -Linear. At most `__result_of_size__::value` comparisons. - -[heading Header] - #include - -[endsect] - -[section count] - -[heading Description] -A metafunction that returns the result type of `count` given the sequence and search types. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct count - { - typedef int type; - }; - -[table Parameters - [[Parameter] [Requirement] [heading Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`T`] [Any type] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_count__::type - -[*Return type]: `int`. - -[*Semantics]: Returns the return type of __count__. The return type is always `int`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section count_if] - -[heading Description] -A metafunction that returns the result type of `count_if` given the sequence and predicate types. - -[heading Synopsis] - template< - typename Sequence, - typename Pred - > - struct count_if - { - typedef int type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] - [[`Pred`] [A unary function object] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_count_if__::type - -[*Return type]: `int`. - -[*Semantics]: Returns the return type of __count_if__. The return type is always `int`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[endsect] - -[endsect] - -[section Transformation] -The transformation algorithms create new sequences out of existing sequences by performing some sort of transformation. In reality the new sequences are views onto the data in the original sequences. - -[note As the transformation algorithms return views onto their input arguments, -it is important that the lifetime of the input arguments is greater than the -period during which you wish to use the results.] - -[heading Header] - #include - -[section Functions] - -[section filter] - -[heading Description] -For a given sequence, filter returns a new sequences containing only the elements of a specified type. - -[heading Synopsis] - template< - typename T, - typename Sequence - > - typename __result_of_filter__::type filter(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][The type to retain]] -] - -[heading Expression Semantics] - __filter__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing all the elements of `seq` of type `T`. -Equivalent to `__filter_if__ >(seq)`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2,3,4); - assert(__filter__(vec) == __make_vector__(1,2)); - -[endsect] - -[section filter_if] - -[heading Description] -For a given sequence, __filter_if__ returns a new sequences containing -only the elements with types for which a given __mpl_lambda_expression__ evaluates to `boost::mpl::true_`. - -[heading Synopsis] - template< - typename Pred, - typename Sequence - > - typename __result_of_filter_if__::type filter_if(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`Pred`][A unary __mpl_lambda_expression__][The predicate to filter by]] -] - -[heading Expression Semantics] - __filter_if__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing all the elements of `seq` with types for which `Pred` evaluates -to `boost::mpl::true_`. The order of the retained elements is the same as in the original sequence. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2,3.0,4.0); - assert(__filter_if__ >(vec) == __make_vector__(1,2)); - -[endsect] - -[section transform] - -[heading Description] -For a sequence `seq` and __poly_func_obj__ `F`, `transform` returns a new sequence -with elements created by applying `F` to each element of `seq`. - -[heading Unary version synopsis] - template< - typename Sequence, - typename F - > - typename __result_of_transform__::type transform( - Sequence const& seq, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`f`][A model of unary __poly_func_obj__ where `f(e)` is a valid expression for each element `e` of `seq`][Transformation function]] -] - -[heading Expression Semantics] - __transform__(seq, f); - -[*Return type]: A model of __forward_sequence__ - -[*Semantics]: Returns a new sequence, containing the return values of `f(e)` for each element `e` within `seq`. - -[heading Binary version synopsis] - template< - typename Sequence1, - typename Sequence2, - typename F - > - typename __result_of_transform__::type transform( - Sequence1 const& seq1, Sequence2 const& seq2, F f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq1`][A model of __forward_sequence__][Operation's argument]] - [[`seq2`][A model of __forward_sequence__][Operation's argument]] - [[`f`][A model of binary __poly_func_obj__ where `f(e1, e2)` is a valid expression for each pair of elements `e1` and `e2` of `seq1` and `seq2` respectively][Transformation function]] -] - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing the return values of `f(e1, e2)` for each pair of elements `e1` and `e2` within `seq1` and `seq2` respectively. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - struct triple - { - template - struct apply - { - typedef T type; - }; - - template - T operator()(T t) const - { - return t * 3; - }; - }; - ... - assert(__transform__(__make_vector__(1,2,3), triple()) == __make_vector__(3,6,9)); - -[endsect] - -[section replace] - -[heading Description] -Replaces each value within a sequence of a given type and value with a new value. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - typename __result_of_replace__::type replace( - Sequence const& seq, T const& old_value, T const& new_value); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `e == old_value` is a valid expression, convertible to `bool`, for each element `e` in `seq` with type convertible to `T`][Operation's argument]] - [[`old_value`][Any type][Value to replace]] - [[`new_value`][Any type][Replacement value]] -] - -[heading Expression Semantics] - __replace__(seq, old_value, new_value); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence with all the values of `seq` with `new_value` assigned to elements with the same type and equal to `old_value`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__replace__(__make_vector__(1,2), 2, 3) == __make_vector__(1,3)); - -[endsect] - -[section replace_if] - -[heading Description] -Replaces each element of a given sequence for which an unary function object evaluates to `true` replaced with -a new value. - -[heading Synopsis] - template< - typename Sequence, - typename F, - typename T> - typename __result_of_replace_if__::type replace_if( - Sequence const& seq, F f, T const& new_value); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`f`][A function object for which `f(e)` is a valid expression, convertible to `bool`, for each element `e` in `seq`][Operation's argument]] - [[`new_value`][Any type][Replacement value]] -] - -[heading Expression Semantics] - __replace_if__(seq, f, new_value); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence with all the elements of `seq`, -with `new_value` assigned to each element for which `f` evaluates to `true`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - struct odd - { - template - bool operator()(T t) const - { - return t % 2; - } - }; - ... - assert(__replace_if__(__make_vector__(1,2), odd(), 3) == __make_vector__(3,2)); - -[endsect] - -[section remove] - -[heading Description] -Returns a new sequence, with all the elements of the original sequence, except those of a given type. - -[heading Synopsis] - template< - typename T, - typename Sequence - > - typename __result_of_remove__::type replace(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][Type to remove]] -] - -[heading Expression Semantics] - __remove__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, except -those of type `T`. Equivalent to `__remove_if__ >(seq)`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2.0); - assert(__remove__(vec) == __make_vector__(1)); - -[endsect] - -[section remove_if] - -[heading Description] -Returns a new sequence, containing all the elements of the original except those where a given unary -function object evaluates to `true`. - -[heading Synopsis] - template< - typename Pred, - typename Sequence - > - typename __result_of_remove_if__::type remove_if(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`Pred`][A model of unary __mpl_lambda_expression__][Removal predicate]] -] - -[heading Expression Semantics] - __remove_if__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, except -those elements with types for which `Pred` evaluates to `boost::mpl::true_`. -Equivalent to `__filter__ >(seq)`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2.0); - assert(__remove_if__ >(vec) == __make_vector__(1)); - -[endsect] - -[section reverse] - -[heading Description] -Returns a new sequence with the elements of the original in reverse order. - -[heading Synposis] - template< - typename Sequence - > - typename __result_of_reverse__::type reverse(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __bidirectional_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __reverse__(seq); - -[*Return type]: A model of __bidirectional_sequence__. - -[*Semantics]: Returns a new sequence containing all the elements of `seq` in reverse order. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__reverse__(__make_vector__(1,2,3)) == __make_vector__(3,2,1)); - -[endsect] - -[section clear] - -[heading Description] -__clear__ returns an empty sequence. - -[heading Synposis] - template< - typename Sequence - > - typename __result_of_clear__::type clear(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __clear__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Expression Semantics]: Returns a sequence with no elements. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[heading Example] - assert(__clear__(__make_vector__(1,2,3)) == __make_vector__()); - -[endsect] - -[section erase] - -[heading Description] -Returns a new sequence, containing all the elements of the original except those at a specified iterator, or -between two iterators. - -[heading Synposis] - template< - typename Sequence, - typename First - > - typename __result_of_erase__::type erase( - Sequence const& seq, First const& it1); - - template< - typename Sequence, - typename First, - typename Last - > - typename __result_of_erase__::type erase( - Sequence const& seq, First const& it1, Last const& it2); - -[table Parameters - [[Parameters][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`it1`][A model of __forward_iterator__][Iterator into `seq`]] - [[`it2`][A model of __forward_iterator__][Iterator into `seq` after `it1`]] -] - -[heading Expression Semantics] - __erase__(seq, pos); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq` except the element at `pos`. - - __erase__(seq, first, last); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, with all the elements of `seq`, in their original order, except those -in the range [`first`,`last`). - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1, 2.0, 'c'); - assert(__erase__(vec, __next__(__begin__(vec))) == __make_vector__(1, 'c')); - assert(__erase__(vec, __next__(__begin__(vec)), __end__(vec)) == __make_vector__(1)); - -[endsect] - -[section erase_key] - -[heading Description] -For an __associative_sequence__ `seq`, returns a __forward_sequence__ containing all the -elements of the original except those with a given key. - -[heading Synposis] - template< - typename Key, - typename Sequence - > - typename result_of::erase_key::type erase_key(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __associative_sequence__][Operation's argument]] - [[`Key`][Any type][Key to erase]] -] - -[heading Expression Semantics] - __erase_key__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, except those with key `Key`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__erase_key__(__make_map__('a', 'b')) == __make_map__('b')); - -[endsect] - -[section insert] - -[heading Description] -Returns a new sequence with all the elements of the original, an a new element inserted the -position described by a given iterator. - -[heading Synposis] - template< - typename Sequence, - typename Pos, - typename T - > - __unspecified__ insert(Sequence const& seq, Pos const& pos, T const& t); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`pos`][A model of __forward_iterator__][The position to insert at]] - [[`t`][Any type][The value to insert]] -] - -[heading Expression Semantics] - __insert__(seq, p, t); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, and a new element with the -type and value of `t` inserted at iterator `pos`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2); - assert(__insert__(vec, __next__(__begin__(vec)), 3) == __make_vector__(1,3,2)); - -[endsect] - -[section insert_range] - -[heading Description] -Returns a new sequence with another sequence inserted at a specified iterator. - -[heading Synposis] - template< - typename Sequence, - typename Pos, - typename Range - > - typename __result_of_insert_range__::type insert_range( - Sequence const& seq, Pos const& pos, Range const& range); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`pos`][A model of __forward_iterator__][The position to insert at]] - [[`range`][A model of __forward_sequence__][Range to insert]] -] - -[heading Expression Semantics] - __insert__(seq, pos, range); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and the elements of -`range` inserted at iterator `pos`. All elements retaining their ordering from the orignal sequences. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - const __vector__ vec(1,2); - assert(__insert_range__(vec, __next__(__begin__(vec)), __make_vector__(3,4)) == __make_vector__(1,3,4,2)); - -[endsect] - -[section join] - -[heading Description] -Takes 2 sequences and returns a sequence containing the elements of the first followed by the elements of the second. - -[heading Synopsis] - template< - typename LhSequence, - typename RhSequence> - typename __result_of_join__::type join(LhSequence const& lhs, RhSequence const& rhs); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`lhs`][A model of __forward_sequence__][Operation's argument]] - [[`rhs`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __join__(lhs, rhs); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing all the elements of `lhs` followed by all the elements of `rhs`. The order of th elements is preserved. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - __vector__ v1(1, 'a'); - __vector__ v2(2, 'b'); - assert(__join__(v1, v2) == __make_vector__(1,'a',2,'b')); - -[endsect] - -[section zip] - -[heading Description] -Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences. - -[heading Synopsis] - template< - typename Sequence1, - typename Sequence2, - ... - typename SequenceN - > - typename __result_of_zip__::type - zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq1` to `seqN`][Each sequence is a model of __forward_sequence__.][Operation's argument]] -] - -[heading Expression Semantics] - __zip__(seq1, seq2, ... seqN); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing tuples of elements from sequences `seq1` to `seqN`. For example, applying zip to tuples `(1, 2, 3)` and `('a', 'b', 'c')` would return `((1, 'a'),(2, 'b'),(3, 'c'))` - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - __vector__ v1(1, 'a'); - __vector__ v2(2, 'b'); - assert(__zip__(v1, v2) == __make_vector__(__make_vector__(1, 2),__make_vector__('a', 'b')); - -[endsect] - -[section pop_back] - -[heading Description] -Returns a new sequence, with the last element of the original removed. - -[heading Synopsis] - template< - typename Sequence - > - typename __result_of_pop_back__::type pop_back(Sequence const& seq); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __pop_back__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence containing all the elements of `seq`, except the last element. The elements in the new sequence are in the same order as they were in `seq`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(___pop_back__(__make_vector__(1,2,3)) == __make_vector__(1,2)); - -[endsect] - -[section pop_front] - -[heading Description] -Returns a new sequence, with the first element of the original removed. - -[heading Synopsis] - template< - typename Sequence - > - typename __result_of_pop_front__::type pop_front(Sequence const& seq); - - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __pop_front__(seq); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence containing all the elements of `seq`, except the first element. The elements in the new sequence are in the same order as they were in `seq`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__pop_front__(__make_vector__(1,2,3)) == __make_vector__(2,3)); - -[endsect] - -[section push_back] - -[heading Description] -Returns a new sequence with an element added at the end. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - typename __result_of_push_back__::type push_back( - Sequence const& seq, T const& t); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`t`][Any type][The value to add to the end]] -] - -[heading Expression Semantics] - __push_back__(seq, t); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and new element `t` appended to the end. The elements are in the same order as they were in `seq`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__push_back__(__make_vector__(1,2,3),4) == __make_vector__(1,2,3,4)); - -[endsect] - -[section push_front] - -[heading Description] -Returns a new sequence with an element added at the beginning. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - typename __result_of_push_front__::type push_front( - Sequence const& seq, T const& t); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`t`][Any type][The value to add to the beginning]] -] - -[heading Expression Semantics] - __push_back__(seq, t); - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and new element `t` appended to the beginning. The elements are in the same order as they were in `seq`. - -[heading Complexity] -Constant. Returns a view which is lazily evaluated. - -[heading Header] - #include - -[heading Example] - assert(__push_front__(__make_vector__(1,2,3),0) == __make_vector__(0,1,2,3)); - -[endsect] - -[endsect] - -[section Metafunctions] - -[section filter] - -[heading Description] -Returns the result type of __filter__ given the sequence type and type to retain. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct filter - { - typedef __unspecified__ type; - }; - -[table Parameter - [[Parameter] [Requirement] [Description]] - [[`Sequence`][A model of __forward_sequence__] [Operation's argument]] - [[`T`][Any type][Type to retain]] -] - -[heading Expression Semantics] - __result_of_filter__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing the elements of `Sequence` that are of type `T`. Equivalent to `__result_of_filter_if__ >::type`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section filter_if] - -[heading Description] -Returns the result type of __filter_if__ given the sequence and unary __mpl_lambda_expression__ predicate type. - -[heading Synopsis] - template< - typename Sequence, - typename Pred - > - struct filter_if - { - typedef __unspecified__ type; - }; - -[table Parameter - [[Parameter] [Requirement] [Description]] - [[`Sequence`][A model of __forward_sequence__] [Operation's argument]] - [[`Pred`][A unary __mpl_lambda_expression__][Type to retain]] -] - -[heading Expression Semantics] - __result_of_filter_if__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::true_`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section transform] - -[heading Description] -Returns the result of type __transform__, given the sequence and __poly_func_obj__ types. - -[heading Synopsis] - template< - typename Sequence, - typename F - > - struct transform - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__ ][Operation's argument]] - [[`F`] [A model of unary __poly_func_obj__][Transformation function object]] -] - -[heading Expression Semantics] - __result_of_transform__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with values `F::apply::type` for each element type `E` in `Sequence`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section replace] - -[heading Description] -Returns the result type of __replace__, given the types of the input sequence and element to replace. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct replace - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][The type of the search and replacement objects]] -] - -[heading Expression Semantics] - __result_of_replace__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns the return type of __replace__. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section replace_if] - -[heading Description] -Returns the result type of __replace_if__, given the types of the sequence, __poly_func_obj__ predicate and replacement object. - -[heading Synopsis] - template< - typename Sequence, - typename F, - typename T> - struct replace_if - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`F`][A model of unary __poly_func_obj__][Replacement predicate]] - [[`T`][Any type][The type of the replacement object]] -] - -[heading Expression Semantics] - __result_of_replace_if__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns the return type of __replace_if__. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section remove] - -[heading Description] -Returns the result type of __remove__, given the sequence and removal types. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct remove - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][Remove elements of this type]] -] - -[heading Expression Semantics] - __result_of_remove__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing the elements of `Sequence` not of type `T`. Equivalent to `__result_of_replace_if__ >::type`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section remove_if] - -[heading Description] -Returns the result type of __remove_if__, given the input sequence and unary __mpl_lambda_expression__ predicate types. - -[heading Synopsis] - template< - typename Sequence, - typename Pred - > - struct remove_if - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`Pred`][A model of unary __mpl_lambda_expression__][Remove elements which evaluate to `boost::mpl::true_`]] -] - -[heading Expression Semantics] - __result_of_remove_if__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::false_`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section reverse] - -[heading Description] -Returns the result type of __reverse__, given the input sequence type. - -[heading Synopsis] - template< - typename Sequence - > - struct reverse - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __bidirectional_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_reverse__::type - -[*Return type]: A model of __bidirectional_sequence__. - -[*Semantics]: Returns a sequence with the elements in the reverse order to `Sequence`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section clear] - -[heading Description] -Returns the result type of __clear__, given the input sequence type. - -[heading Synopsis] - template< - typename Sequence - > - struct clear - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][Any type][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_clear__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns an empty sequence. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section erase] -Returns the result type of __erase__, given the input sequence and range delimiting iterator types. - -[heading Description] - -[heading Synopsis] - template< - typename Sequence, - typename It1, - typename It2 = __unspecified__> - struct erase - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`It1`][A model of __forward_iterator__][Operation's argument]] - [[`It2`][A model of __forward_iterator__][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_erase__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence with the element at `It1` removed. - - __result_of_erase__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a new sequence with the elements between `It1` and `It2` removed. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section erase_key] - -[heading Description] -Returns the result type of __erase_key__, given the sequence and key types. - -[heading Synopsis] - template< - typename Sequence, - typename Key - > - struct erase_key - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __associative_sequence__][Operation's argument]] - [[`Key`][Any type][Key type]] -] - -[heading Expression Semantics] - __result_of_erase_key__::type - -[*Return type]: A model of __associative_sequence__. - -[*Semantics]: Returns a sequence with the elements of `Sequence`, except those with key `Key`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section insert] - -[heading Description] -Returns the result type of __insert__, given the sequence, position iterator and insertion types. - -[heading Synopsis] - template< - typename Sequence, - typename Position, - typename T - > - struct insert - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`Position`][A model of __forward_iterator__][Operation's argument]] - [[`T`][Any type][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_insert__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with an element of type `T` inserted at position `Position` in `Sequence`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section insert_range] - -[heading Description] -Returns the result type of __insert_range__, given the input sequence, position iterator and insertion range types. - -[heading Synopsis] - template< - typename Sequence, - typename Position, - typename Range - > - struct insert_range - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`Position`][A model of __forward_iterator__][Operation's argument]] - [[`Range`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_insert_range__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with the elements of `Range` inserted at position `Position` into `Sequence`. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section join] - -[heading Description] -Returns the result of joining 2 sequences, given the sequence types. - -[heading Synopsis] - template< - typename LhSequence, - typename RhSequence - > - struct join - { - typedef __unspecified__ type; - }; - -[heading Expression Semantics] - __result_of_join__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence containing the elements of `LhSequence` followed by the elements of `RhSequence`. The order of the elements in the 2 sequences is preserved. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section zip] - -[heading Description] -Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences. - -[heading Synopsis] - template< - typename Sequence1, - typename Sequence2, - ... - typename SequenceN - > - struct zip - { - typedef __unspecified__ type; - }; - -[heading Expression Semantics] - __result_of_zip__::type - -[*Return type]: A model of the most restrictive traversal category of sequences `Sequence1` to `SequenceN`. - -[*Semantics]: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples `(1, 2, 3)` and `('a', 'b', 'c')` would return `((1, 'a'),(2, 'b'),(3, 'c'))` - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section pop_back] - -[heading Description] -Returns the result type of __pop_back__, given the input sequence type. - -[heading Synopsis] - template< - typename Sequence - > - struct pop_back - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_pop_back__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with all the elements of `Sequence` except the last element. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section pop_front] - -[heading Description] -Returns the result type of __pop_front__, given the input sequence type. - -[heading Synopsis] - template< - typename Sequence - > - struct pop_front - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_pop_front__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with all the elements of `Sequence` except the first element. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section push_back] - -[heading Description] -Returns the result type of __push_back__, given the types of the input sequence and element to push. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct push_back - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_push_back__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the end. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[section push_front] - -[heading Description] -Returns the result type of __push_front__, given the types of the input sequence and element to push. - -[heading Synopsis] - template< - typename Sequence, - typename T - > - struct push_front - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter][Requirement][Description]] - [[`Sequence`][A model of __forward_sequence__][Operation's argument]] - [[`T`][Any type][Operation's argument]] -] - -[heading Expression Semantics] - __result_of_push_front__::type - -[*Return type]: A model of __forward_sequence__. - -[*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the beginning. - -[heading Complexity] -Constant. - -[heading Header] - #include - -[endsect] - -[endsect] - -[endsect] - -[endsect] \ No newline at end of file diff --git a/doc/changelog.qbk b/doc/changelog.qbk deleted file mode 100644 index aa030033..00000000 --- a/doc/changelog.qbk +++ /dev/null @@ -1,3 +0,0 @@ -[section Change log] -This section summarizes significant changes to the Fusion library. -[endsect] \ No newline at end of file diff --git a/doc/extension.qbk b/doc/extension.qbk deleted file mode 100644 index de6d183c..00000000 --- a/doc/extension.qbk +++ /dev/null @@ -1,377 +0,0 @@ -[section Extension] - -The Fusion library is designed to be extensible, new sequences types can easily -be added. In fact, the library support for `std::pair`, `boost::array` and __mpl__ -sequences is entirely provided using the extension mechanism. - -The process for adding a new sequence type to Fusion is: - -# Enable the __tag_dispatching__ mechanism used by Fusion for your sequence type -# Design an iterator type for the sequence -# Provide specialized behaviour for the intrinsic operations of the new Fusion sequence - -[heading Our example] - -In order to illustrate enabling a new sequence type for use with Fusion, we -are going to use the type: - - namespace example - { - struct example_struct - { - std::string name; - int age; - example_struct( - const std::string& n, - int a) - : name(n), age(a) - {} - }; - } - -We are going to pretend that this type has been provided by a 3rd party -library, and therefore cannot be modified. We shall work through all the -necessary steps to enable `example_struct` to serve as an __associative_sequence__ -as described in the __quick_start__ guide. - -[heading Enabling Tag Dispatching] - -The Fusion extensibility mechanism uses __tag_dispatching__ to call the -correct code for a given sequence type. In order to exploit the tag -dispatching mechanism we must first declare a new tag type for the -mechanism to use. For example: - - namespace example { - struct example_sequence_tag; // Only definition needed - } - -Next we need to enable the `traits::tag_of` metafunction to return our newly chosen -tag type for operations involving our sequence. This is done by specializing -`traits::tag_of` for our sequence type. - - #include - - namespace boost { namespace fusion { namespace traits { - template<> - struct tag_of - { - typedef example::example_sequence_tag type; - }; - }}} - -`traits::tag_of` also has a second template argument, -that can be used in conjuction with `boost::enable_if` to provide tag -support for groups of related types. This feature is not necessary -for our sequence, but for an example see the code in: - - #include - -[heading Designing a suitable iterator] - -We need an iterator to describe positions, and provide access to -the data within our sequence. As it is straightforward to do, -we are going to provide a random access iterator in our example. - -We will use a simple design, in which the 2 members of -`example_struct` are given numbered indices, 0 for `name` and -1 for `age` respectively. - - template - struct example_struct_iterator - : boost::fusion::iterator_base > - { - BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); - typedef Struct struct_type; - typedef boost::mpl::int_ index; - typedef boost::fusion::random_access_traversal_tag category; - - example_struct_iterator(Struct& str) - : struct_(str) {} - - Struct& struct_; - }; - -A quick summary of the details of our iterator: - -# The iterator is parameterized by the type it is iterating over, and the index of the current element. -# The typedefs `struct_type` and `index` provide convenient access to information we will need later in - the implementation. -# The typedef `category` allows the `traits::__category_of__` metafunction to establish - the traversal category of the iterator. -# The constructor stores a reference to the `example_struct` being iterated over. - -We also need to enable __tag_dispatching__ for our iterator type, with another specialization of -`traits::tag_of`. - -In isolation, the iterator implementation is pretty dry. Things should become clearer as we -add features to our implementation. - -[heading A first couple of instructive features] - -To start with, we will get the __result_of_value_of__ metafunction working. To -do this, we provide a specialization of the `boost::fusion::extension::value_of_impl` template for -our iterator's tag type. - - template<> - struct value_of_impl - { - template - struct apply; - - template - struct apply > - { - typedef std::string type; - }; - - template - struct apply > - { - typedef int type; - }; - }; - -The implementation itself is pretty simple, it just uses 2 partial specializations to -provide the type of the 2 different members of `example_struct`, based on the index of the iterator. - -To understand how `value_of_impl` is used by the library we will look at the implementation of __value_of__: - - template - struct __value_of__ - : extension::value_of_impl::type>:: - template apply - {}; - -So __value_of__ uses __tag_dispatching__ to select an __mpl_metafunction_class__ -to provide its functionality. You will notice this pattern throughout the -implementation of Fusion. - -Ok, lets enable dereferencing of our iterator. In this case we must provide a suitable -specialization of `deref_impl`. - - template<> - struct deref_impl - { - template - struct apply; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, std::string const&, std::string&>::type type; - - static type - call(example::example_struct_iterator const& it) - { - return it.struct_.name; - } - }; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, int const&, int&>::type type; - - static type - call(example::example_struct_iterator const& it) - { - return it.struct_.age; - } - }; - }; - } - -The use of `deref_impl` is very similar to that of `value_of_impl`, but it also -provides some runtime functionality this time via the `call` static member function. -To see how `deref_impl` is used, lets have a look at the implementation of __deref__: - - namespace result_of - { - template - struct __deref__ - : extension::deref_impl::type>:: - template apply - {}; - } - - template - typename result_of::deref::type - __deref__(Iterator const& i) - { - typedef result_of::deref deref_meta; - return deref_meta::call(i); - } - -So again __result_of_deref__ uses __tag_dispatching__ in exactly the -same way as the __value_of__ implementation. The runtime functionality used -by __deref__ is provided by the `call` static function of the selected -__mpl_metafunction_class__. - -The actual implementation of `deref_impl` is slightly more complex than that of `value_of_impl`. -We also need to implement the `call` function, which returns a reference -to the appropriate member of the underlying sequence. We also require a little -bit of metaprogramming to return `const` references if the underlying sequence -is const. - -[note Although there is a fair amount of left to do to produce a fully fledged -Fusion sequence, __value_of__ and __deref__ illustrate all the signficant concepts -required. The remainder of the process is very repetitive, simply requiring -implementation of a suitable `xxxx_impl` for each feature `xxxx`. -] - -[heading Implementing the remaining iterator functionality] - -Ok, now we have seen the way __value_of__ and __deref__ work, everything else will work - in pretty much the same way. Lets start with forward iteration, -by providing a `next_impl`: - - template<> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::struct_type struct_type; - typedef typename Iterator::index index; - typedef example::example_struct_iterator type; - - static type - call(Iterator const& i) - { - return type(i.struct_); - } - }; - }; - -This should be very familiar from our `deref_impl` implementation, we will be -using this approach again and again now. Our design is simply to increment -the `index` counter to move on to the next element. The various other iterator -manipulations we need to perform will all just involve simple calculations -with the `index` variables. - -We also need to provide a suitable `equal_to_impl` so that iterators can be -correctly compared. A __bidirectional_iterator__ will also need an implementation of `prior_impl`. For a -__random_access_iterator__ `distance_impl` and `advance_impl` also need to be provided -in order to satisfy the necessary complexity guarantees. As our iterator is -a __random_access_iterator__ we will have to implement all of these functions. - -Full implementations of `prior_impl`, `advance_impl`, `distance_impl` and `equal_to_impl` are -provided in the example code. - -[heading Implementing the intrinsic functions of the sequence] - -In order that Fusion can correctly identify our sequence as a Fusion sequence, we -need to enable `is_sequence` for our sequence type. As usual we just create -an `impl` type specialized for our sequence tag: - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - -We've some similar formalities to complete, providing `category_of_impl` so Fusion -can correctly identify our sequence type, and `is_view_impl` so Fusion can correctly -identify our sequence as not being a __view__ type. Implementations are -provide in the example code. - -Now we've completed some formalities, on to more interesting features. Lets get -__begin__ working so that we can get an iterator to start accessing the data in -our sequence. - - template<> - struct begin_impl - { - template - struct apply - { - typedef example::example_struct_iterator type; - - static type - call(Sequence& seq) - { - return type(seq); - } - }; - }; - -The implementation uses the same ideas we have applied throughout, in this case -we are just creating one of the iterators we developed earlier, pointing to the -first element in the sequence. The implementation of __end__ is very similar, and -is provided in the example code. - -For our __random_access_sequence__ we will also need to implement `size_impl`, -`value_at_impl` and `at_impl`. - -[heading Enabling our type as an associative container] - -In order for `example_struct` to serve as an associative container, -we need to enable 3 lookup features, __at_key__, __value_at_key__ and __has_key__. -We also need to provide an implementation of the `is_associative` trait -so that our sequence can be correctly identified as an associative container. - -To implement `at_key_impl` we need to associate the `fields::age` and `fields::age` -types described in the __quick_start__ guide with the appropriate members of `example_struct`. -Our implementation is as follows: - - template<> - struct at_key_impl - { - template - struct apply; - - template - struct apply - { - typedef typename mpl::if_< - is_const, - std::string const&, - std::string&>::type type; - - static type - call(Sequence& seq) - { - return seq.name; - }; - }; - - template - struct apply - { - typedef typename mpl::if_< - is_const, - int const&, - int&>::type type; - - static type - call(Sequence& seq) - { - return seq.age; - }; - }; - }; - -Its all very similar to the implementations we've seen previously, -such as `deref_impl` and `value_of_impl`. Instead of identifying -the members by index or position, we are now selecting them using -the types `fields::name` and `fields::age`. The implementations of -`value_at_key_impl` and `has_key_impl` are equally straightforward, -and are provided in the example code, along with an implementation -of `is_associative_impl`. - -[heading Summary] - -We've now worked through the entire process for adding a new random -access sequence and we've also enabled our type to serve as an associative -container. The implementation was slightly longwinded, but followed -a simple repeating pattern. - -The support for `std::pair`, __mpl__ sequences, and `boost::array` all -use the same approach, and provide additional examples of the approach -for a variety of types. - -[endsect] - diff --git a/doc/fusion.qbk b/doc/fusion.qbk deleted file mode 100644 index 72b8d50a..00000000 --- a/doc/fusion.qbk +++ /dev/null @@ -1,263 +0,0 @@ -[library Fusion - [quickbook 1.3] - [version 2.0] - [authors [de Guzman, Joel], [Marsden, Dan]] - [copyright 2001 2002 2003 2004 2005 Joel de Guzman, Dan Marsden] - [purpose Statically Typed Heterogeneous Data Structures and Algorithms] - [license - Distributed under 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]) - ] -] - -[def __note__ [$images/note.png]] -[def __alert__ [$images/alert.png]] -[def __tip__ [$images/tip.png]] -[def __caution__ [$images/caution.png]] - -[def __spirit__ [@http://spirit.sourceforge.net Spirit]] -[def __phoenix__ [@http://boost.org/libs/spirit/phoenix/index.html Phoenix]] -[def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]] -[def __stl__ [@http://en.wikipedia.org/wiki/Standard_Template_Library STL]] -[def __tuple__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple]] -[def __tr1__tuple__ [@http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1403.pdf TR1 Tuple]] -[def __boost_tools__ [@http://www.boost.org/tools/index.html Boost Tools]] -[def __spirit_list__ [@https://lists.sourceforge.net/lists/listinfo/spirit-general Spirit Mailing List]] -[def __spirit_general__ [@news://news.gmane.org/gmane.comp.spirit.general Spirit General NNTP news portal]] -[def __gmane__ [@http://www.gmane.org Gmane]] -[def __mlist_archive__ [@http://news.gmane.org/gmane.comp.parsers.spirit.general]] -[def __jaakko_jarvi__ [@http://www.boost.org/people/jaakko_jarvi.htm Jaakko Jarvi]] -[def __david_abrahams__ [@http://www.boost.org/people/dave_abrahams.htm David Abrahams]] -[def __boost_any__ [@http://boost.org/doc/html/any.html Boost.Any]] -[def __new_iterator_concepts__ [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]] -[def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]] -[def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]] -[def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]] -[def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]] - -[def __mpl_integral_constant__ MPL Integral Constant] -[def __mpl_boolean_constant__ MPL Boolean Constant] -[def __mpl_metafunction_class__ MPL Metafunction Class] -[def __mpl_lambda_expression__ MPL Lambda Expression] -[def __lvalue__ LValue] -[def __unspecified__ /unspecified/] - -[def __support__ [link fusion.support Support]] -[def __is_sequence__ [link fusion.support.is_sequence `is_sequence`]] -[def __is_view__ [link fusion.support.is_view `is_view`]] -[def __tag_of__ [link fusion.support.tag_of `tag_of`]] -[def __category_of__ [link fusion.support.category_of `category_of`]] -[def __fusion_pair__ [link fusion.support.pair `fusion::pair`]] -[def __pair__ [link fusion.support.pair `pair`]] -[def __fusion_make_pair__ [link fusion.support.pair `make_pair`]] - -[def __iterator__ [link fusion.iterators Iterator]] -[def __iterator_concepts__ [link fusion.iterators.concepts Iterator Concepts]] -[def __forward_iterator__ [link fusion.iterators.concepts.forward_iterator Forward Iterator]] -[def __bidirectional_iterator__ [link fusion.iterators.concepts.bidirectional_iterator Bidirectional Iterator]] -[def __random_access_iterator__ [link fusion.iterators.concepts.random_access_iterator Random Access Iterator]] - -[def __next__ [link fusion.iterators.functions.next `next`]] -[def __prior__ [link fusion.iterators.functions.prior `prior`]] -[def __advance__ [link fusion.iterators.functions.advance `advance`]] -[def __advance_c__ [link fusion.iterators.functions.advance_c `advance_c`]] -[def __distance__ [link fusion.iterators.functions.distance `distance`]] -[def __deref__ [link fusion.iterators.functions.deref `deref`]] - -[def __result_of_next__ [link fusion.iterators.metafunctions.next `result_of::next`]] -[def __result_of_prior__ [link fusion.iterators.metafunctions.prior `result_of::prior`]] -[def __result_of_equal_to__ [link fusion.iterators.metafunctions.equal_to `result_of::equal_to`]] -[def __result_of_advance__ [link fusion.iterators.metafunctions.advance `result_of::advance`]] -[def __result_of_advance_c__ [link fusion.iterators.metafunctions.advance_c `result_of::advance_c`]] -[def __result_of_distance__ [link fusion.iterators.metafunctions.distance `result_of::distance`]] -[def __result_of_deref__ [link fusion.iterators.metafunctions.deref `result_of::deref`]] -[def __result_of_value_of__ [link fusion.iterators.metafunctions.value_of `result_of::value_of`]] -[def __value_of__ [link fusion.iterators.metafunctions.value_of `value_of`]] - -[def __sequence__ [link fusion.sequences Sequence]] -[def __sequence_concepts__ [link fusion.sequences.concepts Sequence Concepts]] -[def __traversal_concept__ [link fusion.sequences.concepts.traversal Sequence Traversal Concept]] -[def __associativity_concept__ [link fusion.sequences.concepts.associativity Sequence Associativity Concept]] -[def __forward_sequence__ [link fusion.sequences.concepts.forward_sequence Forward Sequence]] -[def __bidirectional_sequence__ [link fusion.sequences.concepts.bidirectional_sequence Bidirectional Sequence]] -[def __random_access_sequence__ [link fusion.sequences.concepts.random_access_sequence Random Access Sequence]] -[def __associative_sequence__ [link fusion.sequences.concepts.associative_sequence Associative Sequence]] - -[def __containers__ [link fusion.sequences.containers Containers]] -[def __vector__ [link fusion.sequences.containers.vector `vector`]] -[def __cons__ [link fusion.sequences.containers.cons `cons`]] -[def __list__ [link fusion.sequences.containers.list `list`]] -[def __set__ [link fusion.sequences.containers.set `set`]] -[def __map__ [link fusion.sequences.containers.map `map`]] - -[def __view__ [link fusion.sequences.views View]] -[def __views__ [link fusion.sequences.views Views]] -[def __single_view__ [link fusion.sequences.views.single_view `single_view`]] -[def __filter_view__ [link fusion.sequences.views.filter_view `filter_view`]] -[def __iterator_range__ [link fusion.sequences.views.iterator_range `iterator_range`]] -[def __joint_view__ [link fusion.sequences.views.joint_view `joint_view`]] -[def __transform_view__ [link fusion.sequences.views.transform_view `transform_view`]] -[def __reverse_view__ [link fusion.sequences.views.reverse_view `reverse_view`]] - -[def __std_pair__ [link fusion.sequences.adapted.std__pair `std::pair`]] -[def __boost_array__ [link fusion.sequences.adapted.boost__array `boost::array`]] -[def __mpl_sequence__ [link fusion.sequences.adapted.mpl_sequence mpl sequence]] - -[def __intrinsic__ [link fusion.sequences.intrinsics Intrinsic]] -[def __intrinsics__ [link fusion.sequences.intrinsics Intrinsics]] -[def __begin__ [link fusion.sequences.intrinsics.functions.begin `begin`]] -[def __result_of_begin__ [link fusion.sequences.intrinsics.metafunctions.begin `result_of::begin`]] -[def __end__ [link fusion.sequences.intrinsics.functions.end `end`]] -[def __result_of_end__ [link fusion.sequences.intrinsics.metafunctions.end `result_of::end`]] -[def __size__ [link fusion.sequences.intrinsics.functions.size `size`]] -[def __result_of_size__ [link fusion.sequences.intrinsics.metafunctions.size `result_of::size`]] -[def __empty__ [link fusion.sequences.intrinsics.functions.empty `empty`]] -[def __result_of_empty__ [link fusion.sequences.intrinsics.metafunctions.empty `result_of::empty`]] -[def __front__ [link fusion.sequences.intrinsics.functions.front `front`]] -[def __result_of_front__ [link fusion.sequences.intrinsics.metafunctions.front `result_of::front`]] -[def __back__ [link fusion.sequences.intrinsics.functions.back `back`]] -[def __result_of_back__ [link fusion.sequences.intrinsics.metafunctions.back `result_of::back`]] -[def __at__ [link fusion.sequences.intrinsics.functions.at `at`]] -[def __result_of_at__ [link fusion.sequences.intrinsics.metafunctions.at `result_of::at`]] -[def __at_c__ [link fusion.sequences.intrinsics.functions.at_c `at_c`]] -[def __result_of_at_c__ [link fusion.sequences.intrinsics.metafunctions.at_c `result_of::at_c`]] -[def __at_key__ [link fusion.sequences.intrinsics.functions.at_key `at_key`]] -[def __result_of_at_key__ [link fusion.sequences.intrinsics.metafunctions.at_key `result_of::at_key`]] -[def __has_key__ [link fusion.sequences.intrinsics.functions.has_key `has_key`]] -[def __result_of_has_key__ [link fusion.sequences.intrinsics.metafunctions.has_key `result_of::has_key`]] -[def __value_at_key__ [link fusion.sequences.intrinsics.metafunctions.value_at_key `value_at_key`]] -[def __result_of_value_at__ [link fusion.sequences.intrinsics.metafunctions.value_at `result_of::value_at`]] -[def __result_of_value_at_c__ [link fusion.sequences.intrinsics.metafunctions.value_at_c `result_of::value_at_c`]] -[def __result_of_value_at_key__ [link fusion.sequences.intrinsics.metafunctions.value_at_key `result_of::value_at_key`]] - -[def __conversion__ [link fusion.sequences.conversion.functions Conversion]] -[def __result_of_conversion__ [link fusion.sequences.conversion.metafunctions Conversion Metafunctions]] -[def __as_vector__ [link fusion.sequences.conversion.functions.as_vector `as_vector`]] -[def __result_of_as_vector__ [link fusion.sequences.conversion.metafunctions.as_vector `result_of::as_vector`]] -[def __as_list__ [link fusion.sequences.conversion.functions.as_list `as_list`]] -[def __result_of_as_list__ [link fusion.sequences.conversion.metafunctions.as_list `result_of::as_list`]] -[def __as_set__ [link fusion.sequences.conversion.functions.as_set `as_set`]] -[def __result_of_as_set__ [link fusion.sequences.conversion.metafunctions.as_set `result_of::as_set`]] -[def __as_map__ [link fusion.sequences.conversion.functions.as_map `as_map`]] -[def __result_of_as_map__ [link fusion.sequences.conversion.metafunctions.as_map `result_of::as_map`]] - -[def __generation__ [link fusion.sequences.generation.functions Generation]] -[def __result_of_generation__ [link fusion.sequences.generation.metafunctions Generation Metafunctions]] -[def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] -[def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] -[def __vector_tie__ [link fusion.sequences.generation.functions.vector_tie `vector_tie`]] -[def __result_of_vector_tie__ [link fusion.sequences.generation.metafunctions.vector_tie `result_of::vector_tie`]] -[def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] -[def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] -[def __make_cons__ [link fusion.sequences.generation.functions.make_cons `make_cons`]] -[def __result_of_make_cons__ [link fusion.sequences.generation.metafunctions.make_cons `result_of::make_cons`]] -[def __make_list__ [link fusion.sequences.generation.functions.make_list `make_list`]] -[def __result_of_make_list__ [link fusion.sequences.generation.metafunctions.make_list `result_of::make_list`]] -[def __make_set__ [link fusion.sequences.generation.functions.make_set `make_set`]] -[def __result_of_make_set__ [link fusion.sequences.generation.metafunctions.make_set `result_of::make_set`]] -[def __make_map__ [link fusion.sequences.generation.functions.make_map `make_map`]] -[def __result_of_make_map__ [link fusion.sequences.generation.metafunctions.make_map `result_of::make_map`]] -[def __list_tie__ [link fusion.sequences.generation.functions.list_tie `list_tie`]] -[def __result_of_list_tie__ [link fusion.sequences.generation.metafunctions.list_tie `result_of::list_tie`]] - -[def __out__ [link fusion.sequences.operators.i_o.out out]] -[def __in__ [link fusion.sequences.operators.i_o.in in]] -[def __eq__ [link fusion.sequences.operators.comparison.equal equal]] -[def __neq__ [link fusion.sequences.operators.comparison.not_equal not equal]] -[def __lt__ [link fusion.sequences.operators.comparison.less_than less than]] -[def __lte__ [link fusion.sequences.operators.comparison.less_than_equal less than equal]] -[def __gt__ [link fusion.sequences.operators.comparison.greater_than greater than]] -[def __gte__ [link fusion.sequences.operators.comparison.greater_than_equal greater than equal]] - -[def __algorithm__ [link fusion.algorithms Algorithm]] -[def __algorithms__ [link fusion.algorithms Algorithms]] -[def __poly_func_obj__ [link fusion.algorithms.concepts.polymorphic_function_object Polymorphic Function Object]] -[def __fold__ [link fusion.algorithms.iteration.functions.fold `fold`]] -[def __result_of_fold__ [link fusion.algorithms.iteration.metafunctions.fold `result_of::fold`]] -[def __accumulate__ [link fusion.algorithms.iteration.functions.accumulate `accumulate`]] -[def __result_of_accumulate__ [link fusion.algorithms.iteration.metafunctions.accumulate `result_of::accumulate`]] -[def __for_each__ [link fusion.algorithms.iteration.functions.for_each `for_each`]] -[def __result_of_for_each__ [link fusion.algorithms.iteration.metafunctions.for_each `result_of::for_each`]] -[def __any__ [link fusion.algorithms.query.functions.any `any`]] -[def __result_of_any__ [link fusion.algorithms.query.metafunctions.any `result_of::any`]] -[def __all__ [link fusion.algorithms.query.functions.all `all`]] -[def __result_of_all__ [link fusion.algorithms.query.metafunctions.all `result_of::all`]] -[def __none__ [link fusion.algorithms.query.functions.none `none`]] -[def __result_of_none__ [link fusion.algorithms.query.metafunctions.none `result_of::none`]] -[def __find__ [link fusion.algorithms.query.functions.find `find`]] -[def __result_of_find__ [link fusion.algorithms.query.metafunctions.find `result_of::find`]] -[def __find_if__ [link fusion.algorithms.query.functions.find_if `find_if`]] -[def __result_of_find_if__ [link fusion.algorithms.query.metafunctions.find_if `result_of::find_if`]] -[def __count__ [link fusion.algorithms.query.functions.count `count`]] -[def __result_of_count__ [link fusion.algorithms.query.metafunctions.count `result_of::count`]] -[def __count_if__ [link fusion.algorithms.query.functions.count_if `count_if`]] -[def __result_of_count_if__ [link fusion.algorithms.query.metafunctions.count_if `result_of::count_if`]] -[def __filter__ [link fusion.algorithms.transformation.functions.filter `filter`]] -[def __result_of_filter__ [link fusion.algorithms.transformation.metafunctions.filter `result_of::filter`]] -[def __filter_if__ [link fusion.algorithms.transformation.functions.filter_if `filter_if`]] -[def __result_of_filter_if__ [link fusion.algorithms.transformation.metafunctions.filter_if `result_of::filter_if`]] -[def __transform__ [link fusion.algorithms.transformation.functions.transform `transform`]] -[def __result_of_transform__ [link fusion.algorithms.transformation.metafunctions.transform `result_of::transform`]] -[def __replace__ [link fusion.algorithms.transformation.functions.replace `replace`]] -[def __result_of_replace__ [link fusion.algorithms.transformation.metafunctions.replace `result_of::replace`]] -[def __replace_if__ [link fusion.algorithms.transformation.functions.replace_if `replace_if`]] -[def __result_of_replace_if__ [link fusion.algorithms.transformation.metafunctions.replace_if `result_of::replace_if`]] -[def __remove__ [link fusion.algorithms.transformation.functions.remove `remove`]] -[def __result_of_remove__ [link fusion.algorithms.transformation.metafunctions.remove `result_of::remove`]] -[def __remove_if__ [link fusion.algorithms.transformation.functions.remove_if `remove_if`]] -[def __result_of_remove_if__ [link fusion.algorithms.transformation.metafunctions.remove_if `result_of::remove_if`]] -[def __reverse__ [link fusion.algorithms.transformation.functions.reverse `reverse`]] -[def __result_of_reverse__ [link fusion.algorithms.transformation.metafunctions.reverse `result_of::reverse`]] -[def __clear__ [link fusion.algorithms.transformation.functions.clear `clear`]] -[def __result_of_clear__ [link fusion.algorithms.transformation.metafunctions.clear `result_of::clear`]] -[def __erase__ [link fusion.algorithms.transformation.functions.erase `erase`]] -[def __result_of_erase__ [link fusion.algorithms.transformation.metafunctions.erase `result_of::erase`]] -[def __erase_key__ [link fusion.algorithms.transformation.functions.erase_key `erase_key`]] -[def __result_of_erase_key__ [link fusion.algorithms.transformation.metafunctions.erase_key `result_of::erase_key`]] -[def __insert__ [link fusion.algorithms.transformation.functions.insert `insert`]] -[def __result_of_insert__ [link fusion.algorithms.transformation.metafunctions.insert `result_of::insert`]] -[def __insert_range__ [link fusion.algorithms.transformation.functions.insert_range `insert_range`]] -[def __result_of_insert_range__ [link fusion.algorithms.transformation.metafunctions.insert_range `result_of::insert_range`]] -[def __join__ [link fusion.algorithms.transformation.functions.join `join`]] -[def __result_of_join__ [link fusion.algorithms.transformation.metafunctions.join `result_of::join`]] -[def __zip__ [link fusion.algorithms.transformation.functions.zip `zip`]] -[def __result_of_zip__ [link fusion.algorithms.transformation.metafunctions.zip `result_of::zip`]] -[def __pop_back__ [link fusion.algorithms.transformation.functions.pop_back `pop_back`]] -[def __result_of_pop_back__ [link fusion.algorithms.transformation.metafunctions.pop_back `result_of::pop_back`]] -[def __pop_front__ [link fusion.algorithms.transformation.functions.pop_front `pop_front`]] -[def __result_of_pop_front__ [link fusion.algorithms.transformation.metafunctions.pop_front `result_of::pop_front`]] -[def __push_back__ [link fusion.algorithms.transformation.functions.push_back `push_back`]] -[def __result_of_push_back__ [link fusion.algorithms.transformation.metafunctions.push_back `result_of::push_back`]] -[def __push_front__ [link fusion.algorithms.transformation.functions.push_front `push_front`]] -[def __result_of_push_front__ [link fusion.algorithms.transformation.metafunctions.push_front `result_of::push_front`]] - -[def __tr1_tuple_pair__ [link fusion.tuples.pairs `TR1 and std::pair`]] -[def __tuple_get__ [link fusion.tuples.class_template_tuple.element_access `get`]] - -[def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]] -[def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]] -[def __tag_dispatching__ [link fusion.notes.tag_dispatching /tag dispatching/]] -[def __element_conversion__ [link fusion.notes.element_conversion /element conversion/]] -[def __see_element_conversion__ [link fusion.notes.element_conversion /see element conversion/]] -[def __note_boost_ref__ [link fusion.notes.boost__ref `boost::ref`]] - -[def __quick_start__ [link fusion.quick_start Quick Start]] -[def __organization__ [link fusion.organization Orgainization]] -[def __extension__ [link fusion.extension Extension]] - -[include preface.qbk] -[include introduction.qbk] -[include quick_start.qbk] -[include organization.qbk] -[include support.qbk] -[include iterators.qbk] -[include sequences.qbk] -[include algorithms.qbk] -[include tuples.qbk] -[include extension.qbk] -[include notes.qbk] -[include changelog.qbk] -[include acknowledgements.qbk] -[include references.qbk] - diff --git a/doc/html/boostbook.css b/doc/html/boostbook.css deleted file mode 100755 index d84d5384..00000000 --- a/doc/html/boostbook.css +++ /dev/null @@ -1,511 +0,0 @@ -/*============================================================================= - Copyright (c) 2004 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -/*============================================================================= - Body defaults -=============================================================================*/ - - body - { - margin: 1em; - font-family: sans-serif; - } - -/*============================================================================= - Paragraphs -=============================================================================*/ - - p - { - text-align: left; - font-size: 10pt; - line-height: 1.15; - } - -/*============================================================================= - Program listings -=============================================================================*/ - - /* Code on paragraphs */ - p tt.computeroutput - { - font-size: 9pt; - } - - pre.synopsis - { - font-size: 90%; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - .programlisting, - .screen - { - font-size: 9pt; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - /* Program listings in tables don't get borders */ - td .programlisting, - td .screen - { - margin: 0pc 0pc 0pc 0pc; - padding: 0pc 0pc 0pc 0pc; - } - -/*============================================================================= - Headings -=============================================================================*/ - - h1, h2, h3, h4, h5, h6 - { - text-align: left; - margin: 1em 0em 0.5em 0em; - font-weight: bold; - } - - h1 { font: 140% } - h2 { font: bold 140% } - h3 { font: bold 130% } - h4 { font: bold 120% } - h5 { font: italic 110% } - h6 { font: italic 100% } - - /* Top page titles */ - title, - h1.title, - h2.title - h3.title, - h4.title, - h5.title, - h6.title, - .refentrytitle - { - font-weight: bold; - margin-bottom: 1pc; - } - - h1.title { font-size: 140% } - h2.title { font-size: 140% } - h3.title { font-size: 130% } - h4.title { font-size: 120% } - h5.title { font-size: 110% } - h6.title { font-size: 100% } - - .section h1 - { - margin: 0em 0em 0.5em 0em; - font-size: 140%; - } - - .section h2 { font-size: 140% } - .section h3 { font-size: 130% } - .section h4 { font-size: 120% } - .section h5 { font-size: 110% } - .section h6 { font-size: 100% } - - /* Code on titles */ - h1 tt.computeroutput { font-size: 140% } - h2 tt.computeroutput { font-size: 140% } - h3 tt.computeroutput { font-size: 130% } - h4 tt.computeroutput { font-size: 120% } - h5 tt.computeroutput { font-size: 110% } - h6 tt.computeroutput { font-size: 100% } - -/*============================================================================= - Author -=============================================================================*/ - - h3.author - { - font-size: 100% - } - -/*============================================================================= - Lists -=============================================================================*/ - - li - { - font-size: 10pt; - line-height: 1.3; - } - - /* Unordered lists */ - ul - { - text-align: left; - } - - /* Ordered lists */ - ol - { - text-align: left; - } - -/*============================================================================= - Links -=============================================================================*/ - - a - { - text-decoration: none; /* no underline */ - } - - a:hover - { - text-decoration: underline; - } - -/*============================================================================= - Spirit style navigation -=============================================================================*/ - - .spirit-nav - { - text-align: right; - } - - .spirit-nav a - { - color: white; - padding-left: 0.5em; - } - - .spirit-nav img - { - border-width: 0px; - } - -/*============================================================================= - Table of contents -=============================================================================*/ - - .toc - { - margin: 1pc 4% 0pc 4%; - padding: 0.1pc 1pc 0.1pc 1pc; - font-size: 80%; - line-height: 1.15; - } - - .boost-toc - { - float: right; - padding: 0.5pc; - } - -/*============================================================================= - Tables -=============================================================================*/ - - .table-title, - div.table p.title - { - margin-left: 4%; - padding-right: 0.5em; - padding-left: 0.5em; - } - - .informaltable table, - .table table - { - width: 92%; - margin-left: 4%; - margin-right: 4%; - } - - div.informaltable table, - div.table table - { - padding: 4px; - } - - /* Table Cells */ - div.informaltable table tr td, - div.table table tr td - { - padding: 0.5em; - text-align: left; - font-size: 9pt; - } - - div.informaltable table tr th, - div.table table tr th - { - padding: 0.5em 0.5em 0.5em 0.5em; - border: 1pt solid white; - font-size: 80%; - } - -/*============================================================================= - Blurbs -=============================================================================*/ - - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - font-size: 9pt; /* A little bit smaller than the main text */ - line-height: 1.2; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - p.blurb img - { - padding: 1pt; - } - -/*============================================================================= - Variable Lists -=============================================================================*/ - - /* Make the terms in definition lists bold */ - div.variablelist dl dt, - span.term - { - font-weight: bold; - font-size: 10pt; - } - - div.variablelist table tbody tr td - { - text-align: left; - vertical-align: top; - padding: 0em 2em 0em 0em; - font-size: 10pt; - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - - div.variablelist dl dt - { - margin-bottom: 0.2em; - } - - div.variablelist dl dd - { - margin: 0em 0em 0.5em 2em; - font-size: 10pt; - } - - div.variablelist table tbody tr td p, - div.variablelist dl dd p - { - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - -/*============================================================================= - Misc -=============================================================================*/ - - /* Title of books and articles in bibliographies */ - span.title - { - font-style: italic; - } - - span.underline - { - text-decoration: underline; - } - - span.strikethrough - { - text-decoration: line-through; - } - - /* Copyright, Legal Notice */ - div div.legalnotice p - { - text-align: left - } - -/*============================================================================= - Colors -=============================================================================*/ - - @media screen - { - /* Links */ - a - { - color: #005a9c; - } - - a:visited - { - color: #9c5a9c; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, - h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, - h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited - { - text-decoration: none; /* no underline */ - color: #000000; - } - - /* Syntax Highlighting */ - .keyword { color: #0000AA; } - .identifier { color: #000000; } - .special { color: #707070; } - .preprocessor { color: #402080; } - .char { color: teal; } - .comment { color: #800000; } - .string { color: teal; } - .number { color: teal; } - .white_bkd { background-color: #FFFFFF; } - .dk_grey_bkd { background-color: #999999; } - - /* Copyright, Legal Notice */ - .copyright - { - color: #666666; - font-size: small; - } - - div div.legalnotice p - { - color: #666666; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid #DCDCDC; - } - - .programlisting, - .screen - { - border: 1px solid #DCDCDC; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Blurbs */ - div.note, - div.tip, - div.important, - div.caution, - div.warning, - p.blurb - { - border: 1px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid #DCDCDC; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid #DCDCDC; - } - - div.informaltable table tr th, - div.table table tr th - { - background-color: #F0F0F0; - border: 1px solid #DCDCDC; - } - - /* Misc */ - span.highlight - { - color: #00A000; - } - } - - @media print - { - /* Links */ - a - { - color: black; - } - - a:visited - { - color: black; - } - - .spirit-nav - { - display: none; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid gray; - } - - .programlisting, - .screen - { - border: 1px solid gray; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid gray; - } - - .informaltable table, - .table table - { - border: 1px solid gray; - border-collapse: collapse; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid gray; - } - - div.informaltable table tr th, - div.table table tr th - { - border: 1px solid gray; - } - - /* Misc */ - span.highlight - { - font-weight: bold; - } - } diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html deleted file mode 100644 index 04b602c0..00000000 --- a/doc/html/fusion/acknowledgements.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Acknowledgements - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, - Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric - Niebler, Joao Abecasis and Andy Little. These people are instrumental in the - design and development of Fusion. -

-

- Special thanks to Ronald Garcia, the review manager and to all the people in - the boost community who participated in the review: Andreas Pokorny, Andreas - Huber, Jeff Flinn, David Abrahams, Pedro Lamarao, Larry Evans, Ryan Gallagher, - Andy Little, Gennadiy Rozental, Tobias Schwinger, Joao Abecasis, Eric Niebler, - Oleg Abrosimov, Gary Powell, Eric Friedman, Darren Cook, Martin Bonner and - Douglas Gregor. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html deleted file mode 100644 index 533de96c..00000000 --- a/doc/html/fusion/algorithms.html +++ /dev/null @@ -1,98 +0,0 @@ - - - -Algorithms - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- - Lazy Evaluation -

-

- Unlike MPL, Fusion - algorithms are lazy and non sequence-type preserving. What does that mean? - It means that when you operate on a sequence through a Fusion algorithm that - returns a sequence, the sequence returned may not be of the same class as the - original. This is by design. Runtime efficiency is given a high priority. Like - MPL, and unlike - STL, - fusion algorithms are functional in nature such that algorithms are non mutating - (no side effects). However, due to the high cost of returning full sequences - such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a - reference to the original sequence plus the transform function. Iteration over - the transform_view - will apply the transform function over the sequence elements on demand. This - lazy evaluation scheme allows us to chain as many algorithms - as we want without incurring a high runtime penalty. -

-

- - Sequence Extension -

-

- The lazy evaluation scheme where Algorithms - return Views also allows operations - such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions - that were once sequence specific and need to be implemented N times over N - different sequences are now implemented only once. That is to say that Fusion - sequences are cheaply extensible. However, an important caveat is that the - result of a sequence extending operation like push_back does not retain the properties - of the original sequence such as associativity of _set_s. - To regain the original sequence, Conversion - functions are provided. You may use one of the Conversion - functions to convert back to the original sequence type. -

-

- - Header -

-
-#include <boost/fusion/algorithm.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html deleted file mode 100644 index 991a3c20..00000000 --- a/doc/html/fusion/algorithms/concepts.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -Concepts - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html deleted file mode 100644 index b4034a5d..00000000 --- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html +++ /dev/null @@ -1,104 +0,0 @@ - - - -Polymorphic - Function Object - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A type of function object with a nested metafunction result. - result returns the result - type of calling the function object, given the argument types. -

-
-

Notation

-
-
F
-
- A Polymorphic Function Object type -
-
f
-
- A Polymorphic Function Object -
-
T1 - ...TN
-
- Arbitrary types -
-
t1 - ...tN
-
- Objects with types T1 ...TN -
-
-
-
- - Refinement - of -
-

- MPL Metafunction Class -

-
- - Expression - requirements -
-
----- - - - - - - - - - - -
ExpressionReturn TypeRuntime - Complexity
f(t1, ...tN)F::result<T1, ...TN>::typeUnspecified
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html deleted file mode 100644 index 98766d3f..00000000 --- a/doc/html/fusion/algorithms/iteration.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Iteration - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- The iteration algorithms provide the fundamental algorithms for traversing - a sequence repeatedly applying an operation to its elements. -

-

- - Header -

-
-#include <boost/fusion/algorithm/iteration.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html deleted file mode 100644 index 5c3db0bd..00000000 --- a/doc/html/fusion/algorithms/iteration/functions.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html deleted file mode 100644 index b7f9bdfa..00000000 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ /dev/null @@ -1,157 +0,0 @@ - - - -accumulate - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. accumulate is equivalent to - fold. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename State,
-    typename F
-    >
-typename result_of::accumulate<Sequence, State, F>::type accumulate(
-    Sequence& seq, State const& initial_state, F const& f);
-
-
-

Table 1.33. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 to - eN in seq -Operation's argument
initial_stateAny - typeInitial state
fA - model of binary Polymorphic - Function Object -Operation's argument
-
-
- - Expression - Semantics -
-
-accumulate(seq, initial_state, f);
-
-

- Return type: Any type -

-

- Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. -

-
- - Complexity -
-

- Linear, exactly result_of::size<Sequence>::value applications of f. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/accumulate.hpp>
-
-
- - Example -
-
-struct make_string
-{
-    template<typename T, typename State>
-    struct apply
-    {
-        typedef std::string type;
-    };
-
-    template<typename T>
-    std::string operator()(const T& t, const std::string& str) const
-    {
-        return str + boost::lexical_cast<std::string>(t);
-    }
-};
-...
-const vector<int,int> vec(1,2);
-assert(accumulate(vec,std::string(""), make_string()) == "12");
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html deleted file mode 100644 index 864db0d6..00000000 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -fold - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename State,
-    typename F
-    >
-typename result_of::fold<Sequence, State, F>::type fold(
-    Sequence& seq, State const& initial_state, F const& f);
-
-
-

Table 1.32. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence,f(e) must be a valid expression for each - element e in seq -Operation's argument
initial_stateAny - typeInitial state
fA - model of binary Polymorphic - Function Object -Operation's argument
-
-
- - Expression - Semantics -
-
-fold(seq, initial_state, f);
-
-

- Return type: Any type -

-

- Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. -

-
- - Complexity -
-

- Linear, exactly result_of::size<Sequence>::value applications of f. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/fold.hpp>
-
-
- - Example -
-
-struct make_string
-{
-    template<typename T, typename State>
-    struct apply
-    {
-        typedef std::string type;
-    };
-
-    template<typename T>
-    std::string operator()(const T& t, const std::string& str) const
-    {
-        return str + boost::lexical_cast<std::string>(t);
-    }
-};
-...
-const vector<int,int> vec(1,2);
-assert(fold(vec,std::string(""), make_string()) == "12");
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html deleted file mode 100644 index c25aa70a..00000000 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -for_each - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Applies a unary function object to each element of a sequence. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::for_each<Sequence, F>::type for_each(
-    Sequence& seq, F const& f);
-
-
-

Table 1.34. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(e) must be a valid expression for each - element e in seq -Operation's argument
fA - unary function objectOperation's argument
-
-
- - Expression - Semantics -
-
-for_each(seq, f);
-
-

- Return type: void -

-

- Semantics: Calls f(e) for each element e - in seq. -

-
- - Complexity -
-

- Linear, exactly result_of::size<Sequence>::value applications of f. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/for_each.hpp>
-
-
- - Example -
-
-struct increment
-{
-    template<typename T>
-    void operator()(T& t) const
-    {
-        ++t;
-    }
-};
-...
-vector<int,int> vec(1,2);
-for_each(vec, increment());
-assert(vec == make_vector(2,3));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html deleted file mode 100644 index 1bd66d25..00000000 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html deleted file mode 100644 index 07db6a46..00000000 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -accumulate - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of accumulate. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename State,
-    typename F>
-struct accumulate
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.36. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -The sequence to iterate
StateAny - typeThe initial state for the first application of - F -
FA - model of binary Polymorphic - Function Object -The operation to be applied - on forward traversal
-
-
- - Expression - Semantics -
-
-result_of::accumulate<Sequence, State, F>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the result of applying - accumulate to a sequence - of type Sequence, with - an initial state of type State - and binary Polymorphic - Function Object of type F. -

-
- - Complexity -
-

- Linear, exactly result_of::size<Sequence>::value applications of F. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/accumulate.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html deleted file mode 100644 index 64a6c6cd..00000000 --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -fold - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of fold. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename State,
-    typename F>
-struct fold
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.35. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -The sequence to iterate
StateAny - typeThe initial state for the first application of - F -
FA - model of binary Polymorphic - Function Object -The operation to be applied - on forward traversal
-
-
- - Expression - Semantics -
-
-result_of::fold<Sequence, State, F>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the result of applying - fold to a sequence of - type Sequence, with an - initial state of type State - and binary Polymorphic - Function Object of type F. -

-
- - Complexity -
-

- Linear, exactly result_of::size<Sequence>::value applications of F. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/fold.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html deleted file mode 100644 index b48e3184..00000000 --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -for_each - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- A metafunction returning the result type of applying for_each to a sequence. The - return type of for_each is always void. -

-
- - Description -
-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
->
-struct for_each
-{
-    typedef void type;
-};
-
-
-

Table 1.37. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
FAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::for_each<Sequence, F>::type
-
-

- Return type: void. -

-

- Semantics: Returns the return type of - for_each for a sequence of type - Sequence and a unary - function object F. The - return type is always void. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/iteration/for_each.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html deleted file mode 100644 index 6f3a2880..00000000 --- a/doc/html/fusion/algorithms/query.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Query - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- The query algorithms provide support for searching and analyzing sequences. -

-

- - Header -

-
-#include <boost/fusion/algorithm/query.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html deleted file mode 100644 index 112f1f24..00000000 --- a/doc/html/fusion/algorithms/query/functions.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html deleted file mode 100644 index dc3349a4..00000000 --- a/doc/html/fusion/algorithms/query/functions/all.html +++ /dev/null @@ -1,144 +0,0 @@ - - - -all - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-all
-
- - Description -
-

- For a sequence seq and - unary function object f, - all returns true if - f returns true for every - element of seq. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::all<Sequence,F>::type all(
-    Sequence const& seq, F f);
-
-
-

Table 1.39. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq -The sequence - to search
fA - unary function objectThe search predicate
-
-
- - Expression - Semantics -
-
-all(seq, f);
-
-

- Return type: bool -

-

- Semantics: Returns true if and only - if f(e) - evaluates to true for every - element e in seq. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/all.hpp>
-
-
- - Example -
-
-struct odd
-{
-    template<typename T>
-    bool operator()(T t) const
-    {
-        return t % 2;
-    }
-};
-...
-assert(all(make_vector(1,3), odd()));
-assert(!all(make_vector(1,2), odd()));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html deleted file mode 100644 index b9634c87..00000000 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ /dev/null @@ -1,144 +0,0 @@ - - - -any - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-any
-
- - Description -
-

- For a sequence seq and - unary function object f, - any returns true if - f returns true for at - least one element of seq. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::any<Sequence,F>::type any(
-    Sequence const& seq, F f);
-
-
-

Table 1.38. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each element - e in seq -The sequence - to search
fA - unary function objectThe search predicate
-
-
- - Expression - semantics -
-
-any(seq, f);
-
-

- Return type: bool -

-

- Semantics: Returns true if and only - if f(e) - evaluates to true for some - element e in seq. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/any.hpp>
-
-
- - Example -
-
-struct odd
-{
-    template<typename T>
-    bool operator()(T t) const
-    {
-        return t % 2;
-    }
-};
-...
-assert(any(make_vector(1,2), odd()));
-assert(!any(make_vector(2,4), odd()));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html deleted file mode 100644 index e049fa21..00000000 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ /dev/null @@ -1,131 +0,0 @@ - - - -count - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the number of elements of a given type within a sequence. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-typename result_of::count<Sequence, T>::type count(
-    Sequence const& seq, T const& t);
-
-
-

Table 1.43. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq -The - sequence to search
TAny - typeThe type to count
-
-
- - Expression - Semantics -
-
-count(seq, t);
-
-

- Return type: int -

-

- Semantics: Returns the number of elements - of type T and equal to - t in seq. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/count.hpp>
-
-
- - Example -
-
-const vector<double,int,int> vec(1.0,2,3);
-assert(count(vec,2) == 1);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html deleted file mode 100644 index db43103e..00000000 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -count_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the number of elements within a sequence with a type for which - a given unary function object evaluates to true. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::count_if<Sequence, F>::type count_if(
-    Sequence const& seq, F f);
-
-
-

Table 1.44. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each element - e in seq -The sequence - to search
fA - unary function objectThe search predicate
-
-
- - Expression - Semantics -
-
-count_if(seq, f)
-
-

- Return type: int -

-

- Semantics: Returns the number of elements - in seq where f evaluates to true. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/count_if.hpp>
-
-
- - Example -
-
-const vector<int,int,int> vec(1,2,3);
-assert(count_if(vec,odd()) == 2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html deleted file mode 100644 index d1e3edc3..00000000 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -find - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Finds the first element of a given type within a sequence. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-unspecified find(Sequence const& seq);
-
-template<
-    typename Sequence,
-    typename T
-    >
-unspecified find(Sequence& seq);
-
-
-

Table 1.41. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -The sequence to search
TAny - typeThe type to search for
-
-
- - Expression - Semantics -
-
-find<T>(seq)
-
-

- Return type: A model of the same iterator - category as the iterators of seq. -

-

- Semantics: Returns an iterator to the - first element of seq - of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/find.hpp>
-
-
- - Example -
-
-const vector<char,int> vec('a','0');
-assert(*find<int>(vec) == '0');
-assert(find<double>(vec) == end(vec));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html deleted file mode 100644 index dc662903..00000000 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ /dev/null @@ -1,137 +0,0 @@ - - - -find_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Finds the first element within a sequence with a type for which a given - MPL Lambda Expression evaluates to boost::mpl::true_. -

-
- - Description -
-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-unspecified find_if(Sequence const& seq);
-
-template<
-    typename Sequence,
-    typename F
-    >
-unspecified find_if(Sequence& seq);
-
-
-

Table 1.42. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -The sequence to search
FA - unary MPL Lambda ExpressionThe search predicate
-
-
- - Expression - Semantics -
-
-find_if<F>(seq)
-
-

- Return type: An iterator of the same - iterator category as the iterators of seq. -

-

- Semantics: Returns the first element - of seq for which MPL - Lambda Expression F evaluates - to boost::mpl::true_, or end(seq) - if there is no such element. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/find_if.hpp>
-
-
- - Example -
-
-const vector<double,int> vec(1.0,2);
-assert(*find_if<is_integral<mpl::_> >(vec) == 2);
-assert(find_if<is_class<mpl::_> >(vec) == end(vec));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html deleted file mode 100644 index 14a3db19..00000000 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ /dev/null @@ -1,144 +0,0 @@ - - - -none - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- For a sequence seq and - unary function object f, - none returns true if - f returns false for every - element of seq. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::none<Sequence,F>::type none(
-    Sequence const& seq, F f);
-
-
-

Table 1.40. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq -The sequence - to search
fA - unary function objectThe search predicate
-
-
- - Expression - Semantics -
-
-none(seq, f);
-
-

- Return type: bool -

-

- Semantics: Returns true if and only - if f(e) - evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/none.hpp>
-
-
- - Example -
-
-struct odd
-{
-    template<typename T>
-    bool operator()(T t) const
-    {
-        return t % 2;
-    }
-};
-...
-assert(none(make_vector(2,4), odd()));
-assert(!none(make_vector(1,2), odd()));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html deleted file mode 100644 index 544b0b11..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html deleted file mode 100644 index ec66bd45..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -all - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-all
-
- - Description -
-

- A metafunction returning the result type of all. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-struct all
-{
-    typedef bool type;
-};
-
-
-

Table 1.46. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
FA - model of unary Polymorphic - Function Object -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::all<Sequence, F>::type
-
-

- Return type: bool. -

-

- Semantics: Returns the return type of - all - given a sequence of type Sequence - and a unary Polymorphic - Function Object of type F. - The return type is always bool. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/all.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html deleted file mode 100644 index 03d1d144..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/any.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -any - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-any
-
- - Description -
-

- A metafunction returning the result type of any. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-struct any
-{
-    typedef bool type;
-};
-
-
-

Table 1.45. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
FA - model of unary Polymorphic - Function Object -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::any<Sequence, F>::type
-
-

- Return type: bool. -

-

- Semantics: Returns the return type of - any - given a sequence of type Sequence - and a unary Polymorphic - Function Object of type F. - The return type is always bool. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/any.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html deleted file mode 100644 index c3ef2654..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/count.html +++ /dev/null @@ -1,123 +0,0 @@ - - - -count - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A metafunction that returns the result type of count - given the sequence and search types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct count
-{
-    typedef int type;
-};
-
-
-

Table 1.50. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementheading - Description
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::count<T>::type
-
-

- Return type: int. -

-

- Semantics: Returns the return type of - count. The return type is always - int. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/count.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html deleted file mode 100644 index f97f55f5..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html +++ /dev/null @@ -1,122 +0,0 @@ - - - -count_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A metafunction that returns the result type of count_if - given the sequence and predicate types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Pred
-    >
-struct count_if
-{
-    typedef int type;
-};
-
-
-

Table 1.51. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PredA - unary function objectOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::count_if<Sequence, Pred>::type
-
-

- Return type: int. -

-

- Semantics: Returns the return type of - count_if. The return type is - always int. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/count_if.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html deleted file mode 100644 index 697666fe..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/find.html +++ /dev/null @@ -1,123 +0,0 @@ - - - -find - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of find, - given the sequence and search types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct find
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.48. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceModel - of Forward - Sequence -Operation's argument
TAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::find<Sequence, T>::type
-
-

- Return type: A model of the same iterator - category as the iterators of Sequence. -

-

- Semantics: Returns an iterator to the - first element of type T - in Sequence, or result_of::end<Sequence>::type if there is no such element. -

-
- - Complexity -
-

- Linear, at most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/find.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html deleted file mode 100644 index e678e5a2..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -find_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of find_if - given the sequence and predicate types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Pred
-    >
-struct find_if
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.49. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PredA - model of MPL Lambda ExpressionOperation's arguments
-
-
- - Expression - Semantics -
-
-result_of::find_if<Sequence, Pred>::type
-
-

- Return type: A model of the same iterator - category as the iterators of Sequence. -

-

- Semantics: Returns an iterator to the - first element in Sequence - for which Pred evaluates - to true. Returns result_of::end<Sequence>::type if there is no such element. -

-
- - Complexity -
-

- Linear. At most result_of::size<Sequence>::value comparisons. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/find_if.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html deleted file mode 100644 index 525ccc39..00000000 --- a/doc/html/fusion/algorithms/query/metafunctions/none.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -none - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A metafunction returning the result type of none. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-struct none
-{
-    typedef bool type;
-};
-
-
-

Table 1.47. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
FA - model of unary Polymorphic - Function Object -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::none<Sequence, F>::type
-
-

- Return type: bool. -

-

- Semantics: Returns the return type of - none given a sequence of type - Sequence and a unary - Polymorphic - Function Object of type F. - The return type is always bool. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/query/none.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html deleted file mode 100644 index 7d0a1219..00000000 --- a/doc/html/fusion/algorithms/transformation.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -Transformation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- The transformation algorithms create new sequences out of existing sequences - by performing some sort of transformation. In reality the new sequences are - views onto the data in the original sequences. -

-
- - - - - -
[Note]Note

- As the transformation algorithms return views onto their input arguments, - it is important that the lifetime of the input arguments is greater than - the period during which you wish to use the results. -

-

- - Header -

-
-#include <boost/fusion/algorithm/transformation.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html deleted file mode 100644 index 49375ca0..00000000 --- a/doc/html/fusion/algorithms/transformation/functions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html deleted file mode 100644 index 1eb35893..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/clear.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -clear - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- clear returns an empty sequence. -

-
- - Synposis -
-
-template<
-    typename Sequence
-    >
-typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
-
-
-

Table 1.61. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-clear(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Expression Semantics: Returns a sequence - with no elements. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/clear.hpp>
-
-
- - Example -
-
-assert(clear(make_vector(1,2,3)) == make_vector());
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html deleted file mode 100644 index 1016a97e..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ /dev/null @@ -1,167 +0,0 @@ - - - -erase - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence, containing all the elements of the original except - those at a specified iterator, or between two iterators. -

-
- - Synposis -
-
-template<
-    typename Sequence,
-    typename First
-    >
-typename result_of::erase<Sequence const, First>::type erase(
-    Sequence const& seq, First const& it1);
-
-template<
-    typename Sequence,
-    typename First,
-    typename Last
-    >
-typename result_of::erase<Sequence const, First, Last>::type erase(
-    Sequence const& seq, First const& it1, Last const& it2);
-
-
-

Table 1.62. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParametersRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
it1A - model of Forward - Iterator -Iterator into seq -
it2A - model of Forward - Iterator -Iterator into seq - after it1 -
-
-
- - Expression - Semantics -
-
-erase(seq, pos);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq - except the element at pos. -

-
-erase(seq, first, last);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, with - all the elements of seq, - in their original order, except those in the range [first,last). -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/erase.hpp>
-
-
- - Example -
-
-const vector<int, double, char> vec(1, 2.0, 'c');
-assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
-assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html deleted file mode 100644 index b1f8a57a..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -erase_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- For an Associative - Sequence seq, - returns a Forward - Sequence containing all the elements of the original except those - with a given key. -

-
- - Synposis -
-
-template<
-    typename Key,
-    typename Sequence
-    >
-typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
-
-
-

Table 1.63. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Associative - Sequence -Operation's argument
KeyAny - typeKey to erase
-
-
- - Expression - Semantics -
-
-erase_key<Key>(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - except those with key Key. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/erase_key.hpp>
-
-
- - Example -
-
-assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html deleted file mode 100644 index 201b9707..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -filter - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- For a given sequence, filter returns a new sequences containing only - the elements of a specified type. -

-
- - Synopsis -
-
-template<
-    typename T,
-    typename Sequence
-    >
-typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
-
-
-

Table 1.52. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
TAny - typeThe type to retain
-
-
- - Expression - Semantics -
-
-filter<T>(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - all the elements of seq - of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/filter.hpp>
-
-
- - Example -
-
-const vector<int,int,long,long> vec(1,2,3,4);
-assert(filter<int>(vec) == make_vector(1,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html deleted file mode 100644 index d9407e68..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -filter_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- For a given sequence, filter_if returns a new sequences - containing only the elements with types for which a given MPL Lambda - Expression evaluates to boost::mpl::true_. -

-
- - Synopsis -
-
-template<
-    typename Pred,
-    typename Sequence
-    >
-typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
-
-
-

Table 1.53. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
PredA - unary MPL Lambda ExpressionThe predicate to filter - by
-
-
- - Expression - Semantics -
-
-filter_if<Pred>(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - all the elements of seq - with types for which Pred - evaluates to boost::mpl::true_. The order of the retained elements - is the same as in the original sequence. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/filter_if.hpp>
-
-
- - Example -
-
-const vector<int,int,double,double> vec(1,2,3.0,4.0);
-assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html deleted file mode 100644 index 5faf5c17..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -insert - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence with all the elements of the original, an a new - element inserted the position described by a given iterator. -

-
- - Synposis -
-
-template<
-    typename Sequence,
-    typename Pos,
-    typename T
-    >
-unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
-
-
-

Table 1.64. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
posA - model of Forward - Iterator -The position to insert at
tAny - typeThe value to insert
-
-
- - Expression - Semantics -
-
-insert(seq, p, t);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, and a new element with the type and value of - t inserted at iterator - pos. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/insert.hpp>
-
-
- - Example -
-
-const vector<int,int> vec(1,2);
-assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html deleted file mode 100644 index 6d3d7982..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ /dev/null @@ -1,145 +0,0 @@ - - - -insert_range - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence with another sequence inserted at a specified - iterator. -

-
- - Synposis -
-
-template<
-    typename Sequence,
-    typename Pos,
-    typename Range
-    >
-typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
-    Sequence const& seq, Pos const& pos, Range const& range);
-
-
-

Table 1.65. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
posA - model of Forward - Iterator -The position to insert at
rangeA - model of Forward - Sequence -Range to insert
-
-
- - Expression - Semantics -
-
-insert(seq, pos, range);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - and the elements of range - inserted at iterator pos. - All elements retaining their ordering from the orignal sequences. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/insert_range.hpp>
-
-
- - Example -
-
-const vector<int,int> vec(1,2);
-assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html deleted file mode 100644 index c2d3062d..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -join - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Takes 2 sequences and returns a sequence containing the elements of the - first followed by the elements of the second. -

-
- - Synopsis -
-
-template<
-    typename LhSequence,
-    typename RhSequence>
-typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
-
-
-

Table 1.66. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
lhsA - model of Forward - Sequence -Operation's argument
rhsA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-join(lhs, rhs);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - all the elements of lhs - followed by all the elements of rhs. - The order of th elements is preserved. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/join.hpp>
-
-
- - Example -
-
-vector<int,char> v1(1, 'a');
-vector<int,char> v2(2, 'b');
-assert(join(v1, v2) == make_vector(1,'a',2,'b'));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html deleted file mode 100644 index e8b1a026..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ /dev/null @@ -1,119 +0,0 @@ - - - -pop_back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence, with the last element of the original removed. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
-
-
-

Table 1.68. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-pop_back(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence containing - all the elements of seq, - except the last element. The elements in the new sequence are in the - same order as they were in seq. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/pop_back.hpp>
-
-
- - Example -
-
-assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html deleted file mode 100644 index 96bb3e14..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ /dev/null @@ -1,119 +0,0 @@ - - - -pop_front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence, with the first element of the original removed. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
-
-
-

Table 1.69. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-pop_front(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence containing - all the elements of seq, - except the first element. The elements in the new sequence are in the - same order as they were in seq. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/pop_front.hpp>
-
-
- - Example -
-
-assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html deleted file mode 100644 index 7a0b631c..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -push_back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence with an element added at the end. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-typename result_of::push_back<Sequence, T>::type push_back(
-    Sequence const& seq, T const& t);
-
-
-

Table 1.70. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
tAny - typeThe value to add to the end
-
-
- - Expression - Semantics -
-
-push_back(seq, t);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the end. The elements are in the same order as they were in seq. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/push_back.hpp>
-
-
- - Example -
-
-assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html deleted file mode 100644 index eaa4eeaa..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -push_front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence with an element added at the beginning. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-typename result_of::push_front<Sequence, T>::type push_front(
-    Sequence const& seq, T const& t);
-
-
-

Table 1.71. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
tAny - typeThe value to add to the beginning
-
-
- - Expression - Semantics -
-
-push_back(seq, t);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the beginning. The elements are in the same order as they were in - seq. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/push_front.hpp>
-
-
- - Example -
-
-assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html deleted file mode 100644 index d775ac0e..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -remove - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence, with all the elements of the original sequence, - except those of a given type. -

-
- - Synopsis -
-
-template<
-    typename T,
-    typename Sequence
-    >
-typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
-
-
-

Table 1.58. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
TAny - typeType to remove
-
-
- - Expression - Semantics -
-
-remove<T>(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/remove.hpp>
-
-
- - Example -
-
-const vector<int,double> vec(1,2.0);
-assert(remove<double>(vec) == make_vector(1));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html deleted file mode 100644 index d1c92cd2..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -remove_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence, containing all the elements of the original except - those where a given unary function object evaluates to true. -

-
- - Synopsis -
-
-template<
-    typename Pred,
-    typename Sequence
-    >
-typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
-
-
-

Table 1.59. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
PredA - model of unary MPL Lambda ExpressionRemoval predicate
-
-
- - Expression - Semantics -
-
-remove_if<Pred>(seq);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq). -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/remove_if.hpp>
-
-
- - Example -
-
-const vector<int,double> vec(1,2.0);
-assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html deleted file mode 100644 index 5d950dca..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -replace - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Replaces each value within a sequence of a given type and value with - a new value. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-typename result_of::replace<Sequence const, T>::type replace(
-    Sequence const& seq, T const& old_value, T const& new_value);
-
-
-

Table 1.56. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T -Operation's - argument
old_valueAny - typeValue to replace
new_valueAny - typeReplacement value
-
-
- - Expression - Semantics -
-
-replace(seq, old_value, new_value);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence with - all the values of seq - with new_value assigned - to elements with the same type and equal to old_value. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/replace.hpp>
-
-
- - Example -
-
-assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html deleted file mode 100644 index 17fdf850..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ /dev/null @@ -1,150 +0,0 @@ - - - -replace_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Replaces each element of a given sequence for which an unary function - object evaluates to true - replaced with a new value. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F,
-    typename T>
-typename result_of::replace_if<Sequence const, F, T>::type replace_if(
-    Sequence const& seq, F f, T const& new_value);
-
-
-

Table 1.57. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
fA - function object for which f(e) is a valid expression, convertible - to bool, for each element - e in seq -Operation's argument
new_valueAny - typeReplacement value
-
-
- - Expression - Semantics -
-
-replace_if(seq, f, new_value);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence with - all the elements of seq, - with new_value assigned - to each element for which f - evaluates to true. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/replace_if.hpp>
-
-
- - Example -
-
-struct odd
-{
-    template<typename T>
-    bool operator()(T t) const
-    {
-        return t % 2;
-    }
-};
-...
-assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html deleted file mode 100644 index e626a741..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ /dev/null @@ -1,118 +0,0 @@ - - - -reverse - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a new sequence with the elements of the original in reverse order. -

-
- - Synposis -
-
-template<
-    typename Sequence
-    >
-typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
-
-
-

Table 1.60. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Bidirectional - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-reverse(seq);
-
-

- Return type: A model of Bidirectional - Sequence. -

-

- Semantics: Returns a new sequence containing - all the elements of seq - in reverse order. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/reverse.hpp>
-
-
- - Example -
-
-assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html deleted file mode 100644 index d16be2fc..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ /dev/null @@ -1,225 +0,0 @@ - - - -transform - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- For a sequence seq and - Polymorphic - Function Object F, - transform returns a new - sequence with elements created by applying F - to each element of seq. -

-
- - Unary - version synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-typename result_of::transform<Sequence const, F>::type transform(
-    Sequence const& seq, F f);
-
-
-

Table 1.54. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqA - model of Forward - Sequence -Operation's argument
fA - model of unary Polymorphic - Function Object where f(e) is a valid expression for each element - e of seq -Transformation - function
-
-
- - Expression - Semantics -
-
-transform(seq, f);
-
-

- Return type: A model of Forward - Sequence -

-

- Semantics: Returns a new sequence, containing - the return values of f(e) for each element e - within seq. -

-
- - Binary - version synopsis -
-
-template<
-    typename Sequence1,
-    typename Sequence2,
-    typename F
-    >
-typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform(
-    Sequence1 const& seq1, Sequence2 const& seq2, F f);
-
-
-

Table 1.55. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seq1A - model of Forward - Sequence -Operation's argument
seq2A - model of Forward - Sequence -Operation's argument
fA - model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair - of elements e1 and - e2 of seq1 and seq2 - respectivelyTransformation function
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 - within seq1 and seq2 respectively. -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/transform.hpp>
-
-
- - Example -
-
-struct triple
-{
-    template<typename T>
-    struct apply
-    {
-        typedef T type;
-    };
-
-    template<typename T>
-    T operator()(T t) const
-    {
-        return t * 3;
-    };
-};
-...
-assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html deleted file mode 100644 index fe9d27f5..00000000 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -zip - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-zip
-
- - Description -
-

- Zips sequences together to form a single sequence, whos members are tuples - of the members of the component sequences. -

-
- - Synopsis -
-
-template<
-    typename Sequence1,
-    typename Sequence2,
-    ...
-    typename SequenceN
-    >
-typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
-zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
-
-
-

Table 1.67. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-seq1 to seqN -Each sequence - is a model of Forward - Sequence.Operation's argument
-
-
- - Expression - Semantics -
-
-zip(seq1, seq2, ... seqN);
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - tuples of elements from sequences seq1 - to seqN. For example, - applying zip to tuples (1, 2, 3) and - ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c')) -

-
- - Complexity -
-

- Constant. Returns a view which is lazily evaluated. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/zip.hpp>
-
-
- - Example -
-
-vector<int,char> v1(1, 'a');
-vector<int,char> v2(2, 'b');
-assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html deleted file mode 100644 index d9dbdf55..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html deleted file mode 100644 index b0e7adf0..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ /dev/null @@ -1,110 +0,0 @@ - - - -clear - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of clear, given the input sequence - type. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-struct clear
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.80. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::clear<Sequence>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns an empty sequence. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/clear.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html deleted file mode 100644 index 21f4d19d..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html +++ /dev/null @@ -1,148 +0,0 @@ - - - -erase - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Returns the result type of erase, given the input sequence - and range delimiting iterator types. -

-
- - Description -
-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename It1,
-    typename It2 = unspecified>
-struct erase
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.81. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
It1A - model of Forward - Iterator -Operation's argument
It2A - model of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::erase<Sequence, It1>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence with - the element at It1 removed. -

-
-result_of::erase<Sequence, It1, It2>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a new sequence with - the elements between It1 - and It2 removed. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/erase.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html deleted file mode 100644 index 967dbdf3..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -erase_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of erase_key, given the sequence - and key types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Key
-    >
-struct erase_key
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.82. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Associative - Sequence -Operation's argument
KeyAny - typeKey type
-
-
- - Expression - Semantics -
-
-result_of::erase_key<Sequence, Key>::type
-
-

- Return type: A model of Associative - Sequence. -

-

- Semantics: Returns a sequence with the - elements of Sequence, - except those with key Key. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/erase_key.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html deleted file mode 100644 index a35df094..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -filter - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of filter given the sequence type - and type to retain. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct filter
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.72. Parameter

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeType to retain
-
-
- - Expression - Semantics -
-
-result_of::filter<Sequence, T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - the elements of Sequence - that are of type T. Equivalent - to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/filter.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html deleted file mode 100644 index 14ed41df..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -filter_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of filter_if given the sequence - and unary MPL Lambda Expression predicate type. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Pred
-    >
-struct filter_if
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.73. Parameter

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PredA - unary MPL Lambda ExpressionType to retain
-
-
- - Expression - Semantics -
-
-result_of::filter_if<Sequence, Pred>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::true_. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/filter_if.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html deleted file mode 100644 index 93332968..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html +++ /dev/null @@ -1,135 +0,0 @@ - - - -insert - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of insert, given the sequence, - position iterator and insertion types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Position,
-    typename T
-    >
-struct insert
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.83. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PositionA - model of Forward - Iterator -Operation's argument
TAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::insert<Sequence, Position, T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with an - element of type T inserted - at position Position - in Sequence. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/insert.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html deleted file mode 100644 index 4f22957d..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -insert_range - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of insert_range, given the input - sequence, position iterator and insertion range types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Position,
-    typename Range
-    >
-struct insert_range
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.84. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PositionA - model of Forward - Iterator -Operation's argument
RangeA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::insert_range<Sequence, Position, Range>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with the - elements of Range inserted - at position Position - into Sequence. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/insert_range.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html deleted file mode 100644 index 93aafbbf..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html +++ /dev/null @@ -1,92 +0,0 @@ - - - -join - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result of joining 2 sequences, given the sequence types. -

-
- - Synopsis -
-
-template<
-    typename LhSequence,
-    typename RhSequence
-    >
-struct join
-{
-    typedef unspecified type;
-};
-
-
- - Expression - Semantics -
-
-result_of::join<LhSequence, RhSequence>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - the elements of LhSequence - followed by the elements of RhSequence. - The order of the elements in the 2 sequences is preserved. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/join.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html deleted file mode 100644 index 694e30d2..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -pop_back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of pop_back, given the input sequence - type. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-struct pop_back
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.85. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::pop_back<Sequence>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with all - the elements of Sequence - except the last element. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/tranformation/pop_back.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html deleted file mode 100644 index ccd579a6..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -pop_front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of pop_front, given the input sequence - type. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-struct pop_front
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.86. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::pop_front<Sequence>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with all - the elements of Sequence - except the first element. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/pop_front.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html deleted file mode 100644 index 1ee62780..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -push_back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of push_back, given the types of - the input sequence and element to push. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct push_back
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.87. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::push_back<Sequence, T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with the - elements of Sequence - and an element of type T - added to the end. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/push_back.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html deleted file mode 100644 index 59866717..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -push_front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of push_front, given the types - of the input sequence and element to push. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct push_front
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.88. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeOperation's argument
-
-
- - Expression - Semantics -
-
-result_of::push_front<Sequence, T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with the - elements of Sequence - and an element of type T - added to the beginning. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/push_front.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html deleted file mode 100644 index c1991050..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -remove - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of remove, given the sequence and - removal types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct remove
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.77. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeRemove elements of this type
-
-
- - Expression - Semantics -
-
-result_of::remove<Sequence, T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - the elements of Sequence - not of type T. Equivalent - to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/remove.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html deleted file mode 100644 index 49e8d017..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html +++ /dev/null @@ -1,127 +0,0 @@ - - - -remove_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of remove_if, given the input sequence - and unary MPL Lambda Expression predicate types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename Pred
-    >
-struct remove_if
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.78. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
PredA - model of unary MPL Lambda ExpressionRemove elements - which evaluate to boost::mpl::true_ -
-
-
- - Expression - Semantics -
-
-result_of::remove_if<Sequence, Pred>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::false_. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/remove_if.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html deleted file mode 100644 index 7fb71c43..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html +++ /dev/null @@ -1,123 +0,0 @@ - - - -replace - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of replace, given the types of - the input sequence and element to replace. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename T
-    >
-struct replace
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.75. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
TAny - typeThe type of the search and replacement objects
-
-
- - Expression - Semantics -
-
-result_of::replace<Sequence,T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns the return type of - replace. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/replace.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html deleted file mode 100644 index a560eb78..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -replace_if - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of replace_if, given the types - of the sequence, Polymorphic - Function Object predicate and replacement object. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F,
-    typename T>
-struct replace_if
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.76. Parameters

- ----- - - - - - - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence -Operation's argument
FA - model of unary Polymorphic - Function Object -Replacement predicate
TAny - typeThe type of the replacement object
-
-
- - Expression - Semantics -
-
-result_of::replace_if<Sequence,F,T>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns the return type of - replace_if. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/replace_if.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html deleted file mode 100644 index ec6c3a0c..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -reverse - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of reverse, given the input sequence - type. -

-
- - Synopsis -
-
-template<
-    typename Sequence
-    >
-struct reverse
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.79. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Bidirectional - Sequence -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::reverse<Sequence>::type
-
-

- Return type: A model of Bidirectional - Sequence. -

-

- Semantics: Returns a sequence with the - elements in the reverse order to Sequence. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/reverse.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html deleted file mode 100644 index 422f821c..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html +++ /dev/null @@ -1,127 +0,0 @@ - - - -transform - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result of type transform, given the sequence - and Polymorphic - Function Object types. -

-
- - Synopsis -
-
-template<
-    typename Sequence,
-    typename F
-    >
-struct transform
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.74. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - model of Forward - Sequence Operation's argument
FA - model of unary Polymorphic - Function Object -Transformation function object
-
-
- - Expression - Semantics -
-
-result_of::transform<Sequence, F>::type
-
-

- Return type: A model of Forward - Sequence. -

-

- Semantics: Returns a sequence with values - F::apply<E>::type for each element type E in Sequence. -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/transform.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html deleted file mode 100644 index cd4daa0c..00000000 --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html +++ /dev/null @@ -1,95 +0,0 @@ - - - -zip - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-zip
-
- - Description -
-

- Zips sequences together to form a single sequence, whos members are tuples - of the members of the component sequences. -

-
- - Synopsis -
-
-template<
-    typename Sequence1,
-    typename Sequence2,
-    ...
-    typename SequenceN
-    >
-struct zip
-{
-    typedef unspecified type;
-};
-
-
- - Expression - Semantics -
-
-result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
-
-

- Return type: A model of the most restrictive - traversal category of sequences Sequence1 - to SequenceN. -

-

- Semantics: Return a sequence containing - tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, 3) and ('a', 'b', 'c') would - return ((1, 'a'),(2, 'b'),(3, 'c')) -

-
- - Complexity -
-

- Constant. -

-
- - Header -
-
-#include <boost/fusion/algorithm/transformation/zip.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html deleted file mode 100644 index 71050df0..00000000 --- a/doc/html/fusion/change_log.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -Change log - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- This section summarizes significant changes to the Fusion library. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html deleted file mode 100644 index 56380a30..00000000 --- a/doc/html/fusion/extension.html +++ /dev/null @@ -1,534 +0,0 @@ - - - -Extension - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- The Fusion library is designed to be extensible, new sequences types can easily - be added. In fact, the library support for std::pair, - boost::array and MPL - sequences is entirely provided using the extension mechanism. -

-

- The process for adding a new sequence type to Fusion is: -

-
    -
  1. - Enable the tag dispatching - mechanism used by Fusion for your sequence type -
  2. -
  3. - Design an iterator type for the sequence -
  4. -
  5. - Provide specialized behaviour for the intrinsic operations of the new Fusion - sequence -
  6. -
-

- - Our example -

-

- In order to illustrate enabling a new sequence type for use with Fusion, we - are going to use the type: -

-
-namespace example
-{
-    struct example_struct
-    {
-        std::string name;
-        int age;
-        example_struct(
-            const std::string& n,
-            int a)
-            : name(n), age(a)
-        {}
-    };
-}
-
-

- We are going to pretend that this type has been provided by a 3rd party library, - and therefore cannot be modified. We shall work through all the necessary steps - to enable example_struct to - serve as an Associative - Sequence as described in the Quick - Start guide. -

-

- - Enabling Tag Dispatching -

-

- The Fusion extensibility mechanism uses tag - dispatching to call the correct code for a given sequence - type. In order to exploit the tag dispatching mechanism we must first declare - a new tag type for the mechanism to use. For example: -

-
-namespace example {
-    struct example_sequence_tag; // Only definition needed
-}
-
-

- Next we need to enable the traits::tag_of - metafunction to return our newly chosen tag type for operations involving our - sequence. This is done by specializing traits::tag_of - for our sequence type. -

-
-#include <boost/fusion/support/tag_of_fwd.hpp>
-
-namespace boost { namespace fusion { namespace traits {        
-    template<>
-    struct tag_of<example_struct>
-    {
-        typedef example::example_sequence_tag type;
-    };
-}}}
-
-

- traits::tag_of also has a second template argument, - that can be used in conjuction with boost::enable_if - to provide tag support for groups of related types. This feature is not necessary - for our sequence, but for an example see the code in: -

-
-#include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>
-
-

- - Designing a - suitable iterator -

-

- We need an iterator to describe positions, and provide access to the data within - our sequence. As it is straightforward to do, we are going to provide a random - access iterator in our example. -

-

- We will use a simple design, in which the 2 members of example_struct - are given numbered indices, 0 for name - and 1 for age respectively. -

-
-template<typename Struct, int Pos>
-struct example_struct_iterator
-    : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
-{
-    BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
-    typedef Struct struct_type;
-    typedef boost::mpl::int_<Pos> index;
-    typedef boost::fusion::random_access_traversal_tag category;
-
-    example_struct_iterator(Struct& str)
-        : struct_(str) {}
-
-    Struct& struct_;
-};
-
-

- A quick summary of the details of our iterator: -

-
    -
  1. - The iterator is parameterized by the type it is iterating over, and the index - of the current element. -
  2. -
  3. - The typedefs struct_type - and index provide convenient - access to information we will need later in the implementation. -
  4. -
  5. - The typedef category allows - the traits::category_of - metafunction to establish the traversal category of the iterator. -
  6. -
  7. - The constructor stores a reference to the example_struct - being iterated over. -
  8. -
-

- We also need to enable tag - dispatching for our iterator type, with another specialization - of traits::tag_of. -

-

- In isolation, the iterator implementation is pretty dry. Things should become - clearer as we add features to our implementation. -

-

- - A first - couple of instructive features -

-

- To start with, we will get the result_of::value_of metafunction working. To - do this, we provide a specialization of the boost::fusion::extension::value_of_impl - template for our iterator's tag type. -

-
-template<>
-struct value_of_impl<example::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply;
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 0> >
-    {
-        typedef std::string type;
-    };
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 1> >
-    {
-        typedef int type;
-    };
-};
-
-

- The implementation itself is pretty simple, it just uses 2 partial specializations - to provide the type of the 2 different members of example_struct, - based on the index of the iterator. -

-

- To understand how value_of_impl - is used by the library we will look at the implementation of value_of: -

-
-template <typename Iterator>
-struct value_of
-    : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
-        template apply<Iterator>
-{};
-
-

- So value_of - uses tag dispatching - to select an MPL Metafunction Class to provide its functionality. You will - notice this pattern throughout the implementation of Fusion. -

-

- Ok, lets enable dereferencing of our iterator. In this case we must provide - a suitable specialization of deref_impl. -

-
-template<>
-struct deref_impl<example::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply;
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 0> >
-    {
-        typedef typename mpl::if_<
-            is_const<Struct>, std::string const&, std::string&>::type type;
-
-        static type
-        call(example::example_struct_iterator<Struct, 0> const& it)
-        {
-            return it.struct_.name;
-        }
-    };
-
-    template<typename Struct>
-    struct apply<example::example_struct_iterator<Struct, 1> >
-    {
-        typedef typename mpl::if_<
-            is_const<Struct>, int const&, int&>::type type;
-
-        static type
-        call(example::example_struct_iterator<Struct, 1> const& it)
-        {
-                return it.struct_.age;
-            }
-        };
-    };
-}
-
-

- The use of deref_impl is very - similar to that of value_of_impl, - but it also provides some runtime functionality this time via the call static member function. To see how - deref_impl is used, lets have - a look at the implementation of deref: -

-
-namespace result_of
-{
-    template <typename Iterator>
-    struct deref
-        : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
-            template apply<Iterator>
-    {};
-}
-
-template <typename Iterator>
-typename result_of::deref<Iterator>::type
-deref(Iterator const& i)
-{
-    typedef result_of::deref<Iterator> deref_meta;
-    return deref_meta::call(i);
-}
-
-

- So again result_of::deref uses tag - dispatching in exactly the same way as the value_of implementation. The runtime - functionality used by deref is provided by the call static function of the selected MPL - Metafunction Class. -

-

- The actual implementation of deref_impl - is slightly more complex than that of value_of_impl. - We also need to implement the call - function, which returns a reference to the appropriate member of the underlying - sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence - is const. -

-
- - - - - -
[Note]Note

- Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant - concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. -

-

- - Implementing - the remaining iterator functionality -

-

- Ok, now we have seen the way value_of and deref work, everything else will work - in pretty much the same way. Lets start with forward iteration, by providing - a next_impl: -

-
-template<>
-struct next_impl<example::example_struct_iterator_tag>
-{
-    template<typename Iterator>
-    struct apply
-    {
-        typedef typename Iterator::struct_type struct_type;
-        typedef typename Iterator::index index;
-        typedef example::example_struct_iterator<struct_type, index::value + 1> type;
-
-        static type
-        call(Iterator const& i)
-        {
-             return type(i.struct_);
-        }
-    };
-};
-
-

- This should be very familiar from our deref_impl - implementation, we will be using this approach again and again now. Our design - is simply to increment the index - counter to move on to the next element. The various other iterator manipulations - we need to perform will all just involve simple calculations with the index variables. -

-

- We also need to provide a suitable equal_to_impl - so that iterators can be correctly compared. A Bidirectional - Iterator will also need an implementation of prior_impl. - For a Random - Access Iterator distance_impl - and advance_impl also need - to be provided in order to satisfy the necessary complexity guarantees. As - our iterator is a Random - Access Iterator we will have to implement all of these functions. -

-

- Full implementations of prior_impl, - advance_impl, distance_impl and equal_to_impl - are provided in the example code. -

-

- - Implementing - the intrinsic functions of the sequence -

-

- In order that Fusion can correctly identify our sequence as a Fusion sequence, - we need to enable is_sequence - for our sequence type. As usual we just create an impl - type specialized for our sequence tag: -

-
-template<>
-struct is_sequence_impl<example::example_sequence_tag>
-{
-    template<typename T>
-    struct apply : mpl::true_ {};
-};
-
-

- We've some similar formalities to complete, providing category_of_impl - so Fusion can correctly identify our sequence type, and is_view_impl - so Fusion can correctly identify our sequence as not being a View - type. Implementations are provide in the example code. -

-

- Now we've completed some formalities, on to more interesting features. Lets - get begin working so that we can get an - iterator to start accessing the data in our sequence. -

-
-template<>
-struct begin_impl<example::example_sequence_tag>
-{
-    template<typename Sequence>
-    struct apply
-    {
-        typedef example::example_struct_iterator<Sequence, 0> type;
-
-        static type
-        call(Sequence& seq)
-        {
-            return type(seq);
-        }
-    };
-};
-
-

- The implementation uses the same ideas we have applied throughout, in this - case we are just creating one of the iterators we developed earlier, pointing - to the first element in the sequence. The implementation of end is very similar, and is provided - in the example code. -

-

- For our Random - Access Sequence we will also need to implement size_impl, - value_at_impl and at_impl. -

-

- - Enabling - our type as an associative container -

-

- In order for example_struct - to serve as an associative container, we need to enable 3 lookup features, - at_key, value_at_key and has_key. We also need to provide an - implementation of the is_associative - trait so that our sequence can be correctly identified as an associative container. -

-

- To implement at_key_impl we - need to associate the fields::age and - fields::age types described in the Quick - Start guide with the appropriate members of example_struct. - Our implementation is as follows: -

-
-template<>
-struct at_key_impl<example::example_sequence_tag>
-{
-    template<typename Sequence, typename Key>
-    struct apply;
-
-    template<typename Sequence>
-    struct apply<Sequence, fields::name>
-    {
-        typedef typename mpl::if_<
-            is_const<Sequence>,
-            std::string const&,
-            std::string&>::type type;
-
-        static type
-        call(Sequence& seq)
-        {
-            return seq.name;
-        };
-    };
-
-    template<typename Sequence>
-    struct apply<Sequence, fields::age>
-    {
-        typedef typename mpl::if_<
-            is_const<Sequence>,
-            int const&,
-            int&>::type type;
-
-        static type
-        call(Sequence& seq)
-        {
-            return seq.age;
-        };
-    };
-};
-
-

- Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the - members by index or position, we are now selecting them using the types fields::name and fields::age. The - implementations of value_at_key_impl - and has_key_impl are equally - straightforward, and are provided in the example code, along with an implementation - of is_associative_impl. -

-

- - Summary -

-

- We've now worked through the entire process for adding a new random access - sequence and we've also enabled our type to serve as an associative container. - The implementation was slightly longwinded, but followed a simple repeating - pattern. -

-

- The support for std::pair, MPL - sequences, and boost::array all use the same approach, and provide - additional examples of the approach for a variety of types. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html deleted file mode 100644 index 9feadd71..00000000 --- a/doc/html/fusion/introduction.html +++ /dev/null @@ -1,139 +0,0 @@ - - - -Introduction - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, - etc., over C++ is the ability to have heterogeneous containers that can hold - arbitrary element types. All the containers in the standard library can only - hold a specific type. A vector<int> - can only hold ints. A list<X> can - only hold elements of type X, - and so on. -

-

- True, you can use inheritance to make the containers hold different types, - related through subclassing. However, you have to hold the objects through - a pointer or smart reference of some sort. Doing this, you'll have to rely - on virtual functions to provide polymorphic behavior since the actual type - is erased as soon as you store a pointer to a derived class to a pointer to - its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class X, float, - etc. Oh sure you can use something like Boost.Any - to hold arbitrary types, but then you pay more in terms of runtime costs and - due to the fact that you practically erased all type information, you'll have - to perform dangerous casts to get back the original type. -

-

- The Boost.Tuple - library written by Jaakko - Jarvi provides heterogeneous containers in C++. The tuple - is a basic data structure that can hold heterogeneous types. It's a good first - step, but it's not complete. What's missing are the algorithms. It's nice that - we can store and retrieve data to and from tuples, pass them around as arguments - and return types. As it is, the Boost.Tuple - facility is already very useful. Yet, as soon as you use it more often, usage - patterns emerge. Eventually, you collect these patterns into algorithm libraries. -

-

- Hmmm, kinda reminds us of STL right? Right! Can you imagine how it would be - like if you used STL without the algorithms? Everyone will have to reinvent - their own algorithm wheels. -

-

- Fusion is a library and a framework similar to both STL - and the boost MPL. - The structure is modeled after MPL, - which is modeled after STL. - It is named "fusion" because the library is reminiscent of the "fusion" - of compile time meta-programming with runtime programming. The library inherently - has some interesting flavors and characteristics of both MPL - and STL. - It lives in the twilight zone between compile time meta-programming and run - time programming. STL - containers work on values. MPL containers work on types. Fusion containers - work on both types and values. -

-

- Unlike MPL, Fusion - algorithms are lazy and non sequence-type preserving. What does that mean? - It means that when you operate on a sequence through a Fusion algorithm that - returns a sequence, the sequence returned may not be of the same class as the - original. This is by design. Runtime efficiency is given a high priority. Like - MPL, and unlike - STL, - fusion algorithms are functional in nature such that algorithms are non mutating - (no side effects). However, due to the high cost of returning full sequences - such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a - reference to the original sequence plus the transform function. Iteration over - the transform_view - will apply the transform function over the sequence elements on demand. This - lazy evaluation scheme allows us to chain as many algorithms - as we want without incurring a high runtime penalty. -

-

- The lazy evaluation scheme where algorithms return views - allows operations such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions - that were once sequence specific and need to be implemented N times over N - different sequences are now implemented only once. -

-

- Fusion provides full round compatibility with MPL. - Fusion sequences are fully conforming MPL - sequences and MPL - sequences are fully compatible with Fusion. You can work with Fusion sequences - on MPL if you - wish to work solely on types. In MPL, - Fusion sequences follow MPL's - sequence-type preserving semantics (i.e. algorithms preserve the original sequence - type. e.g. transforming a vector returns a vector). You can also convert from - an MPL sequence - to a Fusion sequence. For example, there are times when it is convenient to - work solely on MPL - using pure MPL - sequences, then, convert them to Fusion sequences as a final step before actual - instantiation of real runtime objects with data. You have the best of both - worlds. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html deleted file mode 100644 index b08a8243..00000000 --- a/doc/html/fusion/iterators.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Iterators - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Like MPL and - STL, - iterators are a fundamental concept in Fusion. As with MPL - and STL - iterators describe positions, and provide access to data within an underlying - Sequence. -

-

- - Header -

-
-#include <boost/fusion/iterator.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html deleted file mode 100644 index 303291b2..00000000 --- a/doc/html/fusion/iterators/concepts.html +++ /dev/null @@ -1,60 +0,0 @@ - - - -Concepts - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion iterators are divided into different traversal categories. Forward - Iterator is the most basic concept. Bidirectional - Iterator is a refinement of Forward - Iterator. Random - Access Iterator is a refinement of Bidirectional - Iterator. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html deleted file mode 100644 index 7e34fa35..00000000 --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html +++ /dev/null @@ -1,230 +0,0 @@ - - - -Bidirectional - Iterator - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Bidirectional Iterator traverses a Sequence - allowing movement in either direction one element at a time. -

-
-

Notation

-
-
i
-
- A Bidirectional Iterator -
-
I
-
- A Bidirectional Iterator type -
-
M
-
- An MPL - integral constant -
-
N
-
- An integral constant -
-
-
-
- - Refinement - of -
-

- Forward Iterator -

-
- - Expression - requirements -
-

- In addition to the requirements defined in Forward - Iterator, the following expressions must be valid: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeRuntime - Complexity
next(i)Bidirectional - IteratorConstant
prior(i)Bidirectional - IteratorConstant
advance_c<N>(i)Bidirectional - IteratorConstant
advance<M>(i)Bidirectional - IteratorConstant
-
- - Meta - Expressions -
-
---- - - - - - - - - -
ExpressionCompile Time Complexity
result_of::prior<I>::typeAmortized constant - time
-
- - Expression - Semantics -
-

- The semantics of an expression are defined only where they differ from, - or are not defined in Forward - Iterator -

-
---- - - - - - - - - -
ExpressionSemantics
prior(i)An - iterator to the element preceding i -
-
- - Invariants -
-

- In addition to the invariants of Forward - Iterator, the following invariants always hold: -

-
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html deleted file mode 100644 index 7215a3ce..00000000 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ /dev/null @@ -1,338 +0,0 @@ - - - -Forward - Iterator - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Forward Iterator traverses a Sequence - allowing movement in only one direction through it's elements, one element - at a time. -

-
-

Notation

-
-
i, - j
-
- Forward Iterators -
-
I, - J
-
- Forward Iterator types -
-
M
-
- An MPL - integral constant -
-
N
-
- An integral constant -
-
-
-
- - Expression - requirements -
-

- A type models Forward Iterator if, in addition to being CopyConstructable, - the following expressions are valid: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeRuntime - Complexity
next(i)Forward IteratorConstant
i == jConvertible to - boolConstant
i != jConvertible to - boolConstant
advance_c<N>(i)Forward IteratorConstant
advance<M>(i)Forward IteratorConstant
distance(i, j)result_of::distance<I, J>::typeConstant
deref(i)result_of::deref<I>::typeConstant
*iresult_of::deref<I>::typeConstant
-
- - Meta - Expressions -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::next<I>::typeAmortized constant - time
result_of::equal_to<I, J>::typeAmortized constant - time
result_of::advance_c<I, N>::typeLinear
result_of::advance<I ,M>::typeLinear
result_of::distance<I ,J>::typeLinear
result_of::deref<I>::typeAmortized constant - time
result_of::value_of<I>::typeAmortized constant - time
-
- - Expression - Semantics -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
next(i)An - iterator to the element following i -
i == jIterator equality - comparison
i != jIterator inequality - comparison
advance_c<N>(i)An - iterator n elements after i - in the sequence
advance<M>(i)Equivalent - to advance_c<M::value>(i) -
distance(i, j)The - number of elements between i - and j -
deref(i)The - element at positioni -
*iEquivalent - to deref(i) -
-
- - Invariants -
-

- The following invariants always hold: -

-
    -
  • !(i == j) == (i != j)
  • -
  • next(i) == advance_c<1>(i)
  • -
  • distance(i, advance_c<N>(i)) == N
  • -
  • - Using next to traverse the - sequence will never return to a previously seen position -
  • -
  • -deref(i) - is equivalent to *i -
  • -
  • - If i == j then *i is equivalent to *j -
  • -
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html deleted file mode 100644 index 616ff4d8..00000000 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ /dev/null @@ -1,206 +0,0 @@ - - - -Random - Access Iterator - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Random Access Iterator traverses a Sequence - moving in either direction, permitting efficient arbitrary distance movements - back and forward through the sequence. -

-
-

Notation

-
-
i, - j
-
- Random Access Iterators -
-
I, - J
-
- Random Access Iterator types -
-
M
-
- An MPL - integral constant -
-
N
-
- An integral constant -
-
-
-
- - Refinement - of -
-

- Bidirectional - Iterator -

-
- - Expression - requirements -
-

- In addition to the requirements defined in Bidirectional - Iterator, the following expressions must be valid: -

-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeRuntime - Complexity
next(i)Random - Access IteratorConstant
prior(i)Random - Access IteratorConstant
advance_c<N>(i)Random - Access IteratorConstant
advance<M>(i)Random - Access IteratorConstant
-
- - Meta - Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::advance_c<I, N>::typeAmortized constant - time
result_of::advance<I, M>::typeAmortized constant - time
result_of::distance<I ,J>::typeAmortized constant - time
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html deleted file mode 100644 index cad3aa28..00000000 --- a/doc/html/fusion/iterators/functions.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion provides functions for manipulating iterators, analogous to the similar - functions from the MPL - library. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html deleted file mode 100644 index 232ddf37..00000000 --- a/doc/html/fusion/iterators/functions/advance.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -advance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator by a specified distance. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename M
-    >
-typename result_of::advance<I, M>::type advance(I const& i); 
-
-
-

Table 1.6. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Forward - Iterator -Iterator to move relative to
NAn - MPL Integral ConstantNumber of positions to move
-
-
- - Expression - Semantics -
-
-advance<M>(i);
-
-

- Return type: A model of the same iterator - concept as i. -

-

- Semantics: Returns an iterator to the - element M positions from - i. If i - is a Bidirectional - Iterator then M - may be negative. -

-
- - Header -
-
-#include <boost/fusion/iterator/advance.hpp>
-
-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html deleted file mode 100644 index a67ee308..00000000 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -advance_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator by a specified distance. -

-
- - Synopsis -
-
-template<
-    typename I,
-    int N
-    >
-typename result_of::advance_c<I, N>::type advance_c(I const& i); 
-
-
-

Table 1.7. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Forward - Iterator -Iterator to move relative to
NInteger - constantNumber of positions to move
-
-
- - Expression - Semantics -
-
-advance_c<N>(i);
-
-

- Return type: A model of the same iterator - concept as i. -

-

- Semantics: Returns an iterator to the - element N positions from - i. If i - is a Bidirectional - Iterator then N - may be negative. -

-
- - Header -
-
-#include <boost/fusion/iterator/advance.hpp>
-
-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(deref(advance_c<2>(begin(v))) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html deleted file mode 100644 index 0f6753f9..00000000 --- a/doc/html/fusion/iterators/functions/deref.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -deref - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Deferences an iterator. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-typename result_of::deref<I>::type deref(I const& i);
-
-
-

Table 1.2. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-deref(i);
-
-

- Return type: result_of::deref<I>::type -

-

- Semantics: Dereferences the iterator - i. -

-
- - Header -
-
-#include <boost/fusion/iterator/deref.hpp>
-
-
- - Example -
-
-typedef vector<int,int&> vec;
-
-int i(0);
-vec v(1,i);
-assert(deref(begin(v)) == 1);
-assert(deref(next(begin(v))) == 0);
-assert(&(deref(next(begin(v)))) == &i);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html deleted file mode 100644 index b8312888..00000000 --- a/doc/html/fusion/iterators/functions/distance.html +++ /dev/null @@ -1,113 +0,0 @@ - - - -distance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the distance between 2 iterators. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename J
-    >
-typename result_of::distance<I, J>::type distance(I const& i, J const& j);
-
-
-

Table 1.5. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-i, j -Models of Forward - Iterator into the same sequenceThe start and - end points of the distance to be measured
-
-
- - Expression - Semantics -
-
-distance(i,j);
-
-

- Return type: int -

-

- Semantics: Returns the distance between - iterators i and j. -

-
- - Header -
-
-#include <boost/fusion/iterator/distance.hpp>
-
-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(distance(begin(v), next(next(begin(v)))) == 2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html deleted file mode 100644 index 4dd7c1e7..00000000 --- a/doc/html/fusion/iterators/functions/next.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -next - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator 1 position forwards. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-typename result_of::next<I>::type next(I const& i);
-
-
-

Table 1.3. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-next(i);
-
-

- Return type: A model of the same iterator - concept as i. -

-

- Semantics: Returns an iterator to the - next element after i. -

-
- - Header -
-
-#include <boost/fusion/iterator/next.hpp>
-
-
- - Example -
-
-typedef vector<int,int,int> vec;
-
-vec v(1,2,3);
-assert(deref(begin(v)) == 1);
-assert(deref(next(begin(v))) == 2);
-assert(deref(next(next(begin(v)))) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html deleted file mode 100644 index 682185bf..00000000 --- a/doc/html/fusion/iterators/functions/prior.html +++ /dev/null @@ -1,113 +0,0 @@ - - - -prior - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator 1 position backwards. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-typename result_of::prior<I>::type prior(I const& i);
-
-
-

Table 1.4. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Bidirectional - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-prior(i);
-
-

- Return type: A model of the same iterator - concept as i. -

-

- Semantics: Returns an iterator to the - element prior to i. -

-
- - Header -
-
-#include <boost/fusion/iterator/prior.hpp>
-
-
- - Example -
-
-typedef vector<int,int> vec;
-
-vec v(1,2);
-assert(deref(next(begin(v))) == 2);
-assert(deref(prior(next(begin(v)))) == 1);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html deleted file mode 100644 index 9f4cbefe..00000000 --- a/doc/html/fusion/iterators/metafunctions.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html deleted file mode 100644 index 5f708683..00000000 --- a/doc/html/fusion/iterators/metafunctions/advance.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -advance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator a specified distance. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename M
-    >
-struct advance
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.17. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Forward - Iterator -Iterator to move relative to
MModel - of MPL Integral ConstantNumber of positions to move
-
-
- - Expression - Semantics -
-
-result_of::advance<I,M>::type
-
-

- Return type: A model of the same iterator - concept as I. -

-

- Semantics: Returns an iterator a distance - M from I. - If I is a Bidirectional - Iterator then M - may be negative. -

-
- - Header -
-
-#include <boost/fusion/iterator/advance.hpp>
-
-
- - Example -
-
-typedef vector<int,double,char> vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::next<first>::type second;
-typedef result_of::next<second>::type third;
-
-BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html deleted file mode 100644 index 008e3877..00000000 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -advance_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Moves an iterator by a specified distance. -

-
- - Synopsis -
-
-template<
-    typename I,
-    int N
-    >
-struct advance_c
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.18. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Forward - Iterator -Iterator to move relative to
NInteger - constantNumber of positions to move
-
-
- - Expression - Semantics -
-
-result_of::advance_c<I, N>::type
-
-

- Return type: A model of the same iterator - concept as I. -

-

- Semantics: Returns an iterator a distance - N from I. - If I is a Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. -

-
- - Header -
-
-#include <boost/fusion/iterator/advance.hpp>
-
-
- - Example -
-
-typedef vector<int,double,char> vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::next<first>::type second;
-typedef result_of::next<second>::type third;
-
-BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html deleted file mode 100644 index 52581f3a..00000000 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -deref - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the type that will be returned by dereferencing an iterator. -

-
- - Synposis -
-
-template<
-    typename I
-    >
-struct deref
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.12. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::deref<I>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the result of dereferencing - an iterator of type I. -

-
- - Header -
-
-#include <boost/fusion/iterator/deref.hpp>
-
-
- - Example -
-
-typedef vector<int,int&> vec;
-typedef const vec const_vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::next<first>::type second;
-
-typedef result_of::begin<const_vec>::type const_first;
-typedef result_of::next<const_first>::type const_second;
-
-BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
-BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html deleted file mode 100644 index 6b1a3bef..00000000 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -distance - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the distance between two iterators. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename J
-    >
-struct distance
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.16. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-I, J -Models of Forward - Iterator into the same sequenceThe start and - end points of the distance to be measured
-
-
- - Expression - Semantics -
-
-result_of::distance<I, J>::type
-
-

- Return type: A model of MPL Integral Constant. -

-

- Semantics: Returns the distance between - iterators of types I and - J. -

-
- - Header -
-
-#include <boost/fusion/iterator/distance.hpp>
-
-
- - Example -
-
-typedef vector<int,double,char> vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::next<first>::type second;
-typedef result_of::next<second>::type third;
-typedef result_of::distance<first,third>::type dist;
-
-BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html deleted file mode 100644 index 9a22ba53..00000000 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -equal_to - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a true-valued MPL Integral Constant if I - and J are equal. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename J
-    >
-struct equal_to
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.15. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-I, J -Any fusion iteratorsOperation's - arguments
-
-
- - Expression - Semantics -
-
-result_of::equal_to<I, J>::type
-
-

- Return type: A model of MPL Integral Constant. -

-

- Semantics: Returns boost::mpl::true_ - if I and J are iterators to the same position. - Returns boost::mpl::false_ otherwise. -

-
- - Header -
-
-#include <boost/fusion/iterator/equal_to.hpp>
-
-
- - Example -
-
-typedef vector<int,double> vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::end<vec>::type last;
-BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
-BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html deleted file mode 100644 index 454172dc..00000000 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -next - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the type of the next iterator in a sequence. -

-
- - Synposis -
-
-template<
-    typename I
-    >
-struct next
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.13. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::next<I>::type
-
-

- Return type: A model of the same iterator - concept as I. -

-

- Semantics: Returns an iterator to the - next element in the sequence after I. -

-
- - Header -
-
-#include <boost/fusion/iterator/next.hpp>
-
-
- - Example -
-
-typedef vector<int,double> vec;
-typedef result_of::next<result_of::begin<vec>::type>::type second;
-
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html deleted file mode 100644 index 626f2d9d..00000000 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ /dev/null @@ -1,118 +0,0 @@ - - - -prior - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the type of the previous iterator in a sequence. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-struct prior
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.14. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Bidirectional - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::prior<I>::type
-
-

- Return type: A model of the same iterator - concept as I. -

-

- Semantics: Returns an iterator to the - previous element in the sequence before I. -

-
- - Header -
-
-#include <boost/fusion/iterator/prior.hpp>
-
-
- - Example -
-
-typedef vector<int,double> vec;
-typedef result_of::next<result_of::begin<vec>::type>::type second;
-
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
-
-typedef result_of::prior<second>::type first;
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html deleted file mode 100644 index e924babc..00000000 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ /dev/null @@ -1,118 +0,0 @@ - - - -value_of - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the type stored at the position of an iterator. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-struct value_of
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.11. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
IModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-result_of::value_of<I>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the type stored in - a sequence at iterator position I. -

-
- - Header -
-
-#include <boost/fusion/iterator/value_of.hpp>
-
-
- - Example -
-
-typedef vector<int,int&,const int&> vec;
-typedef result_of::begin<vec>::type first;
-typedef result_of::next<first>::type second;
-typedef result_of::next<second>::type third;
-
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html deleted file mode 100644 index 707d5964..00000000 --- a/doc/html/fusion/iterators/operators.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -Operators - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Overloaded operators are provided to provide a more natural syntax for dereferencing - iterators, and comparing them for equality. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html deleted file mode 100644 index 27880c5d..00000000 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - Operator - == - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Compares 2 iterators for equality. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename J
-    >
-unspecified operator==(I const& i, J const& i);
-
-
-

Table 1.9. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-i, j -Any fusion iteratorsOperation's - arguments
-
-
- - Expression - Semantics -
-
-i == j
-
-

- Return type: Convertible to bool. -

-

- Semantics: Equivalent to result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. -

-
- - Header -
-
-#include <boost/fusion/iterator/equal_to.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html deleted file mode 100644 index ea4d017a..00000000 --- a/doc/html/fusion/iterators/operators/operator_inequality.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - Operator - != - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Compares 2 iterators for inequality. -

-
- - Synopsis -
-
-template<
-    typename I,
-    typename J
-    >
-unspecified operator==(I const& i, J const& i);
-
-
-

Table 1.10. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
-i, j -Any fusion iteratorsOperation's - arguments
-
-
- - Expression - Semantics -
-

- Return type: Convertible to bool. -

-

- Semantics: Equivalent to !result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. -

-
- - Header -
-
-#include <boost/fusion/iterator/equal_to.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html deleted file mode 100644 index e22cc90a..00000000 --- a/doc/html/fusion/iterators/operators/operator_unary_star.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - Operator - * - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Dereferences an iterator. -

-
- - Synopsis -
-
-template<
-    typename I
-    >
-typename result_of::deref<I>::type operator*(unspecified<I> const& i);
-
-
-

Table 1.8. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
iModel - of Forward - Iterator -Operation's argument
-
-
- - Expression - Semantics -
-
-*i
-
-

- Return type: Equivalent to the return - type of deref(i). -

-

- Semantics: Equivalent to deref(i). -

-
- - Header -
-
-#include <boost/fusion/iterator/deref.hpp>
-
-
- - Example -
-
-typedef vector<int,int&> vec;
-
-int i(0);
-vec v(1,i);
-assert(*begin(v) == 1);
-assert(*next(begin(v)) == 0);
-assert(&(*next(begin(v))) == &i);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html deleted file mode 100644 index 25e5b526..00000000 --- a/doc/html/fusion/notes.html +++ /dev/null @@ -1,254 +0,0 @@ - - - -Notes - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Recursive Inlined - Functions -

-

- An interesting peculiarity of functions like at when applied to a Forward - Sequence like list is that what could have been - linear runtime complexity effectively becomes constant O(1) due to compiler - optimization of C++ inlined functions, however deeply recursive (up to a certain - compiler limit of course). Compile time complexity remains linear. -

-

- - Overloaded Functions -

-

- Associative sequences use function overloading to implement membership testing - and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function - given a key, k. -

-

- - Tag Dispatching -

-

- Tag dispatching is a generic programming technique for selecting template specializations. - There are typically 3 components involved in the tag dispatching mechanism: -

-
    -
  1. - A type for which an appropriate template specialization is required -
  2. -
  3. - A metafunction that associates the type with a tag type -
  4. -
  5. - A template that is specialized for the tag type -
  6. -
-

- For example, the fusion result_of::begin metafunction - is implemented as follows: -

-
-template <typename Sequence>
-struct begin
-{
-    typedef typename
-        result_of::begin_impl<typename traits::tag_of<Sequence>::type>::
-        template apply<Sequence>::type
-    type;
-};
-
-

- In the case: -

-
    -
  1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl - is required -
  2. -
  3. -traits::tag_of is the metafunction that associates - Sequence with an appropriate - tag -
  4. -
  5. -result_of::begin_impl is the template which is specialized - to provide an implementation for each tag type -
  6. -
-

- - Extensibility -

-

- Unlike MPL, there - is no extensibe sequence concept in fusion. This does not mean that Fusion - sequences are not extensible. In fact, all Fusion sequences are inherently - extensible. It is just that the manner of sequence extension in Fusion is diferent - from both STL - and MPL on account - of the lazy nature of fusion Algorithms. - STL - containers extend themselves in place though member functions such as push_back and insert. MPL - sequences, on the other hand, are extended through "intrinsic" functions - that actually return whole sequences. MPL - is purely functional and can not have side effects. For example, MPL's - push_back does not actually - mutate an mpl::vector. It can't do that. Instead, it returns - an extended mpl::vector. -

-

- Like MPL, Fusion - too is purely functional and can not have side effects. With runtime efficiency - in mind, Fusion sequences are extended through generic functions that return - Views. Views - are sequences that do not actually contain data, but instead impart an alternative - presentation over the data from one or more underlying sequences. Views - are proxies. They provide an efficient yet purely functional way to work on - potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended - vector. - A joint_view - holds a reference to the original sequence plus the appended data --making - it very cheap to pass around. -

-

- - Element Conversion -

-

- Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments - to something suitable to be stored as a sequence element. In general, the element - types are stored as plain values. Example: -

-
-make_list(1, 'x')
-
-

- returns a list<int, char>. -

-

- There are a few exceptions, however. -

-

- Arrays: -

-

- Array arguments are deduced to reference to const types. For example - [14] - : -

-
-make_list("Donald", "Daisy")
-
-

- creates a list - of type -

-
-list<const char (&)[7], const char (&)[6]>
-
-

- Function pointers: -

-

- Function pointers are deduced to the plain non-reference type (i.e. to plain - function pointer). Example: -

-
-void f(int i);
-  ...
-make_list(&f);
-
-

- creates a list - of type -

-
-list<void (*)(int)>
-
-

- - boost::ref -

-

- Fusion's generation functions (e.g. make_list) by default stores the element - types as plain non-reference types. Example: -

-
-void foo(const A& a, B& b) {
-    ...
-    make_list(a, b)
-
-

- creates a list - of type -

-
-list<A, B>
-
-

- Sometimes the plain non-reference type is not desired. You can use boost::ref - and boost::cref to store references or const references - (respectively) instead. The mechanism does not compromise const correctness - since a const object wrapped with ref results in a tuple element with const - reference type (see the fifth code line below). Examples: -

-

- For example: -

-
-A a; B b; const A ca = a;
-make_list(cref(a), b);          // creates list<const A&, B>
-make_list(ref(a), b);           // creates list<A&, B>
-make_list(ref(a), cref(b));     // creates list<A&, const B&>
-make_list(cref(ca));            // creates list<const A&>
-make_list(ref(ca));             // creates list<const A&>
-
-

- See Boost.Ref for - details. -

-
-

-

[14] - Note that the type of a string literal is an array of const characters, - not const char*. To get make_list to create a list with an element of a non-const - array type one must use the ref - wrapper (see boost::ref). -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html deleted file mode 100644 index 62b319c7..00000000 --- a/doc/html/fusion/organization.html +++ /dev/null @@ -1,198 +0,0 @@ - - - -Organization - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- The library is organized into layers of modules, with each module addressing - a particular area of responsibility. A module may not depend on modules in - higher layers. -

-

- The library is organized in three layers: -

-

- - Layers -

-

- fusion_org -

-

- The entire library is found in the "boost/fusion" directory. Modules - are organized in directories. Each module has its own header file placed in - the same directory with the actual module-directory. For example, there exists - "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". - Everything, except those found inside "detail" directories, is public. - The library is header-only. There is no need to build object files to link - against. -

-

- - Directory -

-
    -
  • - tuple -
  • -
  • - algorithm -
      -
    • - iteration -
    • -
    • - query -
    • -
    • - transformation -
    • -
    -
  • -
  • - sequence -
      -
    • - adapted -
        -
      • - array -
      • -
      • - mpl -
      • -
      • - std_pair -
      • -
      -
    • -
    • - comparison -
    • -
    • - container -
        -
      • - list -
      • -
      • - map -
      • -
      • - set -
      • -
      • - vector -
      • -
      -
    • -
    • - conversion -
    • -
    • - generation -
    • -
    • - intrinsic -
    • -
    • - io -
    • -
    • - utility -
    • -
    • - view -
        -
      • - filter_view -
      • -
      • - iterator_range -
      • -
      • - joint_view -
      • -
      • - reverse_view -
      • -
      • - single_view -
      • -
      • - transform_view -
      • -
      • - zip_view -
      • -
      -
    • -
    -
  • -
  • - iterator -
  • -
  • - support -
  • -
-

- - Example -

-

- If, for example, you want to use list, - depending on the granularity that you desire, you may do so by including one - of -

-
-#include <boost/fusion/sequence.hpp>
-#include <boost/fusion/sequence/container.hpp>
-#include <boost/fusion/sequence/container/list.hpp>
-
-

- The first includes all sequences. The second includes all of sequence containers. - The third includes only list  - [3] - . -

-
-

-

[3] - Modules may contain smaller components. Header file information for each - component will be provided as part of the component's documentation. -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html deleted file mode 100644 index a3beb7bf..00000000 --- a/doc/html/fusion/preface.html +++ /dev/null @@ -1,156 +0,0 @@ - - - -Preface - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Algorithms + Data Structures = Programs. -

-

- --Niklaus Wirth -

-

- - 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. -

-

- - 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. -

-

- - 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 1.1. Icons

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IconNameMeaning
noteNoteInformation provided - is auxiliary but will give the reader a deeper insight into a specific - topic. May be skipped.
alertAlertInformation provided - is of utmost importance.
cautionCautionA mild warning.
tipTipA 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. -

-

- - Support -

-

- Please direct all questions to Spirit's mailing list. You can subscribe to - the Spirit - Mailing 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 - NNTP news portal (thanks to Gmane). - The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html deleted file mode 100644 index ab2bf3cb..00000000 --- a/doc/html/fusion/quick_start.html +++ /dev/null @@ -1,260 +0,0 @@ - - - -Quick Start - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- I assume the reader is already familiar with tuples (Boost.Tuple) - and its ancestor std::pair. The tuple is a generalization of std::pair - for multiple heterogeneous elements (triples, quadruples, etc.). The tuple - is more or less a synonym for fusion's vector. -

-

- For starters, we shall include all of Fusion's _sequence_s - [1] - : -

-
-#include <boost/fusion/sequence.hpp>
-
-

- Let's begin with a vector  - [2] - : -

-
-vector<int, char, std::string> stuff(1, 'x', "howdy");
-int i = at_c<0>(stuff);
-char ch = at_c<1>(stuff);
-std::string s = at_c<2>(stuff);
-
-

- Just replace tuple for vector - and get for at_c and this is exactly like - Boost.Tuple. - Actually, either names can be used interchangeably. Yet, the similarity ends - there. You can do a lot more with Fusion vector or tuple. - Let's see some examples. -

-

- - Print the vector - as XML -

-

- First, let's include the algorithms: -

-
-#include <boost/fusion/algorithm.hpp>
-
-

- Now, let's write a function object that prints XML of the form <type>data</type> - for each member in the tuple. -

-
-struct print_xml
-{
-    template <typename T>
-    void operator()(T const& x) const
-    {
-        std::cout 
-            << '<' << typeid(x).name() << '>'
-            << x
-            << "</" << typeid(x).name() << '>'
-            ;
-    }
-};
-
-

- Now, finally: -

-
-for_each(stuff, print_xml());
-
-

- That's it! for_each is a fusion algorithm. - It is a generic algorithm similar to STL's. - It iterates over the sequence and calls a user supplied function. In our case, - it calls print_xml's operator() for - each element in stuff. -

-
- - - - - -
[Caution]Caution

- The result of typeid(x).name() is platform specific. The code here is - just for exposition. Of course you already know that :-) -

-

- for_each is generic. With - print_xml, you can use it to - print just about any Fusion Sequence. -

-

- - Print only pointers -

-

- Let's get a little cleverer. Say we wish to write a generic - function that takes in an arbitrary sequence and XML prints only those elements - which are pointers. Ah, easy. First, let's include the is_pointer - boost type trait: -

-
-#include <boost/type_traits/is_pointer.hpp>
-
-

- Then, simply: -

-
-template <typename Sequence>
-void xml_print_pointers(Sequence const& seq)
-{
-    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
-}
-
-

- filter_if is another Fusion - algorithm. It returns a filter_view, a conforming Fusion sequence. - This view reflects only those elements that pass the given predicate. In this - case, the predicate is boost::is_pointer<_>. - This "filtered view" is then passed to the for_each algorithm, which then prints - the "filtered view" as XML. -

-

- Easy, right? -

-

- - Associative tuples -

-

- Ok, moving on... -

-

- Apart from vector, fusion has a couple - of other sequence types to choose from. Each sequence has its own characteristics. - We have list, set, map, plus a multitude of views that provide various ways to present - the sequences. -

-

- Fusion's map associate types with elements. - It can be used as a cleverer replacement of the struct. - Example: -

-
-namespace fields
-{
-    struct name;
-    struct age;
-}
-
-typedef map<
-    fusion::pair<fields::name, std::string>
-  , fusion::pair<fields::age, int> > 
-person;
-
-

- map - is an associative sequence. Its elements are Fusion pairs which differ somewhat - from std::pair. Fusion pairs only contain one member, - with the type of their second template parameter. The first type parameter - of the pair is used as an index to the associated element in the sequence. - For example, given a a_person - of type, person, you can do: -

-
-using namespace fields;
-std::string person_name = at_key<name>(a_person);
-int person_age = at_key<age>(a_person);
-
-

- Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. - There are a multitude of facilities available at your disposal provided out - of the box with fusion or written by others. With these facilities, introspection - comes for free, for example. We can write one serialization function (well, - two, if you consider loading and saving) that will work for all your fusion - maps. - Example: -

-
-struct saver
-{
-    template <typename Pair>
-    void operator()(Pair const& data) const
-    {
-        some_archive << data.second;
-    }
-};
-
-template <typename Stuff>
-void save(Stuff const& stuff)
-{
-    for_each(stuff, saver());
-}
-
-

- The save function is generic - and will work for all types of stuff - regardless if it is a person, - a dog or a whole alternate_universe. -

-

- - Tip of the Iceberg -

-

- And... we've barely scratched the surface! You can compose and expand the data - structures, remove elements from the structures, find specific data types, - query the elements, filter out types for inspection, transform data structures, - etc. What you've seen is just the tip of the iceberg. -

-
-

-

[1] - There are finer grained header files available if you wish to have more - control over which components to include (see section Orgainization - for details). -

-

[2] - Unless otherwise noted, components are in namespace boost::fusion. - For the sake of simplicity, code in this quick start implies using directives for the fusion components - we will be using. -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html deleted file mode 100644 index ef4f7188..00000000 --- a/doc/html/fusion/references.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -References - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHome -
-
- -
    -
  1. -New - Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. -
  2. -
  3. -The Boost - Tuple Library, Jaakko Jarvi, 2001. -
  4. -
  5. -Spirit Parser Library, - Joel de Guzman, 2001-2006. -
  6. -
  7. -The Boost MPL Library, - Aleksey Gurtovoy and David Abrahams, 2002-2004. -
  8. -
  9. -Boost Array, - Nicolai Josuttis, 2002-2004. -
  10. -
  11. -Standard Template Library Programmer's - Guide, Hewlett-Packard Company, 1994. -
  12. -
  13. -Boost.Ref, Jaakko - Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. -
  14. -
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHome -
- - diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html deleted file mode 100644 index d68ba50f..00000000 --- a/doc/html/fusion/sequences.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -Sequences - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Like MPL, the - Sequence is a fundamental concept in Fusion. A Sequence may or may not actually - store or contain data. Containers - are sequences that hold data. Views, - on the other hand, are sequences that do not store any data. Instead, they - are proxies that impart an alternative presentation over another sequence. - All models of Sequence have an associated Iterator - type that can be used to iterate through the Sequence's elements. -

-

- - Header -

-
-#include <boost/fusion/sequence.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html deleted file mode 100644 index 51d83fc9..00000000 --- a/doc/html/fusion/sequences/adapted.html +++ /dev/null @@ -1,70 +0,0 @@ - - - -Adapted - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion provides a couple of adapters for other sequences such as std::pair, - MPL sequences, - and boost::array. These adapters are written using - Fusion's non-intrusive Extension - mechanism. If you wish to use these sequences with fusion, simply include - the necessary files and they will be regarded as first-class, fully conforming - fusion sequences - [4] - . -

-

- - Header -

-
-#include <boost/fusion/sequence/adapted.hpp>
-
-
-

-

[4] - Fusion sequences may also be adapted as fully conforming MPL - sequences (see Intrinsics). - That way, we can have 2-way adaptation to and from MPL - and Fusion -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html deleted file mode 100644 index 21b9f1fe..00000000 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -boost::array - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- This module provides adapters for boost::array. - Including the module header makes boost::array - a fully conforming Random - Access Sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/adapted/array.hpp>
-
-
- - Model of -
- -
- - Example -
-
-boost::array<int,3> arr = {{1,2,3}};
-
-std::cout << *begin(arr) << std::endl;
-std::cout << *next(begin(arr)) << std::endl;
-std::cout << *advance_c<2>(begin(arr)) << std::endl;
-std::cout << *prior(end(arr)) << std::endl;
-std::cout << at_c<2>(arr) << std::endl;
-
-
- - See also -
-

- Boost.Array Library -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html deleted file mode 100644 index 1e05d99e..00000000 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ /dev/null @@ -1,95 +0,0 @@ - - - -mpl sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- This module provides adapters for MPL - sequences. Including the module header makes all MPL - sequences fully conforming fusion sequences. -

-
- - Header -
-
-#include <boost/fusion/sequence/adapted/mpl.hpp>
-
-
- - Model of -
-
-
- - Example -
-
-mpl::vector_c<int, 123, 456> vec_c;
-fusion::vector2<int, long> v(vec_c);
-std::cout << at_c<0>(v) << std::endl;
-std::cout << at_c<1>(v) << std::endl;
-
-v = mpl::vector_c<int, 456, 789>();
-std::cout << at_c<0>(v) << std::endl;
-std::cout << at_c<1>(v) << std::endl;
-
-
- - See also -
-

- MPL -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html deleted file mode 100644 index 44bb6080..00000000 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -std::pair - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- This module provides adapters for std::pair. - Including the module header makes std::pair - a fully conforming Random - Access Sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/adapted/std_pair.hpp>
-
-
- - Model of -
- -
- - Example -
-
-std::pair<int, std::string> p(123, "Hola!!!");
-std::cout << at_c<0>(p) << std::endl;
-std::cout << at_c<1>(p) << std::endl;
-std::cout << p << std::endl;
-
-
- - See also -
-

- std::pair, - TR1 and std::pair -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html deleted file mode 100644 index fbc3c562..00000000 --- a/doc/html/fusion/sequences/concepts.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Concepts - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion Sequences are organized into a hierarchy of concepts. -

-

- - Traversal -

-

- Fusion's sequence traversal related concepts parallel Fusion's Iterator - Concepts. Forward - Sequence is the most basic concept. Bidirectional - Sequence is a refinement of Forward - Sequence. Random - Access Sequence is a refinement of Bidirectional - Sequence. These concepts pertain to sequence traversal. -

-

- - Associativity -

-

- The Associative - Sequence concept is orthogonal to traversal. An Associative Sequence - allows efficient retrieval of elements based on keys. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html deleted file mode 100644 index 3f4046d1..00000000 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ /dev/null @@ -1,213 +0,0 @@ - - - -Associative - Sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- An Associative Sequence allows efficient retrieval of elements based on - keys. Like associative sequences in MPL, - and unlike associative containers in STL, - Fusion associative sequences have no implied ordering relation. Instead, - type identity is used to impose an equivalence relation on keys, and the - order in which sequence elements are traversed during iteration is left - unspecified. In addition, unlike STL, - Associative Sequences have mutable iterators. This is due to the fact that - there is no associated ordering relation and the runtime value of the keys - themselves do not have any effect on the associativity of the sequence. -

-
-

Notation

-
-
s
-
- An Associative Sequence -
-
S
-
- An Associative Sequence type -
-
K
-
- An arbitrary key type -
-
o
-
- An arbitrary object -
-
e
-
- A Sequence element -
-
-
-
- - Valid - Expressions -
-

- For any Associative Sequence the following expressions must be valid: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeType RequirementsRuntime - Complexity
has_key<K>(s)MPL - Boolean Constant. Convertible to bool. Constant
at_key<K>(s)Any - type Constant
at_key<K>(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::has_key<S, K>::typeAmortized constant - time
result_of::at_key<S, K>::typeAmortized constant - time
result_of::value_at_key<S, K>::typeAmortized constant - time
-

- note result_of::at_key<S, K> - returns the actual type returned by at_key<K>(s). In - most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at_key<S, K>.The - element at K may actually - be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>. -

-
- - Expression - Semantics -
-
---- - - - - - - - - - - - - - - -
ExpressionSemantics
has_key<K>(s)A - boolean Integral Constant c - such that c::value == true if and only if there is one or - more elements with the key k - in s; see has_key.
at_key<K>(s)The - element associated with the key K - in the sequence s; - see at.
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html deleted file mode 100644 index f218d6c5..00000000 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ /dev/null @@ -1,221 +0,0 @@ - - - -Bidirectional - Sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Bidirectional Sequence is a Forward - Sequence whose iterators model Bidirectional - Iterator. -

-
- - Refinement - of -
-

- Forward Sequence -

-
-

Notation

-
-
s
-
- A Forward Sequence -
-
S
-
- A Forward Sequence type -
-
o
-
- An arbitrary object -
-
e
-
- A Sequence element -
-
-
-
- - Valid - Expressions -
-

- In addition to the requirements defined in Forward - Sequence, for any Bidirectional Sequence the following must be met: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeType RequirementsRuntime - Complexity
begin(s)Bidirectional - Iterator Constant
end(s)Bidirectional - Iterator Constant
back(s)Any - type Constant
back(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant - time
result_of::end<S>::typeAmortized constant - time
result_of::back<S>::typeAmortized constant - time
-
- - Expression - Semantics -
-

- The semantics of an expression are defined only where they differ from, - or are not defined in Forward - Sequence. -

-
---- - - - - - - - - -
ExpressionSemantics
back(s)The - last element in the sequence; see back.
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html deleted file mode 100644 index a9313590..00000000 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ /dev/null @@ -1,274 +0,0 @@ - - - -Forward - Sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Forward Sequence is a Sequence whose elements are arranged in a definite - order. The ordering is guaranteed not to change from iteration to iteration. - The requirement of a definite ordering allows the definition of element-by-element - equality (if the container's element type is Equality Comparable) and of - lexicographical ordering (if the container's element type is LessThan Comparable). -

-
-

Notation

-
-
s
-
- A Forward Sequence -
-
S
-
- A Forward Sequence type -
-
o
-
- An arbitrary object -
-
e
-
- A Sequence element -
-
-
-
- - Valid - Expressions -
-

- For any Forward Sequence the following expressions must be valid: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeType RequirementsRuntime - Complexity
begin(s)Forward Iterator Constant
end(s)Forward Iterator Constant
size(s)MPL - Integral Constant. Convertible to int. Constant
empty(s)MPL - Boolean Constant. Convertible to bool. Constant
front(s)Any - type Constant
front(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant - time
result_of::end<S>::typeAmortized constant - time
result_of::size<S>::typeUnspecified
result_of::empty<S>::typeConstant time
result_of::front<S>::typeAmortized constant - time
-
- - Expression - Semantics -
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
begin(s)An - iterator to the first element of the sequence; see begin.
end(s)A - past-the-end iterator to the sequence; see end.
size(s)The - size of the sequence; see size.
empty(s)A - boolean Integral Constant c - such that c::value == true if and only if the sequence is - empty; see empty.
front(s)The - first element in the sequence; see front.
-
- - Invariants -
-

- For any Forward Sequence s the following invariants always hold: -

-
    -
  • -[begin(s), end(s)) is always a valid range. -
  • -
  • - An Algorithm that iterates through - the range [begin(s), end(s)) will pass through every element of - s exactly once. -
  • -
  • -begin(s) - is identical to end(s)) - if and only if s is empty. -
  • -
  • - Two different iterations through s - will access its elements in the same order. -
  • -
-
- - Models -
- -
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html deleted file mode 100644 index 06c4ae91..00000000 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ /dev/null @@ -1,240 +0,0 @@ - - - -Random - Access Sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- A Random Access Sequence is a Bidirectional - Sequence whose iterators model Random - Access Iterator. It guarantees constant time access to arbitrary - sequence elements. -

-
- - Refinement - of -
-

- Bidirectional - Sequence -

-
-

Notation

-
-
s
-
- A Random Access Sequence -
-
S
-
- A Random Access Sequence type -
-
N
-
- An integral constant -
-
o
-
- An arbitrary object -
-
e
-
- A Sequence element -
-
-
-
- - Valid - Expressions -
-

- In addition to the requirements defined in Bidirectional - Sequence, for any Random Access Sequence the following must be met: -

-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionReturn typeType RequirementsRuntime - Complexity
begin(s)Random - Access Iterator Constant
end(s)Random - Access Iterator Constant
at<N>(s)Any - type Constant
at<N>(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant
-
- - Result - Type Expressions -
-
---- - - - - - - - - - - - - - - - - - - - - - - -
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant - time
result_of::end<S>::typeAmortized constant - time
result_of::at<S, N>::typeAmortized constant - time
result_of::value_at<S, N>::typeAmortized constant - time
-

- note result_of::at<S, N> - returns the actual type returned by at<N>(s). In - most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at<S, N>.The - element at N may actually - be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>. -

-
- - Expression - Semantics -
-

- The semantics of an expression are defined only where they differ from, - or are not defined in Bidirectional - Sequence. -

-
---- - - - - - - - - -
ExpressionSemantics
at<N>(s)The - Nth element from the beginning of the sequence; see at.
-
- - Models -
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html deleted file mode 100644 index ce25c1f9..00000000 --- a/doc/html/fusion/sequences/containers.html +++ /dev/null @@ -1,58 +0,0 @@ - - - -Containers - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion provides a few predefined sequences out of the box. These containers - actually hold heterogenously typed data; unlike Views. - These containers are more or less counterparts of those in STL. -

-

- - Header -

-
-#include <boost/fusion/sequence/container.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html deleted file mode 100644 index 81f1955b..00000000 --- a/doc/html/fusion/sequences/containers/cons.html +++ /dev/null @@ -1,226 +0,0 @@ - - - -cons - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- cons is a simple Forward Sequence. - It is a lisp style recursive list structure where car - is the head and cdr - is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more - primitive data structure. It is more efficient than vector when the target sequence - is constructed piecemeal (a data at a time). The runtime cost of access - to each element is peculiarly constant (see Recursive - Inlined Functions). -

-
- - Header -
-
-#include <boost/fusion/sequence/container/list/cons.hpp>
-
-
- - Synopsis -
-
-template <typename Car, typename Cdr = nil>
-struct cons;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
CarHead - type 
CdrTail - typenil
-
- - Model of -
- -
-

Notation

-
-
nil
-
- An empty cons -
-
C
-
- A cons type -
-
l, - l2
-
- Instances of cons -
-
car
-
- An arbitrary data -
-
cdr
-
- Another cons list -
-
s
-
- A Forward - Sequence -
-
N
-
- An Integral Constant -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
nil()Creates - an empty list.
C()Creates - a cons with default constructed elements.
C(car)Creates - a cons with car head - and default constructed tail.
C(car, cdr)Creates - a cons with car head - and cdr tail.
C(s)Copy - constructs a cons from a Forward - Sequence, s.
l = sAssigns to a cons, - l, from a Forward - Sequence, s.
at<N>(l)The - Nth element from the beginning of the sequence; see at.
-

- note at<N>(l) is - provided for convenience and compatibility with the original Boost.Tuple - library, despite cons being - a Forward Sequence - only (at is supposed to - be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive - Inlined Functions). -

-
- - Example -
-
-cons<int, cons<float> > l(12, cons<float>(5.5f));
-std::cout << at<0>(l) << std::endl;
-std::cout << at<1>(l) << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html deleted file mode 100644 index f279bbc7..00000000 --- a/doc/html/fusion/sequences/containers/list.html +++ /dev/null @@ -1,218 +0,0 @@ - - - -list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector - when the target sequence is constructed piecemeal (a data at a time). The - runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions). -

-
- - Header -
-
-#include <boost/fusion/sequence/container/list.hpp>
-#include <boost/fusion/sequence/container/list/list_forward.hpp>
-
-
- - Synopsis -
-
-template <
-    typename T0 = unspecified
-  , typename T1 = unspecified
-  , typename T2 = unspecified
-    ...
-  , typename TN = unspecified
->
-struct list;
-
-

- The variadic class interface accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. - Example: -

-
-list<int, char, double>
-
-

- You may define the preprocessor constant FUSION_MAX_LIST_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_LIST_SIZE 20
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
-T0...TN -Element typesunspecified-type
-
- - Model of -
- -
-

Notation

-
-
L
-
- A list type -
-
l
-
- An instance of list -
-
e0...en
-
- Heterogeneous values -
-
s
-
- A Forward - Sequence -
-
N
-
- An Integral Constant -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
L()Creates - a list with default constructed elements.
L(e0, e1,... en)Creates - a list with elements e0...en.
L(s)Copy - constructs a list from a Forward - Sequence, s.
l = sAssigns to a list, - l, from a Forward - Sequence, s.
at<N>(l)The - Nth element from the beginning of the sequence; see at.
-

- note at<n>(l) is - provided for convenience and compatibility with the original Boost.Tuple - library, despite list being - a Forward Sequence - only (at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive - Inlined Functions). -

-
- - Example -
-
-list<int, float> l(12, 5.5f);
-std::cout << at<0>(l) << std::endl;
-std::cout << at<1>(l) << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html deleted file mode 100644 index 523f7a9b..00000000 --- a/doc/html/fusion/sequences/containers/map.html +++ /dev/null @@ -1,215 +0,0 @@ - - - -map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-

-map

-
- - Description -
-

- map is an Associative - Sequence of heteregenous typed data elements. Each element is a - key/data pair (see fusion::pair) - where the key has no data (type only). Type identity is used to impose - an equivalence relation on keys. A map may contain at most one element - for each key. Membership testing and element key lookup has constant runtime - complexity (see Overloaded - Functions). -

-
- - Header -
-
-#include <boost/fusion/sequence/container/map.hpp>
-
-
- - Synopsis -
-
-template <
-    typename T0 = unspecified
-  , typename T1 = unspecified
-  , typename T2 = unspecified
-    ...
-  , typename TN = unspecified
->
-struct map;
-
-

- The variadic class interface accepts 0 - to FUSION_MAX_MAP_SIZE - elements, where FUSION_MAX_MAP_SIZE - is a user definable predefined maximum that defaults to 10. - Example: -

-
-map<pair<int, char>, pair<char, char>, pair<double, char> >
-
-

- You may define the preprocessor constant FUSION_MAX_MAP_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_MAP_SIZE 20
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
-T0...TN -Element typesunspecified-type
-
- - Model of -
- -
-

Notation

-
-
M
-
- A map type -
-
m
-
- An instance of map -
-
e0...en
-
- Heterogeneous key/value pairs (see fusion::pair) -
-
s
-
- A Forward - Sequence -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Random - Access Sequence and Associative - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
M()Creates - a map with default constructed elements.
M(e0, e1,... en)Creates - a map with element pairs e0...en.
M(s)Copy - constructs a map from a Forward - Sequence s.
m = sAssigns to a map, - m, from a Forward - Sequence s.
-
- - Example -
-
-typedef map<
-    pair<int, char>
-  , pair<double, std::string> > 
-map_type;
-
-map_type m(
-    make_pair<int>('X')
-  , make_pair<double>("Men"));
-
-std::cout << at<int>(m) << std::endl;
-std::cout << at<double>(m) << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html deleted file mode 100644 index ca56e8d7..00000000 --- a/doc/html/fusion/sequences/containers/set.html +++ /dev/null @@ -1,207 +0,0 @@ - - - -set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-

-set

-
- - Description -
-

- set is an Associative - Sequence of heteregenous typed data elements. Type identity is used - to impose an equivalence relation on keys. The element's type is its key. - A set may contain at most one element for each key. Membership testing - and element key lookup has constant runtime complexity (see Overloaded - Functions). -

-
- - Header -
-
-#include <boost/fusion/sequence/container/set.hpp>
-
-
- - Synopsis -
-
-template <
-    typename T0 = unspecified
-  , typename T1 = unspecified
-  , typename T2 = unspecified
-    ...
-  , typename TN = unspecified
->
-struct set;
-
-

- The variadic class interface accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. - Example: -

-
-set<int, char, double>
-
-

- You may define the preprocessor constant FUSION_MAX_SET_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_SET_SIZE 20
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
-T0...TN -Element typesunspecified-type
-
- - Model of -
- -
-

Notation

-
-
S
-
- A set type -
-
s
-
- An instance of set -
-
e0...en
-
- Heterogeneous values -
-
fs
-
- A Forward - Sequence -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Random - Access Sequence and Associative - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
S()Creates - a set with default constructed elements.
S(e0, e1,... en)Creates - a set with elements e0...en.
S(fs)Copy - constructs a set from a Forward - Sequence fs.
s = fsAssigns to a set, - s, from a Forward - Sequence fs.
-
- - Example -
-
-typedef set<int, float> S;
-S s(12, 5.5f);
-std::cout << at_key<int>(s) << std::endl;
-std::cout << at_key<float>(s) << std::endl;
-std::cout << result_of::has_key<S, double>::value << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html deleted file mode 100644 index 39975251..00000000 --- a/doc/html/fusion/sequences/containers/vector.html +++ /dev/null @@ -1,237 +0,0 @@ - - - -vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- vector is a Random - Access Sequence of heterogenous typed data structured as a simple - struct where each element - is held as a member variable. vector - is the simplest of the Fusion sequence container, and in many cases the - most efficient. -

-
- - Header -
-
-#include <boost/fusion/sequence/container/vector.hpp>
-#include <boost/fusion/sequence/container/vector/vector_forward.hpp>
-
-// numbered forms
-#include <boost/fusion/sequence/container/vector/vector10.hpp>
-#include <boost/fusion/sequence/container/vector/vector20.hpp>
-#include <boost/fusion/sequence/container/vector/vector30.hpp>
-#include <boost/fusion/sequence/container/vector/vector40.hpp>
-#include <boost/fusion/sequence/container/vector/vector50.hpp>
-
-
- - Synopsis -
-

- Numbered forms -

-
-template <>
-struct vector0;
-
-template <typename T0>
-struct vector1;
-
-template <typename T0, typename T1>
-struct vector2;
-
-template <typename T0, typename T1, typename T2>
-struct vector3;
-
-...
-
-template <typename T0, typename T1, typename T2..., typename TN>
-struct vectorN;
-
-

- Variadic form -

-
-template <
-    typename T0 = unspecified
-  , typename T1 = unspecified
-  , typename T2 = unspecified
-    ...
-  , typename TN = unspecified
->
-struct vector;
-
-

- The numbered form accepts the exact number of elements. Example: -

-
-vector3<int, char, double>
-
-

- The variadic form accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. - Example: -

-
-vector<int, char, double>
-
-

- You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
-T0...TN -Element typesunspecified
-
- - Model of -
- -
-

Notation

-
-
v
-
- Instance of vector -
-
V
-
- A vector type -
-
e0...en
-
- Heterogeneous values -
-
s
-
- A Forward - Sequence -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Random - Access Sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
V()Creates - a vector with default constructed elements.
V(e0, e1,... en)Creates - a vector with elements e0...en.
V(s)Copy - constructs a vector from a Forward - Sequence, s.
v = sAssigns to a vector, - v, from a Forward - Sequence, s.
-
- - Example -
-
-vector<int, float> v(12, 5.5f);
-std::cout << at_c<0>(v) << std::endl;
-std::cout << at_c<1>(v) << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html deleted file mode 100644 index f5a61804..00000000 --- a/doc/html/fusion/sequences/conversion.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Conversion - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- All fusion sequences can be converted to one of the Containers - types using one of these conversion functions. -

-

- - Header -

-
-#include <boost/fusion/sequence/conversion.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html deleted file mode 100644 index ad31a4c8..00000000 --- a/doc/html/fusion/sequences/conversion/functions.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html deleted file mode 100644 index b76caabd..00000000 --- a/doc/html/fusion/sequences/conversion/functions/as_list.html +++ /dev/null @@ -1,109 +0,0 @@ - - - -as_list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Convert a fusion sequence to a list. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::as_list<Sequence>::type
-as_list(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::as_list<Sequence const>::type
-as_list(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqAn - instance of SequenceThe sequence to convert.
-
- - Expression - Semantics -
-
-as_list(seq);
-
-

- Return type: result_of::as_list<Sequence>::type -

-

- Semantics: Convert a fusion sequence, - seq, to a list. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_list.hpp>
-
-
- - Example -
-
-as_list(make_vector('x', 123, "hello"))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html deleted file mode 100644 index 4eadddaa..00000000 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ /dev/null @@ -1,116 +0,0 @@ - - - -as_map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Convert a fusion sequence to a map. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::as_map<Sequence>::type
-as_map(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::as_map<Sequence const>::type
-as_map(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqAn - instance of SequenceThe sequence to convert.
-
- - Expression - Semantics -
-
-as_map(seq);
-
-

- Return type: result_of::as_map<Sequence>::type -

-

- Semantics: Convert a fusion sequence, - seq, to a map. -

-

- Precondition: The elements of the sequence - are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_map.hpp>
-
-
- - Example -
-
-as_map(make_vector(
-    make_pair<int>('X')
-  , make_pair<double>("Men")))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html deleted file mode 100644 index 0d0774f0..00000000 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ /dev/null @@ -1,113 +0,0 @@ - - - -as_set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Convert a fusion sequence to a set. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::as_set<Sequence>::type
-as_set(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::as_set<Sequence const>::type
-as_set(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqAn - instance of SequenceThe sequence to convert.
-
- - Expression - Semantics -
-
-as_set(seq);
-
-

- Return type: result_of::as_set<Sequence>::type -

-

- Semantics: Convert a fusion sequence, - seq, to a set. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_set.hpp>
-
-
- - Example -
-
-as_set(make_vector('x', 123, "hello"))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html deleted file mode 100644 index 64377329..00000000 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ /dev/null @@ -1,109 +0,0 @@ - - - -as_vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Convert a fusion sequence to a vector. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::as_vector<Sequence>::type
-as_vector(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::as_vector<Sequence const>::type
-as_vector(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqAn - instance of SequenceThe sequence to convert.
-
- - Expression - Semantics -
-
-as_vector(seq);
-
-

- Return type: result_of::as_vector<Sequence>::type -

-

- Semantics: Convert a fusion sequence, - seq, to a vector. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_vector.hpp>
-
-
- - Example -
-
-as_vector(make_list('x', 123, "hello"))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html deleted file mode 100644 index 9241e198..00000000 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html deleted file mode 100644 index 7cb96a1c..00000000 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ /dev/null @@ -1,107 +0,0 @@ - - - -as_list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_list. -

-
- - Synopsis -
-
-template <typename Sequence>
-struct as_list;
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - fusion Sequence -The - sequence type to convert.
-
- - Expression - Semantics -
-
-result_of::as_list<Sequence>::type;
-
-

- Return type: A list with same elements as the - input sequence, Sequence. -

-

- Semantics: Convert a fusion sequence, - Sequence, to a list. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_list.hpp>
-
-
- - Example -
-
-result_of::as_list<vector<char, int> >::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html deleted file mode 100644 index fee697ca..00000000 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -as_map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_map. -

-
- - Synopsis -
-
-template <typename Sequence>
-struct as_map;
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - fusion Sequence -The - sequence to convert.
-
- - Expression - Semantics -
-
-result_of::as_map<Sequence>::type;
-
-

- Return type: A map with same elements as the - input sequence, Sequence. -

-

- Semantics: Convert a fusion sequence, - Sequence, to a map. -

-

- Precondition: The elements of the sequence - are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_map.hpp>
-
-
- - Example -
-
-result_of::as_map<vector<
-    fusion::pair<int, char>
-  , fusion::pair<double, std::string> > >::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html deleted file mode 100644 index 842dc5d7..00000000 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ /dev/null @@ -1,111 +0,0 @@ - - - -as_set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_set. -

-
- - Synopsis -
-
-template <typename Sequence>
-struct as_set;
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - fusion Sequence -The - sequence to convert.
-
- - Expression - Semantics -
-
-result_of::as_set<Sequence>::type;
-
-

- Return type: A set with same elements as the - input sequence, Sequence. -

-

- Semantics: Convert a fusion sequence, - Sequence, to a set. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_set.hpp>
-
-
- - Example -
-
-result_of::as_set<vector<char, int> >::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html deleted file mode 100644 index 862aa661..00000000 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ /dev/null @@ -1,107 +0,0 @@ - - - -as_vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of as_vector. -

-
- - Synopsis -
-
-template <typename Sequence>
-struct as_vector;
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
SequenceA - fusion Sequence -The - sequence to convert.
-
- - Expression - Semantics -
-
-result_of::as_vector<Sequence>::type;
-
-

- Return type: A vector with same elements as - the input sequence, Sequence. -

-

- Semantics: Convert a fusion sequence, - Sequence, to a vector. -

-
- - Header -
-
-#include <boost/fusion/sequence/conversion/as_vector.hpp>
-
-
- - Example -
-
-result_of::as_vector<list<char, int> >::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html deleted file mode 100644 index ea2b4a3e..00000000 --- a/doc/html/fusion/sequences/generation.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Generation - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- These are the functions that you can use to generate various forms of Containers from elemental values. -

-

- - Header -

-
-#include <boost/fusion/sequence/generation.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html deleted file mode 100644 index 202070ae..00000000 --- a/doc/html/fusion/sequences/generation/functions.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html deleted file mode 100644 index e5f9e6ef..00000000 --- a/doc/html/fusion/sequences/generation/functions/list_tie.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -list_tie - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Constructs a tie using a list sequence. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-list<T0&, T1&,... TN&>
-list_tie(T0& x0, T1& x1... TN& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_LIST_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to list_tie -
-
- - Expression - Semantics -
-
-list_tie(x0, x1,... xN);
-
-

- Return type: list<T0&, T1&,... - TN&> -

-

- Semantics: Create a list of references from x0, x1,... xN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/list_tie.hpp>
-
-
- - Example -
-
-int i = 123;
-double d = 123.456;
-list_tie(i, d)
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html deleted file mode 100644 index aaf4bc28..00000000 --- a/doc/html/fusion/sequences/generation/functions/make_cons.html +++ /dev/null @@ -1,132 +0,0 @@ - - - -make_cons - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Create a cons from car - (head) and optional cdr - (tail). -

-
- - Synopsis -
-
-template <typename Car>
-typename result_of::make_cons<Car>::type
-make_cons(Car const& car);
-
-template <typename Car, typename Cdr>
-typename result_of::make_cons<Car, Cdr>::type
-make_cons(Car const& car, Cdr const& cdr);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
carInstance - of Car -The - list's head
cdrInstance - of Cdr -The - list's tail (optional)
-
- - Expression - Semantics -
-
-make_cons(car, cdr);
-
-

- Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type -

-

- Semantics: Create a cons from car - (head) and optional cdr - (tail). -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_cons.hpp>
-
-
- - Example -
-
-make_cons('x', make_cons(123))
-
-
- - See - also -
-

- boost::ref -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html deleted file mode 100644 index 39cbf3f2..00000000 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -make_list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Create a list from one or more values. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-typename result_of::make_list<T0, T1,... TN>::type
-make_list(T0 const& x0, T1 const& x1... TN const& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_LIST_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to make_list -
-
- - Expression - Semantics -
-
-make_list(x0, x1,... xN);
-
-

- Return type: result_of::make_list<T0, T1,... TN>::type -

-

- Semantics: Create a list from x0, x1,... xN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_list.hpp>
-
-
- - Example -
-
-make_list(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html deleted file mode 100644 index df0f2848..00000000 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ /dev/null @@ -1,154 +0,0 @@ - - - -make_map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Create a map from one or more key/data - pairs. -

-
- - Synopsis -
-
-template <
-    typename K0, typename K1,... typename KN
-  , typename T0, typename T1,... typename TN>
-typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
-make_map(T0 const& x0, T1 const& x1... TN const& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
K0, K1,... KNThe key typesKeys - associated with x0, x1,... xN -
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to make_map -
-
- - Expression - Semantics -
-
-make_map<K0, K1,... KN>(x0, x1,... xN);
-
-

- Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type -

-

- Semantics: Create a map from K0, K1,... KN - keys and x0, x1,... xN data. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_map.hpp>
-
-
- - Example -
-
-make_map(
-    make_pair<int>('X')
-  , make_pair<double>("Men"))
-
-
- - See - also -
-

- boost::ref, - fusion::pair -

-
-

-

[10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html deleted file mode 100644 index 9b0255c2..00000000 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ /dev/null @@ -1,138 +0,0 @@ - - - -make_set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Create a set from one or more values. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-typename result_of::make_set<T0, T1,... TN>::type
-make_set(T0 const& x0, T1 const& x1... TN const& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [9] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to make_set -
-
- - Expression - Semantics -
-
-make_set(x0, x1,... xN);
-
-

- Return type: result_of::make_set<T0, T1,... TN>::type -

-

- Semantics: Create a set from x0, x1,... xN. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_set.hpp>
-
-
- - Example -
-
-make_set(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
-

-

[9] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html deleted file mode 100644 index 2b551916..00000000 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -make_vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Create a vector from one or more values. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-typename result_of::make_vector<T0, T1,... TN>::type
-make_vector(T0 const& x0, T1 const& x1... TN const& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to make_vector -
-
- - Expression - Semantics -
-
-make_vector(x0, x1,... xN);
-
-

- Return type: result_of::make_vector<T0, T1,... TN>::type -

-

- Semantics: Create a vector from x0, x1,... xN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_vector.hpp>
-
-
- - Example -
-
-make_vector(123, "hello", 12.5)
-
-
- - See - also -
-

- boost::ref -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html deleted file mode 100644 index 58dc4912..00000000 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ /dev/null @@ -1,99 +0,0 @@ - - - -Tiers - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Tiers are sequences, where all elements are non-const reference types. - They are constructed with a call to a couple of tie - function templates. The succeeding sections document the various tier - flavors. -

- -

- Example: -

-
-int i; char c; double d; 
-  ...
-vector_tie(i, c, a);
-
-

- The vector_tie function creates - a vector - of type vector<int&, char&, double&>. - The same result could be achieved with the call make_vector(ref(i), ref(c), ref(a)) - [11] - . -

-

- A tie can be used to 'unpack' another tuple into - variables. E.g.: -

-
-int i; char c; double d; 
-vector_tie(i, c, d) = make_vector(1,'a', 5.5);
-std::cout << i << " " <<  c << " " << d;
-
-

- This code prints 1 a 5.5 to the standard output stream. A sequence unpacking - operation like this is found for example in ML and Python. It is convenient - when calling functions which return sequences. -

-
- - Ignore -
-

- There is also an object called ignore which allows - you to ignore an element assigned by a sequence. The idea is that a function - may return a sequence, only part of which you are interested in. For - example: -

-
-char c;
-vector_tie(ignore, c) = make_vector(1, 'a');
-
-
-

-

[11] - see Boost.Ref - for details about ref -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html deleted file mode 100644 index 40b0451c..00000000 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -vector_tie - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Constructs a tie using a vector sequence. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-vector<T0&, T1&,... TN&>
-vector_tie(T0& x0, T1& x1... TN& xN);
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
x0, x1,... xNInstances of - T0, T1,... TN -The arguments - to vector_tie -
-
- - Expression - Semantics -
-
-vector_tie(x0, x1,... xN);
-
-

- Return type: vector<T0&, T1&,... - TN&> -

-

- Semantics: Create a vector of references from x0, x1,... xN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/vector_tie.hpp>
-
-
- - Example -
-
-int i = 123;
-double d = 123.456;
-vector_tie(i, d)
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html deleted file mode 100644 index 3143a7b0..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -MetaFunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html deleted file mode 100644 index 2c57e18f..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html +++ /dev/null @@ -1,116 +0,0 @@ - - - -list_tie - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of list_tie. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-struct list_tie;
-
-

- The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_LIST_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
T0, T1,... TNAny typeThe - arguments to list_tie -
-
- - Expression - Semantics -
-
-result_of::list_tie<T0, T1,... TN>::type;
-
-

- Return type: list<T0&, T1&,... - TN&> -

-

- Semantics: Create a list of references from T0, T1,... TN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/list_tie.hpp>
-
-
- - Example -
-
-result_of::list_tie<int, double>::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html deleted file mode 100644 index e26f9654..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -make_cons - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of make_cons. -

-
- - Synopsis -
-
-template <typename Car, typename Cdr = nil>
-struct make_cons;
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
CarAny - typeThe list's head type
CdrA - cons -The - list's tail type (optional)
-
- - Expression - Semantics -
-
-result_of::make_cons<Car, Cdr>::type
-
-

- Return type: A cons with head element, Car, of type converted following the - rules for element - conversion, and tail, Cdr. -

-

- Semantics: Create a cons from Car - (head) and optional Cdr - (tail). -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_cons.hpp>
-
-
- - Example -
-
-result_of::make_cons<char, result_of::make_cons<int>::type>::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html deleted file mode 100644 index fd2f06a1..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -make_list - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of make_list. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-struct make_list;
-
-

- The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_LIST_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
T0, T1,... TNAny typeTemplate - arguments to make_list -
-
- - Expression - Semantics -
-
-result_of::make_list<T0, T1,... TN>::type
-
-

- Return type: A list with elements of types - converted following the rules for element - conversion. -

-

- Semantics: Create a list from T0, T1,... TN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_list.hpp>
-
-
- - Example -
-
-result_of::make_list<int, const char(&)[7], double>::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html deleted file mode 100644 index dd5fb6e3..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html +++ /dev/null @@ -1,148 +0,0 @@ - - - -make_map - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of make_map. -

-
- - Synopsis -
-
-template <
-    typename K0, typename K1,... typename KN
-  , typename T0, typename T1,... typename TN>
-struct make_map;
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [13] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
K0, K1,... KNAny typeKeys - associated with T0, T1,... TN -
T0, T1,... TNAny typeData - associated with keys K0, K1,... KN -
-
- - Expression - Semantics -
-
-resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;
-
-

- Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type -

-

- Semantics: A map with fusion::pair elements where the second_type is converted following - the rules for element - conversion. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_map.hpp>
-
-
- - Example -
-
-result_of::make_map<int, double, char, double>::type
-
-
- - See - also -
-

- fusion::pair -

-
-

-

[13] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html deleted file mode 100644 index 5a85f85b..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -make_set - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of make_set. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-struct make_set;
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [12] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
T0, T1,... TNAny typeThe - arguments to make_set -
-
- - Expression - Semantics -
-
-result_of::make_set<T0, T1,... TN>::type
-
-

- Return type: A set with elements of types converted - following the rules for element - conversion. -

-

- Semantics: Create a set from T0, T1,... TN. -

-

- Precondition: There may be no duplicate - key types. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_set.hpp>
-
-
- - Example -
-
-result_of::make_set<int, char, double>::type
-
-
-

-

[12] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html deleted file mode 100644 index 1d59488c..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -make_vector - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of make_vector. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-struct make_vector;
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
T0, T1,... TNAny typeTemplate - arguments to make_vector -
-
- - Expression - Semantics -
-
-result_of::make_vector<T0, T1,... TN>::type
-
-

- Return type: A vector with elements of types - converted following the rules for element - conversion. -

-

- Semantics: Create a vector from T0, T1,... TN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/make_list.hpp>
-
-
- - Example -
-
-result_of::make_vector<int, const char(&)[7], double>::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html deleted file mode 100644 index d04d3f46..00000000 --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html +++ /dev/null @@ -1,116 +0,0 @@ - - - -vector_tie - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of vector_tie. -

-
- - Synopsis -
-
-template <typename T0, typename T1,... typename TN>
-struct vector_tie;
-
-

- The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE - before including any Fusion header to change the default. Example: -

-
-#define FUSION_MAX_VECTOR_SIZE 20
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
T0, T1,... TNAny typeThe - arguments to vector_tie -
-
- - Expression - Semantics -
-
-result_of::vector_tie<T0, T1,... TN>::type;
-
-

- Return type: vector<T0&, T1&,... - TN&> -

-

- Semantics: Create a vector of references from T0, T1,... TN. -

-
- - Header -
-
-#include <boost/fusion/sequence/generation/vector_tie.hpp>
-
-
- - Example -
-
-result_of::vector_tie<int, double>::type
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html deleted file mode 100644 index 85c7d5ed..00000000 --- a/doc/html/fusion/sequences/intrinsics.html +++ /dev/null @@ -1,66 +0,0 @@ - - - -Intrinsics - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Intrinsics form the essential interface of Fusion _sequence_s. - STL - counterparts of these functions are usually implemented as member functions. - Intrinsic functions, unlike Algorithms, - are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence - [5] - . -

-

- - Header -

-
-#include <boost/fusion/sequence/intrinsic.hpp>
-
-
-

-

[5] - In practice, many of intrinsic functions have default implementations - that will work in majority of cases -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html deleted file mode 100644 index 37df07d8..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html deleted file mode 100644 index b87d6fd9..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -at - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-at
-
- - Description -
-

- Returns the N-th element from the beginning of the sequence. -

-
- - Synopsis -
-
-template <typename N, typename Sequence>
-typename result_of::at<Sequence, N>::type
-at(Sequence& seq);
-
-template <typename N, typename Sequence>
-typename result_of::at<Sequence const, N>::type
-at(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Random - Access Sequence -The sequence we wish to investigate.
NAn - MPL - integral constantAn index from the beginning of - the sequence.
-
- - Expression - Semantics -
-
-at<N>(seq);
-
-

- Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = o, where e - is the N-th element from the beginning of the sequence, is a valid expression. - Else, returns a type convertable to the N-th element from the beginning - of the sequence. -

-

- Precondition: 0 <= N::value < size(s) -

-

- Semantics: Equivalent to -

-
-deref(advance<N>(begin(s)))
-
-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(at<mpl::int_<1> >(v) == 2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html deleted file mode 100644 index cb6c9807..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -at_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the N-th element from the beginning of the sequence. -

-
- - Synopsis -
-
-template <int N, typename Sequence>
-typename result_of::at_c<Sequence, N>::type
-at_c(Sequence& seq);
-
-template <int N, typename Sequence>
-typename result_of::at_c<Sequence const, N>::type
-at_c(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Random - Access Sequence -The sequence we wish to investigate.
NAn - integral constantAn index from the beginning of - the sequence.
-
- - Expression - Semantics -
-
-at_c<N>(seq);
-
-

- Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = o, where e - is the N-th element from the beginning of the sequence, is a valid expression. - Else, returns a type convertable to the N-th element from the beginning - of the sequence. -

-

- Precondition: 0 <= N < size(s) -

-

- Semantics: Equivalent to -

-
-deref(advance<N>(begin(s)))
-
-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at_c.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(at_c<1>(v) == 2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html deleted file mode 100644 index 5871bc15..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -at_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the element associated with a Key from the sequence. -

-
- - Synopsis -
-
-template <typename Key, typename Sequence>
-typename result_of::at_key<Sequence, Key>::type
-at_key(Sequence& seq);
-
-template <typename Key, typename Sequence>
-typename result_of::at_key<Sequence const, Key>::type
-at_key(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Associative - Sequence -The sequence we wish to investigate.
KeyAny - typeThe queried key.
-
- - Expression - Semantics -
-
-at_key<Key>(seq);
-
-

- Return type: Returns a reference to - the element associated with Key from the sequence seq - if seq is mutable and - e = o, where e - is the element associated with Key, is a valid expression. Else, returns - a type convertable to the element associated with Key. -

-

- Precondition: has_key<Key>(seq) == true -

-

- Semantics: Returns the element associated - with Key. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at_key.hpp>
-
-
- - Example -
-
-set<int, char, bool> s(1, 'x', true);
-assert(at_key<char>(s) == 'x');
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html deleted file mode 100644 index f42ba3d5..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the last element in the sequence. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::back<Sequence>::type
-back(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::back<Sequence const>::type
-back(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Bidirectional - Sequence -The sequence we wish to investigate.
-
- - Expression - Semantics -
-
-back(seq);
-
-

- Return type: Returns a reference to - the last element in the sequence seq - if seq is mutable and - e = o, where e - is the last element in the sequence, is a valid expression. Else, returns - a type convertable to the last element in the sequence. -

-

- Precondition: empty(seq) == false -

-

- Semantics: Returns the last element - in the sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/back.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(back(v) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html deleted file mode 100644 index c9f09600..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -begin - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns an iterator pointing to the first element in the sequence. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::begin<Sequence>::type
-begin(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::begin<Sequence const>::type
-begin(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Forward - Sequence -The sequence we wish to get an iterator - from.
-
- - Expression - Semantics -
-
-begin(seq);
-
-

- Return type: Forward - Iterator if seq - is a Forward - Sequence else, Bidirectional - Iterator if seq - is a Bidirectional - Sequence else, Random - Access Iterator if seq - is a Random - Access Sequence. -

-

- Semantics: Returns an iterator pointing - to the first element in the sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(deref(begin(v)) == 1);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html deleted file mode 100644 index 013d13eb..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ /dev/null @@ -1,111 +0,0 @@ - - - -empty - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a type convertible to bool - that evaluates to true if - the sequence is empty, else, evaluates to false. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::empty<Sequence>::type
-empty(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Forward - Sequence -The sequence we wish to investigate.
-
- - Expression - Semantics -
-
-empty(seq);
-
-

- Return type: Convertible to bool. -

-

- Semantics: Evaluates to true if the sequence is empty, else, evaluates - to false. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/empty.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(empty(v) == false);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html deleted file mode 100644 index ec3b65cd..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -end - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-end
-
- - Description -
-

- Returns an iterator pointing to one element past the end of the sequence. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::end<Sequence>::type
-end(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::end<Sequence const>::type
-end(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Forward - Sequence -The sequence we wish to get an iterator - from.
-
- - Expression - Semantics -
-
-end(seq);
-
-

- Return type: Forward - Iterator if seq - is a Forward - Sequence else, Bidirectional - Iterator if seq - is a Bidirectional - Sequence else, Random - Access Iterator if seq - is a Random - Access Sequence. -

-

- Semantics: Returns an iterator pointing - to one element past the end of the sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/end.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(deref(prior(end(v))) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html deleted file mode 100644 index 56c6e66f..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the first element in the sequence. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::front<Sequence>::type
-front(Sequence& seq);
-
-template <typename Sequence>
-typename result_of::front<Sequence const>::type
-front(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Forward - Sequence -The sequence we wish to investigate.
-
- - Expression - Semantics -
-
-front(seq);
-
-

- Return type: Returns a reference to - the first element in the sequence seq - if seq is mutable and - e = o, where e - is the first element in the sequence, is a valid expression. Else, returns - a type convertable to the first element in the sequence. -

-

- Precondition: empty(seq) == false -

-

- Semantics: Returns the first element - in the sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/front.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(front(v) == 1);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html deleted file mode 100644 index df6aef1f..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -has_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a type convertible to bool - that evaluates to true if - the sequence contains an element associated with a Key, else, evaluates - to false. -

-
- - Synopsis -
-
-template <typename Key, typename Sequence>
-typename result_of::has_key<Sequence, Key>::type
-has_key(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Associative - Sequence -The sequence we wish to investigate.
KeyAny - typeThe queried key.
-
- - Expression - Semantics -
-
-has_key<Key>(seq);
-
-

- Return type: Convertible to bool. -

-

- Semantics: Evaluates to true if the sequence contains an element - associated with Key, else, evaluates to false. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/has_key.hpp>
-
-
- - Example -
-
-set<int, char, bool> s(1, 'x', true);
-assert(has_key<char>(s) == true);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html deleted file mode 100644 index 5fbe1350..00000000 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ /dev/null @@ -1,110 +0,0 @@ - - - -size - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns a type convertible to int - that evaluates the number of elements in the sequence. -

-
- - Synopsis -
-
-template <typename Sequence>
-typename result_of::size<Sequence>::type
-size(Sequence const& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
seqModel - of Forward - Sequence -The sequence we wish to investigate.
-
- - Expression - Semantics -
-
-size(seq);
-
-

- Return type: Convertible to int. -

-

- Semantics: Returns the number of elements - in the sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-
-
- - Example -
-
-vector<int, int, int> v(1, 2, 3);
-assert(size(v) == 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html deleted file mode 100644 index eafb7ed6..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Metafunctions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
- - - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html deleted file mode 100644 index 92f96b02..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ /dev/null @@ -1,131 +0,0 @@ - - - -at - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-at
-
- - Description -
-

- Returns the result type of at - [6] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename N>
-struct at
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.25. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
NAn - MPL Integral ConstantIndex of element
-
-
- - Expression - Semantics -
-
-result_of::at<Seq, N>::type
-
-

- Return type: Any type. -

-

- Semantics: Returns the result type of - using at to access the Nth element of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at.hpp>
-
-
- - Example -
-
-typedef vector<int,float,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
-
-
-

-

[6] - result_of::at reflects the actual return - type of the function at. _sequence_s - typically return references to its elements via the at function. If you want - to get the actual element type, use result_of::value_at -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html deleted file mode 100644 index ff7fe1d3..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ /dev/null @@ -1,131 +0,0 @@ - - - -at_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of at_c - [7] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    int M>
-struct at_c
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.26. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
MPositive - integer indexIndex of element
-
-
- - Expression - Semantics -
-
-result_of::at_c<Seq, M>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the result type of - using at_c to access the Mth element of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at.hpp>
-
-
- - Example -
-
-typedef vector<int,float,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
-
-
-

-

[7] - result_of::at_c reflects the actual - return type of the function at_c. _sequence_s - typically return references to its elements via the at_c function. If you want - to get the actual element type, use result_of::value_at_c -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html deleted file mode 100644 index 31d04ae3..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -at_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of at_key - [8] - . -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename Key>
-struct at_key
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.30. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
KeyAny - typeKey type
-
-
- - Expression - Semantics -
-
-result_of::at_key<Seq, Key>::type
-
-

- Return type: Any type. -

-

- Semantics: Returns the result of using - at_key to access the element - with key type Key in - Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/at_key.hpp>
-
-
- - Example -
-
-typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
-BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
-
-
-

-

[8] - result_of::at_key reflects the actual - return type of the function at_key. _sequence_s - typically return references to its elements via the at_key function. If you - want to get the actual element type, use result_of::value_at_key -

-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html deleted file mode 100644 index 7606e773..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ /dev/null @@ -1,110 +0,0 @@ - - - -back - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of back. -

-
- - Synopsis -
-
-template<typename Seq>
-struct back
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.23. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::back<Seq>::type
-
-

- Return type: Any type -

-

- Semantics: The type returned by dereferencing - an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/back.hpp>
-
-
- - Example -
-
-typedef vector<int,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html deleted file mode 100644 index 008734ed..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ /dev/null @@ -1,112 +0,0 @@ - - - -begin - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of begin. -

-
- - Synopsis -
-
-template<typename Seq>
-struct begin
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.19. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::begin<Seq>::type
-
-

- Return type: An iterator modelling the - same traversal concept as Seq. -

-

- Semantics: Returns the type of an iterator - to the first element of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-
-
- - Example -
-
-typedef vector<int> vec;
-typedef result_of::begin<vec>::type it;
-BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html deleted file mode 100644 index 1ef6f32a..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -empty - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of empty. -

-
- - Synopsis -
-
-template<typename Seq>
-struct empty
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.21. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::empty<Seq>::type
-
-

- Return type: An MPL Integral Constant -

-

- Semantics: Returns mpl::true_ - if Seq has zero elements, - mpl::false_ otherwise. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/empty.hpp>
-
-
- - Example -
-
-typedef vector<> empty_vec;
-typedef vector<int,float,char> vec;
-
-BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
-BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html deleted file mode 100644 index 8e7fb614..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ /dev/null @@ -1,112 +0,0 @@ - - - -end - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-end
-
- - Description -
-

- Returns the result type of end. -

-
- - Synopsis -
-
-template<typename Seq>
-struct end
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.20. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::end<Seq>::type
-
-

- Return type: A model of the same traversal - concept as Seq. -

-

- Semantics: Returns the type of an iterator - one past the end of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/end.hpp>
-
-
- - Example -
-
-typedef vector<int> vec;
-typedef result_of::prior<result_of::end<vec>::type>::type first;
-BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html deleted file mode 100644 index 79872a6e..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ /dev/null @@ -1,111 +0,0 @@ - - - -front - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of front. -

-
- - Synopsis -
-
-template<typename Seq>
-struct front
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.22. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::front<Seq>::type
-
-

- Return type: Any type -

-

- Semantics: The type returned by dereferencing - an iterator to the first element in Seq. - Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/front.hpp>
-
-
- - Example -
-
-typedef vector<int,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html deleted file mode 100644 index 107945c4..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ /dev/null @@ -1,123 +0,0 @@ - - - -has_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of has_key. -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename Key>
-struct has_key
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.29. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
KeyAny - typeKey type
-
-
- - Expression - Semantics -
-
-result_of::has_key<Seq, Key>::type
-
-

- Return type: An MPL Integral Constant. -

-

- Semantics: Returns mpl::true_ - if Seq contains an element - with key type Key, returns - mpl::false_ otherwise. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/has_key.hpp>
-
-
- - Example -
-
-typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
-BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
-BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html deleted file mode 100644 index aa4ce8c0..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ /dev/null @@ -1,111 +0,0 @@ - - - -size - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the result type of size. -

-
- - Synopsis -
-
-template<typename Seq>
-struct size
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.24. Parameters

- ----- - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
-
-
- - Expression - Semantics -
-
-result_of::size<Seq>::type
-
-

- Return type: An MPL Integral Constant. -

-

- Semantics: Returns the number of elements - in Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-
-
- - Example -
-
-typedef vector<int,float,char> vec;
-typedef result_of::size<vec>::type size_mpl_integral_constant;
-BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html deleted file mode 100644 index ae292918..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -value_at - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the actual type at a given index from the Sequence. -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename N>
-struct value_at
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.27. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
NAn - MPL Integral ConstantIndex of element
-
-
- - Expression - Semantics -
-
-result_of::value_at<Seq, N>::type
-
-

- Return type: Any type. -

-

- Semantics: Returns the actual type at - the Nth element of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/value_at.hpp>
-
-
- - Example -
-
-typedef vector<int,float,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html deleted file mode 100644 index 896c7a26..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ /dev/null @@ -1,120 +0,0 @@ - - - -value_at_c - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the actual type at a given index from the Sequence. -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    int M>
-struct value_at_c
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.28. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
MPositive - integer indexIndex of element
-
-
- - Expression - Semantics -
-
-result_of::value_at_c<Seq, M>::type
-
-

- Return type: Any type -

-

- Semantics: Returns the actual type at - the Mth element of Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/value_at.hpp>
-
-
- - Example -
-
-typedef vector<int,float,char> vec;
-BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html deleted file mode 100644 index 1b04db1a..00000000 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -value_at_key - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Returns the actual element type associated with a Key from the Sequence. -

-
- - Synopsis -
-
-template<
-    typename Seq,
-    typename Key>
-struct value_at_key
-{
-    typedef unspecified type;
-};
-
-
-

Table 1.31. Parameters

- ----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
SeqA - model of Forward - Sequence -Argument sequence
KeyAny - typeKey type
-
-
- - Expression - Semantics -
-
-result_of::value_at_key<Seq, Key>::type
-
-

- Return type: Any type. -

-

- Semantics: Returns the actual element - type associated with key type Key - in Seq. -

-
- - Header -
-
-#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
-
-
- - Example -
-
-typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
-BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html deleted file mode 100644 index ea5ab678..00000000 --- a/doc/html/fusion/sequences/operators.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Operators - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- These operators, like the Algorithms, - work generically on all Fusion sequences. All conforming Fusion sequences - automatically get these operators for free. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html deleted file mode 100644 index bf7a25dc..00000000 --- a/doc/html/fusion/sequences/operators/comparison.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -Comparison - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- The Comparison operators: ==, - !=, <, - <=, >= - and >= work generically - on all Fusion sequences. Comparison operators are "short- circuited": - elementary comparisons start from the first elements and are performed - only until the result is clear. -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html deleted file mode 100644 index 1cecff00..00000000 --- a/doc/html/fusion/sequences/operators/comparison/equal.html +++ /dev/null @@ -1,131 +0,0 @@ - - - -equal - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- Compare two sequences for equality. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator==(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a == b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length - _sequence_s, e and f, e == f returns - true. -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/equal_to.hpp>
-
-
- - Example -
-
-vector<int, char> v1(5, 'a');
-vector<int, char> v2(5, 'a');
-assert(v1 == v2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html deleted file mode 100644 index f02d0e12..00000000 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -greater - than - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Lexicographically compare two sequences. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator>(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a > b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: Returns b < a. -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/less_equal.hpp>
-
-
- - Example -
-
-vector<int, float> v1(4, 3.3f);
-vector<short, float> v2(5, 3.3f);
-vector<long, double> v3(5, 4.4);
-assert(v2 > v1);
-assert(v3 > v2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html deleted file mode 100644 index d6ce001f..00000000 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -greater - than equal - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Lexicographically compare two sequences. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator>=(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a >= b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: Returns !(a < b). -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/greater_equal.hpp>
-
-
- - Example -
-
-vector<int, float> v1(4, 3.3f);
-vector<short, float> v2(5, 3.3f);
-vector<long, double> v3(5, 4.4);
-assert(v2 >= v1);
-assert(v3 >= v2);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html deleted file mode 100644 index ec50a2b3..00000000 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ /dev/null @@ -1,127 +0,0 @@ - - - -less - than - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Lexicographically compare two sequences. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator<(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a < b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: Returns the lexicographical - comparison of between a - and b. -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/less.hpp>
-
-
- - Example -
-
-vector<int, float> v1(4, 3.3f);
-vector<short, float> v2(5, 3.3f);
-vector<long, double> v3(5, 4.4);
-assert(v1 < v2);
-assert(v2 < v3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html deleted file mode 100644 index 6f451a27..00000000 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -less - than equal - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Lexicographically compare two sequences. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator<=(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a <= b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: Returns !(b < a). -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/less_equal.hpp>
-
-
- - Example -
-
-vector<int, float> v1(4, 3.3f);
-vector<short, float> v2(5, 3.3f);
-vector<long, double> v3(5, 4.4);
-assert(v1 <= v2);
-assert(v2 <= v3);
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html deleted file mode 100644 index 2d806eb3..00000000 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ /dev/null @@ -1,127 +0,0 @@ - - - -not - equal - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- Compare two sequences for inequality. -

-
- - Synopsis -
-
-template <typename Seq1, typename Seq2>
-bool
-operator!=(Seq1 const& a, Seq2 const& b);
-
-
- - Parameters -
-
----- - - - - - - - - - - -
ParameterRequirementDescription
a, bInstances of - Sequence - -_sequence_s to compare
-
- - Expression - Semantics -
-
-a != b
-
-

- Return type: bool -

-

- Requirements: -

-

- For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a - type that is convertible to bool. -

-

- An attempt to compare two Sequences of different lengths results in a - compile time error. -

-

- Semantics: -

-

- Returns !(a == b). -

-
- - Header -
-
-#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
-
-
- - Example -
-
-vector<int, char> v3(5, 'b');
-vector<int, char> t4(2, 'a');
-assert(v1 != v3);
-assert(v1 != t4);
-assert(!(v1 != v2));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html deleted file mode 100644 index 504ae2ac..00000000 --- a/doc/html/fusion/sequences/operators/i_o.html +++ /dev/null @@ -1,134 +0,0 @@ - - - -I/O - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-

-I/O

-
-
in
-
out
-
-

- The I/O operators: << - and >> work generically - on all Fusion sequences. The global operator<< has been overloaded for generic - output streams such that _sequence_s - are output by recursively calling operator<< for each element. Analogously, - the global operator>> - has been overloaded to extract _sequence_s - from generic input streams by recursively calling operator>> for each element. -

-

- The default delimiter between the elements is space, and the Sequence - is enclosed in parenthesis. For Example: -

-
-vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
-cout << a; 
-
-

- outputs the vector as: (1.0 2 Howdy folks!) -

-

- The library defines three manipulators for changing the default behavior: -

-
-

Manipulators

-
-
tuple_open(arg)
-
- Defines the character that is output before the first element. -
-
tuple_close(arg)
-
- Defines the character that is output after the last element. -
-
tuple_delimiter(arg)
-
- Defines the delimiter character between elements. -
-
-
-

- The argument to tuple_open, - tuple_close and tuple_delimiter may be a char, wchar_t, - a C-string, or a wide C-string. -

-

- Example: -

-
-std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;
-
-

- outputs the same vector, a - as: [1.0, 2, Howdy folks!] -

-

- The same manipulators work with operator>> and istream - as well. Suppose the std::cin - stream contains the following data: -

-
-(1 2 3) [4:5]
-
-

- The code: -

-
-vector<int, int, int> i;
-vector<int, int> j;
-
-std::cin >> i;
-std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
-std::cin >> j;
-
-

- reads the data into the _vector_s - i and j. -

-

- Note that extracting _sequence_s - with std::string or C-style string elements does - not generally work, since the streamed Sequence - representation may not be unambiguously parseable. -

-
- - Header -
-
-#include <boost/fusion/sequence/io.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html deleted file mode 100644 index 24b1d5de..00000000 --- a/doc/html/fusion/sequences/operators/i_o/in.html +++ /dev/null @@ -1,115 +0,0 @@ - - - -in - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-in
-
- - Description -
-

- Read a Sequence from an input - stream. -

-
- - Synopsis -
-
-template <typename IStream, typename Sequence>
-IStream&
-operator>>(IStream& is, Sequence& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
isAn input stream.Stream to - extract information from.
seqA Sequence.The - sequence to read.
-
- - Expression - Semantics -
-
-is >> seq
-
-

- Return type: IStream& -

-

- Semantics: For each element, e, in sequence, seq, - call is >> e. -

-
- - Header -
-
-#include <boost/fusion/sequence/io/in.hpp>
-
-
- - Example -
-
-vector<int, std::string, char> v;
-std::cin >> v;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html deleted file mode 100644 index b6ee3e05..00000000 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -out - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
-
-out
-
- - Description -
-

- Write a Sequence to an output - stream. -

-
- - Synopsis -
-
-template <typename OStream, typename Sequence>
-OStream&
-operator<<(OStream& os, Sequence& seq);
-
-
- - Parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterRequirementDescription
osAn output stream.Stream - to write information to.
seqA Sequence.The - sequence to write.
-
- - Expression - Semantics -
-
-os << seq
-
-

- Return type: OStream& -

-

- Semantics: For each element, e, in sequence, seq, - call os << e. -

-
- - Header -
-
-#include <boost/fusion/sequence/io/out.hpp>
-
-
- - Example -
-
-std::cout << make_vector(123, "Hello", 'x') << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html deleted file mode 100644 index 4977c23d..00000000 --- a/doc/html/fusion/sequences/views.html +++ /dev/null @@ -1,63 +0,0 @@ - - - -Views - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Views are sequences that do not actually contain data, but instead impart - an alternative presentation over the data from one or more underlying sequences. - Views are proxies. They provide an efficient yet purely functional way to - work on potentially expensive sequence operations. Views are inherently lazy. - Their elements are only computed on demand only when the elements of the - underlying sequence(s) are actually accessed. Views' lazy nature make them - very cheap to copy and be passed around by value. -

-

- - Header -

-
-#include <boost/fusion/sequence/view.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html deleted file mode 100644 index 922e6573..00000000 --- a/doc/html/fusion/sequences/views/filter_view.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -filter_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- filter_view is a view into - a subset of its underlying sequence's elements satisfying a given predicate - (an MPL metafunction). - The filter_view presents - only those elements for which its predicate evaluates to mpl::true_. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/filter_view.hpp>
-
-
- - Synopsis -
-
-template <typename Sequence, typename Pred>
-struct filter_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
SequenceA - Forward - Sequence - 
PredUnary - Metafunction returning an mpl::bool_ - 
-
- - Model of -
- -
-

Notation

-
-
F
-
- A filter_view type -
-
f, - f2
-
- Instances of filter_view -
-
s
-
- A Forward - Sequence -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
F(s)Creates - a filter_view given - a sequence, s.
F(f)Copy - constructs a filter_view - from another filter_view, - f.
f = f2Assigns to a - filter_view, f, from another filter_view, - f2.
-
- - Example -
-
-using boost::mpl::_;
-using boost::mpl::not_;
-using boost::is_class;
-
-typedef vector<std::string, char, long, bool, double> vector_type;
-
-vector_type v("a-string", '@', 987654, true, 6.6);
-filter_view<vector_type const, not_<is_class<_> > > view(v);
-std::cout << view << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html deleted file mode 100644 index 8c04570a..00000000 --- a/doc/html/fusion/sequences/views/iterator_range.html +++ /dev/null @@ -1,187 +0,0 @@ - - - -iterator_range - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- iterator_range presents - a sub-range of its underlying sequence delimited by a pair of iterators. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/iterator_range.hpp>
-
-
- - Synopsis -
-
-template <typename First, typename Last>
-struct iterator_range;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
FirstA - fusion Iterator - 
LastA - fusion Iterator - 
-
- - Model of -
- -
-

Notation

-
-
IR
-
- An iterator_range type -
-
f
-
- An instance of First -
-
l
-
- An instance of Last -
-
ir, - ir2
-
- Instances of iterator_range -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
IR(f, l)Creates - an iterator_range - given iterators, f - and l.
IR(ir)Copy - constructs an iterator_range - from another iterator_range, - ir.
ir = ir2Assigns to a - iterator_range, - ir, from another - iterator_range, - ir2.
-
- - Example -
-
-char const* s = "Ruby";
-typedef vector<int, char, double, char const*> vector_type;
-vector_type vec(1, 'x', 3.3, s);
-
-typedef result_of::begin<vector_type>::type A;
-typedef result_of::end<vector_type>::type B;
-typedef result_of::next<A>::type C;
-typedef result_of::prior<B>::type D;
-
-C c(vec);
-D d(vec);
-
-iterator_range<C, D> range(c, d);
-std::cout << range << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html deleted file mode 100644 index c6a06f5a..00000000 --- a/doc/html/fusion/sequences/views/joint_view.html +++ /dev/null @@ -1,181 +0,0 @@ - - - -joint_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- joint_view presents a view - which is a concatenation of two sequences. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/joint_view.hpp>
-
-
- - Synopsis -
-
-template <typename Sequence1, typename Sequence2>
-struct joint_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
Sequence1A - Forward - Sequence - 
Sequence2A - Forward - Sequence - 
-
- - Model of -
- -
-

Notation

-
-
JV
-
- A joint_view type -
-
s1
-
- An instance of Sequence1 -
-
s2
-
- An instance of Sequence2 -
-
jv, - jv2
-
- Instances of joint_view -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
JV(s1, s2)Creates - a joint_view given - sequences, s1 and - s2.
JV(jv)Copy - constructs a joint_view - from another joint_view, - jv.
jv = jv2Assigns to a - joint_view, jv, from another joint_view, jv2.
-
- - Example -
-
-vector<int, char> v1(3, 'x');
-vector<std::string, int> v2("hello", 123);
-joint_view<
-    vector<int, char>
-  , vector<std::string, int>
-> view(v1, v2);
-std::cout << view << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html deleted file mode 100644 index 2a5a3c36..00000000 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -reverse_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- reverse_view presents a - reversed view of underlying sequence. The first element will be its last - and the last element will be its first. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/reverse_view.hpp>
-
-
- - Synopsis -
-
-template <typename Sequence>
-struct reverse_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
SequenceA - Bidirectional - Sequence - 
-
- - Model of -
- -
-

Notation

-
-
RV
-
- A reverse_view type -
-
s
-
- An instance of Sequence -
-
rv, - rv2
-
- Instances of reverse_view -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Bidirectional - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
RV(s)Creates - a unary reverse_view - given sequence, s.
RV(rv)Copy - constructs a reverse_view - from another reverse_view, - rv.
rv = rv2Assigns to a - reverse_view, rv, from another reverse_view, rv2.
-
- - Example -
-
-typedef vector<int, short, double> vector_type;
-vector_type vec(2, 5, 3.3);
-
-reverse_view<vector_type> reverse(vec);
-std::cout << reverse << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html deleted file mode 100644 index 5949b995..00000000 --- a/doc/html/fusion/sequences/views/single_view.html +++ /dev/null @@ -1,154 +0,0 @@ - - - -single_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- single_view is a view into - a value as a single element sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/single_view.hpp>
-
-
- - Synopsis -
-
-template <typename T>
-struct single_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
TAny - type 
-
- - Model of -
- -
-

Notation

-
-
S
-
- A single_view type -
-
s, - s2
-
- Instances of single_view -
-
x
-
- An instance of T -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
S(x)Creates - a single_view from - x.
S(s)Copy - constructs a single_view - from another single_view, - s.
s = s2Assigns to a - single_view, s, from another single_view, - s2.
-
- - Example -
-
-single_view<int> view(3);
-std::cout << view << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html deleted file mode 100644 index b7438070..00000000 --- a/doc/html/fusion/sequences/views/transform_view.html +++ /dev/null @@ -1,270 +0,0 @@ - - - -transform_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- transform_view presents - a transformed view of its underlying sequence given a unary Polymorphic - Function Object. The transform_view - inherits the traversal characteristics (see Sequence - Traversal Concept) of its underlying sequence. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/transform_view.hpp>
-
-
- - Synopsis -
-

- Unary Version -

-
-template <typename Sequence, typename F>
-struct transform_view;
-
-

- Binary Version -

-
-template <typename Sequence1, typename Sequence2, typename F>
-struct transform_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault
SequenceA - Forward - Sequence - 
Sequence1A - Forward - Sequence - 
Sequence2A - Forward - Sequence - 
FA - Polymorphic - Function Object - 
-
- - Model of -
-
-
-

Notation

-
-
TV
-
- A transform_view type -
-
BTV
-
- A binary transform_view - type -
-
UTV
-
- A unary transform_view - type -
-
f
-
- An instance of F -
-
s
-
- An instance of Sequence -
-
s1
-
- An instance of Sequence1 -
-
s2
-
- An instance of Sequence2 -
-
tv, - tv2
-
- Instances of transform_view -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence, Bidirectional - Sequence or Random - Access Sequence depending on the traversal characteristics (see - Sequence Traversal - Concept) of its underlying sequence. -

-
---- - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
UTV(s, f)Creates - a unary transform_view - given sequence, s - and unary Polymorphic - Function Object, f.
BTV(s1, s2, f)Creates - a binary transform_view - given sequences, s1 - and s2 and unary - Polymorphic - Function Object, f.
TV(tv)Copy - constructs a transform_view - from another transform_view, - tv.
tv = tv2Assigns to a - transform_view, - tv, from another - transform_view, - tv2.
-
- - Example -
-
-struct square
-{
-    template <typename T>
-    struct result
-    {
-        typedef T type;
-    };
-
-    template <typename T>
-    T operator()(T x) const
-    {
-        return x * x;
-    }
-};
-
-typedef vector<int, short, double> vector_type;
-vector_type vec(2, 5, 3.3);
-
-transform_view<vector_type, square> transform(vec, square());
-std::cout << transform << std::endl;
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html deleted file mode 100644 index 74b2473d..00000000 --- a/doc/html/fusion/sequences/views/zip_view.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -zip_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- zip_view presents a view - which iterates over a collection of _sequence_s - in parallel. A zip_view - is constructed from a Sequence - of references to the component _sequence_s. -

-
- - Header -
-
-#include <boost/fusion/sequence/view/zip_view.hpp>
-
-
- - Synopsis -
-
-template <typename Sequences>
-struct zip_view;
-
-
- - Template - parameters -
-
----- - - - - - - - - - - -
ParameterDescriptionDefault
SequencesA - Forward - Sequence of references to other Fusion _sequence_s 
-
- - Model of -
- -
-

Notation

-
-
ZV
-
- A joint_view type -
-
s
-
- An instance of Sequences -
-
zv1, - zv2
-
- Instances of ZV -
-
-
-
- - Expression - Semantics -
-

- Semantics of an expression is defined only where it differs from, or is - not defined in Forward - Sequence. -

-
---- - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
ZV(s)Creates - a zip_view given - a sequence of references to the component _sequence_s.
ZV(zv1)Copy - constructs a zip_view - from another zip_view, - zv.
zv1 = zv2Assigns - to a zip_view, zv, from another zip_view, zv2.
-
- - Example -
-
-typedef vector<int,int> vec1;
-typedef vector<char,char> vec2;
-vec1 v1(1,2);
-vec2 v2('a','b');
-typedef vector<vec1&, vec2&> sequences;
-std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html deleted file mode 100644 index 532ba0f4..00000000 --- a/doc/html/fusion/support.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -Support - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- A couple of classes and metafunctions provide basic support for Fusion. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html deleted file mode 100644 index cc9f28c0..00000000 --- a/doc/html/fusion/support/category_of.html +++ /dev/null @@ -1,168 +0,0 @@ - - - -category_of - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- A metafunction that establishes the conceptual classification of a particular - Sequence or Iterator - (see Iterator Concepts and - Sequence Concepts). -

-

- - Synopsis -

-
-namespace traits
-{
-    template <typename T>
-    struct category_of 
-    {
-        typedef unspecified type;
-    };
-}
-
-

- - Parameters -

-
----- - - - - - - - - - - -
ParameterRequirementDescription
TAny - typeThe type to query.
-

- - Expression - Semantics -

-
-typedef traits::category_of<T>::type category;
-
-

- Return type: -

-

- For Iterators, the return type is derived from one of: -

-
-namespace boost { namespace fusion
-{
-    struct incrementable_traversal_tag {};
-
-    struct single_pass_traversal_tag
-        : incrementable_traversal_tag {};
-
-    struct forward_traversal_tag
-        : single_pass_traversal_tag {};
-
-    struct bidirectional_traversal_tag
-        : forward_traversal_tag {};
-
-    struct random_access_traversal_tag
-        : bidirectional_traversal_tag {};
-}}
-
-

- For Sequences, the return type is derived from one of: -

-
-namespace boost { namespace fusion
-{
-    struct incrementable_sequence_tag {};
-
-    struct single_pass_sequence_tag
-        : incrementable_sequence_tag {};
-
-    struct forward_traversal_tag
-        : single_pass_sequence_tag {};
-
-    struct bidirectional_traversal_tag
-        : forward_traversal_tag {};
-
-    struct random_access_traversal_tag
-        : bidirectional_traversal_tag {};
-}}
-
-

- And optionally from: -

-
-namespace boost { namespace fusion
-{
-    struct associative_sequence_tag {};
-}}
-
-

- Semantics: Establishes the conceptual classification - of a particular Sequence or Iterator. -

-

- - Header -

-
-#include <boost/fusion/support/category_of.hpp>
-
-

- - Example -

-
-using boost::is_base_of;
-typedef traits::category_of<list<> >::type list_category;
-typedef traits::category_of<vector<> >::type vector_category;
-BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
-BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html deleted file mode 100644 index 31f4c04b..00000000 --- a/doc/html/fusion/support/is_sequence.html +++ /dev/null @@ -1,121 +0,0 @@ - - - -is_sequence - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion Sequence, mpl::false_ - otherwise. This may be specialized to accomodate clients which provide Fusion - conforming sequences. -

-

- - Synopsis -

-
-namespace traits
-{
-    template <typename T>
-    struct is_sequence 
-    {
-        typedef unspecified type;
-    };
-}
-
-

- - Parameters -

-
----- - - - - - - - - - - -
ParameterRequirementDescription
TAny - typeThe type to query.
-

- - Expression - Semantics -

-
-typedef traits::is_sequence<T>::type c;
-
-

- Return type: An MPL Boolean Constant. -

-

- Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion sequence, mpl::false_ - otherwise. -

-

- - Header -

-
-#include <boost/fusion/support/is_sequence.hpp>
-
-

- - Example -

-
-BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
-BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
-BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
-BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
-BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
-BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html deleted file mode 100644 index 921a5116..00000000 --- a/doc/html/fusion/support/is_view.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -is_view - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion View, mpl::false_ - otherwise. A view is a specialized sequence that does not actually contain - data. Views hold sequences which may be other views. In general, views are - held by other views by value, while non-views are held by other views by - reference. is_view may be - specialized to accomodate clients providing Fusion conforming views. -

-

- - Synopsis -

-
-namespace traits
-{
-    template <typename T>
-    struct is_view 
-    {
-        typedef unspecified type;
-    };
-}
-
-

- - Parameters -

-
----- - - - - - - - - - - -
ParameterRequirementDescription
TAny - typeThe type to query.
-

- - Expression Semantics -

-
-typedef traits::is_view<T>::type c;
-
-

- Return type: An MPL Boolean Constant. -

-

- Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion view, mpl::false_ - otherwise. -

-

- - Header -

-
-#include <boost/fusion/support/is_view.hpp>
-
-

- - Example -

-
-BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
-BOOST_MPL_ASSERT_NOT(( traits::is_view<int> ));
-
-using boost::mpl::_
-using boost::is_pointer;
-typedef vector<int*, char, long*, bool, double> vector_type;
-typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
-BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html deleted file mode 100644 index c591cd2b..00000000 --- a/doc/html/fusion/support/pair.html +++ /dev/null @@ -1,222 +0,0 @@ - - - -pair - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- Fusion pair type is a half - runtime pair. A half runtime pair is similar to a std::pair, - but, unlike std::pair, - the first type does not have data. It is used as elements in _map_s, - for example. -

-

- - Synopsis -

-
-template <typename First, typename Second>
-struct pair;
-
-namespace result_of
-{
-    template <typename First, typename Second>
-    struct first;
-
-    template <typename First, typename Second>
-    struct second;
-
-    template <typename First, typename Second>
-    struct make_pair;
-}
-
-template <typename First, typename Second>
-typename result_of::make_pair<First,Second>::type
-make_pair(Second const &);
-
-

- - Template parameters -

-
---- - - - - - - - - - - - - - - -
ParameterDescription
FirstThe first type. This is purely a type. No - data is held.
SecondThe second type. This contains data.
-
-

Notation

-
-
P
-
- Fusion pair type -
-
p, - p2
-
- Fusion pairs -
-
F, - S
-
- Arbitrary types -
-
s
-
- Value of type S -
-
o
-
- Output stream -
-
i
-
- Input stream -
-
-
-

- - Expression Semantics -

-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExpressionSemantics
P::first_typeThe type - of the first template parameter, F, - equivalent to result_of::first<P>::type. -
P::second_typeThe type - of the second template parameter, S, - equivalent to result_of::second<P>::type. -
P()Default - construction.
P(s)Construct - a pair given value for the second type, s.
P(p2)Copy - constructs a pair from another pair, p2.
p = p2Assigns a pair, - p1, from another pair, p2.
make_pair<F>(s)Make a pair given the first - type, F, and a value - for the second type, s. - The second type assumes the type of s -
o << pOutput p to output stream, o.
i >> pInput p from input stream, i.
p == p2Tests two pairs - for equality.
p != p2Tests two pairs - for inequality.
-

- - Header -

-
-#include <boost/fusion/support/pair.hpp>
-
-

- - Example -

-
-pair<int, char> p('X');
-std::cout << p << std::endl;
-std::cout << make_pair<int>('X') << std::endl;
-assert((p == make_pair<int>('X')));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html deleted file mode 100644 index 156959d6..00000000 --- a/doc/html/fusion/support/tag_of.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -tag_of - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- All conforming Fusion sequences and iterators have an associated tag type. - The purpose of the tag is to enable tag - dispatching from Intrinsic - functions to implementations appropriate for the type. The default implementation - of tag_of returns T::fusion_tag - for a given type T, if such - a member typedef exists. -

-

- This metafunction may be specialized to accomodate clients providing Fusion - conforming sequences. -

-

- - Synopsis -

-
-namespace traits
-{
-    template<typename Sequence>
-    struct tag_of 
-    {
-        typedef unspecified type;
-    };
-}
-
-

- namespace traits { template<typename Sequence> struct tag_of { typedef - unspecified type; }; } [heading Parameters] -

-
----- - - - - - - - - - - -
ParameterRequirementDescription
TAny - typeThe type to query.
-

- - Expression Semantics -

-
-typedef traits::tag_of<T>::type tag;
-
-

- Return type: Any type. -

-

- Semantics: Returns the tag type associated - with T. -

-

- - Header -

-
-#include <boost/fusion/support/tag_of.hpp>
-
-

- - Example -

-
-typedef traits::is_sequence<list<> tag1;
-typedef traits::is_sequence<list<int> > tag2;
-typedef traits::is_sequence<vector<> > tag3;
-typedef traits::is_sequence<vector<int> > tag4;
-
-BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
-BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html deleted file mode 100644 index f3881d14..00000000 --- a/doc/html/fusion/tuples.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Tuples - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- The TR1 technical report describes extensions to the C++ standard library. - Many of these extensions will be considered for the next iteration of the C++ - standard. TR1 describes a tuple type, and support for treating std::pair - as a type of tuple. -

-

- Fusion provides full support for the TR1 - Tuple interface, and the extended uses of std::pair described - in the TR1 document. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html deleted file mode 100644 index 1f634499..00000000 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -Class template tuple - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- - -

- Fusion's implementation of the TR1 - Tuple is also a fusion Forward - Sequence. As such the fusion tuple type provides a lot of functionality - beyond that required by TR1. -

-

- Currently tuple is basically a synonym for vector, although this may be changed - in future releases of fusion. -

-

- - Synopsis -

-
-template<
-    typename T1 = unspecified,
-    typename T2 = unspecified,
-    ...
-    typename TN = unspecified>
-class tuple;
-
-

- - Header -

-
-#include <boost/fusion/tuple.hpp>
-
-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html deleted file mode 100644 index d6c19d2d..00000000 --- a/doc/html/fusion/tuples/class_template_tuple/construction.html +++ /dev/null @@ -1,128 +0,0 @@ - - - -Construction - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- The TR1 - Tuple type provides a default constructor, a constructor that takes - initializers for all of its elements, a copy constructor, and a converting - copy constructor. The details of the various constructors are described - in this section. -

-
- - Specification -
-
-

Notation

-
-
T1 - ... TN, - U1 ... - UN
-
- Tuple element types -
-
P1 - ... PN
-
- Parameter types -
-
Ti, - Ui
-
- The type of the ith element - of a tuple -
-
Pi
-
- The type of the ith parameter -
-
-
-
-tuple();
-
-

- Requirements: Each Ti - is default constructable. -

-

- Semantics: Default initializes each element - of the tuple. -

-
-tuple(P1,P2,...,PN);
-
-

- Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. -

-

- Semantics: Copy initializes each element - with the corresponding parameter. -

-
-tuple(const tuple& t);
-
-

- Requirements: Each Ti - should be copy constructable. -

-

- Semantics: Copy constructs each element - of *this - with the corresponding element of t. -

-
-template<typename U1, typename U2, ..., typename UN>
-tuple(const tuple<U1, U2, ..., UN>& t);
-
-

- Requirements: Each Ti - shall be constructible from the corresponding Ui. -

-

- Semantics: Constructs each element of - *this - with the corresponding element of t. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html deleted file mode 100644 index abd7911a..00000000 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Element - access - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- The TR1 - Tuple provides the get - function to provide access to it's elements by zero based numeric index. -

-
- - Specification -
-
-template<int I, T>
-RJ get(T& t);
-
-

- Requires: 0 < I <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. -

-

- Return type: RJ - is equivalent to result_of::at_c<I,T>::type. -

-

- Returns: A reference to the Ith element of T. -

-
-template<int I, typename T>
-PJ get(T const& t);
-
-

- Requires: 0 < I <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. -

-

- Return type: PJ - is equivalent to result_of::at_c<I,T>::type. -

-

- Returns: A const reference to the Ith element of T. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html deleted file mode 100644 index fc34d00f..00000000 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ /dev/null @@ -1,191 +0,0 @@ - - - -Relational - operators - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- The TR1 - Tuple provides the standard boolean relational operators. -

-
- - Specification -
-
-

Notation

-
-
T1 - ... TN, - U1 ... - UN
-
- Tuple element types -
-
P1 - ... PN
-
- Parameter types -
-
Ti, - Ui
-
- The type of the ith element - of a tuple -
-
Pi
-
- The type of the ith parameter -
-
-
-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator==(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns true - if and only if get<i>(lhs) == get<i>(rhs) - for all i. For any 2 zero - length tuples e and f, e == f - returns true. -

-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator<(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns the lexicographical - comparison of between lhs - and rhs. -

-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator!=(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns !(lhs == rhs). -

-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator<=(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns !(rhs < lhs) -

-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator>(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns rhs < lhs. -

-
-template<typename T1, typename T2, ..., typename TN,
-         typename U1, typename U2, ..., typename UN>
-bool operator>=(
-    const tuple<T1, T2, ..., TN>& lhs,
-    const tuple<U1, U2, ..., UN>& rhs);
-
-

- Requirements: For all i, - 1 <= i < N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. -

-

- Semantics: Returns !(lhs < rhs). -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html deleted file mode 100644 index 220e5ad4..00000000 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -Tuple - creation functions - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple - builds a tuple out of it's argument list, and tie - builds a tuple of references to it's arguments. The details of these creation - functions are described in this section. -

-
- - Specification -
-
-template<typename T1, typename T2, ..., typename TN>
-tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
-
-

- Where Vi is X& - if the cv-unqualified type Ti - is reference_wrapper<X>, - otherwise Vi is Ti. -

-

- Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) -

-
-template<typename T1, typename T2, ..., typename TN>
-tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
-
-

- Returns: tuple<T1&, T2&, ..., - TN&>(t1, t2, ..., tN). When argument ti - is ignore, assigning any - value to the corresponding tuple element has has no effect. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html deleted file mode 100644 index 28e0292e..00000000 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ /dev/null @@ -1,83 +0,0 @@ - - - -Tuple - helper classes - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -
- - Description -
-

- The TR1 - Tuple provides 2 helper traits, for compile time access to the - tuple size, and the element types. -

-
- - Specification -
-
-tuple_size<T>::value
-
-

- Requires: T - is any fusion sequence type, including tuple. -

-

- Type: MPL Integral Constant -

-

- Value: The number of elements in the sequence. - Equivalent to result_of::size<T>::type. -

-
-tuple_element<I, T>::type
-
-

- Requires: T - is any fusion sequence type, including tuple. - 0 <= I < N or the program is ill formed. -

-

- Value: The type of the Ith - element of T. Equivalent - to result_of::value_at<I,T>::type. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html deleted file mode 100644 index 678eda1f..00000000 --- a/doc/html/fusion/tuples/pairs.html +++ /dev/null @@ -1,101 +0,0 @@ - - - -Pairs - - - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
-PrevUpHomeNext -
-
- -

- - Description -

-

- The TR1 - Tuple interface is specified to provide uniform access to std::pair - as if it were a 2 element tuple. -

-

- - Specification -

-
-tuple_size<std::pair<T1, T2> >::value
-
-

- Type: An MPL Integral Constant -

-

- Value: Returns 2, the number of elements - in a pair. -

-
-tuple_element<0, std::pair<T1, T2> >::type
-
-

- Type: T1 -

-

- Value: Returns the type of the first element - of the pair -

-
-tuple_element<1, std::pair<T1, T2> >::type
-
-

- Type: T2 -

-

- Value: Returns thetype of the second element - of the pair -

-
-template<int I, typename T1, typename T2>
-P& get(std::pair<T1, T2>& pr);
-
-template<int I, typename T1, typename T2>
-const P& get(const std::pair<T1, T2>& pr);
-
-

- Type: If I == 0 P is T1, - else if I == 1 P - is T2 else the program is - ill-formed. -

-

- Returns: pr.first - if I == 0 else pr.second.[*Returns: - pr.first if I == 0 else - pr.second. -

-
- - - -
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
-
-
-PrevUpHomeNext -
- - diff --git a/doc/html/images/alert.png b/doc/html/images/alert.png deleted file mode 100755 index b4645bc7..00000000 Binary files a/doc/html/images/alert.png and /dev/null differ diff --git a/doc/html/images/caution.png b/doc/html/images/caution.png deleted file mode 100644 index 5b7809ca..00000000 Binary files a/doc/html/images/caution.png and /dev/null differ diff --git a/doc/html/images/fusion_org.png b/doc/html/images/fusion_org.png deleted file mode 100644 index 3bb56539..00000000 Binary files a/doc/html/images/fusion_org.png and /dev/null differ diff --git a/doc/html/images/home.png b/doc/html/images/home.png deleted file mode 100755 index 5584aacb..00000000 Binary files a/doc/html/images/home.png and /dev/null differ diff --git a/doc/html/images/important.png b/doc/html/images/important.png deleted file mode 100644 index 12c90f60..00000000 Binary files a/doc/html/images/important.png and /dev/null differ diff --git a/doc/html/images/next.png b/doc/html/images/next.png deleted file mode 100755 index 59800b4e..00000000 Binary files a/doc/html/images/next.png and /dev/null differ diff --git a/doc/html/images/note.png b/doc/html/images/note.png deleted file mode 100755 index 3ed047ca..00000000 Binary files a/doc/html/images/note.png and /dev/null differ diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png deleted file mode 100755 index d88a40f9..00000000 Binary files a/doc/html/images/prev.png and /dev/null differ diff --git a/doc/html/images/smiley.png b/doc/html/images/smiley.png deleted file mode 100755 index 30a77f71..00000000 Binary files a/doc/html/images/smiley.png and /dev/null differ diff --git a/doc/html/images/tip.png b/doc/html/images/tip.png deleted file mode 100755 index 9f596b0b..00000000 Binary files a/doc/html/images/tip.png and /dev/null differ diff --git a/doc/html/images/up.png b/doc/html/images/up.png deleted file mode 100755 index 17d9c3ec..00000000 Binary files a/doc/html/images/up.png and /dev/null differ diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png deleted file mode 100644 index 1c33db8f..00000000 Binary files a/doc/html/images/warning.png and /dev/null differ diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index 76954209..00000000 --- a/doc/html/index.html +++ /dev/null @@ -1,66 +0,0 @@ - - - -Chapter 1. Fusion 2.0 - - - - - - - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
-
-
Next
-
-
-

-Chapter 1. Fusion 2.0

-

-Joel de Guzman -

-

-Dan Marsden -

-
-
-

- Distributed under 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) -

-
-
- -
- - - -

Last revised: October 30, 2006 at 01:07:37 GMT

-
-
Next
- - diff --git a/doc/introduction.qbk b/doc/introduction.qbk deleted file mode 100644 index d8f3f880..00000000 --- a/doc/introduction.qbk +++ /dev/null @@ -1,81 +0,0 @@ -[section Introduction] - -An advantage other languages such as Python and Lisp/ Scheme, ML and -Haskell, etc., over C++ is the ability to have heterogeneous containers -that can hold arbitrary element types. All the containers in the standard -library can only hold a specific type. A `vector` can only hold -`int`s. A `list` can only hold elements of type `X`, and so on. - -True, you can use inheritance to make the containers hold different types, -related through subclassing. However, you have to hold the objects through -a pointer or smart reference of some sort. Doing this, you'll have to rely -on virtual functions to provide polymorphic behavior since the actual type -is erased as soon as you store a pointer to a derived class to a pointer to -its base. The held objects must be related: you cannot hold objects of -unrelated types such as `char`, `int`, `class X`, `float`, etc. Oh sure you -can use something like __boost_any__ to hold arbitrary types, but then you -pay more in terms of runtime costs and due to the fact that you practically -erased all type information, you'll have to perform dangerous casts to get -back the original type. - -The __tuple__ library written by __jaakko_jarvi__ provides heterogeneous -containers in C++. The `tuple` is a basic data structure that can hold -heterogeneous types. It's a good first step, but it's not complete. What's -missing are the algorithms. It's nice that we can store and retrieve data -to and from tuples, pass them around as arguments and return types. As it -is, the __tuple__ facility is already very useful. Yet, as soon as you use -it more often, usage patterns emerge. Eventually, you collect these -patterns into algorithm libraries. - -Hmmm, kinda reminds us of STL right? Right! Can you imagine how it would be -like if you used STL without the algorithms? Everyone will have to reinvent -their own /algorithm/ wheels. - -Fusion is a library and a framework similar to both __stl__ and the boost -__mpl__. The structure is modeled after __mpl__, which is modeled -after __stl__. It is named "fusion" because the library is reminiscent of -the "fusion" of compile time meta-programming with runtime programming. The -library inherently has some interesting flavors and characteristics of both -__mpl__ and __stl__. It lives in the twilight zone between compile time -meta-programming and run time programming. __stl__ containers work on -values. MPL containers work on types. Fusion containers work on both types -and values. - -Unlike __mpl__, Fusion algorithms are lazy and non sequence-type -preserving. What does that mean? It means that when you operate on a -sequence through a Fusion algorithm that returns a sequence, the sequence -returned may not be of the same class as the original. This is by design. -Runtime efficiency is given a high priority. Like __mpl__, and unlike -__stl__, fusion algorithms are functional in nature such that algorithms -are non mutating (no side effects). However, due to the high cost of -returning full sequences such as vectors and lists, /Views/ are returned -from Fusion algorithms instead. For example, the __transform__ algorithm -does not actually return a transformed version of the original sequence. -__transform__ returns a __transform_view__. This view holds a reference to -the original sequence plus the transform function. Iteration over the -__transform_view__ will apply the transform function over the sequence -elements on demand. This /lazy/ evaluation scheme allows us to chain as -many algorithms as we want without incurring a high runtime penalty. - -The /lazy/ evaluation scheme where algorithms return views allows -operations such as __push_back__ to be totally generic. In Fusion, -__push_back__ is actually a generic algorithm that works on all sequences. -Given an input sequence `s` and a value `x`, Fusion's __push_back__ -algorithm simply returns a __joint_view__: a view that holds a reference to -the original sequence `s` and the value `x`. Functions that were once -sequence specific and need to be implemented N times over N different -sequences are now implemented only once. - -Fusion provides full round compatibility with __mpl__. Fusion sequences are -fully conforming __mpl__ sequences and __mpl__ sequences are fully -compatible with Fusion. You can work with Fusion sequences on __mpl__ if -you wish to work solely on types. In __mpl__, Fusion sequences follow -__mpl__'s sequence-type preserving semantics (i.e. algorithms preserve the -original sequence type. e.g. transforming a vector returns a vector). You -can also convert from an __mpl__ sequence to a Fusion sequence. For -example, there are times when it is convenient to work solely on __mpl__ -using pure __mpl__ sequences, then, convert them to Fusion sequences as a -final step before actual instantiation of real runtime objects with data. -You have the best of both worlds. - -[endsect] diff --git a/doc/iterators.qbk b/doc/iterators.qbk deleted file mode 100644 index 1607242a..00000000 --- a/doc/iterators.qbk +++ /dev/null @@ -1,855 +0,0 @@ -[section Iterators] -Like __mpl__ and __stl__, iterators are a fundamental concept in Fusion. -As with __mpl__ and __stl__ iterators describe positions, and -provide access to data within an underlying __sequence__. - -[heading Header] - #include - -[section Concepts] - -Fusion iterators are divided into different traversal categories. -__forward_iterator__ is the most basic concept. __bidirectional_iterator__ -is a refinement of __forward_iterator__. __random_access_iterator__ is a -refinement of __bidirectional_iterator__. - -[section Forward Iterator] - -[heading Description] -A Forward Iterator traverses a __sequence__ allowing movement in only one direction through -it's elements, one element at a time. - -[variablelist Notation - [[`i`, `j`] [Forward Iterators]] - [[`I`, `J`] [Forward Iterator types]] - [[`M`] [An __mpl__ integral constant]] - [[`N`] [An integral constant]] -] - -[heading Expression requirements] -A type models Forward Iterator if, in addition to being CopyConstructable, -the following expressions are valid: - -[table - [[Expression] [Return type] [Runtime Complexity]] - [[`__next__(i)`] [__forward_iterator__] [Constant]] - [[`i == j`] [Convertible to bool] [Constant]] - [[`i != j`] [Convertible to bool] [Constant]] - [[`__advance_c__(i)`] [__forward_iterator__] [Constant]] - [[`__advance__(i)`] [__forward_iterator__] [Constant]] - [[`__distance__(i, j)`] [`__result_of_distance__::type`][Constant]] - [[`__deref__(i)`] [`__result_of_deref__::type`] [Constant]] - [[`*i`] [`__result_of_deref__::type`] [Constant]] -] - -[heading Meta Expressions] -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_next__::type`] [Amortized constant time]] - [[`__result_of_equal_to__::type`] [Amortized constant time]] - [[`__result_of_advance_c__::type`] [Linear]] - [[`__result_of_advance__::type`] [Linear]] - [[`__result_of_distance__::type`] [Linear]] - [[`__result_of_deref__::type`] [Amortized constant time]] - [[`__result_of_value_of__::type`] [Amortized constant time]] -] - -[heading Expression Semantics] -[ -table - [[Expression] [Semantics]] - [[`__next__(i)`] [An iterator to the element following `i`]] - [[`i == j`] [Iterator equality comparison]] - [[`i != j`] [Iterator inequality comparison]] - [[`__advance_c__(i)`] [An iterator n elements after `i` in the sequence]] - [[`__advance__(i)`] [Equivalent to `advance_c(i)`]] - [[`__distance__(i, j)`] [The number of elements between `i` and `j`]] - [[`__deref__(i)`] [The element at position`i`]] - [[`*i`] [Equivalent to `deref(i)`]] -] - -[heading Invariants] -The following invariants always hold: - -* `!(i == j) == (i != j)` -* `__next__(i) == __advance_c__<1>(i)` -* `__distance__(i, __advance_c__(i)) == N` -* Using `__next__` to traverse the sequence will never return to a previously seen position -* `__deref__(i)` is equivalent to `*i` -* If `i == j` then `*i` is equivalent to `*j` - -[heading Models] -* __std_pair__ iterator -* __boost_array__ iterator -* __vector__ iterator -* __cons__ iterator -* __list__ iterator -* __set__ iterator -* __map__ iterator -* __single_view__ iterator -* __filter_view__ iterator -* __iterator_range__ iterator -* __joint_view__ iterator -* __transform_view__ iterator -* __reverse_view__ iterator - -[endsect] - -[section Bidirectional Iterator] -[heading Description] -A Bidirectional Iterator traverses a __sequence__ allowing movement in either direction one -element at a time. - -[variablelist Notation - [[`i`] [A Bidirectional Iterator]] - [[`I`] [A Bidirectional Iterator type]] - [[`M`] [An __mpl__ integral constant]] - [[`N`] [An integral constant]] -] - -[heading Refinement of] -__forward_iterator__ - -[heading Expression requirements] -In addition to the requirements defined in __forward_iterator__, -the following expressions must be valid: - -[table - [[Expression] [Return type] [Runtime Complexity]] - [[`__next__(i)`] [__bidirectional_iterator__] [Constant]] - [[`__prior__(i)`] [__bidirectional_iterator__] [Constant]] - [[`__advance_c__(i)`] [__bidirectional_iterator__] [Constant]] - [[`__advance__(i)`] [__bidirectional_iterator__] [Constant]] -] - -[heading Meta Expressions] -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_prior__::type`] [Amortized constant time]] -] - -[heading Expression Semantics] -The semantics of an expression are defined only where they differ from, or are not defined -in __forward_iterator__ - -[table - [[Expression] [Semantics]] - [[`__prior__(i)`] [An iterator to the element preceding `i`]] -] - -[heading Invariants] -In addition to the invariants of __forward_iterator__, -the following invariants always hold: - -* `__prior__(__next__(i)) == i && __prior__(__next__(i)) == __next__(__prior__(i))` -* `__prior__(i) == __advance_c__<-1>(i)` -* Using `__prior__` to traverse a sequence will never return a previously seen position - -[heading Models] -* __std_pair__ iterator -* __boost_array__ iterator -* __vector__ iterator -* __iterator_range__ (where adapted sequence is a __bidirectional_sequence__) -* __transform_view__ (where adapted sequence is a __bidirectional_sequence__) -* __reverse_view__ - -[endsect] - -[section Random Access Iterator] -[heading Description] -A Random Access Iterator traverses a __sequence__ moving in either direction, -permitting efficient arbitrary distance movements back and forward through the -sequence. - -[variablelist Notation - [[`i`, `j`] [Random Access Iterators]] - [[`I`, `J`] [Random Access Iterator types]] - [[`M`] [An __mpl__ integral constant]] - [[`N`] [An integral constant]] -] - -[heading Refinement of] -__bidirectional_iterator__ - -[heading Expression requirements] -In addition to the requirements defined in __bidirectional_iterator__, -the following expressions must be valid: - -[table - [[Expression] [Return type] [Runtime Complexity]] - [[`__next__(i)`] [__random_access_iterator__] [Constant]] - [[`__prior__(i)`] [__random_access_iterator__] [Constant]] - [[`__advance_c__(i)`] [__random_access_iterator__] [Constant]] - [[`__advance__(i)`] [__random_access_iterator__] [Constant]] -] - -[heading Meta Expressions] -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_advance_c__::type`] [Amortized constant time]] - [[`__result_of_advance__::type`] [Amortized constant time]] - [[`__result_of_distance__::type`] [Amortized constant time]] -] - -[heading Models] -* __vector__ iterator -* __std_pair__ iterator -* __boost_array__ iterator -* __iterator_range__ iterator (where adapted sequence is a __random_access_sequence__) -* __transform_view__ iterator (where adapted sequence is a __random_access_sequence__) -* __reverse_view__ iterator (where adapted sequence is a __random_access_sequence__) - -[endsect] - -[endsect] - -[section Functions] -Fusion provides functions for manipulating iterators, analogous to the similar functions -from the __mpl__ library. - -[section deref] - -[heading Description] -Deferences an iterator. - -[heading Synopsis] - template< - typename I - > - typename __result_of_deref__::type deref(I const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __deref__(i); - -[*Return type]: `__result_of_deref__::type` - -[*Semantics]: Dereferences the iterator `i`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - int i(0); - vec v(1,i); - assert(__deref__(__begin__(v)) == 1); - assert(__deref__(__next__(__begin__(v))) == 0); - assert(&(__deref__(__next__(__begin__(v)))) == &i); - -[endsect] - -[section next] - -[heading Description] -Moves an iterator 1 position forwards. - -[heading Synopsis] - template< - typename I - > - typename __result_of_next__::type next(I const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - next(i); - -[*Return type]: A model of the same iterator concept as `i`. - -[*Semantics]: Returns an iterator to the next element after `i`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - vec v(1,2,3); - assert(__deref__(__begin__(v)) == 1); - assert(__deref__(__next__(__begin__(v))) == 2); - assert(__deref__(__next__(__next__(__begin__(v)))) == 3); - -[endsect] - -[section prior] - -[heading Description] -Moves an iterator 1 position backwards. - -[heading Synopsis] - template< - typename I - > - typename __result_of_prior__::type prior(I const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __bidirectional_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __prior__(i); - -[*Return type]: A model of the same iterator concept as `i`. - -[*Semantics]: Returns an iterator to the element prior to `i`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - vec v(1,2); - assert(__deref__(__next__(__begin__(v))) == 2); - assert(__deref__(__prior__(__next__(__begin__(v)))) == 1); - -[endsect] - -[section distance] - -[heading Description] -Returns the distance between 2 iterators. - -[heading Synopsis] - template< - typename I, - typename J - > - typename __result_of_distance__::type distance(I const& i, J const& j); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`, `j`] [Models of __forward_iterator__ into the same sequence] [The start and end points of the distance to be measured]] -] - -[heading Expression Semantics] - __distance__(i,j); - -[*Return type]: `int` - -[*Semantics]: Returns the distance between iterators `i` and `j`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - vec v(1,2,3); - assert(__distance__(__begin__(v), __next__(__next__(__begin__(v)))) == 2); - -[endsect] - -[section advance] - -[heading Description] -Moves an iterator by a specified distance. - -[heading Synopsis] - template< - typename I, - typename M - > - typename __result_of_advance__::type advance(I const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __forward_iterator__] [Iterator to move relative to]] - [[`N`] [An __mpl_integral_constant__] [Number of positions to move]] -] - -[heading Expression Semantics] - __advance__(i); - -[*Return type]: A model of the same iterator concept as `i`. - -[*Semantics]: Returns an iterator to the element `M` positions from `i`. If `i` is a __bidirectional_iterator__ then `M` may be negative. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - vec v(1,2,3); - assert(__deref__(__advance__ >(__begin__(v))) == 3); - -[endsect] - -[section advance_c] - -[heading Description] -Moves an iterator by a specified distance. - -[heading Synopsis] - template< - typename I, - int N - > - typename __result_of_advance_c__::type advance_c(I const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __forward_iterator__] [Iterator to move relative to]] - [[`N`] [Integer constant] [Number of positions to move]] -] - -[heading Expression Semantics] - __advance_c__(i); - -[*Return type]: A model of the same iterator concept as `i`. - -[*Semantics]: Returns an iterator to the element `N` positions from `i`. If `i` is a __bidirectional_iterator__ then `N` may be negative. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - vec v(1,2,3); - assert(__deref__(__advance_c__<2>(__begin__(v))) == 3); - -[endsect] - -[endsect] - -[section Operators] -Overloaded operators are provided to provide a more natural syntax for dereferencing iterators, and comparing them for equality. - -[section:operator_unary_star Operator *] - -[heading Description] -Dereferences an iterator. - -[heading Synopsis] - template< - typename I - > - typename __result_of_deref__::type operator*(__unspecified__ const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - *i - -[*Return type]: Equivalent to the return type of `__deref__(i)`. - -[*Semantics]: Equivalent to `__deref__(i)`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - - int i(0); - vec v(1,i); - assert(*__begin__(v) == 1); - assert(*__next__(__begin__(v)) == 0); - assert(&(*__next__(__begin__(v))) == &i); - -[endsect] - -[section:operator_equality Operator ==] - -[heading Description] -Compares 2 iterators for equality. - -[heading Synopsis] - template< - typename I, - typename J - > - __unspecified__ operator==(I const& i, J const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`, `j`] [Any fusion iterators] [Operation's arguments]] -] - -[heading Expression Semantics] - i == j - -[*Return type]: Convertible to `bool`. - -[*Semantics]: Equivalent to `__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. - -[heading Header] - #include - -[endsect] - -[section:operator_inequality Operator !=] - -[heading Description] -Compares 2 iterators for inequality. - -[heading Synopsis] - template< - typename I, - typename J - > - __unspecified__ operator==(I const& i, J const& i); - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`i`, `j`] [Any fusion iterators] [Operation's arguments]] -] - -[heading Expression Semantics] - -[*Return type]: Convertible to `bool`. - -[*Semantics]: Equivalent to `!__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. - -[heading Header] - #include - -[endsect] - -[endsect] - -[section Metafunctions] - -[section value_of] - -[heading Description] - -Returns the type stored at the position of an iterator. - -[heading Synopsis] - template< - typename I - > - struct value_of - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_value_of__::type - -[*Return type]: Any type - -[*Semantics]: Returns the type stored in a sequence at iterator position `I`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type first; - typedef __result_of_next__::type second; - typedef __result_of_next__::type third; - - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int>)); - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int&>)); - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, const int&>)); - -[endsect] - -[section deref] - -[heading Description] -Returns the type that will be returned by dereferencing an iterator. - -[heading Synposis] - template< - typename I - > - struct deref - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_deref__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of dereferencing an iterator of type `I`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef const vec const_vec; - typedef __result_of_begin__::type first; - typedef __result_of_next__::type second; - - typedef __result_of_begin__::type const_first; - typedef __result_of_next__::type const_second; - - BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)); - BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)); - -[endsect] - -[section next] - -[heading Description] -Returns the type of the next iterator in a sequence. - -[heading Synposis] - template< - typename I - > - struct next - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __forward_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_next__::type - -[*Return type]: A model of the same iterator concept as `I`. - -[*Semantics]: Returns an iterator to the next element in the sequence after `I`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_next__<__result_of_begin__::type>::type second; - - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, double>)); - -[endsect] - -[section prior] - -[heading Description] -Returns the type of the previous iterator in a sequence. - -[heading Synopsis] - template< - typename I - > - struct prior - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __bidirectional_iterator__] [Operation's argument]] -] - -[heading Expression Semantics] - __result_of_prior__::type - -[*Return type]: A model of the same iterator concept as `I`. - -[*Semantics]: Returns an iterator to the previous element in the sequence before `I`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_next__<__result_of_begin__::type>::type second; - - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, double>)); - - typedef __result_of_prior__::type first; - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int>)); - -[endsect] - -[section equal_to] - -[heading Description] -Returns a true-valued __mpl_integral_constant__ if `I` and `J` are equal. - -[heading Synopsis] - template< - typename I, - typename J - > - struct equal_to - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`, `J`] [Any fusion iterators] [Operation's arguments]] -] - -[heading Expression Semantics] - __result_of_equal_to__::type - -[*Return type]: A model of __mpl_integral_constant__. - -[*Semantics]: Returns `boost::mpl::true_` if `I` and `J` are iterators to the same position. Returns `boost::mpl::false_` otherwise. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type first; - typedef __result_of_end__::type last; - BOOST_MPL_ASSERT((__result_of_equal_to__)); - BOOST_MPL_ASSERT_NOT((__result_of_equal_to__)); - -[endsect] - -[section distance] - -[heading Description] -Returns the distance between two iterators. - -[heading Synopsis] - template< - typename I, - typename J - > - struct distance - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`, `J`] [Models of __forward_iterator__ into the same sequence] [The start and end points of the distance to be measured]] -] - -[heading Expression Semantics] - __result_of_distance__::type - -[*Return type]: A model of __mpl_integral_constant__. - -[*Semantics]: Returns the distance between iterators of types `I` and `J`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type first; - typedef __result_of_next__::type second; - typedef __result_of_next__::type third; - typedef __result_of_distance__::type dist; - - BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2); - -[endsect] - -[section advance] - -[heading Description] -Moves an iterator a specified distance. - -[heading Synopsis] - template< - typename I, - typename M - > - struct advance - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __forward_iterator__] [Iterator to move relative to]] - [[`M`] [Model of __mpl_integral_constant__] [Number of positions to move]] -] - -[heading Expression Semantics] - __result_of_advance__::type - -[*Return type]: A model of the same iterator concept as `I`. - -[*Semantics]: Returns an iterator a distance `M` from `I`. If `I` is a __bidirectional_iterator__ then `M` may be negative. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type first; - typedef __result_of_next__::type second; - typedef __result_of_next__::type third; - - BOOST_MPL_ASSERT((__result_of_equal_to__<__result_of_advance__ >::type, third>)); - -[endsect] - -[section advance_c] - -[heading Description] -Moves an iterator by a specified distance. - -[heading Synopsis] - template< - typename I, - int N - > - struct advance_c - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`I`] [Model of __forward_iterator__] [Iterator to move relative to]] - [[`N`] [Integer constant] [Number of positions to move]] -] - -[heading Expression Semantics] - __result_of_advance_c__::type - -[*Return type]: A model of the same iterator concept as `I`. - -[*Semantics]: Returns an iterator a distance `N` from `I`. If `I` is a __bidirectional_iterator__ then `N` may be negative. Equivalent to `__result_of_advance__ >::type`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type first; - typedef __result_of_next__::type second; - typedef __result_of_next__::type third; - - BOOST_MPL_ASSERT((__result_of_equal_to__<__result_of_advance_c__::type, third>)); - -[endsect] - -[endsect] - -[endsect] - diff --git a/doc/notes.qbk b/doc/notes.qbk deleted file mode 100644 index f6fab805..00000000 --- a/doc/notes.qbk +++ /dev/null @@ -1,146 +0,0 @@ -[section Notes] - -[heading Recursive Inlined Functions] - -An interesting peculiarity of functions like __at__ when applied to a -__forward_sequence__ like __list__ is that what could have been linear -runtime complexity effectively becomes constant O(1) due to compiler -optimization of C++ inlined functions, however deeply recursive (up to a -certain compiler limit of course). Compile time complexity remains linear. - -[heading Overloaded Functions] - -Associative sequences use function overloading to implement membership -testing and type associated key lookup. This amounts to constant runtime -and amortized constant compile time complexities. There is an overloaded -function, `f(k)`, for each key /type/ `k`. The compiler chooses the -appropriate function given a key, `k`. - -[heading Tag Dispatching] - -Tag dispatching is a generic programming technique for selecting template -specializations. There are typically 3 components involved in the tag -dispatching mechanism: - -# A type for which an appropriate template specialization is required -# A metafunction that associates the type with a tag type -# A template that is specialized for the tag type - -For example, the fusion `result_of::begin` metafunction is implemented -as follows: - - template - struct begin - { - typedef typename - result_of::begin_impl::type>:: - template apply::type - type; - }; - -In the case: - -# `Sequence` is the type for which a suitable implementation of - `result_of::begin_impl` is required -# `traits::tag_of` is the metafunction that associates `Sequence` - with an appropriate tag -# `result_of::begin_impl` is the template which is specialized to provide - an implementation for each tag type - -[heading Extensibility] - -Unlike __mpl__, there is no extensibe sequence concept in fusion. This does -not mean that Fusion sequences are not extensible. In fact, all Fusion -sequences are inherently extensible. It is just that the manner of sequence -extension in Fusion is diferent from both __stl__ and __mpl__ on account of -the lazy nature of fusion __algorithms__. __stl__ containers extend -themselves in place though member functions such as __push_back__ and -__insert__. __mpl__ sequences, on the other hand, are extended through -"intrinsic" functions that actually return whole sequences. __mpl__ is -purely functional and can not have side effects. For example, __mpl__'s -`push_back` does not actually mutate an `mpl::vector`. It can't do that. -Instead, it returns an extended `mpl::vector`. - -Like __mpl__, Fusion too is purely functional and can not have side -effects. With runtime efficiency in mind, Fusion sequences are extended -through generic functions that return __views__. __views__ are sequences -that do not actually contain data, but instead impart an alternative -presentation over the data from one or more underlying sequences. __views__ -are proxies. They provide an efficient yet purely functional way to work on -potentially expensive sequence operations. For example, given a __vector__, -Fusion's __push_back__ returns a __joint_view__, instead of an actual -extended __vector__. A __joint_view__ holds a reference to the original -sequence plus the appended data --making it very cheap to pass around. - -[heading Element Conversion] - -Functions that take in elemental values to form sequences (e.g. -__make_list__) convert their arguments to something suitable to be stored -as a sequence element. In general, the element types are stored as plain -values. Example: - - __make_list__(1, 'x') - -returns a __list__``. - -There are a few exceptions, however. - -[*Arrays:] - -Array arguments are deduced to reference to const types. For example -[footnote Note that the type of a string literal is an array of const -characters, not `const char*`. To get __make_list__ to create a __list__ -with an element of a non-const array type one must use the `ref` wrapper -(see __note_boost_ref__).]: - - __make_list__("Donald", "Daisy") - -creates a __list__ of type - - __list__ - -[*Function pointers:] - -Function pointers are deduced to the plain non-reference type (i.e. to -plain function pointer). Example: - - void f(int i); - ... - __make_list__(&f); - -creates a __list__ of type - - __list__ - -[heading boost::ref] - -Fusion's generation functions (e.g. __make_list__) by default stores the -element types as plain non-reference types. Example: - - void foo(const A& a, B& b) { - ... - __make_list__(a, b) - -creates a __list__ of type - - __list__ - -Sometimes the plain non-reference type is not desired. You can use -`boost::ref` and `boost::cref` to store references or const references -(respectively) instead. The mechanism does not compromise const correctness -since a const object wrapped with ref results in a tuple element with const -reference type (see the fifth code line below). Examples: - -For example: - - A a; B b; const A ca = a; - __make_list__(cref(a), b); // creates list - __make_list__(ref(a), b); // creates list - __make_list__(ref(a), cref(b)); // creates list - __make_list__(cref(ca)); // creates list - __make_list__(ref(ca)); // creates list - -See __boost_ref__ for details. - -[endsect] - diff --git a/doc/organization.qbk b/doc/organization.qbk deleted file mode 100644 index cff048f8..00000000 --- a/doc/organization.qbk +++ /dev/null @@ -1,68 +0,0 @@ -[section Organization] - -The library is organized into layers of modules, with each module addressing a particular -area of responsibility. A module may not depend on modules in higher layers. - -The library is organized in three layers: - -[heading Layers] - -[:[$images/fusion_org.png]] - -The entire library is found in the "boost/fusion" directory. Modules are -organized in directories. Each module has its own header file placed in the -same directory with the actual module-directory. For example, there exists -"boost/fusion/support.hpp" in the same directory as "boost/fusion/support". -Everything, except those found inside "detail" directories, is public. The -library is header-only. There is no need to build object files to link -against. - -[heading Directory] - -* tuple -* algorithm - * iteration - * query - * transformation -* sequence - * adapted - * array - * mpl - * std_pair - * comparison - * container - * list - * map - * set - * vector - * conversion - * generation - * intrinsic - * io - * utility - * view - * filter_view - * iterator_range - * joint_view - * reverse_view - * single_view - * transform_view - * zip_view -* iterator -* support - -[heading Example] - -If, for example, you want to use `list`, depending on the granularity that -you desire, you may do so by including one of - - #include - #include - #include - -The first includes all sequences. The second includes all of sequence -containers. The third includes only `list` [footnote Modules may contain -smaller components. Header file information for each component will be -provided as part of the component's documentation.]. - -[endsect] diff --git a/doc/preface.qbk b/doc/preface.qbk deleted file mode 100644 index f6a9ff95..00000000 --- a/doc/preface.qbk +++ /dev/null @@ -1,68 +0,0 @@ -[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] - diff --git a/doc/quick_start.qbk b/doc/quick_start.qbk deleted file mode 100644 index 8857b5ea..00000000 --- a/doc/quick_start.qbk +++ /dev/null @@ -1,159 +0,0 @@ -[section Quick Start] - -I assume the reader is already familiar with tuples (__tuple__) and its -ancestor `std::pair`. The tuple is a generalization of `std::pair` for -multiple heterogeneous elements (triples, quadruples, etc.). The tuple is -more or less a synonym for fusion's `__vector__`. - -For starters, we shall include all of Fusion's __sequence__s [footnote There -are finer grained header files available if you wish to have more control -over which components to include (see section __organization__ for -details).]: - - #include - -Let's begin with a `__vector__` [footnote Unless otherwise noted, components are -in namespace `boost::fusion`. For the sake of simplicity, code in this -quick start implies `using` directives for the fusion components we will be -using.]: - - __vector__ stuff(1, 'x', "howdy"); - int i = __at_c__<0>(stuff); - char ch = __at_c__<1>(stuff); - std::string s = __at_c__<2>(stuff); - -Just replace `tuple` for `__vector__` and `get` for `__at_c__` and this is exactly -like __tuple__. Actually, either names can be used interchangeably. Yet, -the similarity ends there. You can do a lot more with Fusion `__vector__` or -`tuple`. Let's see some examples. - -[heading Print the vector as XML] - -First, let's include the algorithms: - - #include - -Now, let's write a function object that prints XML of the form data -for each member in the tuple. - - struct print_xml - { - template - void operator()(T const& x) const - { - std::cout - << '<' << typeid(x).name() << '>' - << x - << "' - ; - } - }; - -Now, finally: - - __for_each__(stuff, print_xml()); - -That's it! `__for_each__` is a fusion algorithm. It is a generic algorithm -similar to __stl__'s. It iterates over the sequence and calls a user -supplied function. In our case, it calls `print_xml`'s `operator()` for -each element in `stuff`. - -[caution The result of `typeid(x).name()` is platform specific. The code -here is just for exposition. Of course you already know that :-)] - -`__for_each__` is generic. With `print_xml`, you can use it to print just about -any Fusion __sequence__. - -[heading Print only pointers] - -Let's get a little cleverer. Say we wish to write a /generic/ function -that takes in an arbitrary sequence and XML prints only those elements -which are pointers. Ah, easy. First, let's include the `is_pointer` boost -type trait: - - #include - -Then, simply: - - template - void xml_print_pointers(Sequence const& seq) - { - __for_each__(__filter_if__ >(seq), print_xml()); - } - -`__filter_if__` is another Fusion algorithm. It returns a __filter_view__, -a conforming Fusion sequence. This view reflects only those elements that -pass the given predicate. In this case, the predicate is -`boost::is_pointer<_>`. This "filtered view" is then passed to the -__for_each__ algorithm, which then prints the "filtered view" as XML. - -Easy, right? - -[heading Associative tuples] - -Ok, moving on... - -Apart from `__vector__`, fusion has a couple of other sequence types to choose -from. Each sequence has its own characteristics. We have `__list__`, `__set__`, -`__map__`, plus a multitude of `views` that provide various ways to present the -sequences. - -Fusion's `__map__` associate types with elements. It can be used as a cleverer -replacement of the `struct`. Example: - - namespace fields - { - struct name; - struct age; - } - - typedef __map__< - __fusion_pair__ - , __fusion_pair__ > - person; - -`__map__` is an associative sequence. Its elements are Fusion pairs which differ -somewhat from `std::pair`. Fusion pairs only contain one member, with the type of -their second template parameter. The first type parameter of the pair is used as an -index to the associated element in the sequence. For example, given a `a_person` -of type, `person`, you can do: - - using namespace fields; - std::string person_name = __at_key__(a_person); - int person_age = __at_key__(a_person); - -Why go through all this trouble, you say? Well, for one, unlike the -`struct`, we are dealing with a generic data structure. There are a -multitude of facilities available at your disposal provided out of the box -with fusion or written by others. With these facilities, introspection -comes for free, for example. We can write one serialization function (well, -two, if you consider loading and saving) that will work for all your fusion -`__map__`s. Example: - - struct saver - { - template - void operator()(Pair const& data) const - { - some_archive << data.second; - } - }; - - template - void save(Stuff const& stuff) - { - __for_each__(stuff, saver()); - } - -The `save` function is generic and will work for all types of `stuff` -regardless if it is a `person`, a `dog` or a whole `alternate_universe`. - -[heading Tip of the Iceberg] - -And... we've barely scratched the surface! You can compose and expand the -data structures, remove elements from the structures, find specific data -types, query the elements, filter out types for inspection, transform data -structures, etc. What you've seen is just the tip of the iceberg. - -[endsect] - diff --git a/doc/references.qbk b/doc/references.qbk deleted file mode 100644 index 840e83a3..00000000 --- a/doc/references.qbk +++ /dev/null @@ -1,19 +0,0 @@ -[section References] - -# [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts], - David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. -# [@http://boost.org/libs/tuple/doc/tuple_users_guide.html The Boost Tuple Library], - Jaakko Jarvi, 2001. -# [@http://www.boost.org/libs/spirit/ Spirit Parser Library], - Joel de Guzman, 2001-2006. -# [@http://www.boost.org/libs/mpl/ The Boost MPL Library], - Aleksey Gurtovoy and David Abrahams, 2002-2004. -# [@http://www.boost.org/doc/html/array.html Boost Array], - Nicolai Josuttis, 2002-2004. -# [@http://www.sgi.com/tech/stl/ Standard Template Library Programmer's Guide], - Hewlett-Packard Company, 1994. -# [@http://www.boost.org/doc/html/ref.html Boost.Ref], - Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. - -[endsect] - diff --git a/doc/sequences.qbk b/doc/sequences.qbk deleted file mode 100644 index 627ed680..00000000 --- a/doc/sequences.qbk +++ /dev/null @@ -1,3804 +0,0 @@ -[section Sequences] - -Like __mpl__, the Sequence is a fundamental concept in Fusion. A Sequence -may or may not actually store or contain data. __containers__ are sequences -that hold data. __views__, on the other hand, are sequences that do not -store any data. Instead, they are proxies that impart an alternative -presentation over another sequence. All models of Sequence have an -associated __iterator__ type that can be used to iterate through the -Sequence's elements. - -[heading Header] - - #include - -[section Concepts] - -Fusion Sequences are organized into a hierarchy of concepts. - -[heading Traversal] - -Fusion's sequence traversal related concepts parallel Fusion's -__iterator_concepts__. __forward_sequence__ is the most basic concept. -__bidirectional_sequence__ is a refinement of __forward_sequence__. -__random_access_sequence__ is a refinement of __bidirectional_sequence__. -These concepts pertain to sequence traversal. - -[heading Associativity] - -The __associative_sequence__ concept is orthogonal to traversal. An Associative -Sequence allows efficient retrieval of elements based on keys. - -[section Forward Sequence] - -[heading Description] - -A Forward Sequence is a Sequence whose elements are arranged in a definite -order. The ordering is guaranteed not to change from iteration to -iteration. The requirement of a definite ordering allows the definition of -element-by-element equality (if the container's element type is Equality -Comparable) and of lexicographical ordering (if the container's element -type is LessThan Comparable). - -[variablelist Notation - [[`s`] [A Forward Sequence]] - [[`S`] [A Forward Sequence type]] - [[`o`] [An arbitrary object]] - [[`e`] [A Sequence element]] -] - -[heading Valid Expressions] - -For any Forward Sequence the following expressions must be valid: - -[table - [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] - [[`__begin__(s)`] [__forward_iterator__] [] [Constant]] - [[`__end__(s)`] [__forward_iterator__] [] [Constant]] - [[`__size__(s)`] [__mpl_integral_constant__. - Convertible to int.] [] [Constant]] - [[`__empty__(s)`] [__mpl_boolean_constant__. - Convertible to bool.] [] [Constant]] - [[`__front__(s)`] [Any type] [] [Constant]] - [[`__front__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is - a valid expression.] [Constant]] -] - -[heading Result Type Expressions] - -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_begin__::type`] [Amortized constant time]] - [[`__result_of_end__::type`] [Amortized constant time]] - [[`__result_of_size__::type`] [Unspecified]] - [[`__result_of_empty__::type`] [Constant time]] - [[`__result_of_front__::type`] [Amortized constant time]] -] - -[heading Expression Semantics] - -[table - [[Expression] [Semantics]] - [[`__begin__(s)`] [An iterator to the first element of the sequence; see __begin__.]] - [[`__end__(s)`] [A past-the-end iterator to the sequence; see __end__.]] - [[`__size__(s)`] [The size of the sequence; see __size__.]] - [[`__empty__(s)`] [A boolean Integral Constant `c` such that - `c::value == true` if and only if the sequence - is empty; see __empty__.]] - [[`__front__(s)`] [The first element in the sequence; see __front__.]] -] - -[heading Invariants] - -For any Forward Sequence s the following invariants always hold: - -* `[__begin__(s), __end__(s))` is always a valid range. -* An __algorithm__ that iterates through the range `[__begin__(s), __end__(s))` - will pass through every element of `s` exactly once. -* `__begin__(s)` is identical to `__end__(s))` if and only if `s` is empty. -* Two different iterations through `s` will access its elements in - the same order. - -[heading Models] - -* __std_pair__ -* __boost_array__ -* __vector__ -* __cons__ -* __list__ -* __set__ -* __map__ -* __single_view__ -* __filter_view__ -* __iterator_range__ -* __joint_view__ -* __transform_view__ -* __reverse_view__ - -[endsect] - -[section Bidirectional Sequence] - -[heading Description] - -A Bidirectional Sequence is a __forward_sequence__ whose iterators model -__bidirectional_iterator__. - -[heading Refinement of] - -__forward_sequence__ - -[variablelist Notation - [[`s`] [A Forward Sequence]] - [[`S`] [A Forward Sequence type]] - [[`o`] [An arbitrary object]] - [[`e`] [A Sequence element]] -] - -[heading Valid Expressions] - -In addition to the requirements defined in __forward_sequence__, for any -Bidirectional Sequence the following must be met: - -[table - [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] - [[`__begin__(s)`] [__bidirectional_iterator__] [] [Constant]] - [[`__end__(s)`] [__bidirectional_iterator__] [] [Constant]] - [[`__back__(s)`] [Any type] [] [Constant]] - [[`__back__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is - a valid expression.] [Constant]] -] - -[heading Result Type Expressions] - -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_begin__::type`] [Amortized constant time]] - [[`__result_of_end__::type`] [Amortized constant time]] - [[`__result_of_back__::type`] [Amortized constant time]] -] - -[heading Expression Semantics] - -The semantics of an expression are defined only where they differ from, or -are not defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`__back__(s)`] [The last element in the sequence; see __back__.]] -] - -[heading Models] - -* __std_pair__ -* __boost_array__ -* __vector__ -* __iterator_range__ (where adapted sequence is a Bidirectional Sequence) -* __transform_view__ (where adapted sequence is a Bidirectional Sequence) -* __reverse_view__ - -[endsect] - -[section Random Access Sequence] - -[heading Description] - -A Random Access Sequence is a __bidirectional_sequence__ whose iterators -model __random_access_iterator__. It guarantees constant time access to -arbitrary sequence elements. - -[heading Refinement of] - -__bidirectional_sequence__ - -[variablelist Notation - [[`s`] [A Random Access Sequence]] - [[`S`] [A Random Access Sequence type]] - [[`N`] [An integral constant]] - [[`o`] [An arbitrary object]] - [[`e`] [A Sequence element]] -] - -[heading Valid Expressions] - -In addition to the requirements defined in __bidirectional_sequence__, for -any Random Access Sequence the following must be met: - -[table - [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] - [[`__begin__(s)`] [__random_access_iterator__] [] [Constant]] - [[`__end__(s)`] [__random_access_iterator__] [] [Constant]] - [[`__at__(s)`] [Any type] [] [Constant]] - [[`__at__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is - a valid expression.] [Constant]] -] - -[heading Result Type Expressions] - -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_begin__::type`] [Amortized constant time]] - [[`__result_of_end__::type`] [Amortized constant time]] - [[`__result_of_at__::type`] [Amortized constant time]] - [[`__result_of_value_at__::type`] [Amortized constant time]] -] - -[blurb __note__ `__result_of_at__` returns the actual type returned by -`__at__(s)`. In most cases, this is a reference. Hence, there is no way to -know the exact element type using `__result_of_at__`.The element at `N` -may actually be a reference to begin with. For this purpose, you can use -`__result_of_value_at__`.] - -[heading Expression Semantics] - -The semantics of an expression are defined only where they differ from, or -are not defined in __bidirectional_sequence__. - -[table - [[Expression] [Semantics]] - [[`__at__(s)`] [The Nth element from the beginning of the sequence; see __at__.]] -] - -[heading Models] - -* __std_pair__ -* __boost_array__ -* __vector__ -* __iterator_range__ (where adapted sequence is a Random Access Sequence) -* __transform_view__ (where adapted sequence is a Random Access Sequence) -* __reverse_view__ - -[endsect] - -[section Associative Sequence] - -[heading Description] - -An Associative Sequence allows efficient retrieval of elements based on keys. -Like associative sequences in __mpl__, and unlike associative containers in -__stl__, Fusion associative sequences have no implied ordering relation. -Instead, type identity is used to impose an equivalence relation on keys, and -the order in which sequence elements are traversed during iteration is left -unspecified. In addition, unlike __stl__, Associative Sequences have mutable -iterators. This is due to the fact that there is no associated ordering relation -and the runtime value of the keys themselves do not have any effect on the -associativity of the sequence. - - -[variablelist Notation - [[`s`] [An Associative Sequence]] - [[`S`] [An Associative Sequence type]] - [[`K`] [An arbitrary /key/ type]] - [[`o`] [An arbitrary object]] - [[`e`] [A Sequence element]] -] - -[heading Valid Expressions] - -For any Associative Sequence the following expressions must be valid: - -[table - [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] - [[`__has_key__(s)`] [__mpl_boolean_constant__. - Convertible to bool.] [] [Constant]] - [[`__at_key__(s)`] [Any type] [] [Constant]] - [[`__at_key__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is - a valid expression.] [Constant]] -] - -[heading Result Type Expressions] - -[table - [[Expression] [Compile Time Complexity]] - [[`__result_of_has_key__::type`] [Amortized constant time]] - [[`__result_of_at_key__::type`] [Amortized constant time]] - [[`__result_of_value_at_key__::type`] [Amortized constant time]] -] - -[blurb __note__ `__result_of_at_key__` returns the actual type returned -by `__at_key__(s)`. In most cases, this is a reference. Hence, there is no -way to know the exact element type using `__result_of_at_key__`.The -element at `K` may actually be a reference to begin with. For this purpose, -you can use `__result_of_value_at_key__`.] - -[heading Expression Semantics] - -[table - [[Expression] [Semantics]] - [[`__has_key__(s)`] [A boolean Integral Constant `c` such that - `c::value == true` if and only if there is - one or more elements with the key `k` in `s`; - see __has_key__.]] - [[`__at_key__(s)`] [The element associated with the key - `K` in the sequence `s`; see __at__.]] -] - -[heading Models] - -* __set__ -* __map__ - -[endsect] - -[endsect] - -[section Containers] - -Fusion provides a few predefined sequences out of the box. These -/containers/ actually hold heterogenously typed data; unlike -__views__. These containers are more or less counterparts of those in __stl__. - -[heading Header] - - #include - -[section vector] - -[heading Description] - -`vector` is a __random_access_sequence__ of heterogenous typed -data structured as a simple `struct` where each element is held -as a member variable. `vector` is the simplest of the Fusion -sequence container, and in many cases the most efficient. - -[heading Header] - - #include - #include - - // numbered forms - #include - #include - #include - #include - #include - -[heading Synopsis] - -[*Numbered forms] - - template <> - struct vector0; - - template - struct vector1; - - template - struct vector2; - - template - struct vector3; - - ... - - template - struct vectorN; - -[*Variadic form] - - template < - typename T0 = __unspecified__ - , typename T1 = __unspecified__ - , typename T2 = __unspecified__ - ... - , typename TN = __unspecified__ - > - struct vector; - -The numbered form accepts the exact number of elements. Example: - - vector3 - -The variadic form accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, where -`FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. Example: - - vector - -You may define the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before -including any Fusion header to change the default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified]]] -] - -[heading Model of] - -* __random_access_sequence__ - -[variablelist Notation - [[`v`] [Instance of `vector`]] - [[`V`] [A `vector` type]] - [[`e0`...`en`] [Heterogeneous values]] - [[`s`] [A __forward_sequence__]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __random_access_sequence__. - -[table - [[Expression] [Semantics]] - [[`V()`] [Creates a vector with default constructed elements.]] - [[`V(e0, e1,... en)`] [Creates a vector with elements `e0`...`en`.]] - [[`V(s)`] [Copy constructs a vector from a __forward_sequence__, `s`.]] - [[`v = s`] [Assigns to a vector, `v`, from a __forward_sequence__, `s`.]] -] - -[heading Example] - - vector v(12, 5.5f); - std::cout << __at_c__<0>(v) << std::endl; - std::cout << __at_c__<1>(v) << std::endl; - -[endsect] - -[section cons] - -[heading Description] - -`cons` is a simple __forward_sequence__. It is a lisp style recursive list -structure where `car` is the /head/ and `cdr` is the /tail/: usually -another cons structure or `nil`: the empty list. Fusion's __list__ is built -on top of this more primitive data structure. It is more efficient than -__vector__ when the target sequence is constructed piecemeal (a data at a -time). The runtime cost of access to each element is peculiarly constant -(see __recursive_inline__). - -[heading Header] - - #include - -[heading Synopsis] - - template - struct cons; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Car`] [Head type] []] - [[`Cdr`] [Tail type] [`nil`]] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`nil`] [An empty `cons`]] - [[`C`] [A `cons` type]] - [[`l`, `l2`] [Instances of `cons`]] - [[`car`] [An arbitrary data]] - [[`cdr`] [Another `cons` list]] - [[`s`] [A __forward_sequence__]] - [[`N`] [An Integral Constant]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`nil()`] [Creates an empty list.]] - [[`C()`] [Creates a cons with default constructed elements.]] - [[`C(car)`] [Creates a cons with `car` head and default constructed tail.]] - [[`C(car, cdr)`] [Creates a cons with `car` head and `cdr` tail.]] - [[`C(s)`] [Copy constructs a cons from a __forward_sequence__, `s`.]] - [[`l = s`] [Assigns to a cons, `l`, from a __forward_sequence__, `s`.]] - [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] -] - -[blurb __note__ `__at__(l)` is provided for convenience and compatibility -with the original __tuple__ library, despite `cons` being a -__forward_sequence__ only (`at` is supposed to be a -__random_access_sequence__ requirement). The runtime complexity of __at__ is -constant (see __recursive_inline__).] - -[heading Example] - - cons > l(12, cons(5.5f)); - std::cout << __at__<0>(l) << std::endl; - std::cout << __at__<1>(l) << std::endl; - -[endsect] - -[section list] - -[heading Description] - -`list` is a __forward_sequence__ of heterogenous typed data built on top of -__cons__. It is more efficient than __vector__ when the target sequence is -constructed piecemeal (a data at a time). The runtime cost of access to -each element is peculiarly constant (see __recursive_inline__). - -[heading Header] - - #include - #include - -[heading Synopsis] - - template < - typename T0 = __unspecified__ - , typename T1 = __unspecified__ - , typename T2 = __unspecified__ - ... - , typename TN = __unspecified__ - > - struct list; - -The variadic class interface accepts `0` to `FUSION_MAX_LIST_SIZE` -elements, where `FUSION_MAX_LIST_SIZE` is a user definable predefined -maximum that defaults to `10`. Example: - - list - -You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before -including any Fusion header to change the default. Example: - - #define FUSION_MAX_LIST_SIZE 20 - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`L`] [A `list` type]] - [[`l`] [An instance of `list`]] - [[`e0`...`en`] [Heterogeneous values]] - [[`s`] [A __forward_sequence__]] - [[`N`] [An Integral Constant]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`L()`] [Creates a list with default constructed elements.]] - [[`L(e0, e1,... en)`] [Creates a list with elements `e0`...`en`.]] - [[`L(s)`] [Copy constructs a list from a __forward_sequence__, `s`.]] - [[`l = s`] [Assigns to a list, `l`, from a __forward_sequence__, `s`.]] - [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] -] - -[blurb __note__ `__at__(l)` is provided for convenience and compatibility -with the original __tuple__ library, despite `list` being a -__forward_sequence__ only (__at__ is supposed to be a -__random_access_sequence__ requirement). The runtime complexity of __at__ is -constant (see __recursive_inline__).] - -[heading Example] - - list l(12, 5.5f); - std::cout << __at__<0>(l) << std::endl; - std::cout << __at__<1>(l) << std::endl; - -[endsect] - -[section set] - -[heading Description] - -set is an __associative_sequence__ of heteregenous typed data elements. -Type identity is used to impose an equivalence relation on keys. The -element's type is its key. A set may contain at most one element for each -key. Membership testing and element key lookup has constant runtime -complexity (see __overloaded_functions__). - -[heading Header] - - #include - -[heading Synopsis] - - template < - typename T0 = __unspecified__ - , typename T1 = __unspecified__ - , typename T2 = __unspecified__ - ... - , typename TN = __unspecified__ - > - struct set; - -The variadic class interface accepts `0` to `FUSION_MAX_SET_SIZE` elements, -where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that -defaults to `10`. Example: - - set - -You may define the preprocessor constant `FUSION_MAX_SET_SIZE` before -including any Fusion header to change the default. Example: - - #define FUSION_MAX_SET_SIZE 20 - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] -] - -[heading Model of] - -* __associative_sequence__ -* __forward_sequence__ - -[variablelist Notation - [[`S`] [A `set` type]] - [[`s`] [An instance of `set`]] - [[`e0`...`en`] [Heterogeneous values]] - [[`fs`] [A __forward_sequence__]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __random_access_sequence__ and __associative_sequence__. - -[table - [[Expression] [Semantics]] - [[`S()`] [Creates a set with default constructed elements.]] - [[`S(e0, e1,... en)`] [Creates a set with elements `e0`...`en`.]] - [[`S(fs)`] [Copy constructs a set from a __forward_sequence__ `fs`.]] - [[`s = fs`] [Assigns to a set, `s`, from a __forward_sequence__ `fs`.]] -] - -[heading Example] - - typedef set S; - S s(12, 5.5f); - std::cout << __at_key__(s) << std::endl; - std::cout << __at_key__(s) << std::endl; - std::cout << __result_of_has_key__::value << std::endl; - -[endsect] - -[section map] - -[heading Description] - -map is an __associative_sequence__ of heteregenous typed data elements. -Each element is a key/data pair (see __fusion_pair__) where the key has no -data (type only). Type identity is used to impose an equivalence relation -on keys. A map may contain at most one element for each key. Membership -testing and element key lookup has constant runtime complexity (see -__overloaded_functions__). - -[heading Header] - - #include - -[heading Synopsis] - - template < - typename T0 = __unspecified__ - , typename T1 = __unspecified__ - , typename T2 = __unspecified__ - ... - , typename TN = __unspecified__ - > - struct map; - -The variadic class interface accepts `0` to `FUSION_MAX_MAP_SIZE` elements, -where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that -defaults to `10`. Example: - - map<__pair__, __pair__, __pair__ > - -You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before -including any Fusion header to change the default. Example: - - #define FUSION_MAX_MAP_SIZE 20 - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`T0`...`TN`] [Element types] [['unspecified-type]]] -] - -[heading Model of] - -* __associative_sequence__ -* __forward_sequence__ - -[variablelist Notation - [[`M`] [A `map` type]] - [[`m`] [An instance of `map`]] - [[`e0`...`en`] [Heterogeneous key/value pairs (see __fusion_pair__)]] - [[`s`] [A __forward_sequence__]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __random_access_sequence__ and __associative_sequence__. - -[table - [[Expression] [Semantics]] - [[`M()`] [Creates a map with default constructed elements.]] - [[`M(e0, e1,... en)`] [Creates a map with element pairs `e0`...`en`.]] - [[`M(s)`] [Copy constructs a map from a __forward_sequence__ `s`.]] - [[`m = s`] [Assigns to a map, `m`, from a __forward_sequence__ `s`.]] -] - -[heading Example] - - typedef map< - __pair__ - , __pair__ > - map_type; - - map_type m( - __fusion_make_pair__('X') - , __fusion_make_pair__("Men")); - - std::cout << __at__(m) << std::endl; - std::cout << __at__(m) << std::endl; - -[endsect] - -[endsect] - -[section Views] - -Views are sequences that do not actually contain data, but instead impart -an alternative presentation over the data from one or more underlying -sequences. Views are proxies. They provide an efficient yet purely -functional way to work on potentially expensive sequence operations. Views -are inherently lazy. Their elements are only computed on demand only when -the elements of the underlying sequence(s) are actually accessed. Views' -lazy nature make them very cheap to copy and be passed around by value. - -[heading Header] - - #include - -[section single_view] - -`single_view` is a view into a value as a single element sequence. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct single_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`T`] [Any type] []] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`S`] [A `single_view` type]] - [[`s`, `s2`] [Instances of `single_view`]] - [[`x`] [An instance of `T`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`S(x)`] [Creates a `single_view` from `x`.]] - [[`S(s)`] [Copy constructs a `single_view` from another `single_view`, `s`.]] - [[`s = s2`] [Assigns to a `single_view`, `s`, from another `single_view`, `s2`.]] -] - -[heading Example] - - single_view view(3); - std::cout << view << std::endl; - -[endsect] - -[section filter_view] - -[heading Description] - -`filter_view` is a view into a subset of its underlying sequence's elements -satisfying a given predicate (an __mpl__ metafunction). The `filter_view` -presents only those elements for which its predicate evaluates to -`mpl::true_`. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct filter_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequence`] [A __forward_sequence__] []] - [[`Pred`] [Unary Metafunction - returning an `mpl::bool_`] []] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`F`] [A `filter_view` type]] - [[`f`, `f2`] [Instances of `filter_view`]] - [[`s`] [A __forward_sequence__]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`F(s)`] [Creates a `filter_view` given a sequence, `s`.]] - [[`F(f)`] [Copy constructs a `filter_view` from another `filter_view`, `f`.]] - [[`f = f2`] [Assigns to a `filter_view`, `f`, from another `filter_view`, `f2`.]] -] - -[heading Example] - - using boost::mpl::_; - using boost::mpl::not_; - using boost::is_class; - - typedef __vector__ vector_type; - - vector_type v("a-string", '@', 987654, true, 6.6); - filter_view > > view(v); - std::cout << view << std::endl; - -[endsect] - -[section iterator_range] - -[heading Description] - -`iterator_range` presents a sub-range of its underlying sequence delimited -by a pair of iterators. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct iterator_range; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`First`] [A fusion __iterator__] []] - [[`Last`] [A fusion __iterator__] []] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`IR`] [An `iterator_range` type]] - [[`f`] [An instance of `First`]] - [[`l`] [An instance of `Last`]] - [[`ir`, `ir2`] [Instances of `iterator_range`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`IR(f, l)`] [Creates an `iterator_range` given iterators, `f` and `l`.]] - [[`IR(ir)`] [Copy constructs an `iterator_range` from another `iterator_range`, `ir`.]] - [[`ir = ir2`] [Assigns to a `iterator_range`, `ir`, from another `iterator_range`, `ir2`.]] -] - -[heading Example] - - char const* s = "Ruby"; - typedef __vector__ vector_type; - vector_type vec(1, 'x', 3.3, s); - - typedef __result_of_begin__::type A; - typedef __result_of_end__::type B; - typedef __result_of_next__::type C; - typedef __result_of_prior__::type D; - - C c(vec); - D d(vec); - - iterator_range range(c, d); - std::cout << range << std::endl; - -[endsect] - -[section joint_view] - -[heading Description] - -`joint_view` presents a view which is a concatenation of two sequences. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct joint_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequence1`] [A __forward_sequence__] []] - [[`Sequence2`] [A __forward_sequence__] []] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`JV`] [A `joint_view` type]] - [[`s1`] [An instance of `Sequence1`]] - [[`s2`] [An instance of `Sequence2`]] - [[`jv`, `jv2`] [Instances of `joint_view`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`JV(s1, s2)`] [Creates a `joint_view` given sequences, `s1` and `s2`.]] - [[`JV(jv)`] [Copy constructs a `joint_view` from another `joint_view`, `jv`.]] - [[`jv = jv2`] [Assigns to a `joint_view`, `jv`, from another `joint_view`, `jv2`.]] -] - -[heading Example] - - __vector__ v1(3, 'x'); - __vector__ v2("hello", 123); - joint_view< - __vector__ - , __vector__ - > view(v1, v2); - std::cout << view << std::endl; - -[endsect] - -[section zip_view] - -[heading Description] - -`zip_view` presents a view which iterates over a collection of __sequence__s in parallel. A `zip_view` -is constructed from a __sequence__ of references to the component __sequence__s. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct zip_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequences`] [A __forward_sequence__ of references to other Fusion __sequence__s] []] -] - -[heading Model of] - -* __forward_sequence__ - -[variablelist Notation - [[`ZV`] [A `joint_view` type]] - [[`s`] [An instance of `Sequences`]] - [[`zv1`, `zv2`] [Instances of `ZV`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__. - -[table - [[Expression] [Semantics]] - [[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component __sequence__s.]] - [[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]] - [[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]] -] - -[heading Example] - typedef __vector__ vec1; - typedef __vector__ vec2; - vec1 v1(1,2); - vec2 v2('a','b'); - typedef __vector__ sequences; - std::cout << zip_view(sequences(v1, v2)) << std::endl; // ((1 a) (2 b)) - -[endsect] - -[section transform_view] - -`transform_view` presents a transformed view of its underlying sequence -given a unary __poly_func_obj__. The `transform_view` inherits the -traversal characteristics (see __traversal_concept__) of its underlying -sequence. - -[heading Header] - - #include - -[heading Synopsis] - -[*Unary Version] - - template - struct transform_view; - -[*Binary Version] - - template - struct transform_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequence`] [A __forward_sequence__] []] - [[`Sequence1`] [A __forward_sequence__] []] - [[`Sequence2`] [A __forward_sequence__] []] - [[`F`] [A __poly_func_obj__] []] -] - -[heading Model of] - -* __forward_sequence__, __bidirectional_sequence__ or -__random_access_sequence__ depending on the traversal characteristics (see -__traversal_concept__) of its underlying sequence. - -[variablelist Notation - [[`TV`] [A `transform_view` type]] - [[`BTV`] [A binary `transform_view` type]] - [[`UTV`] [A unary `transform_view` type]] - [[`f`] [An instance of `F`]] - [[`s`] [An instance of `Sequence`]] - [[`s1`] [An instance of `Sequence1`]] - [[`s2`] [An instance of `Sequence2`]] - [[`tv`, `tv2`] [Instances of `transform_view`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__, __bidirectional_sequence__ or -__random_access_sequence__ depending on the traversal characteristics (see -__traversal_concept__) of its underlying sequence. - -[table - [[Expression] [Semantics]] - [[`UTV(s, f)`] [Creates a unary `transform_view` given sequence, - `s` and unary __poly_func_obj__, `f`.]] - [[`BTV(s1, s2, f)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` - and unary __poly_func_obj__, `f`.]] - [[`TV(tv)`] [Copy constructs a `transform_view` from another `transform_view`, `tv`.]] - [[`tv = tv2`] [Assigns to a `transform_view`, `tv`, from another `transform_view`, `tv2`.]] -] - -[heading Example] - - struct square - { - template - struct result - { - typedef T type; - }; - - template - T operator()(T x) const - { - return x * x; - } - }; - - typedef __vector__ vector_type; - vector_type vec(2, 5, 3.3); - - transform_view transform(vec, square()); - std::cout << transform << std::endl; - -[endsect] - -[section reverse_view] - -`reverse_view` presents a reversed view of underlying sequence. The first -element will be its last and the last element will be its first. - -[heading Header] - - #include - -[heading Synopsis] - - template - struct reverse_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequence`] [A __bidirectional_sequence__] []] -] - -[heading Model of] - -* __bidirectional_sequence__ - -[variablelist Notation - [[`RV`] [A `reverse_view` type]] - [[`s`] [An instance of `Sequence`]] - [[`rv`, `rv2`] [Instances of `reverse_view`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in __bidirectional_sequence__. - -[table - [[Expression] [Semantics]] - [[`RV(s)`] [Creates a unary `reverse_view` given sequence, `s`.]] - [[`RV(rv)`] [Copy constructs a `reverse_view` from another `reverse_view`, `rv`.]] - [[`rv = rv2`] [Assigns to a `reverse_view`, `rv`, from another `reverse_view`, `rv2`.]] -] - -[heading Example] - - typedef __vector__ vector_type; - vector_type vec(2, 5, 3.3); - - reverse_view reverse(vec); - std::cout << reverse << std::endl; - -[endsect] - -[endsect] - -[section Adapted] - -Fusion provides a couple of adapters for other sequences such as -`std::pair`, __mpl__ sequences, and `boost::array`. These adapters are -written using Fusion's non-intrusive __extension__ mechanism. If you wish -to use these sequences with fusion, simply include the necessary files and -they will be regarded as first-class, fully conforming fusion sequences -[footnote Fusion sequences may also be adapted as fully conforming __mpl__ -sequences (see __intrinsics__). That way, we can have 2-way adaptation to -and from __mpl__ and Fusion]. - -[heading Header] - - #include - -[section std::pair] - -This module provides adapters for `std::pair`. Including the module header -makes `std::pair` a fully conforming __random_access_sequence__. - -[heading Header] - - #include - -[heading Model of] - -* __random_access_sequence__ - -[heading Example] - - std::pair p(123, "Hola!!!"); - std::cout << __at_c__<0>(p) << std::endl; - std::cout << __at_c__<1>(p) << std::endl; - std::cout << p << std::endl; - -[heading See also] - -__std_pair_doc__, __tr1_tuple_pair__ - -[endsect] - -[section mpl sequence] - -This module provides adapters for __mpl__ sequences. Including the module -header makes all __mpl__ sequences fully conforming fusion sequences. - -[heading Header] - - #include - -[heading Model of] - -* __forward_sequence__ (If the __mpl__ sequence is a forward sequence.) -* __bidirectional_sequence__ (If the __mpl__ sequence is a bidirectional sequence.) -* __random_access_sequence__ (If the __mpl__ sequence is a random access sequence.) - -[heading Example] - - mpl::vector_c vec_c; - fusion::vector2 v(vec_c); - std::cout << __at_c__<0>(v) << std::endl; - std::cout << __at_c__<1>(v) << std::endl; - - v = mpl::vector_c(); - std::cout << __at_c__<0>(v) << std::endl; - std::cout << __at_c__<1>(v) << std::endl; - -[heading See also] - -__mpl__ - -[endsect] - -[section boost::array] - -This module provides adapters for `boost::array`. Including the module -header makes `boost::array` a fully conforming __random_access_sequence__. - -[heading Header] - - #include - -[heading Model of] - -* __random_access_sequence__ - -[heading Example] - - boost::array arr = {{1,2,3}}; - - std::cout << *__begin__(arr) << std::endl; - std::cout << *__next__(__begin__(arr)) << std::endl; - std::cout << *__advance_c__<2>(__begin__(arr)) << std::endl; - std::cout << *__prior__(__end__(arr)) << std::endl; - std::cout << __at_c__<2>(arr) << std::endl; - -[heading See also] - -__boost_array_library__ - -[endsect] - -[endsect] - -[section Intrinsics] - -Intrinsics form the essential interface of Fusion __sequence__s. __stl__ -counterparts of these functions are usually implemented as member -functions. Intrinsic functions, unlike __algorithms__, are not generic -across the full __sequence__ repertoire. They need to be implemented for -each Fusion __sequence__[footnote In practice, many of intrinsic functions -have default implementations that will work in majority of cases]. - -[heading Header] - - #include - -[section Functions] - -[section begin] - -[heading Description] - -Returns an iterator pointing to the first element in the sequence. - -[heading Synopsis] - - template - typename __result_of_begin__::type - begin(Sequence& seq); - - template - typename __result_of_begin__::type - begin(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __forward_sequence__] [The sequence we wish to get an iterator from.]] -] - -[heading Expression Semantics] - - begin(seq); - -[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ -else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ -else, __random_access_iterator__ if `seq` is a __random_access_sequence__. - -[*Semantics]: Returns an iterator pointing to the first element in the sequence. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(__deref__(begin(v)) == 1); - -[endsect] - -[section end] - -[heading Description] - -Returns an iterator pointing to one element past the end of the sequence. - -[heading Synopsis] - - template - typename __result_of_end__::type - end(Sequence& seq); - - template - typename __result_of_end__::type - end(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __forward_sequence__] [The sequence we wish to get an iterator from.]] -] - -[heading Expression Semantics] - - end(seq); - -[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ -else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ -else, __random_access_iterator__ if `seq` is a __random_access_sequence__. - -[*Semantics]: Returns an iterator pointing to one element past the end of -the sequence. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(__deref__(__prior__(end(v))) == 3); - -[endsect] - -[section empty] - -[heading Description] - -Returns a type convertible to `bool` that evaluates to `true` if the -sequence is empty, else, evaluates to `false`. - -[heading Synopsis] - - template - typename __result_of_empty__::type - empty(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] -] - -[heading Expression Semantics] - - empty(seq); - -[*Return type]: Convertible to `bool`. - -[*Semantics]: Evaluates to `true` if the sequence is empty, else, evaluates -to `false`. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(empty(v) == false); - -[endsect] - -[section front] - -[heading Description] - -Returns the first element in the sequence. - -[heading Synopsis] - - template - typename __result_of_front__::type - front(Sequence& seq); - - template - typename __result_of_front__::type - front(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] -] - -[heading Expression Semantics] - - front(seq); - -[*Return type]: Returns a reference to the first element in the sequence -`seq` if `seq` is mutable and `e = o`, where `e` is the first element in -the sequence, is a valid expression. Else, returns a type convertable to -the first element in the sequence. - -[*Precondition]: `__empty__(seq) == false` - -[*Semantics]: Returns the first element in the sequence. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(front(v) == 1); - -[endsect] - -[section back] - -[heading Description] - -Returns the last element in the sequence. - -[heading Synopsis] - - template - typename __result_of_back__::type - back(Sequence& seq); - - template - typename __result_of_back__::type - back(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __bidirectional_sequence__] [The sequence we wish to investigate.]] -] - -[heading Expression Semantics] - - back(seq); - -[*Return type]: Returns a reference to the last element in the sequence -`seq` if `seq` is mutable and `e = o`, where `e` is the last element in the -sequence, is a valid expression. Else, returns a type convertable to the -last element in the sequence. - -[*Precondition]: `__empty__(seq) == false` - -[*Semantics]: Returns the last element in the sequence. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(back(v) == 3); - -[endsect] - -[section size] - -[heading Description] - -Returns a type convertible to `int` that evaluates the number of elements -in the sequence. - -[heading Synopsis] - - template - typename __result_of_size__::type - size(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] -] - -[heading Expression Semantics] - - size(seq); - -[*Return type]: Convertible to `int`. - -[*Semantics]: Returns the number of elements in the sequence. - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(size(v) == 3); - -[endsect] - -[section at] - -[heading Description] - -Returns the N-th element from the beginning of the sequence. - -[heading Synopsis] - - template - typename __result_of_at__::type - at(Sequence& seq); - - template - typename __result_of_at__::type - at(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] - [[`N`] [An __mpl__ integral constant] [An index from the beginning of the - sequence.]] -] - -[heading Expression Semantics] - - at(seq); - -[*Return type]: Returns a reference to the N-th element from the beginning -of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th -element from the beginning of the sequence, is a valid expression. Else, -returns a type convertable to the N-th element from the beginning of the -sequence. - -[*Precondition]: `0 <= N::value < __size__(s)` - -[*Semantics]: Equivalent to - - __deref__(__advance__(__begin__(s))) - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(at >(v) == 2); - -[endsect] - -[section at_c] - -[heading Description] - -Returns the N-th element from the beginning of the sequence. - -[heading Synopsis] - - template - typename __result_of_at_c__::type - at_c(Sequence& seq); - - template - typename __result_of_at_c__::type - at_c(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] - [[`N`] [An integral constant] [An index from the beginning of the - sequence.]] -] - -[heading Expression Semantics] - - at_c(seq); - -[*Return type]: Returns a reference to the N-th element from the beginning -of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th -element from the beginning of the sequence, is a valid expression. Else, -returns a type convertable to the N-th element from the beginning of the -sequence. - -[*Precondition]: `0 <= N < __size__(s)` - -[*Semantics]: Equivalent to - - __deref__(__advance__(__begin__(s))) - -[heading Header] - - #include - -[heading Example] - - __vector__ v(1, 2, 3); - assert(at_c<1>(v) == 2); - -[endsect] - -[section has_key] - -[heading Description] - -Returns a type convertible to `bool` that evaluates to `true` if the -sequence contains an element associated with a Key, else, evaluates to -`false`. - -[heading Synopsis] - - template - typename __result_of_has_key__::type - has_key(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __associative_sequence__] [The sequence we wish to investigate.]] - [[`Key`] [Any type] [The queried key.]] -] - -[heading Expression Semantics] - - has_key(seq); - -[*Return type]: Convertible to `bool`. - -[*Semantics]: Evaluates to `true` if the sequence contains an element -associated with Key, else, evaluates to `false`. - -[heading Header] - - #include - -[heading Example] - - __set__ s(1, 'x', true); - assert(has_key(s) == true); - -[endsect] - -[section at_key] - -[heading Description] - -Returns the element associated with a Key from the sequence. - -[heading Synopsis] - - template - typename __result_of_at_key__::type - at_key(Sequence& seq); - - template - typename __result_of_at_key__::type - at_key(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [Model of __associative_sequence__] [The sequence we wish to investigate.]] - [[`Key`] [Any type] [The queried key.]] -] - -[heading Expression Semantics] - - at_key(seq); - -[*Return type]: Returns a reference to the element associated with Key from -the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the -element associated with Key, is a valid expression. Else, returns a type -convertable to the element associated with Key. - -[*Precondition]: `has_key(seq) == true` - -[*Semantics]: Returns the element associated with Key. - -[heading Header] - - #include - -[heading Example] - - __set__ s(1, 'x', true); - assert(at_key(s) == 'x'); - -[endsect] - -[endsect] - -[section Metafunctions] - -[section begin] - -[heading Description] -Returns the result type of __begin__. - -[heading Synopsis] - template - struct begin - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::begin::type - -[*Return type]: An iterator modelling the same traversal concept as `Seq`. - -[*Semantics]: Returns the type of an iterator to the first element of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_begin__::type it; - BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)) - -[endsect] - -[section end] - -[heading Description] -Returns the result type of __end__. - -[heading Synopsis] - template - struct end - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::end::type - -[*Return type]: A model of the same traversal concept as `Seq`. - -[*Semantics]: Returns the type of an iterator one past the end of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_prior__<__result_of_end__::type>::type first; - BOOST_MPL_ASSERT((__result_of_equal_to__::type>)) - -[endsect] - -[section empty] - -[heading Description] -Returns the result type of __empty__. - -[heading Synopsis] - template - struct empty - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::empty::type - -[*Return type]: An __mpl_integral_constant__ - -[*Semantics]: Returns `mpl::true_` if `Seq` has zero elements, `mpl::false_` otherwise. - -[heading Header] - #include - -[heading Example] - typedef __vector__<> empty_vec; - typedef __vector__ vec; - - BOOST_MPL_ASSERT((__result_of_empty__)); - BOOST_MPL_ASSERT_NOT((__result_of_empty__)); - -[endsect] - -[section front] - -[heading Description] -Returns the result type of __front__. - -[heading Synopsis] - template - struct front - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::front::type - -[*Return type]: Any type - -[*Semantics]: The type returned by dereferencing an iterator to the first element in `Seq`. Equivalent to `__result_of_deref__<__result_of_begin__::type>::type`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_front__::type, int&>)); - -[endsect] - -[section back] - -[heading Description] -Returns the result type of __back__. - -[heading Synopsis] - template - struct back - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::back::type - -[*Return type]: Any type - -[*Semantics]: The type returned by dereferencing an iterator to the last element in the sequence. Equivalent to `__result_of_deref__<__result_of_prior__<__result_of_end__::type>::type>::type`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_back__::type, char&>)); - -[endsect] - -[section size] - -[heading Description] -Returns the result type of __size__. - -[heading Synopsis] - template - struct size - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] -] - -[heading Expression Semantics] - result_of::size::type - -[*Return type]: An __mpl_integral_constant__. - -[*Semantics]: Returns the number of elements in `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - typedef __result_of_size__::type size_mpl_integral_constant; - BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3); - -[endsect] - -[section at] - -[heading Description] - -Returns the result type of __at__[footnote __result_of_at__ reflects the -actual return type of the function __at__. __sequence__s typically return -references to its elements via the __at__ function. If you want to get -the actual element type, use __result_of_value_at__]. - -[heading Synopsis] - template< - typename Seq, - typename N> - struct at - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`N`][An __mpl_integral_constant__][Index of element]] -] - -[heading Expression Semantics] - result_of::at::type - -[*Return type]: Any type. - -[*Semantics]: Returns the result type of using __at__ to access the `N`th element of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_at__ >::type, float&>)); - -[endsect] - -[section at_c] - -[heading Description] - -Returns the result type of __at_c__[footnote __result_of_at_c__ reflects -the actual return type of the function __at_c__. __sequence__s typically -return references to its elements via the __at_c__ function. If you want to -get the actual element type, use __result_of_value_at_c__]. - -[heading Synopsis] - template< - typename Seq, - int M> - struct at_c - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`M`][Positive integer index][Index of element]] -] - -[heading Expression Semantics] - result_of::at_c::type - -[*Return type]: Any type - -[*Semantics]: Returns the result type of using __at_c__ to access the `M`th element of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_at_c__::type, float&>)); - -[endsect] - -[section value_at] - -[heading Description] - -Returns the actual type at a given index from the __sequence__. - -[heading Synopsis] - template< - typename Seq, - typename N> - struct value_at - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`N`][An __mpl_integral_constant__][Index of element]] -] - -[heading Expression Semantics] - result_of::value_at::type - -[*Return type]: Any type. - -[*Semantics]: Returns the actual type at the `N`th element of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_at__ >::type, float>)); - -[endsect] - -[section value_at_c] - -[heading Description] - -Returns the actual type at a given index from the __sequence__. - -[heading Synopsis] - template< - typename Seq, - int M> - struct value_at_c - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`M`][Positive integer index][Index of element]] -] - -[heading Expression Semantics] - result_of::value_at_c::type - -[*Return type]: Any type - -[*Semantics]: Returns the actual type at the `M`th element of `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __vector__ vec; - BOOST_MPL_ASSERT((boost::is_same<__result_of_value_at_c__::type, float>)); - -[endsect] - -[section has_key] - -[heading Description] -Returns the result type of __has_key__. - -[heading Synopsis] - template< - typename Seq, - typename Key> - struct has_key - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`Key`][Any type][Key type]] -] - -[heading Expression Semantics] - result_of::has_key::type - -[*Return type]: An __mpl_integral_constant__. - -[*Semantics]: Returns `mpl::true_` if `Seq` contains an element with key type `Key`, returns `mpl::false_` otherwise. - -[heading Header] - #include - -[heading Example] - typedef __map__<__pair__, __pair__, __pair__ > mymap; - BOOST_MPL_ASSERT((__result_of_has_key__)); - BOOST_MPL_ASSERT_NOT((__result_of_has_key__)); - -[endsect] - -[section at_key] - -[heading Description] - -Returns the result type of __at_key__[footnote __result_of_at_key__ -reflects the actual return type of the function __at_key__. __sequence__s -typically return references to its elements via the __at_key__ function. If -you want to get the actual element type, use __result_of_value_at_key__]. - -[heading Synopsis] - template< - typename Seq, - typename Key> - struct at_key - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`Key`][Any type][Key type]] -] - -[heading Expression Semantics] - result_of::at_key::type - -[*Return type]: Any type. - -[*Semantics]: Returns the result of using __at_key__ to access the element with key type `Key` in `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __map__<__pair__, __pair__, __pair__ > mymap; - BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char&>)); - -[endsect] - -[section value_at_key] - -[heading Description] -Returns the actual element type associated with a Key from the __sequence__. - -[heading Synopsis] - template< - typename Seq, - typename Key> - struct value_at_key - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Seq`][A model of __forward_sequence__][Argument sequence]] - [[`Key`][Any type][Key type]] -] - -[heading Expression Semantics] - result_of::value_at_key::type - -[*Return type]: Any type. - -[*Semantics]: Returns the actual element type associated with key type -`Key` in `Seq`. - -[heading Header] - #include - -[heading Example] - typedef __map__<__pair__, __pair__, __pair__ > mymap; - BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char>)); - -[endsect] - -[endsect] - -[endsect] - -[section Generation] - -These are the functions that you can use to generate various forms of -__containers__ from elemental values. - -[heading Header] - - #include - -[section Functions] - -[section make_list] - -[heading Description] - -Create a __list__ from one or more values. - -[heading Synopsis] - - template - typename __result_of_make_list__::type - make_list(T0 const& x0, T1 const& x1... TN const& xN); - -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` -before including any Fusion header to change the default. Example: - - #define FUSION_MAX_LIST_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_list`]] -] - -[heading Expression Semantics] - - make_list(x0, x1,... xN); - -[*Return type]: __result_of_make_list__`::type` - -[*Semantics]: Create a __list__ from `x0, x1,... xN`. - -[heading Header] - - #include - -[heading Example] - - make_list(123, "hello", 12.5) - -[heading See also] - -__note_boost_ref__ - -[endsect] - -[section make_cons] - -[heading Description] - -Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). - -[heading Synopsis] - - template - typename __result_of_make_cons__::type - make_cons(Car const& car); - - template - typename __result_of_make_cons__::type - make_cons(Car const& car, Cdr const& cdr); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`car`] [Instance of `Car`] [The list's head]] - [[`cdr`] [Instance of `Cdr`] [The list's tail (optional)]] -] - -[heading Expression Semantics] - - make_cons(car, cdr); - -[*Return type]: __result_of_make_cons__`::type` or -__result_of_make_cons__`::type` - -[*Semantics]: Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). - -[heading Header] - - #include - -[heading Example] - - make_cons('x', make_cons(123)) - -[heading See also] - -__note_boost_ref__ - -[endsect] - -[section make_vector] - -[heading Description] - -Create a __vector__ from one or more values. - -[heading Synopsis] - - template - typename __result_of_make_vector__::type - make_vector(T0 const& x0, T1 const& x1... TN const& xN); - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the -default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_vector`]] -] - -[heading Expression Semantics] - - make_vector(x0, x1,... xN); - -[*Return type]: __result_of_make_vector__`::type` - -[*Semantics]: Create a __vector__ from `x0, x1,... xN`. - -[heading Header] - - #include - -[heading Example] - - make_vector(123, "hello", 12.5) - -[heading See also] - -__note_boost_ref__ - -[endsect] - -[section make_set] - -[heading Description] - -Create a __set__ from one or more values. - -[heading Synopsis] - - template - typename __result_of_make_set__::type - make_set(T0 const& x0, T1 const& x1... TN const& xN); - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote -`set` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion -header to change the default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_set`]] -] - -[heading Expression Semantics] - - make_set(x0, x1,... xN); - -[*Return type]: __result_of_make_set__`::type` - -[*Semantics]: Create a __set__ from `x0, x1,... xN`. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - make_set(123, "hello", 12.5) - -[heading See also] - -__note_boost_ref__ - -[endsect] - -[section make_map] - -[heading Description] - -Create a __map__ from one or more key/data pairs. - -[heading Synopsis] - - template < - typename K0, typename K1,... typename KN - , typename T0, typename T1,... typename TN> - typename __result_of_make_map__::type - make_map(T0 const& x0, T1 const& x1... TN const& xN); - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote -`map` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion -header to change the default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`K0, K1,... KN`] [The key types] [Keys associated with `x0, x1,... xN`]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_map`]] -] - -[heading Expression Semantics] - - make_map(x0, x1,... xN); - -[*Return type]: __result_of_make_map__`::type` - -[*Semantics]: Create a __map__ from `K0, K1,... KN` keys and -`x0, x1,... xN` data. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - make_map( - __fusion_make_pair__('X') - , __fusion_make_pair__("Men")) - -[heading See also] - -__note_boost_ref__, __fusion_pair__ - -[endsect] - -[section Tiers] - -Tiers are sequences, where all elements are non-const reference types. They -are constructed with a call to a couple of /tie/ function templates. The -succeeding sections document the various /tier/ flavors. - -* __list_tie__ -* __vector_tie__ - -Example: - - int i; char c; double d; - ... - __vector_tie__(i, c, a); - -The __vector_tie__ function creates a __vector__ of type -`__vector__`. The same result could be achieved with the call -__make_vector__(__boost_ref_call__(i), __boost_ref_call__(c), __boost_ref_call__(a)) -[footnote see __boost_ref__ for details about `ref`]. - -A /tie/ can be used to 'unpack' another tuple into variables. E.g.: - - int i; char c; double d; - __vector_tie__(i, c, d) = __make_vector__(1,'a', 5.5); - std::cout << i << " " << c << " " << d; - -This code prints 1 a 5.5 to the standard output stream. A sequence -unpacking operation like this is found for example in ML and Python. It is -convenient when calling functions which return sequences. - -[heading Ignore] - -There is also an object called /ignore/ which allows you to ignore an -element assigned by a sequence. The idea is that a function may return a -sequence, only part of which you are interested in. For example: - - char c; - __vector_tie__(ignore, c) = __make_vector__(1, 'a'); - -[endsect] - -[section list_tie] - -[heading Description] - -Constructs a tie using a __list__ sequence. - -[heading Synopsis] - - template - __list__ - list_tie(T0& x0, T1& x1... TN& xN); - -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` -before including any Fusion header to change the default. Example: - - #define FUSION_MAX_LIST_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `list_tie`]] -] - -[heading Expression Semantics] - - list_tie(x0, x1,... xN); - -[*Return type]: __list__ - -[*Semantics]: Create a __list__ of references from `x0, x1,... xN`. - -[heading Header] - - #include - -[heading Example] - - int i = 123; - double d = 123.456; - list_tie(i, d) - -[endsect] - -[section vector_tie] - -[heading Description] - -Constructs a tie using a __vector__ sequence. - -[heading Synopsis] - - template - __vector__ - vector_tie(T0& x0, T1& x1... TN& xN); - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the -default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `vector_tie`]] -] - -[heading Expression Semantics] - - vector_tie(x0, x1,... xN); - -[*Return type]: __vector__ - -[*Semantics]: Create a __vector__ of references from `x0, x1,... xN`. - -[heading Header] - - #include - -[heading Example] - - int i = 123; - double d = 123.456; - vector_tie(i, d) - -[endsect] - -[endsect] - -[section MetaFunctions] - -[section make_list] - -[heading Description] - -Returns the result type of __make_list__. - -[heading Synopsis] - - template - struct make_list; - -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` -before including any Fusion header to change the default. Example: - - #define FUSION_MAX_LIST_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T0, T1,... TN`] [Any type] [Template arguments to `make_list`]] -] - -[heading Expression Semantics] - - result_of::make_list::type - -[*Return type]: A __list__ with elements of types converted following the -rules for __element_conversion__. - -[*Semantics]: Create a __list__ from `T0, T1,... TN`. - -[heading Header] - - #include - -[heading Example] - - result_of::make_list::type - -[endsect] - -[section make_cons] - -[heading Description] - -Returns the result type of __make_cons__. - -[heading Synopsis] - - template - struct make_cons; - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`Car`] [Any type] [The list's head type]] - [[`Cdr`] [A `cons`] [The list's tail type (optional)]] -] - -[heading Expression Semantics] - - result_of::make_cons::type - -[*Return type]: A __cons__ with head element, `Car`, of type converted -following the rules for __element_conversion__, and tail, `Cdr`. - -[*Semantics]: Create a __cons__ from `Car` (/head/) and optional `Cdr` (/tail/). - -[heading Header] - - #include - -[heading Example] - - result_of::make_cons::type>::type - -[endsect] - -[section make_vector] - -[heading Description] - -Returns the result type of __make_vector__. - -[heading Synopsis] - - template - struct make_vector; - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the -default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T0, T1,... TN`] [Any type] [Template arguments to `make_vector`]] -] - -[heading Expression Semantics] - - result_of::make_vector::type - -[*Return type]: A __vector__ with elements of types converted following the -rules for __element_conversion__. - -[*Semantics]: Create a __vector__ from `T0, T1,... TN`. - -[heading Header] - - #include - -[heading Example] - - result_of::make_vector::type - -[endsect] - -[section make_set] - -[heading Description] - -Returns the result type of __make_set__. - -[heading Synopsis] - - template - struct make_set; - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote -`set` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion -header to change the default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T0, T1,... TN`] [Any type] [The arguments to `make_set`]] -] - -[heading Expression Semantics] - - result_of::make_set::type - -[*Return type]: A __set__ with elements of types converted following the -rules for __element_conversion__. - -[*Semantics]: Create a __set__ from `T0, T1,... TN`. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - result_of::make_set::type - -[endsect] - -[section make_map] - -[heading Description] - -Returns the result type of __make_map__. - -[heading Synopsis] - - template < - typename K0, typename K1,... typename KN - , typename T0, typename T1,... typename TN> - struct make_map; - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote -`map` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion -header to change the default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`K0, K1,... KN`] [Any type] [Keys associated with `T0, T1,... TN`]] - [[`T0, T1,... TN`] [Any type] [Data associated with keys `K0, K1,... KN`]] -] - -[heading Expression Semantics] - - resulf_of::make_map::type; - -[*Return type]: __result_of_make_map__`::type` - -[*Semantics]: A __map__ with __fusion_pair__ elements where the -`second_type` is converted following the rules for __element_conversion__. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - result_of::make_map::type - -[heading See also] - -__fusion_pair__ - -[endsect] - -[section list_tie] - -[heading Description] - -Returns the result type of __list_tie__. - -[heading Synopsis] - - template - struct list_tie; - -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` -before including any Fusion header to change the default. Example: - - #define FUSION_MAX_LIST_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T0, T1,... TN`] [Any type] [The arguments to `list_tie`]] -] - -[heading Expression Semantics] - - result_of::list_tie::type; - -[*Return type]: __list__ - -[*Semantics]: Create a __list__ of references from `T0, T1,... TN`. - -[heading Header] - - #include - -[heading Example] - - result_of::list_tie::type - -[endsect] - -[section vector_tie] - -[heading Description] - -Returns the result type of __vector_tie__. - -[heading Synopsis] - - template - struct vector_tie; - -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the -default. Example: - - #define FUSION_MAX_VECTOR_SIZE 20 - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T0, T1,... TN`] [Any type] [The arguments to `vector_tie`]] -] - -[heading Expression Semantics] - - result_of::vector_tie::type; - -[*Return type]: __vector__ - -[*Semantics]: Create a __vector__ of references from `T0, T1,... TN`. - -[heading Header] - - #include - -[heading Example] - - result_of::vector_tie::type - -[endsect] - -[endsect] - -[endsect] - -[section Conversion] - -All fusion sequences can be converted to one of the __containers__ types -using one of these conversion functions. - -[heading Header] - - #include - -[section Functions] - -[section as_list] - -[heading Description] - -Convert a fusion sequence to a __list__. - -[heading Synopsis] - - template - typename result_of::as_list::type - as_list(Sequence& seq); - - template - typename result_of::as_list::type - as_list(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [An instance of Sequence] [The sequence to convert.]] -] - -[heading Expression Semantics] - - as_list(seq); - -[*Return type]: __result_of_as_list__`::type` - -[*Semantics]: Convert a fusion sequence, `seq`, to a __list__. - -[heading Header] - - #include - -[heading Example] - - as_list(__make_vector__('x', 123, "hello")) - -[endsect] - -[section as_vector] - -[heading Description] - -Convert a fusion sequence to a __vector__. - -[heading Synopsis] - - template - typename result_of::as_vector::type - as_vector(Sequence& seq); - - template - typename result_of::as_vector::type - as_vector(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [An instance of Sequence] [The sequence to convert.]] -] - -[heading Expression Semantics] - - as_vector(seq); - -[*Return type]: __result_of_as_vector__`::type` - -[*Semantics]: Convert a fusion sequence, `seq`, to a __vector__. - -[heading Header] - - #include - -[heading Example] - - as_vector(__make_list__('x', 123, "hello")) - -[endsect] - -[section as_set] - -[heading Description] - -Convert a fusion sequence to a __set__. - -[heading Synopsis] - - template - typename result_of::as_set::type - as_set(Sequence& seq); - - template - typename result_of::as_set::type - as_set(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [An instance of Sequence] [The sequence to convert.]] -] - -[heading Expression Semantics] - - as_set(seq); - -[*Return type]: __result_of_as_set__`::type` - -[*Semantics]: Convert a fusion sequence, `seq`, to a __set__. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - as_set(__make_vector__('x', 123, "hello")) - -[endsect] - -[section as_map] - -[heading Description] - -Convert a fusion sequence to a __map__. - -[heading Synopsis] - - template - typename result_of::as_map::type - as_map(Sequence& seq); - - template - typename result_of::as_map::type - as_map(Sequence const& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`seq`] [An instance of Sequence] [The sequence to convert.]] -] - -[heading Expression Semantics] - - as_map(seq); - -[*Return type]: __result_of_as_map__`::type` - -[*Semantics]: Convert a fusion sequence, `seq`, to a __map__. - -[*Precondition]: The elements of the sequence are assumed to be -__fusion_pair__s. There may be no duplicate __fusion_pair__ key types. - -[heading Header] - - #include - -[heading Example] - - as_map(__make_vector__( - __fusion_make_pair__('X') - , __fusion_make_pair__("Men"))) - -[endsect] - -[endsect] - -[section Metafunctions] - -[section as_list] - -[heading Description] - -Returns the result type of __as_list__. - -[heading Synopsis] - - template - struct as_list; - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A fusion __sequence__] [The sequence type to convert.]] -] - -[heading Expression Semantics] - - result_of::as_list::type; - -[*Return type]: A __list__ with same elements as the input sequence, -`Sequence`. - -[*Semantics]: Convert a fusion sequence, `Sequence`, to a __list__. - -[heading Header] - - #include - -[heading Example] - - result_of::as_list<__vector__ >::type - -[endsect] - -[section as_vector] - -[heading Description] - -Returns the result type of __as_vector__. - -[heading Synopsis] - - template - struct as_vector; - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] -] - -[heading Expression Semantics] - - result_of::as_vector::type; - -[*Return type]: A __vector__ with same elements as the input sequence, -`Sequence`. - -[*Semantics]: Convert a fusion sequence, `Sequence`, to a __vector__. - -[heading Header] - - #include - -[heading Example] - - result_of::as_vector<__list__ >::type - -[endsect] - -[section as_set] - -[heading Description] - -Returns the result type of __as_set__. - -[heading Synopsis] - - template - struct as_set; - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] -] - -[heading Expression Semantics] - - result_of::as_set::type; - -[*Return type]: A __set__ with same elements as the input sequence, -`Sequence`. - -[*Semantics]: Convert a fusion sequence, `Sequence`, to a __set__. - -[*Precondition]: There may be no duplicate key types. - -[heading Header] - - #include - -[heading Example] - - result_of::as_set<__vector__ >::type - -[endsect] - -[section as_map] - -[heading Description] - -Returns the result type of __as_map__. - -[heading Synopsis] - - template - struct as_map; - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] -] - -[heading Expression Semantics] - - result_of::as_map::type; - -[*Return type]: A __map__ with same elements as the input sequence, -`Sequence`. - -[*Semantics]: Convert a fusion sequence, `Sequence`, to a __map__. - -[*Precondition]: The elements of the sequence are assumed to be -__fusion_pair__s. There may be no duplicate __fusion_pair__ key types. - -[heading Header] - - #include - -[heading Example] - - result_of::as_map<__vector__< - __fusion_pair__ - , __fusion_pair__ > >::type - -[endsect] - -[endsect] - -[endsect] - -[section Operators] - -These operators, like the __algorithms__, work generically on all Fusion -sequences. All conforming Fusion sequences automatically get these -operators for free. - -[section I/O] - -The I/O operators: `<<` and `>>` work generically on all Fusion sequences. -The global `operator<<` has been overloaded for generic output streams such -that __sequence__s are output by recursively calling `operator<<` for each -element. Analogously, the global `operator>>` has been overloaded to -extract __sequence__s from generic input streams by recursively calling -`operator>>` for each element. - -The default delimiter between the elements is space, and the __sequence__ -is enclosed in parenthesis. For Example: - - __vector__ a(1.0f, 2, std::string("Howdy folks!"); - cout << a; - -outputs the __vector__ as: (1.0 2 Howdy folks!) - -The library defines three manipulators for changing the default behavior: - -[variablelist Manipulators - [[`tuple_open(arg)`] [Defines the character that is output before the first element.]] - [[`tuple_close(arg)`] [Defines the character that is output after the last element.]] - [[`tuple_delimiter(arg)`] [Defines the delimiter character between elements.]] -] - -The argument to `tuple_open`, `tuple_close` and `tuple_delimiter` may be a -`char`, `wchar_t`, a C-string, or a wide C-string. - -Example: - - std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a; - -outputs the same __vector__, `a` as: [1.0, 2, Howdy folks!] - -The same manipulators work with `operator>>` and `istream` as well. Suppose -the `std::cin` stream contains the following data: - - (1 2 3) [4:5] - -The code: - - __vector__ i; - __vector__ j; - - std::cin >> i; - std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':'); - std::cin >> j; - -reads the data into the __vector__s `i` and `j`. - -Note that extracting __sequence__s with `std::string` or C-style string -elements does not generally work, since the streamed __sequence__ -representation may not be unambiguously parseable. - -[heading Header] - - #include - -[section in] - -[heading Description] - -Read a __sequence__ from an input stream. - -[heading Synopsis] - - template - IStream& - operator>>(IStream& is, Sequence& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[is] [An input stream.] [Stream to extract information from.]] - [[seq] [A __sequence__.] [The sequence to read.]] -] - -[heading Expression Semantics] - - is >> seq - -[*Return type]: IStream& - -[*Semantics]: For each element, `e`, in sequence, `seq`, call `is >> e`. - -[heading Header] - - #include - -[heading Example] - - __vector__ v; - std::cin >> v; - -[endsect] - -[section out] - -[heading Description] - -Write a __sequence__ to an output stream. - -[heading Synopsis] - - template - OStream& - operator<<(OStream& os, Sequence& seq); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[os] [An output stream.] [Stream to write information to.]] - [[seq] [A __sequence__.] [The sequence to write.]] -] - -[heading Expression Semantics] - - os << seq - -[*Return type]: OStream& - -[*Semantics]: For each element, `e`, in sequence, `seq`, call `os << e`. - -[heading Header] - - #include - -[heading Example] - - std::cout << __make_vector__(123, "Hello", 'x') << std::endl; - -[endsect] - -[endsect] - -[section Comparison] - -The Comparison operators: `==`, `!=`, `<`, `<=`, `>=` and `>=` work -generically on all Fusion sequences. Comparison operators are "short- -circuited": elementary comparisons start from the first elements and are -performed only until the result is clear. - -[heading Header] - - #include - -[section equal] - -[heading Description] - -Compare two sequences for equality. - -[heading Synopsis] - - template - bool - operator==(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a == b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a == b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__s, -e and f, e == f returns true. - -[heading Header] - - #include - -[heading Example] - - __vector__ v1(5, 'a'); - __vector__ v2(5, 'a'); - assert(v1 == v2); - -[endsect] - -[section not equal] - -Compare two sequences for inequality. - -[heading Synopsis] - - template - bool - operator!=(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a != b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a == b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: - -Returns !(a == b). - -[heading Header] - - #include - -[heading Example] - - __vector__ v3(5, 'b'); - __vector__ t4(2, 'a'); - assert(v1 != v3); - assert(v1 != t4); - assert(!(v1 != v2)); - -[endsect] - -[section less than] - -Lexicographically compare two sequences. - -[heading Synopsis] - - template - bool - operator<(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a < b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: Returns the lexicographical comparison of between `a` and `b`. - -[heading Header] - - #include - -[heading Example] - - __vector__ v1(4, 3.3f); - __vector__ v2(5, 3.3f); - __vector__ v3(5, 4.4); - assert(v1 < v2); - assert(v2 < v3); - -[endsect] - -[section less than equal] - -Lexicographically compare two sequences. - -[heading Synopsis] - - template - bool - operator<=(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a <= b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: Returns !(b < a). - -[heading Header] - - #include - -[heading Example] - - __vector__ v1(4, 3.3f); - __vector__ v2(5, 3.3f); - __vector__ v3(5, 4.4); - assert(v1 <= v2); - assert(v2 <= v3); - -[endsect] - -[section greater than] - -Lexicographically compare two sequences. - -[heading Synopsis] - - template - bool - operator>(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a > b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: Returns b < a. - -[heading Header] - - #include - -[heading Example] - - __vector__ v1(4, 3.3f); - __vector__ v2(5, 3.3f); - __vector__ v3(5, 4.4); - assert(v2 > v1); - assert(v3 > v2); - -[endsect] - -[section greater than equal] - -Lexicographically compare two sequences. - -[heading Synopsis] - - template - bool - operator>=(Seq1 const& a, Seq2 const& b); - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] -] - -[heading Expression Semantics] - - a >= b - -[*Return type]: `bool` - -[*Requirements]: - -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is -convertible to bool. - -An attempt to compare two Sequences of different lengths results in a -compile time error. - -[*Semantics]: Returns !(a < b). - -[heading Header] - - #include - -[heading Example] - - __vector__ v1(4, 3.3f); - __vector__ v2(5, 3.3f); - __vector__ v3(5, 4.4); - assert(v2 >= v1); - assert(v3 >= v2); - -[endsect] - -[endsect] - -[endsect] - -[endsect] - diff --git a/doc/support.qbk b/doc/support.qbk deleted file mode 100644 index 9736a484..00000000 --- a/doc/support.qbk +++ /dev/null @@ -1,336 +0,0 @@ -[section Support] - -A couple of classes and metafunctions provide basic support for Fusion. - -[section is_sequence] - -[heading Description] - -Metafunction that evaluates to `mpl::true_` if a certain type `T` is a -conforming Fusion __sequence__, `mpl::false_` otherwise. This may be -specialized to accomodate clients which provide Fusion conforming sequences. - -[heading Synopsis] - - namespace traits - { - template - struct is_sequence - { - typedef __unspecified__ type; - }; - } - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T`] [Any type] [The type to query.]] -] - -[heading Expression Semantics] - - typedef traits::is_sequence::type c; - -[*Return type]: An __mpl_boolean_constant__. - -[*Semantics]: Metafunction that evaluates to `mpl::true_` if a certain type -`T` is a conforming Fusion sequence, `mpl::false_` otherwise. - -[heading Header] - - #include - -[heading Example] - - BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector > )); - BOOST_MPL_ASSERT_NOT(( is_sequence< int > )); - BOOST_MPL_ASSERT(( traits::is_sequence<__list__<> > )); - BOOST_MPL_ASSERT(( traits::is_sequence<__list__ > )); - BOOST_MPL_ASSERT(( traits::is_sequence<__vector__<> > )); - BOOST_MPL_ASSERT(( traits::is_sequence<__vector__ > )); - -[endsect] - -[section is_view] - -[heading Description] - -Metafunction that evaluates to `mpl::true_` if a certain type `T` is a -conforming Fusion __view__, `mpl::false_` otherwise. A view is a -specialized sequence that does not actually contain data. Views hold -sequences which may be other views. In general, views are held by other -views by value, while non-views are held by other views by reference. `is_view` -may be specialized to accomodate clients providing Fusion conforming views. - -[heading Synopsis] - - namespace traits - { - template - struct is_view - { - typedef __unspecified__ type; - }; - } - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T`] [Any type] [The type to query.]] -] - -[heading Expression Semantics] - - typedef traits::is_view::type c; - -[*Return type]: An __mpl_boolean_constant__. - -[*Semantics]: Metafunction that evaluates to `mpl::true_` if a certain type -`T` is a conforming Fusion view, `mpl::false_` otherwise. - -[heading Header] - - #include - -[heading Example] - - BOOST_MPL_ASSERT_NOT(( traits::is_view > )); - BOOST_MPL_ASSERT_NOT(( traits::is_view )); - - using boost::mpl::_ - using boost::is_pointer; - typedef __vector__ vector_type; - typedef __filter_view__ > filter_view_type; - BOOST_MPL_ASSERT(( traits::is_view )); - -[endsect] - -[section tag_of] - -[heading Description] - -All conforming Fusion sequences and iterators have an associated tag type. -The purpose of the tag is to enable __tag_dispatching__ from __intrinsic__ -functions to implementations appropriate for the type. The default implementation -of `tag_of` returns `T::fusion_tag` for a given type `T`, if such a member typedef exists. - -This metafunction may be specialized to accomodate clients providing Fusion conforming sequences. - -[heading Synopsis] - - namespace traits - { - template - struct tag_of - { - typedef __unspecified__ type; - }; - } -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T`] [Any type] [The type to query.]] -] - -[heading Expression Semantics] - - typedef traits::tag_of::type tag; - -[*Return type]: Any type. - -[*Semantics]: Returns the tag type associated with `T`. - -[heading Header] - - #include - -[heading Example] - - typedef traits::is_sequence<__list__<> tag1; - typedef traits::is_sequence<__list__ > tag2; - typedef traits::is_sequence<__vector__<> > tag3; - typedef traits::is_sequence<__vector__ > tag4; - - BOOST_MPL_ASSERT((boost::is_same)); - BOOST_MPL_ASSERT((boost::is_same)); - -[endsect] - -[section category_of] - -[heading Description] - -A metafunction that establishes the conceptual classification of a particular -__sequence__ or __iterator__ (see __iterator_concepts__ and -__sequence_concepts__). - -[heading Synopsis] - - namespace traits - { - template - struct category_of - { - typedef __unspecified__ type; - }; - } - -[heading Parameters] - -[table - [[Parameter] [Requirement] [Description]] - [[`T`] [Any type] [The type to query.]] -] - -[heading Expression Semantics] - - typedef traits::category_of::type category; - -[*Return type]: - -For Iterators, the return type is derived from one of: - - namespace boost { namespace fusion - { - struct incrementable_traversal_tag {}; - - struct single_pass_traversal_tag - : incrementable_traversal_tag {}; - - struct forward_traversal_tag - : single_pass_traversal_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; - }} - -For Sequences, the return type is derived from one of: - - namespace boost { namespace fusion - { - struct incrementable_sequence_tag {}; - - struct single_pass_sequence_tag - : incrementable_sequence_tag {}; - - struct forward_traversal_tag - : single_pass_sequence_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; - }} - -And optionally from: - - namespace boost { namespace fusion - { - struct associative_sequence_tag {}; - }} - -[*Semantics]: Establishes the conceptual classification of a particular -__sequence__ or __iterator__. - -[heading Header] - - #include - -[heading Example] - - using boost::is_base_of; - typedef traits::category_of<__list__<> >::type list_category; - typedef traits::category_of<__vector__<> >::type vector_category; - BOOST_MPL_ASSERT(( is_base_of )); - BOOST_MPL_ASSERT(( is_base_of )); - -[endsect] - -[section pair] - -[heading Description] - -Fusion `pair` type is a half runtime pair. A half runtime pair is similar -to a __std_pair__, but, unlike __std_pair__, the first type does not have data. -It is used as elements in __map__s, for example. - -[heading Synopsis] - - template - struct pair; - - namespace result_of - { - template - struct first; - - template - struct second; - - template - struct make_pair; - } - - template - typename result_of::make_pair::type - make_pair(Second const &); - -[heading Template parameters] - -[table - [[Parameter] [Description]] - [[First] [The first type. This is purely a type. No data is held.]] - [[Second] [The second type. This contains data.]] -] - -[variablelist Notation - [[`P`] [Fusion pair type]] - [[`p`, `p2`] [Fusion pairs]] - [[`F`, `S`] [Arbitrary types]] - [[`s`] [Value of type `S`]] - [[`o`] [Output stream]] - [[`i`] [Input stream]] -] - -[heading Expression Semantics] - -[table - [[Expression] [Semantics]] - [[`P::first_type`] [The type of the first template parameter, `F`, equivalent to - `result_of::first

::type`. ]] - [[`P::second_type`] [The type of the second template parameter, `S`, equivalent to - `result_of::second

::type`. ]] - [[`P()`] [Default construction.]] - [[`P(s)`] [Construct a pair given value for the second type, `s`.]] - [[`P(p2)`] [Copy constructs a pair from another pair, `p2`.]] - [[`p = p2`] [Assigns a pair, p1, from another pair, `p2`.]] - [[make_pair(s)] [Make a pair given the first type, `F`, and a value for - the second type, `s`. The second type assumes the type of `s`]] - [[`o << p`] [Output `p` to output stream, `o`.]] - [[`i >> p`] [Input `p` from input stream, `i`.]] - [[`p == p2`] [Tests two pairs for equality.]] - [[`p != p2`] [Tests two pairs for inequality.]] -] - -[heading Header] - - #include - -[heading Example] - - pair p('X'); - std::cout << p << std::endl; - std::cout << make_pair('X') << std::endl; - assert((p == make_pair('X'))); - -[endsect] - -[endsect] - diff --git a/doc/tuples.qbk b/doc/tuples.qbk deleted file mode 100644 index 038c8180..00000000 --- a/doc/tuples.qbk +++ /dev/null @@ -1,264 +0,0 @@ -[section Tuples] -The TR1 technical report describes extensions to the C++ standard library. -Many of these extensions will be considered for the next -iteration of the C++ standard. TR1 describes a tuple type, and -support for treating `std::pair` as a type of tuple. - -Fusion provides full support for the __tr1__tuple__ interface, and the extended -uses of `std::pair` described in the TR1 document. - -[section Class template tuple] -Fusion's implementation of the __tr1__tuple__ is also a fusion __forward_sequence__. -As such the fusion tuple type provides a lot of functionality beyond that required by TR1. - -Currently tuple is basically a synonym for __vector__, although this may be changed -in future releases of fusion. - -[heading Synopsis] - template< - typename T1 = __unspecified__, - typename T2 = __unspecified__, - ... - typename TN = __unspecified__> - class tuple; - -[heading Header] - #include - -[section Construction] - -[heading Description] -The __tr1__tuple__ type provides a default constructor, a constructor that takes initializers for all of its elements, a copy constructor, and a converting copy constructor. The details of the various constructors are described in this section. - -[heading Specification] - -[variablelist Notation - [[`T1 ... TN`, `U1 ... UN`][Tuple element types]] - [[`P1 ... PN`] [Parameter types]] - [[`Ti`, `Ui`] [The type of the `i`th element of a tuple]] - [[`Pi`] [The type of the `i`th parameter]] -] - - tuple(); - -[*Requirements]: Each `Ti` is default constructable. - -[*Semantics]: Default initializes each element of the tuple. - - tuple(P1,P2,...,PN); - -[*Requirements]: Each `Pi` is `Ti` if `Ti` is a reference type, `const Ti&` otherwise. - -[*Semantics]: Copy initializes each element with the corresponding parameter. - - tuple(const tuple& t); - -[*Requirements]: Each `Ti` should be copy constructable. - -[*Semantics]: Copy constructs each element of `*this` with the corresponding element of `t`. - - template - tuple(const tuple& t); - -[*Requirements]: Each `Ti` shall be constructible from the corresponding `Ui`. - -[*Semantics]: Constructs each element of `*this` with the corresponding element of `t`. - -[endsect] - -[section Tuple creation functions] - -[heading Description] -TR1 describes 2 utility functions for creating __tr1__tuple__s. `make_tuple` builds a tuple out of it's argument list, and `tie` builds a tuple of references to it's arguments. The details of these creation functions are described in this section. - -[heading Specification] - - template - tuple make_tuple(const T1& t1, const T2& t2, ..., const TN& tn); - -Where `Vi` is `X&` if the cv-unqualified type `Ti` is `reference_wrapper`, otherwise `Vi` is `Ti`. - -[*Returns]: `tuple(t1, t2, ..., tN)` - - template - tuple tie(T1& t1, T2& t2, ..., TN& tn); - -[*Returns]: tuple(t1, t2, ..., tN). When argument `ti` is `ignore`, assigning any value to the corresponding tuple element has has no effect. - -[endsect] - -[section Tuple helper classes] - -[heading Description] -The __tr1__tuple__ provides 2 helper traits, for compile time access to the tuple size, and the element types. - -[heading Specification] - - tuple_size::value - -[*Requires]: `T` is any fusion sequence type, including `tuple`. - -[*Type]: __mpl_integral_constant__ - -[*Value]: The number of elements in the sequence. Equivalent to `__result_of_size__::type`. - - tuple_element::type - -[*Requires]: `T` is any fusion sequence type, including `tuple`. `0 <= I < N` or the program is ill formed. - -[*Value]: The type of the `I`th element of `T`. Equivalent to `__result_of_value_at__::type`. - -[endsect] - -[section Element access] - -[heading Description] -The __tr1__tuple__ provides the `get` function to provide access to it's elements by zero based numeric index. - -[heading Specification] - template - RJ get(T& t); - -[*Requires]: `0 < I <= N`. The program is ill formed if `I` is out of bounds. -`T` is any fusion sequence type, including `tuple`. - -[*Return type]: `RJ` is equivalent to `__result_of_at_c__::type`. - -[*Returns]: A reference to the `I`th element of `T`. - - template - PJ get(T const& t); - -[*Requires]: `0 < I <= N`. The program is ill formed if `I` is out of bounds. -`T` is any fusion sequence type, including `tuple`. - -[*Return type]: `PJ` is equivalent to `__result_of_at_c__::type`. - -[*Returns]: A const reference to the `I`th element of `T`. - -[endsect] - -[section Relational operators] - -[heading Description] -The __tr1__tuple__ provides the standard boolean relational operators. - -[heading Specification] - -[variablelist Notation - [[`T1 ... TN`, `U1 ... UN`][Tuple element types]] - [[`P1 ... PN`] [Parameter types]] - [[`Ti`, `Ui`] [The type of the `i`th element of a tuple]] - [[`Pi`] [The type of the `i`th parameter]] -] - - template - bool operator==( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) == __tuple_get__(rhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns `true` if and only if `__tuple_get__(lhs) == __tuple_get__(rhs)` for all `i`. -For any 2 zero length tuples `e` and `f`, `e == f` returns `true`. - - template - bool operator<( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) < __tuple_get__(rhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns the lexicographical comparison of between `lhs` and `rhs`. - - template - bool operator!=( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) == __tuple_get__(rhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns `!(lhs == rhs)`. - - template - bool operator<=( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(rhs) < __tuple_get__(lhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns `!(rhs < lhs)` - - template - bool operator>( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(rhs) < __tuple_get__(lhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns `rhs < lhs`. - - template - bool operator>=( - const tuple& lhs, - const tuple& rhs); - -[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) < __tuple_get__(rhs)` is a valid -expression returning a type that is convertible to `bool`. - -[*Semantics]: Returns `!(lhs < rhs)`. - -[endsect] - -[endsect] - -[section Pairs] - -[heading Description] -The __tr1__tuple__ interface is specified to provide uniform access to `std::pair` as if it were a 2 element tuple. - -[heading Specification] - - tuple_size >::value - -[*Type]: An __mpl_integral_constant__ - -[*Value]: Returns 2, the number of elements in a pair. - - tuple_element<0, std::pair >::type - -[*Type]: `T1` - -[*Value]: Returns the type of the first element of the pair - - tuple_element<1, std::pair >::type - -[*Type]: `T2` - -[*Value]: Returns thetype of the second element of the pair - - template - P& get(std::pair& pr); - - template - const P& get(const std::pair& pr); - -[*Type]: If `I == 0` `P` is `T1`, else if `I == 1` `P` is `T2` else the program is ill-formed. - -[*Returns: `pr.first` if `I == 0` else `pr.second`. - -[endsect] - -[endsect] - diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp deleted file mode 100644 index 1851529f..00000000 --- a/example/cookbook/fill_em_up.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Joel de Guzman - - 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) - - Problem: - - So... you have an input sequence I and a target vector R. You want to - copy I into R. But, I may have less elements than the result vector R. - For those elements not in R, you want them to be default constructed. - - Here's a case: - - I: list - R: vector - - You want the elements at the right of I not in R (i.e. int, short) - default constructed. Those at the left, found in both I and R, you want - to simply copy from I. - - Of course you want to be able to handle any type of I and R. - -==============================================================================*/ - -// We'll use these containers as examples -#include -#include - -// For doing I/O -#include - -// We'll use join and advance for processing -#include -#include - -// The fusion <--> MPL link header -#include - -// Same-o same-o -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - - // Let's specify our own tuple delimeters for nicer printing - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - // Here's your input sequence - typedef list I; - I i(123.456, "Hello"); - - // Here's your output sequence. For now, it is just a typedef - typedef vector R; - - // Let's get the sizes of the sequences. Yeah, you already know that. - // But with templates, you are simply given, say, R and I, corresponding - // to the types of the sequences. You'll have to deal with it generically. - static int const r_size = result_of::size::value; - static int const i_size = result_of::size::value; - - // Make sure that I has no more elements than R - // Be nice and catch obvious errors earlier rather than later. - // Without this assert, the mistake will still be caught by Fusion, - // but the error will point to somewhere really obscure. - BOOST_STATIC_ASSERT(i_size <= r_size); - - // Let's get the begin and end iterator types of the output sequence - // There's no actual vector yet. We just want to know the types. - typedef result_of::begin::type r_begin; - typedef result_of::end::type r_end; - - // Let's skip i_size elements from r_begin. Again, we just want to know the type. - typedef result_of::advance_c::type r_advance; - - // Now, make MPL iterators from r_advance and r_end. Ditto, just types. - typedef mpl::fusion_iterator mpl_r_advance; - typedef mpl::fusion_iterator mpl_r_end; - - // Make an mpl::iterator_range from the MPL iterators we just created - // You guessed it! --just a type. - typedef mpl::iterator_range tail; - - // Use join to join the input sequence and our mpl::iterator_range - // Our mpl::iterator_range is 'tail'. Here, we'll actually instantiate - // 'tail'. Notice that this is a flyweight object, typically just 1 byte - // in size -- it doesn't really hold any data, but is a fully conforming - // sequence nonetheless. When asked to return its elements, 'tail' returns - // each element default constructed. Breeds like a rabbit! - - // Construct R from the joined sequences: - R r(join(i, tail())); - - // Then finally, print the result: - std::cout << r << std::endl; - - return 0; -} - diff --git a/example/extension/Jamfile.v2 b/example/extension/Jamfile.v2 deleted file mode 100644 index cf062603..00000000 --- a/example/extension/Jamfile.v2 +++ /dev/null @@ -1,18 +0,0 @@ -#============================================================================== -# Copyright (c) 2003-2006 Joel de Guzman -# Copyright (c) 2006 Dan Marsden -# -# 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) -#============================================================================== - -# bring in rules for testing -import testing ; - -{ - test-suite example : - - [ run test_example.cpp : : : : ] ; -} - diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp deleted file mode 100644 index 91309672..00000000 --- a/example/extension/detail/advance_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_ADVANCE_IMPL_20060222_2150) -#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct advance_impl; - - template<> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::struct_type struct_type; - typedef typename Iterator::index index; - typedef example::example_struct_iterator< - struct_type, index::value + N::value> type; - - static type - call(Iterator const& it) - { - return type(it.struct_); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/at_impl.hpp b/example/extension/detail/at_impl.hpp deleted file mode 100644 index 058c31cc..00000000 --- a/example/extension/detail/at_impl.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_20060223_2017) -#define BOOST_FUSION_AT_IMPL_20060223_2017 - -#include -#include -#include -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct at_impl; - - template<> - struct at_impl - { - template - struct apply; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, - std::string const&, - std::string&>::type type; - - static type - call(Sequence& seq) - { - return seq.name; - }; - }; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, - int const&, - int&>::type type; - - static type - call(Sequence& seq) - { - return seq.age; - }; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/at_key_impl.hpp b/example/extension/detail/at_key_impl.hpp deleted file mode 100644 index 39d914dc..00000000 --- a/example/extension/detail/at_key_impl.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_KEY_IMPL_20060223_2017) -#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017 - -#include -#include -#include - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct at_key_impl; - - template<> - struct at_key_impl - { - template - struct apply; - - template - struct apply - { - typedef typename mpl::if_< - is_const, - std::string const&, - std::string&>::type type; - - static type - call(Sequence& seq) - { - return seq.name; - }; - }; - - template - struct apply - { - typedef typename mpl::if_< - is_const, - int const&, - int&>::type type; - - static type - call(Sequence& seq) - { - return seq.age; - }; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/begin_impl.hpp b/example/extension/detail/begin_impl.hpp deleted file mode 100644 index d0c1dafc..00000000 --- a/example/extension/detail/begin_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_20060222_2042) -#define BOOST_FUSION_BEGIN_IMPL_20060222_2042 - -#include "../example_struct_iterator.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct begin_impl; - - template<> - struct begin_impl - { - template - struct apply - { - typedef example::example_struct_iterator type; - - static type - call(Sequence& seq) - { - return type(seq); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/category_of_impl.hpp b/example/extension/detail/category_of_impl.hpp deleted file mode 100644 index 56fdd082..00000000 --- a/example/extension/detail/category_of_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037) -#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template<> - struct category_of_impl - { - template - struct apply - { - struct type : random_access_traversal_tag, associative_sequence_tag {}; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp deleted file mode 100644 index 7454c44c..00000000 --- a/example/extension/detail/deref_impl.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_DEREF_IMPL_20060222_1952) -#define BOOST_FUSION_DEREF_IMPL_20060222_1952 - -#include -#include -#include - -#include - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct deref_impl; - - template<> - struct deref_impl - { - template - struct apply; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, std::string const&, std::string&>::type type; - - static type - call(example::example_struct_iterator const& it) - { - return it.struct_.name; - } - }; - - template - struct apply > - { - typedef typename mpl::if_< - is_const, int const&, int&>::type type; - - static type - call(example::example_struct_iterator const& it) - { - return it.struct_.age; - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/distance_impl.hpp b/example/extension/detail/distance_impl.hpp deleted file mode 100644 index 3b93d1e0..00000000 --- a/example/extension/detail/distance_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_DISTANCE_IMPL_20060223_0814) -#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814 - -#include - -namespace example -{ - struct example_struct_iterator_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct distance_impl; - - template<> - struct distance_impl - { - template - struct apply - : mpl::minus - { - typedef apply self; - - static typename self::type - call(First const& first, Last const& last) - { - return typename self::type(); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/end_impl.hpp b/example/extension/detail/end_impl.hpp deleted file mode 100644 index 5ab0608b..00000000 --- a/example/extension/detail/end_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_20060222_2042) -#define BOOST_FUSION_END_IMPL_20060222_2042 - -#include "../example_struct_iterator.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct end_impl; - - template<> - struct end_impl - { - template - struct apply - { - typedef example::example_struct_iterator type; - - static type - call(Sequence& seq) - { - return type(seq); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/equal_to_impl.hpp b/example/extension/detail/equal_to_impl.hpp deleted file mode 100644 index fb261071..00000000 --- a/example/extension/detail/equal_to_impl.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941) -#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941 - -#include - -namespace example -{ - struct example_struct_iterator_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct equal_to_impl; - - template<> - struct equal_to_impl - { - template - struct apply - : mpl::equal_to< - typename It1::index, - typename It2::index> - {}; - }; - } -}} - -#endif diff --git a/example/extension/detail/has_key_impl.hpp b/example/extension/detail/has_key_impl.hpp deleted file mode 100644 index 47a39fda..00000000 --- a/example/extension/detail/has_key_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_HAS_KEY_IMPL_20060223_2156) -#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156 - -#include -#include - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct has_key_impl; - - template<> - struct has_key_impl - { - template - struct apply - : mpl::or_< - is_same, - is_same > - {}; - }; - } -}} - -#endif diff --git a/example/extension/detail/is_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp deleted file mode 100644 index 06a7d433..00000000 --- a/example/extension/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/example/extension/detail/is_view_impl.hpp b/example/extension/detail/is_view_impl.hpp deleted file mode 100644 index 02151d52..00000000 --- a/example/extension/detail/is_view_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_200604227_2150) -#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - : boost::mpl::false_ - {}; - } -}} - -#endif diff --git a/example/extension/detail/next_impl.hpp b/example/extension/detail/next_impl.hpp deleted file mode 100644 index 763a7ccc..00000000 --- a/example/extension/detail/next_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_NEXT_IMPL_20060222_1859) -#define BOOST_FUSION_NEXT_IMPL_20060222_1859 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct next_impl; - - template<> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::struct_type struct_type; - typedef typename Iterator::index index; - typedef example::example_struct_iterator type; - - static type - call(Iterator const& i) - { - return type(i.struct_); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/prior_impl.hpp b/example/extension/detail/prior_impl.hpp deleted file mode 100644 index 990fbbc7..00000000 --- a/example/extension/detail/prior_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_PRIOR_IMPL_20060222_1944) -#define BOOST_FUSION_PRIOR_IMPL_20060222_1944 - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct prior_impl; - - template<> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::struct_type struct_type; - typedef typename Iterator::index index; - typedef example::example_struct_iterator type; - - static type - call(Iterator const& i) - { - return type(i.struct_); - } - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/size_impl.hpp b/example/extension/detail/size_impl.hpp deleted file mode 100644 index a9c081c3..00000000 --- a/example/extension/detail/size_impl.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_20060223_2033) -#define BOOST_FUSION_SIZE_IMPL_20060223_2033 - -#include - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct size_impl; - - template<> - struct size_impl - { - template - struct apply - : mpl::int_<2> - {}; - }; - } -}} - -#endif diff --git a/example/extension/detail/value_at_impl.hpp b/example/extension/detail/value_at_impl.hpp deleted file mode 100644 index 38fc6ab3..00000000 --- a/example/extension/detail/value_at_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_20060223_2025) -#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct value_at_impl; - - template<> - struct value_at_impl - { - template - struct apply; - - template - struct apply > - { - typedef std::string type; - }; - - template - struct apply > - { - typedef int type; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/value_at_key_impl.hpp b/example/extension/detail/value_at_key_impl.hpp deleted file mode 100644 index bb0c68e9..00000000 --- a/example/extension/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025) -#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025 - -namespace fields -{ - struct name; - struct age; -} - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct value_at_key_impl; - - template<> - struct value_at_key_impl - { - template - struct apply; - - template - struct apply - { - typedef std::string type; - }; - - template - struct apply - { - typedef int type; - }; - }; - } -}} - -#endif diff --git a/example/extension/detail/value_of_impl.hpp b/example/extension/detail/value_of_impl.hpp deleted file mode 100644 index b4a09742..00000000 --- a/example/extension/detail/value_of_impl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_OF_IMPL_20060223_1905) -#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905 - -#include - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - namespace extension - { - template - struct value_of_impl; - - template<> - struct value_of_impl - { - template - struct apply; - - template - struct apply > - { - typedef std::string type; - }; - - template - struct apply > - { - typedef int type; - }; - }; - } -}} - -#endif diff --git a/example/extension/example_struct.hpp b/example/extension/example_struct.hpp deleted file mode 100644 index d07aeb78..00000000 --- a/example/extension/example_struct.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EXAMPLE_STRUCT) -#define BOOST_FUSION_EXAMPLE_STRUCT - -#include "./tag_of.hpp" -#include "./example_struct_iterator.hpp" -#include "./detail/begin_impl.hpp" -#include "./detail/end_impl.hpp" -#include "./detail/at_impl.hpp" -#include "./detail/value_at_impl.hpp" -#include "./detail/size_impl.hpp" -#include "./detail/category_of_impl.hpp" -#include "./detail/at_key_impl.hpp" -#include "./detail/value_at_key_impl.hpp" -#include "./detail/has_key_impl.hpp" -#include "./detail/is_sequence_impl.hpp" -#include "./detail/is_view_impl.hpp" - -#endif diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp deleted file mode 100644 index c3165d8e..00000000 --- a/example/extension/example_struct_iterator.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR) -#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR - -#include -#include -#include -#include -#include - -#include "./detail/next_impl.hpp" -#include "./detail/prior_impl.hpp" -#include "./detail/deref_impl.hpp" -#include "./detail/advance_impl.hpp" -#include "./detail/distance_impl.hpp" -#include "./detail/value_of_impl.hpp" -#include "./detail/equal_to_impl.hpp" - -namespace example -{ - struct example_struct_iterator_tag; - - template - struct example_struct_iterator; -} - -namespace boost { namespace fusion { - - struct random_access_traversal_tag; - - namespace traits - { - template - struct tag_of > - { - typedef example::example_struct_iterator_tag type; - }; - } -}} - -namespace example { - template - struct example_struct_iterator - : boost::fusion::iterator_base > - { - BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); - typedef Struct struct_type; - typedef boost::mpl::int_ index; - typedef boost::fusion::random_access_traversal_tag category; - - example_struct_iterator(Struct& str) - : struct_(str) {} - - Struct& struct_; - }; -} - -#endif diff --git a/example/extension/example_struct_type.hpp b/example/extension/example_struct_type.hpp deleted file mode 100644 index 543c9b69..00000000 --- a/example/extension/example_struct_type.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_TYPE) -#define BOOST_FUSION_EXAMPLE_STRUCT_TYPE - -#include - -namespace example -{ - struct example_struct - { - std::string name; - int age; - example_struct( - const std::string& n, - int a) - : name(n), age(a) - {} - }; -} - -#endif diff --git a/example/extension/tag_of.hpp b/example/extension/tag_of.hpp deleted file mode 100644 index 4eb3e936..00000000 --- a/example/extension/tag_of.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_20060222_2052) -#define BOOST_FUSION_TAG_OF_20060222_2052 - -#include -#include "./example_struct_type.hpp" - -namespace example -{ - struct example_sequence_tag; -} - -namespace boost { namespace fusion { - -namespace traits { - - template<> - struct tag_of - { - typedef example::example_sequence_tag type; - }; -}}} - -#endif diff --git a/example/extension/test_example.cpp b/example/extension/test_example.cpp deleted file mode 100644 index dc16a462..00000000 --- a/example/extension/test_example.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include "./example_struct.hpp" -#include "./example_struct_type.hpp" -#include - -#include -#include -#include -#include -#include -#include - -int main() -{ - example::example_struct bert("bert", 99); - using namespace boost::fusion; - - BOOST_MPL_ASSERT((traits::is_associative)); - BOOST_MPL_ASSERT((traits::is_random_access)); - BOOST_MPL_ASSERT((traits::is_sequence)); - - BOOST_TEST(deref(begin(bert)) == "bert"); - BOOST_TEST(*next(begin(bert)) == 99); - BOOST_TEST(*prior(end(bert)) == 99); - BOOST_TEST(*advance_c<1>(begin(bert)) == 99); - BOOST_TEST(*advance_c<-1>(end(bert)) == 99); - BOOST_TEST(distance(begin(bert), end(bert)) == 2); - - typedef result_of::begin::type first; - typedef result_of::next::type second; - BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - - BOOST_TEST(begin(bert) != end(bert)); - BOOST_TEST(advance_c<2>(begin(bert)) == end(const_cast(bert))); - - BOOST_TEST(at_c<0>(bert) == "bert"); - BOOST_TEST(at_c<1>(bert) == 99); - - BOOST_TEST(at_key(bert) == "bert"); - BOOST_TEST(at_key(bert) == 99); - - BOOST_TEST(has_key(bert)); - BOOST_TEST(has_key(bert)); - BOOST_TEST(!has_key(bert)); - - BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - - BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - - BOOST_TEST(size(bert) == 2); - - return boost::report_errors(); -} diff --git a/example/performance/Jamfile.v2 b/example/performance/Jamfile.v2 deleted file mode 100644 index ec8e7b29..00000000 --- a/example/performance/Jamfile.v2 +++ /dev/null @@ -1,15 +0,0 @@ -#============================================================================== -# Copyright (c) 2003-2006 Joel de Guzman -# Copyright (c) 2006 Dan Marsden -# -# 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) -#============================================================================== -project fusion-performance ; - -exe accumulate : accumulate.cpp ; - -exe inner_product : inner_product.cpp ; - -exe inner_product2 : inner_product2.cpp ; diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp deleted file mode 100644 index ee7248ef..00000000 --- a/example/performance/accumulate.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -// inline aggressively -# pragma inline_recursion(on) // turn on inline recursion -# pragma inline_depth(255) // max inline depth -#endif - -int const REPEAT_COUNT = 10; - -double const duration = 0.5; - -namespace -{ - template - double time_for_std_accumulate(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr; - std::generate(arr.begin(), arr.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::accumulate(arr.begin(), arr.end(), 0); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::accumulate(arr.begin(), arr.end(), 0); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } - - - struct poly_add - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs * rhs; - } - }; - - template - double time_for_fusion_accumulate(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr; - std::generate(arr.begin(), arr.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate(arr, 0, poly_add()); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - std::cout << iter << " iterations" << std::endl; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate(arr, 0, poly_add()); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - std::cout << "."; - std::cout.flush(); - } - std::cout << i << std::endl; - return result / iter; - } - -#if 0 - template - double time_for_std_inner_product(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } - - template - double time_for_fusion_inner_product(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } - - struct poly_combine - { - template - struct result - { - typedef Rhs type; - }; - - template - typename result::type - operator()(const Lhs& lhs, const Rhs& rhs) const - { - return rhs + boost::fusion::at_c<0>(lhs) * boost::fusion::at_c<1>(lhs); - } - }; - - template - double time_for_fusion_inner_product2(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::zip(arr1, arr2), 0, poly_combine()); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - std::cout << iter << " iterations" << std::endl; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::zip(arr1, arr2), 0, poly_combine()); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } -#endif -} - -int main() -{ - int total = 0; - int res; - std::cout << "short accumulate std test " << time_for_std_accumulate<8>(res) << std::endl; - total += res; - std::cout << "short accumulate fusion test " << time_for_fusion_accumulate<8>(res) << std::endl; - total += res; - - std::cout << "medium accumulate std test " << time_for_std_accumulate<64>(res) << std::endl; - total += res; - std::cout << "medium accumulate fusion test " << time_for_fusion_accumulate<64>(res) << std::endl; - total += res; - - std::cout << "long accumulate std test " << time_for_std_accumulate<128>(res) << std::endl; - total += res; - std::cout << "long accumulate fusion test " << time_for_fusion_accumulate<128>(res) << std::endl; - total += res; - -#if 0 - std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; - total += res; - std::cout << "short inner_product fusion test " << time_for_fusion_inner_product<8>(res) << std::endl; - total += res; - std::cout << "short inner_product fusion 2 test " << time_for_fusion_inner_product2<8>(res) << std::endl; - total += res; - - std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; - total += res; - std::cout << "medium inner_product fusion test " << time_for_fusion_inner_product<64>(res) << std::endl; - total += res; - std::cout << "medium inner_product fusion 2 test " << time_for_fusion_inner_product2<64>(res) << std::endl; - total += res; - - - std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; - total += res; - std::cout << "long inner_product fusion test " << time_for_fusion_inner_product<128>(res) << std::endl; - total += res; - std::cout << "long inner_product fusion 2 test " << time_for_fusion_inner_product2<128>(res) << std::endl; - total += res; -#endif - - return total; -} diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp deleted file mode 100644 index 7ed6283d..00000000 --- a/example/performance/inner_product.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -// inline aggressively -# pragma inline_recursion(on) // turn on inline recursion -# pragma inline_depth(255) // max inline depth -#endif - -int const REPEAT_COUNT = 10; - -double const duration = 0.5; - -namespace -{ - struct poly_add - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs * rhs; - } - }; - - template - double time_for_std_inner_product(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } - - template - double time_for_fusion_inner_product(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } -} - -int main() -{ - int total = 0; - int res; - - std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; - total += res; - std::cout << "short inner_product fusion test " << time_for_fusion_inner_product<8>(res) << std::endl; - total += res; - - std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; - total += res; - std::cout << "medium inner_product fusion test " << time_for_fusion_inner_product<64>(res) << std::endl; - total += res; - - std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; - total += res; - std::cout << "long inner_product fusion test " << time_for_fusion_inner_product<128>(res) << std::endl; - total += res; - - return total; -} diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp deleted file mode 100644 index bc104cf6..00000000 --- a/example/performance/inner_product2.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -// inline aggressively -# pragma inline_recursion(on) // turn on inline recursion -# pragma inline_depth(255) // max inline depth -#endif - -int const REPEAT_COUNT = 10; - -double const duration = 0.5; - -namespace -{ - struct poly_add - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs + rhs; - } - }; - - struct poly_mult - { - template - struct result - { - typedef Lhs type; - }; - - template - Lhs operator()(const Lhs& lhs, const Rhs& rhs) const - { - return lhs * rhs; - } - }; - - template - double time_for_std_inner_product(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } - - struct poly_combine - { - template - struct result - { - typedef Rhs type; - }; - - template - typename result::type - operator()(const Lhs& lhs, const Rhs& rhs) const - { - return rhs + boost::fusion::at_c<0>(lhs) * boost::fusion::at_c<1>(lhs); - } - }; - - template - double time_for_fusion_inner_product2(int& j) - { - boost::timer tim; - int i = 0; - long long iter = 65536; - long long counter, repeats; - double result = std::numeric_limits::max(); - double runtime = 0; - double run; - boost::array arr1; - boost::array arr2; - std::generate(arr1.begin(), arr1.end(), rand); - std::generate(arr2.begin(), arr2.end(), rand); - do - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::zip(arr1, arr2), 0, poly_combine()); - static_cast(i); - } - runtime = tim.elapsed(); - iter *= 2; - } while(runtime < duration); - iter /= 2; - - std::cout << iter << " iterations" << std::endl; - - // repeat test and report least value for consistency: - for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) - { - tim.restart(); - for(counter = 0; counter < iter; ++counter) - { - i = boost::fusion::accumulate( - boost::fusion::zip(arr1, arr2), 0, poly_combine()); - j += i; - } - run = tim.elapsed(); - result = (std::min)(run, result); - } - std::cout << i << std::endl; - return result / iter; - } -} - -int main() -{ - int total = 0; - int res; - - std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; - total += res; - std::cout << "short inner_product fusion 2 test " << time_for_fusion_inner_product2<8>(res) << std::endl; - total += res; - - std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; - total += res; - std::cout << "medium inner_product fusion 2 test " << time_for_fusion_inner_product2<64>(res) << std::endl; - total += res; - -#if 0 // Leads to ICE with MSVC 8.0 - std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; - total += res; - std::cout << "long inner_product fusion 2 test " << time_for_fusion_inner_product2<128>(res) << std::endl; - total += res; -#endif - - return total; -} diff --git a/include/boost/fusion/algorithm.hpp b/include/boost/fusion/algorithm.hpp deleted file mode 100644 index 4f822b63..00000000 --- a/include/boost/fusion/algorithm.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALGORITHM_10022005_0549) -#define FUSION_ALGORITHM_10022005_0549 - -#include -#include -#include - -#endif diff --git a/include/boost/fusion/algorithm/iteration.hpp b/include/boost/fusion/algorithm/iteration.hpp deleted file mode 100644 index 9adf406c..00000000 --- a/include/boost/fusion/algorithm/iteration.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALGORITHM_ITERATION_10022005_0549) -#define FUSION_ALGORITHM_ITERATION_10022005_0549 - -#include -#include -#include - -#endif diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp deleted file mode 100644 index 2b5cb12d..00000000 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ACCUMULATE_09172005_1032) -#define FUSION_ACCUMULATE_09172005_1032 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template - struct accumulate - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; - } - - template - inline typename result_of::accumulate::type - accumulate(Sequence& seq, State const& state, F const& f) - { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , is_same< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } - - template - inline typename result_of::accumulate::type - accumulate(Sequence const& seq, State const& state, F const& f) - { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , is_same< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp deleted file mode 100644 index ecf23115..00000000 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ /dev/null @@ -1,99 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FOLD_05052005_1211) -#define FUSION_FOLD_05052005_1211 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - // Unary arguments version - - template - struct apply_fold_result - { - template - struct apply - { - typedef typename F::template result::type type; - }; - }; - - template - struct fold_apply - : mpl::apply, typename result_of::value_of::type, State> - {}; - - template - struct static_fold; - - template - struct next_result_of_fold - { - typedef typename - static_fold< - typename result_of::next::type - , Last - , typename fold_apply::type - , F - >::type - type; - }; - - template - struct static_fold - { - typedef typename - mpl::if_< - result_of::equal_to - , mpl::identity - , next_result_of_fold - >::type - result; - - typedef typename result::type type; - }; - - // terminal case - template - inline State const& - fold(First const&, Last const&, State const& state, F const&, mpl::true_) - { - return state; - } - - // non-terminal case - template - inline typename static_fold::type - fold( - First const& first - , Last const& last - , State const& state - , F const& f - , mpl::false_) - { - return detail::fold( - fusion::next(first) - , last - , f(*first, state) - , f - , result_of::equal_to::type, Last>() - ); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp deleted file mode 100644 index 5271517e..00000000 --- a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FOR_EACH_05052005_1028) -#define FUSION_FOR_EACH_05052005_1028 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline void - for_each(First const&, Last const&, F const&, mpl::true_) - { - } - - template - inline void - for_each(First const& first, Last const& last, F const& f, mpl::false_) - { - f(*first); - detail::for_each(fusion::next(first), last, f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp b/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp deleted file mode 100755 index 2a0f9a48..00000000 --- a/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_FOR_EACH_S_05022006_1027) -#define FUSION_FOR_EACH_S_05022006_1027 - -#include -#include -#include -#include -#include - -// fwd declarations -namespace boost { namespace fusion -{ - template - void - for_each_s(Sequence& seq, F const& f); - - template - void - for_each_s(Sequence const& seq, F const& f); -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct for_each_s_bind - { - explicit for_each_s_bind(F const &f) - : f_(f) - {} - - template - void operator ()(Sequence &seq) const - { - fusion::for_each_s(seq, this->f_); - } - - template - void operator ()(Sequence const &seq) const - { - fusion::for_each_s(seq, this->f_); - } - private: - F const &f_; - }; - - template - void for_each_s(Sequence &seq, F const &f, mpl::true_) - { - fusion::for_each_s(fusion::segments(seq), for_each_s_bind(f)); - } - - template - void for_each_s(Sequence &seq, F const &f, mpl::false_) - { - fusion::for_each(seq, f); - } -}}} - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct for_each_s - { - typedef void type; - }; - } - - template - inline void - for_each_s(Sequence& seq, F const& f) - { - detail::for_each_s(seq, f, traits::is_segmented()); - } - - template - inline void - for_each_s(Sequence const& seq, F const& f) - { - detail::for_each_s(seq, f, traits::is_segmented()); - } -}} - -#endif diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp deleted file mode 100644 index 2189203b..00000000 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FOLD_05052005_1214) -#define FUSION_FOLD_05052005_1214 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template - struct fold - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; - } - - template - inline typename result_of::fold::type - fold(Sequence& seq, State const& state, F const& f) - { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , is_same< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } - - template - inline typename result_of::fold::type - fold(Sequence const& seq, State const& state, F const& f) - { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , is_same< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/iteration/for_each.hpp b/include/boost/fusion/algorithm/iteration/for_each.hpp deleted file mode 100644 index 4609bd2b..00000000 --- a/include/boost/fusion/algorithm/iteration/for_each.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FOR_EACH_05052005_1027) -#define FUSION_FOR_EACH_05052005_1027 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct for_each - { - typedef void type; - }; - } - - template - inline void - for_each(Sequence& seq, F const& f) - { - detail::for_each( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } - - template - inline void - for_each(Sequence const& seq, F const& f) - { - detail::for_each( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query.hpp b/include/boost/fusion/algorithm/query.hpp deleted file mode 100644 index 7b826f6f..00000000 --- a/include/boost/fusion/algorithm/query.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALGORITHM_QUERY_10022005_0549) -#define FUSION_ALGORITHM_QUERY_10022005_0549 - -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/algorithm/query/all.hpp b/include/boost/fusion/algorithm/query/all.hpp deleted file mode 100644 index bd974f99..00000000 --- a/include/boost/fusion/algorithm/query/all.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALL_05052005_1238) -#define FUSION_ALL_05052005_1238 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct all - { - typedef bool type; - }; - } - - template - inline bool - all(Sequence const& seq, F f) - { - return detail::all( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/any.hpp b/include/boost/fusion/algorithm/query/any.hpp deleted file mode 100644 index fed72a58..00000000 --- a/include/boost/fusion/algorithm/query/any.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_ANY_05052005_1230) -#define FUSION_ANY_05052005_1230 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct any - { - typedef bool type; - }; - } - - template - inline bool - any(Sequence const& seq, F f) - { - return detail::any( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/count.hpp b/include/boost/fusion/algorithm/query/count.hpp deleted file mode 100644 index 19ca5766..00000000 --- a/include/boost/fusion/algorithm/query/count.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_COUNT_09162005_0150) -#define FUSION_COUNT_09162005_0150 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct count - { - typedef int type; - }; - } - - template - inline int - count(Sequence const& seq, T const& x) - { - detail::count_compare f(x); - return detail::count_if( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/count_if.hpp b/include/boost/fusion/algorithm/query/count_if.hpp deleted file mode 100644 index 6c1221c4..00000000 --- a/include/boost/fusion/algorithm/query/count_if.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_COUNT_IF_09162005_0137) -#define FUSION_COUNT_IF_09162005_0137 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct count_if - { - typedef int type; - }; - } - - template - inline int - count_if(Sequence const& seq, F f) - { - return detail::count_if( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp deleted file mode 100644 index dfe2d1d3..00000000 --- a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NONE_07062005_1126) -#define FUSION_NONE_07062005_1126 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - none(First const&, Last const&, F const&, mpl::true_) - { - return true; - } - - template - inline bool - none(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return !f(x) && - detail::none( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp deleted file mode 100644 index 96101027..00000000 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALL_05052005_1237) -#define FUSION_ALL_05052005_1237 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - all(First const&, Last const&, F const&, mpl::true_) - { - return true; - } - - template - inline bool - all(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return f(x) && - detail::all( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp deleted file mode 100644 index 2cbdcdd6..00000000 --- a/include/boost/fusion/algorithm/query/detail/any.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_ANY_05052005_1229) -#define FUSION_ANY_05052005_1229 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - any(First const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return f(x) || - detail::any( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/assoc_find.hpp b/include/boost/fusion/algorithm/query/detail/assoc_find.hpp deleted file mode 100644 index 8e4e4920..00000000 --- a/include/boost/fusion/algorithm/query/detail/assoc_find.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ASSOC_FIND_09242005_1133) -#define FUSION_ASSOC_FIND_09242005_1133 - -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct assoc_find - { - typedef typename - mpl::if_< - is_const - , typename Sequence::template meta_find_impl_const::type - , typename Sequence::template meta_find_impl::type - >::type - type; - - static type - call(Sequence& s) - { - return s.find_impl(mpl::identity()); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/algorithm/query/detail/count.hpp b/include/boost/fusion/algorithm/query/detail/count.hpp deleted file mode 100644 index e9060044..00000000 --- a/include/boost/fusion/algorithm/query/detail/count.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_COUNT_09162005_0158) -#define FUSION_COUNT_09162005_0158 - -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct compare_convertible; - - // T1 is convertible to T2 or vice versa - template <> - struct compare_convertible - { - template - static bool - call(T1 const& x, T2 const& y) - { - return x == y; - } - }; - - // T1 is NOT convertible to T2 NOR vice versa - template <> - struct compare_convertible - { - template - static bool - call(T1 const&, T2 const&) - { - return false; - } - }; - - template - struct count_compare - { - typedef typename detail::call_param::type param; - count_compare(param x) - : x(x) {} - - template - bool - operator()(T2 const& y) - { - return - compare_convertible< - mpl::or_< - is_convertible - , is_convertible - >::value - >::call(x, y); - } - - param x; - }; -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/count_if.hpp b/include/boost/fusion/algorithm/query/detail/count_if.hpp deleted file mode 100644 index bd9fdf44..00000000 --- a/include/boost/fusion/algorithm/query/detail/count_if.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_COUNT_IF_09162005_0141) -#define FUSION_COUNT_IF_09162005_0141 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline int - count_if(First const&, Last const&, F const&, mpl::true_) - { - return 0; - } - - template - inline int - count_if(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - int n = - detail::count_if( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - if (f(x)) - ++n; - return n; - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/find_if.hpp b/include/boost/fusion/algorithm/query/detail/find_if.hpp deleted file mode 100644 index 1707b37d..00000000 --- a/include/boost/fusion/algorithm/query/detail/find_if.hpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FIND_IF_05052005_1107) -#define FUSION_FIND_IF_05052005_1107 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct apply_filter - { - typedef typename - mpl::apply1< - Pred - , typename result_of::value_of::type - >::type - type; - }; - - template - struct main_find_if; - - template - struct recursive_find_if - { - typedef typename - main_find_if< - typename result_of::next::type, Last, Pred - >::type - type; - }; - - template - struct main_find_if - { - typedef mpl::or_< - result_of::equal_to - , apply_filter > - filter; - - typedef typename - mpl::eval_if< - filter - , mpl::identity - , recursive_find_if - >::type - type; - }; - - template - struct static_find_if - { - typedef typename - main_find_if< - First - , Last - , typename mpl::lambda::type - >::type - type; - - template - static type - call(Iterator const& iter, mpl::true_) - { - return iter; - } - - template - static type - call(Iterator const& iter, mpl::false_) - { - return call(fusion::next(iter)); - } - - template - static type - call(Iterator const& iter) - { - typedef result_of::equal_to found; - return call(iter, found()); - } - }; - - template - struct static_seq_find_if : static_find_if - { - typedef typename static_find_if::type type; - - template - static type - call(Sequence const& seq) - { - return static_find_if::call(fusion::begin(seq)); - } - - template - static type - call(Sequence& seq) - { - return static_find_if::call(fusion::begin(seq)); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/algorithm/query/detail/none.hpp b/include/boost/fusion/algorithm/query/detail/none.hpp deleted file mode 100644 index dfe2d1d3..00000000 --- a/include/boost/fusion/algorithm/query/detail/none.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NONE_07062005_1126) -#define FUSION_NONE_07062005_1126 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - none(First const&, Last const&, F const&, mpl::true_) - { - return true; - } - - template - inline bool - none(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return !f(x) && - detail::none( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp deleted file mode 100755 index 6d2d1ea8..00000000 --- a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp +++ /dev/null @@ -1,223 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FIND_IF_S_05152006_1027) -#define FIND_IF_S_05152006_1027 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// fwd declarations -namespace boost { namespace fusion -{ - namespace detail - { - template::value> - struct static_find_if_s_recurse; - } - - namespace result_of - { - template - struct find_if_s; - } -}} - -namespace boost { namespace fusion { namespace detail -{ - - template::value> - struct is_found - : mpl::not_::type> > - {}; - - template - struct is_found - : mpl::not_ > - {}; - - template< - typename SegmentedRange - , typename Where - , typename Sequence = typename remove_reference< - typename result_of::deref< - typename SegmentedRange::iterator_type - >::type - >::type - , bool IsSegmented = traits::is_segmented::value - > - struct as_segmented_cons - { - typedef cons< - SegmentedRange - , cons > - > type; - - static type call(SegmentedRange const &range, Where const &where) - { - return fusion::make_cons( - range - , fusion::make_cons( - segmented_range(*fusion::begin(range), where) - ) - ); - } - }; - - template< - typename SegmentedRange - , typename Where - , typename Sequence - > - struct as_segmented_cons - { - typedef cons type; - - static type call(SegmentedRange const &range, Where const &where) - { - return fusion::make_cons(range, where); - } - }; - - template< - typename SegmentedRange - , typename Pred - , bool IsEmpty = is_empty::value - > - struct static_find_if_s_seg - { - typedef typename SegmentedRange::iterator_type first; - typedef typename result_of::deref::type segment_ref; - typedef typename remove_reference::type segment; - typedef static_find_if_s_recurse where; - typedef range_next next; - typedef is_found is_found; - typedef as_segmented_cons found; - typedef static_find_if_s_seg not_found; - typedef typename mpl::eval_if::type type; - - static type call(SegmentedRange const &range) - { - return call_(range, is_found()); - } - - private: - static type call_(SegmentedRange const &range, mpl::true_) - { - return found::call(range, where::call(*range.where)); - } - - static type call_(SegmentedRange const &range, mpl::false_) - { - return not_found::call(next::call(range)); - } - }; - - template< - typename SegmentedRange - , typename Pred - > - struct static_find_if_s_seg - { - typedef nil type; - - static type call(SegmentedRange const &) - { - return nil(); - } - }; - - template - struct static_find_if_s_recurse - { - typedef typename as_segmented_range::type range; - typedef static_find_if_s_seg find_if; - typedef typename find_if::type type; - - static type call(Sequence &seq) - { - return find_if::call(range(fusion::segments(seq))); - } - }; - - template - struct static_find_if_s_recurse - { - typedef typename result_of::find_if::type type; - - static type call(Sequence &seq) - { - return fusion::find_if(seq); - } - }; - - template::value> - struct static_find_if_s - : static_find_if_s_recurse - {}; - - template - struct static_find_if_s - { - typedef typename as_segmented_range::type range; - typedef static_find_if_s_recurse find_if; - typedef typename find_if::type found; - - typedef segmented_iterator::type> type; - - static type call(Sequence &seq) - { - return type(reverse_cons::call(find_if::call(seq))); - } - }; -}}} - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct find_if_s - { - typedef typename - detail::static_find_if_s< - Sequence - , Pred - >::type - type; - }; - } - - template - typename lazy_disable_if< - is_const - , result_of::find_if_s - >::type - find_if_s(Sequence& seq) - { - return detail::static_find_if_s::call(seq); - } - - template - typename result_of::find_if_s::type - find_if_s(Sequence const& seq) - { - return detail::static_find_if_s::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/algorithm/query/find.hpp b/include/boost/fusion/algorithm/query/find.hpp deleted file mode 100644 index fcc74341..00000000 --- a/include/boost/fusion/algorithm/query/find.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FIND_05052005_1107) -#define FUSION_FIND_05052005_1107 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct associative_sequence_tag; - - namespace result_of - { - template < - typename Sequence - , typename T - , bool is_associative_sequence = traits::is_associative::value > - struct find; - - template - struct find - { - typedef - detail::static_seq_find_if< - typename result_of::begin::type - , typename result_of::end::type - , is_same - > - filter; - - typedef typename filter::type type; - }; - - template - struct find - { - typedef detail::assoc_find filter; - typedef typename filter::type type; - }; - } - - template - inline typename - lazy_disable_if< - is_const - , result_of::find - >::type - find(Sequence& seq) - { - typedef typename result_of::find::filter filter; - return filter::call(seq); - } - - template - inline typename result_of::find::type - find(Sequence const& seq) - { - typedef typename result_of::find::filter filter; - return filter::call(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/find_if.hpp b/include/boost/fusion/algorithm/query/find_if.hpp deleted file mode 100644 index 05da4bfb..00000000 --- a/include/boost/fusion/algorithm/query/find_if.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FIND_IF_05052005_1108) -#define FUSION_FIND_IF_05052005_1108 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct find_if - { - typedef typename - detail::static_find_if< - typename result_of::begin::type - , typename result_of::end::type - , Pred - >::type - type; - }; - } - - template - inline typename - lazy_disable_if< - is_const - , result_of::find_if - >::type - find_if(Sequence& seq) - { - typedef - detail::static_find_if< - typename result_of::begin::type - , typename result_of::end::type - , Pred - > - filter; - - return filter::call(fusion::begin(seq)); - } - - template - inline typename result_of::find_if::type - find_if(Sequence const& seq) - { - typedef - detail::static_find_if< - typename result_of::begin::type - , typename result_of::end::type - , Pred - > - filter; - - return filter::call(fusion::begin(seq)); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/none.hpp b/include/boost/fusion/algorithm/query/none.hpp deleted file mode 100644 index 15483d36..00000000 --- a/include/boost/fusion/algorithm/query/none.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NONE_07062005_1128) -#define FUSION_NONE_07062005_1128 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct none - { - typedef bool type; - }; - } - - template - inline bool - none(Sequence const& seq, F f) - { - return detail::none( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation.hpp b/include/boost/fusion/algorithm/transformation.hpp deleted file mode 100644 index da76e995..00000000 --- a/include/boost/fusion/algorithm/transformation.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ALGORITHM_TRANSFORMATION_10022005_0551) -#define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp deleted file mode 100644 index f35232cc..00000000 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CLEAR_09172005_1127) -#define FUSION_CLEAR_09172005_1127 - -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct clear - { - typedef vector0 type; - }; - } - - template - inline typename result_of::clear::type - clear(Sequence const& seq) - { - return vector0(); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp deleted file mode 100644 index 816ca027..00000000 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REPLACE_08182005_0841) -#define FUSION_REPLACE_08182005_0841 - -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct replacer_helper; - - template <> - struct replacer_helper - { - template - static U& - call(U& x, T const&, T const&) - { - return x; - } - }; - - template <> - struct replacer_helper - { - template - static U - call(U& x, T const& old_value, T const& new_value) - { - return (x == old_value) ? new_value : x; - } - }; - - template - struct replacer - { - replacer(T const& old_value, T const& new_value) - : old_value(old_value), new_value(new_value) {} - - template - struct result - { - typedef typename - mpl::if_, U, U const&>::type - type; - }; - - template - typename result::type - operator()(U const& x) const - { - return replacer_helper::value>:: - call(x, old_value, new_value); - } - - T old_value; - T new_value; - }; -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp deleted file mode 100644 index 9bd616d8..00000000 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REPLACE_IF_08182005_0946) -#define FUSION_REPLACE_IF_08182005_0946 - -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct replacer_if_helper; - - template <> - struct replacer_if_helper - { - template - static U& - call(U& x, F&, T const&) - { - return x; - } - }; - - template <> - struct replacer_if_helper - { - template - static U - call(U& x, F& f, T const& new_value) - { - return f(x) ? new_value : x; - } - }; - - template - struct replacer_if - { - replacer_if(F f, T const& new_value) - : f(f), new_value(new_value) {} - - template - struct result - { - typedef typename - mpl::if_, U, U const&>::type - type; - }; - - template - typename result::type - operator()(U const& x) const - { - return replacer_if_helper::value>:: - call(x, f, new_value); - } - - F f; - T new_value; - }; -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp deleted file mode 100644 index 091c63b4..00000000 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ERASE_07232005_0534) -#define FUSION_ERASE_07232005_0534 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct compute_erase_last // put this in detail!!! - { - typedef typename result_of::end::type seq_last_type; - typedef typename convert_iterator::type first_type; - typedef typename - mpl::if_< - result_of::equal_to - , first_type - , typename result_of::next::type - >::type - type; - - static type - call(First const& first, mpl::false_) - { - return fusion::next(convert_iterator::call(first)); - } - - static type - call(First const& first, mpl::true_) - { - return convert_iterator::call(first); - } - - static type - call(First const& first) - { - return call(first, result_of::equal_to()); - } - }; - - template < - typename Sequence - , typename First - , typename Last = typename compute_erase_last::type> - struct erase - { - typedef typename result_of::begin::type seq_first_type; - typedef typename result_of::end::type seq_last_type; - BOOST_STATIC_ASSERT((!result_of::equal_to::value)); - - typedef typename convert_iterator::type first_type; - typedef typename convert_iterator::type last_type; - typedef iterator_range left_type; - typedef iterator_range right_type; - typedef joint_view type; - }; - } - - template - typename result_of::erase::type - erase(Sequence const& seq, First const& first) - { - typedef result_of::erase result_of; - typedef typename result_of::left_type left_type; - typedef typename result_of::right_type right_type; - typedef typename result_of::type result_type; - - left_type left( - fusion::begin(seq) - , convert_iterator::call(first)); - right_type right( - fusion::result_of::compute_erase_last::call(first) - , fusion::end(seq)); - return result_type(left, right); - } - - template - typename result_of::erase::type - erase(Sequence const& seq, First const& first, Last const& last) - { - typedef result_of::erase result_of; - typedef typename result_of::left_type left_type; - typedef typename result_of::right_type right_type; - typedef typename result_of::type result_type; - - left_type left(fusion::begin(seq), first); - right_type right(last, fusion::end(seq)); - return result_type(left, right); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/erase_key.hpp b/include/boost/fusion/algorithm/transformation/erase_key.hpp deleted file mode 100644 index ee9ec508..00000000 --- a/include/boost/fusion/algorithm/transformation/erase_key.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ERASE_KEY_10022005_1851) -#define FUSION_ERASE_KEY_10022005_1851 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct erase_key - { - typedef detail::assoc_find filter; - typedef typename erase::type type; - }; - } - - template - inline typename result_of::erase_key::type - erase_key(Sequence const& seq) - { - typedef typename result_of::erase_key::filter filter; - return erase(seq, filter::call(seq)); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/filter.hpp b/include/boost/fusion/algorithm/transformation/filter.hpp deleted file mode 100644 index 235c2e9b..00000000 --- a/include/boost/fusion/algorithm/transformation/filter.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_FILTER_02122005_1839) -#define FUSION_FILTER_02122005_1839 - -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct filter - { - typedef filter_view > type; - }; - } - - template - inline typename result_of::filter::type - filter(Sequence const& seq) - { - return filter_view >(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/filter_if.hpp b/include/boost/fusion/algorithm/transformation/filter_if.hpp deleted file mode 100644 index 1f9f9325..00000000 --- a/include/boost/fusion/algorithm/transformation/filter_if.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FILTER_IF_07172005_0818) -#define FUSION_FILTER_IF_07172005_0818 - -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct filter_if - { - typedef filter_view type; - }; - } - - template - inline typename result_of::filter_if::type - filter_if(Sequence const& seq) - { - return filter_view(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp deleted file mode 100644 index b91e459d..00000000 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_INSERT_07222005_0730) -#define FUSION_INSERT_07222005_0730 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct insert - { - typedef typename detail::as_fusion_element::type element_type; - typedef typename convert_iterator::type pos_type; - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - - typedef iterator_range left_type; - typedef iterator_range right_type; - typedef single_view single_view; - typedef joint_view left_insert_type; - typedef joint_view type; - }; - } - - template - inline typename result_of::insert< - Sequence const, Position, T>::type - insert(Sequence const& seq, Position const& pos, T const& x) - { - typedef result_of::insert< - Sequence const, Position, T> - result_of; - typedef typename result_of::left_type left_type; - typedef typename result_of::right_type right_type; - typedef typename result_of::single_view single_view; - typedef typename result_of::left_insert_type left_insert_type; - typedef typename result_of::type result; - - left_type left(fusion::begin(seq), convert_iterator::call(pos)); - right_type right(convert_iterator::call(pos), fusion::end(seq)); - single_view insert(x); - left_insert_type left_insert(left, insert); - return result(left_insert, right); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp deleted file mode 100644 index 735b8857..00000000 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_INSERT_RANGE_009172005_1147) -#define FUSION_INSERT_RANGE_009172005_1147 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct insert_range - { - typedef typename convert_iterator::type pos_type; - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - - typedef iterator_range left_type; - typedef iterator_range right_type; - typedef joint_view left_insert_type; - typedef joint_view type; - }; - } - - template - inline typename result_of::insert_range::type - insert_range(Sequence const& seq, Position const& pos, Range const& range) - { - typedef result_of::insert_range result_of; - typedef typename result_of::left_type left_type; - typedef typename result_of::right_type right_type; - typedef typename result_of::left_insert_type left_insert_type; - typedef typename result_of::type result; - - left_type left(fusion::begin(seq), convert_iterator::call(pos)); - right_type right(convert_iterator::call(pos), fusion::end(seq)); - left_insert_type left_insert(left, range); - return result(left_insert, right); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/join.hpp b/include/boost/fusion/algorithm/transformation/join.hpp deleted file mode 100644 index 4228a77f..00000000 --- a/include/boost/fusion/algorithm/transformation/join.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_JOIN_200601222109) -#define FUSION_JOIN_200601222109 - -#include - -namespace boost { namespace fusion { - - namespace result_of - { - template - struct join - { - typedef joint_view type; - }; - } - - template - inline typename result_of::join::type - join(LhSequence const& lhs, RhSequence const& rhs) - { - return typename result_of::join::type( - lhs, rhs); - } -}} - -#endif diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp deleted file mode 100644 index 688c36cd..00000000 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_POP_BACK_09172005_1038) -#define FUSION_POP_BACK_09172005_1038 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct pop_back - { - typedef - iterator_range< - typename begin::type - , typename prior< - typename end::type - >::type - > - type; - }; - } - - template - inline typename result_of::pop_back::type - pop_back(Sequence const& seq) - { - typedef typename result_of::pop_back::type result; - return result(fusion::begin(seq), fusion::prior(fusion::end(seq))); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/pop_front.hpp b/include/boost/fusion/algorithm/transformation/pop_front.hpp deleted file mode 100644 index e9a16d77..00000000 --- a/include/boost/fusion/algorithm/transformation/pop_front.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_POP_FRONT_09172005_1115) -#define FUSION_POP_FRONT_09172005_1115 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct pop_front - { - typedef - iterator_range< - typename next< - typename begin::type - >::type - , typename end::type - > - type; - }; - } - - template - inline typename result_of::pop_front::type - pop_front(Sequence const& seq) - { - typedef typename result_of::pop_front::type result; - return result(fusion::next(fusion::begin(seq)), fusion::end(seq)); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp deleted file mode 100644 index 9312b52a..00000000 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PUSH_BACK_07162005_0235) -#define FUSION_PUSH_BACK_07162005_0235 - -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct push_back - { - typedef single_view::type> single_view; - typedef joint_view type; - }; - } - - template - inline typename result_of::push_back::type - push_back(Sequence const& seq, T const& x) - { - typedef typename result_of::push_back push_back; - typedef typename push_back::single_view single_view; - typedef typename push_back::type result; - single_view x_(x); - return result(seq, x_); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp deleted file mode 100644 index 1a0a343c..00000000 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PUSH_FRONT_07162005_0749) -#define FUSION_PUSH_FRONT_07162005_0749 - -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct push_front - { - typedef single_view::type> single_view; - typedef joint_view type; - }; - } - - template - inline typename result_of::push_front::type - push_front(Sequence const& seq, T const& x) - { - typedef typename result_of::push_front push_front; - typedef typename push_front::single_view single_view; - typedef typename push_front::type result; - single_view x_(x); - return result(x_, seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/remove.hpp b/include/boost/fusion/algorithm/transformation/remove.hpp deleted file mode 100644 index fce97b70..00000000 --- a/include/boost/fusion/algorithm/transformation/remove.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REMOVE_07162005_0818) -#define FUSION_REMOVE_07162005_0818 - -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct remove - { - typedef filter_view > > type; - }; - } - - template - inline typename result_of::remove::type - remove(Sequence const& seq) - { - typedef typename result_of::remove::type result_type; - return result_type(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/remove_if.hpp b/include/boost/fusion/algorithm/transformation/remove_if.hpp deleted file mode 100644 index 9660acd6..00000000 --- a/include/boost/fusion/algorithm/transformation/remove_if.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REMOVE_IF_07162005_0818) -#define FUSION_REMOVE_IF_07162005_0818 - -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct remove_if - { - typedef filter_view > type; - }; - } - - template - inline typename result_of::remove_if::type - remove_if(Sequence const& seq) - { - typedef typename result_of::remove_if::type result_type; - return result_type(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp deleted file mode 100644 index 59a851e6..00000000 --- a/include/boost/fusion/algorithm/transformation/replace.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REPLACE_08182005_0830) -#define FUSION_REPLACE_08182005_0830 - -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct replace - { - typedef transform_view > type; - }; - } - - template - inline typename result_of::replace::type - replace(Sequence const& seq, T const& old_value, T const& new_value) - { - typedef typename result_of::replace::type result; - detail::replacer f(old_value, new_value); - return result(seq, f); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp deleted file mode 100644 index 090f4dbe..00000000 --- a/include/boost/fusion/algorithm/transformation/replace_if.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REPLACE_IF_08182005_0939) -#define FUSION_REPLACE_IF_08182005_0939 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct replace_if - { - typedef transform_view > type; - }; - } - - template - inline typename result_of::replace_if::type - replace_if(Sequence const& seq, F pred, T const& new_value) - { - typedef typename result_of::replace_if::type result; - detail::replacer_if f(pred, new_value); - return result(seq, f); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp deleted file mode 100644 index 75ecfe6a..00000000 --- a/include/boost/fusion/algorithm/transformation/reverse.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REVERSE_07212005_1230) -#define FUSION_REVERSE_07212005_1230 - -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct reverse - { - typedef reverse_view type; - }; - } - - template - inline reverse_view - reverse(Sequence const& view) - { - return reverse_view(view); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp deleted file mode 100644 index c1d56e6b..00000000 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TRANSFORM_07052005_1057) -#define FUSION_TRANSFORM_07052005_1057 - -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template - struct transform - { - typedef transform_view type; - }; - - template - struct transform - { - typedef transform_view type; - }; - } - - template - inline typename result_of::transform::type - transform(Sequence const& seq, F f) - { - return transform_view(seq, f); - } - - template - inline typename result_of::transform::type - transform(Sequence1 const& seq1, Sequence2 const& seq2, F f) - { - return transform_view(seq1, seq2, f); - } -}} - -#endif - diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp deleted file mode 100644 index a20a6cc3..00000000 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_ZIP_HPP_20060125_2058) -#define FUSION_ZIP_HPP_20060125_2058 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(FUSION_MAX_ZIP_SEQUENCES) -#define FUSION_MAX_ZIP_SEQUENCES 10 -#endif - -namespace boost { namespace fusion { - - struct void_; - - namespace result_of - { - template - struct zip; - } - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES) -#include BOOST_PP_ITERATE() - -}} - -#endif - -#else - -#define ZIP_ITERATION BOOST_PP_ITERATION() - - namespace result_of - { - template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > - struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > - { - typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences; - typedef typename mpl::transform >::type ref_params; - typedef zip_view::type> type; - }; - } - -#define FUSION_REF_PARAM(z, n, data) const T ## n& - - template - inline typename result_of::zip::type - zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t)) - { - fusion::vector seqs( - BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, t)); - return typename result_of::zip::type( - seqs); - } - -#undef FUSION_REF_PARAM -#undef ZIP_ITERATION - -#endif diff --git a/include/boost/fusion/iterator.hpp b/include/boost/fusion/iterator.hpp deleted file mode 100644 index 074d9542..00000000 --- a/include/boost/fusion/iterator.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_10022005_0559) -#define FUSION_ITERATOR_10022005_0559 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp deleted file mode 100644 index 918a37fa..00000000 --- a/include/boost/fusion/iterator/advance.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_09172005_1146) -#define FUSION_ADVANCE_09172005_1146 - -#include -#include - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct advance_impl - { - // default implementation - template - struct apply : - mpl::if_c< - (N::value > 0) - , advance_detail::forward - , advance_detail::backward - >::type - { - BOOST_MPL_ASSERT_NOT((traits::is_random_access)); - }; - }; - - template <> - struct advance_impl - { - template - struct apply : Iterator::template advance {}; - }; - - template <> - struct advance_impl; - - template <> - struct advance_impl; - - template <> - struct advance_impl; - } - - namespace result_of - { - template - struct advance_c - : extension::advance_impl::type>::template apply > - {}; - - template - struct advance - : extension::advance_impl::type>::template apply - {}; - } - - template - inline typename result_of::advance_c::type - advance_c(Iterator const& i) - { - return result_of::advance_c::call(i); - } - - template - inline typename result_of::advance::type - advance(Iterator const& i) - { - return result_of::advance::call(i); - } - -}} // namespace boost::fusion - -#endif diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp deleted file mode 100644 index dae0a04e..00000000 --- a/include/boost/fusion/iterator/deref.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_05042005_1019) -#define FUSION_DEREF_05042005_1019 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct deref_impl - { - template - struct apply {}; - }; - - template <> - struct deref_impl - { - template - struct apply : Iterator::template deref {}; - }; - - template <> - struct deref_impl; - - template <> - struct deref_impl; - - template <> - struct deref_impl; - } - - namespace result_of - { - template - struct deref - : extension::deref_impl::type>:: - template apply - {}; - } - - template - typename result_of::deref::type - deref(Iterator const& i) - { - typedef result_of::deref deref_meta; - return deref_meta::call(i); - } - - template - typename result_of::deref::type - operator*(iterator_base const& i) - { - return fusion::deref(i.cast()); - } -}} - -#endif diff --git a/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp b/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp deleted file mode 100644 index 1bfe5d63..00000000 --- a/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ADAPT_DEREF_TRAITS_05062005_0900) -#define FUSION_ADAPT_DEREF_TRAITS_05062005_0900 - -#include - -namespace boost { namespace fusion { namespace detail -{ - struct adapt_deref_traits - { - template - struct apply - { - typedef typename - result_of::deref::type - type; - - static type - call(Iterator const& i) - { - return *i.first; - } - }; - }; -}}} - -#endif - - diff --git a/include/boost/fusion/iterator/detail/adapt_value_traits.hpp b/include/boost/fusion/iterator/detail/adapt_value_traits.hpp deleted file mode 100644 index 60bf9cd3..00000000 --- a/include/boost/fusion/iterator/detail/adapt_value_traits.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ADAPT_VALUE_TRAITS_05062005_0859) -#define FUSION_ADAPT_VALUE_TRAITS_05062005_0859 - -#include - -namespace boost { namespace fusion { namespace detail -{ - struct adapt_value_traits - { - template - struct apply - { - typedef typename - result_of::value_of::type - type; - }; - }; -}}} - -#endif - - diff --git a/include/boost/fusion/iterator/detail/advance.hpp b/include/boost/fusion/iterator/detail/advance.hpp deleted file mode 100644 index 37792371..00000000 --- a/include/boost/fusion/iterator/detail/advance.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_09172005_1149) -#define FUSION_ADVANCE_09172005_1149 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace advance_detail -{ - // Default advance implementation, perform next(i) - // or prior(i) N times. - - template - struct forward; - - template - struct next_forward - { - typedef typename - forward< - typename result_of::next::type - , N-1 - >::type - type; - }; - - template - struct forward - { - typedef typename - mpl::eval_if_c< - (N == 0) - , mpl::identity - , next_forward - >::type - type; - - static type const& - call(type const& i) - { - return i; - } - - template - static type - call(I const& i) - { - return call(fusion::next(i)); - } - }; - - template - struct backward; - - template - struct next_backward - { - typedef typename - backward< - typename result_of::prior::type - , N+1 - >::type - type; - }; - - template - struct backward - { - typedef typename - mpl::eval_if_c< - (N == 0) - , mpl::identity - , next_backward - >::type - type; - - static type const& - call(type const& i) - { - return i; - } - - template - static type - call(I const& i) - { - return call(fusion::prior(i)); - } - }; - -}}} - -#endif diff --git a/include/boost/fusion/iterator/detail/distance.hpp b/include/boost/fusion/iterator/detail/distance.hpp deleted file mode 100644 index 2ee467d6..00000000 --- a/include/boost/fusion/iterator/detail/distance.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_09172005_0730) -#define FUSION_DISTANCE_09172005_0730 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace distance_detail -{ - // Default distance implementation, linear - // search for the Last iterator. - - template - struct linear_distance; - - template - struct next_distance - { - typedef typename - mpl::next< - typename linear_distance< - typename result_of::next::type - , Last - >::type - >::type - type; - }; - - template - struct linear_distance - : mpl::eval_if< - result_of::equal_to - , mpl::identity > - , next_distance - >::type - { - typedef typename - mpl::eval_if< - result_of::equal_to - , mpl::identity > - , next_distance - >::type - type; - - static type - call(First const&, Last const&) - { - return type(); - } - }; - -}}} - -#endif diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp deleted file mode 100644 index bdafa9f1..00000000 --- a/include/boost/fusion/iterator/distance.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_09172005_0721) -#define FUSION_DISTANCE_09172005_0721 - -#include -#include - -#include -#include -#include - -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct distance_impl - { - // default implementation - template - struct apply : distance_detail::linear_distance - { - BOOST_MPL_ASSERT_NOT((traits::is_random_access)); - BOOST_MPL_ASSERT_NOT((traits::is_random_access)); - }; - }; - - template <> - struct distance_impl - { - template - struct apply : First::template distance {}; - }; - - template <> - struct distance_impl; - - template <> - struct distance_impl; - - template <> - struct distance_impl; - } - - namespace result_of - { - template - struct distance - : extension::distance_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::distance::type - distance(First const& a, Last const& b) - { - return result_of::distance::call(a,b); - } -}} - -#endif diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp deleted file mode 100644 index be1e7ed7..00000000 --- a/include/boost/fusion/iterator/equal_to.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_05052005_1208) -#define FUSION_EQUAL_TO_05052005_1208 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct equal_to_impl - { - // default implementation - template - struct apply - : is_same::type, typename add_const::type> - {}; - }; - - template <> - struct equal_to_impl - { - template - struct apply : I1::template equal_to {}; - }; - - template <> - struct equal_to_impl; - - template <> - struct equal_to_impl; - - template <> - struct equal_to_impl; - } - - namespace result_of - { - template - struct equal_to - : extension::equal_to_impl::type>:: - template apply - {}; - } - - namespace iterator_operators - { - template - inline typename - enable_if< - mpl::and_, is_fusion_iterator > - , bool - >::type - operator==(Iter1 const&, Iter2 const&) - { - return result_of::equal_to::value; - } - - template - inline typename - enable_if< - mpl::and_, is_fusion_iterator > - , bool - >::type - operator!=(Iter1 const&, Iter2 const&) - { - return !result_of::equal_to::value; - } - } - - using iterator_operators::operator==; - using iterator_operators::operator!=; -}} - -#endif - diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp deleted file mode 100644 index a7250427..00000000 --- a/include/boost/fusion/iterator/iterator_facade.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_FACADE_09252006_1011) -#define FUSION_ITERATOR_FACADE_09252006_1011 - -#include -#include - -namespace boost { namespace fusion -{ - struct iterator_facade_tag; - - template - struct iterator_facade : iterator_base - { - typedef iterator_facade_tag fusion_tag; - typedef Derived derived_type; - typedef Category category; - - template - struct equal_to // default implementation - : is_same< - typename I1::derived_type - , typename I2::derived_type - > - {}; - }; -}} - -#endif diff --git a/include/boost/fusion/iterator/mpl.hpp b/include/boost/fusion/iterator/mpl.hpp deleted file mode 100644 index 670a2879..00000000 --- a/include/boost/fusion/iterator/mpl.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_MPL_10022005_0557) -#define FUSION_ITERATOR_MPL_10022005_0557 - -#include -#include - -#endif diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp deleted file mode 100644 index fac72e9c..00000000 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CONVERT_ITERATOR_05062005_1218) -#define FUSION_CONVERT_ITERATOR_05062005_1218 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - // Test T. If it is a fusion iterator, return a reference to it. - // else, assume it is an mpl iterator. - - template - struct convert_iterator - { - typedef typename - mpl::if_< - is_fusion_iterator - , T - , mpl_iterator - >::type - type; - - static T const& - call(T const& x, mpl::true_) - { - return x; - } - - static mpl_iterator - call(T const& x, mpl::false_) - { - return mpl_iterator(); - } - - static typename - mpl::if_< - is_fusion_iterator - , T const& - , mpl_iterator - >::type - call(T const& x) - { - return call(x, is_fusion_iterator()); - } - }; -}} - -#endif diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp deleted file mode 100644 index 253d35bc..00000000 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FUSION_ITERATOR_10012005_1551) -#define FUSION_FUSION_ITERATOR_10012005_1551 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct fusion_iterator - { - typedef typename fusion::result_of::value_of::type type; - typedef typename fusion::traits::category_of::type category; - typedef Iterator iterator; - }; - - template - struct next > - { - typedef fusion_iterator::type> type; - }; - - template - struct prior > - { - typedef fusion_iterator::type> type; - }; - - template - struct advance, N> - { - typedef fusion_iterator::type> type; - }; - - template - struct distance, fusion_iterator > - : fusion::result_of::distance - {}; - -}} - -#endif - - diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp deleted file mode 100644 index fa69ae66..00000000 --- a/include/boost/fusion/iterator/next.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_05042005_1101) -#define FUSION_NEXT_05042005_1101 - -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct next_impl - { - template - struct apply {}; - }; - - template <> - struct next_impl - { - template - struct apply : Iterator::template next {}; - }; - - template <> - struct next_impl; - - template <> - struct next_impl; - - template <> - struct next_impl; - } - - namespace result_of - { - template - struct next - : extension::next_impl::type>:: - template apply - {}; - } - - template - typename result_of::next::type - next(Iterator const& i) - { - return result_of::next::call(i); - } -}} - -#endif diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp deleted file mode 100644 index b9528150..00000000 --- a/include/boost/fusion/iterator/prior.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_05042005_1144) -#define FUSION_PRIOR_05042005_1144 - -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct prior_impl - { - template - struct apply {}; - }; - - template <> - struct prior_impl - { - template - struct apply : Iterator::template prior {}; - }; - - template <> - struct prior_impl; - - template <> - struct prior_impl; - - template <> - struct prior_impl; - } - - namespace result_of - { - template - struct prior - : extension::prior_impl::type>:: - template apply - {}; - } - - template - typename result_of::prior::type - prior(Iterator const& i) - { - return result_of::prior::call(i); - } -}} - -#endif diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp deleted file mode 100644 index 17ab07c8..00000000 --- a/include/boost/fusion/iterator/value_of.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_05052005_1126) -#define FUSION_VALUE_OF_05052005_1126 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag - struct mpl_iterator_tag; // mpl sequence iterator tag - struct std_pair_iterator_tag; // std::pair iterator tag - - namespace extension - { - template - struct value_of_impl - { - template - struct apply {}; - }; - - template <> - struct value_of_impl - { - template - struct apply : Iterator::template value_of {}; - }; - - template <> - struct value_of_impl; - - template <> - struct value_of_impl; - - template <> - struct value_of_impl; - } - - namespace result_of - { - template - struct value_of - : extension::value_of_impl::type>:: - template apply - {}; - } -}} - -#endif diff --git a/include/boost/fusion/mpl.hpp b/include/boost/fusion/mpl.hpp deleted file mode 100644 index 3cf71d2a..00000000 --- a/include/boost/fusion/mpl.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MPL_09172006_2049) -#define FUSION_MPL_09172006_2049 - -// The fusion <--> MPL link headers -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp deleted file mode 100644 index 86d7bdd3..00000000 --- a/include/boost/fusion/sequence.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_10022005_0559) -#define FUSION_ITERATOR_10022005_0559 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp deleted file mode 100644 index b9f6ca3c..00000000 --- a/include/boost/fusion/sequence/adapted.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_ADAPTED_30122005_1420) -#define BOOST_FUSION_ADAPTED_30122005_1420 - -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/array.hpp b/include/boost/fusion/sequence/adapted/array.hpp deleted file mode 100644 index 5b535ce5..00000000 --- a/include/boost/fusion/sequence/adapted/array.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_ARRAY_27122005_1035) -#define BOOST_FUSION_ARRAY_27122005_1035 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp deleted file mode 100644 index a0eef60f..00000000 --- a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250) -#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct array_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(Pos, >=, 0); - BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size); - - typedef mpl::int_ index; - typedef Array array_type; - - array_iterator(Array& a) - : array(a) {} - - Array& array; - - template - struct value_of - { - typedef typename Iterator::array_type array_type; - typedef typename array_type::value_type type; - }; - - template - struct deref - { - typedef typename Iterator::array_type array_type; - typedef typename - mpl::if_< - is_const - , typename array_type::const_reference - , typename array_type::reference - >::type - type; - - static type - call(Iterator const & it) - { - return it.array[Iterator::index::value]; - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::array_type array_type; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - - private: - - array_iterator& operator=(array_iterator const&); - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp deleted file mode 100644 index a51e25f9..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_27122005_1241) -#define BOOST_FUSION_AT_IMPL_27122005_1241 - -#include - -#include - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct at_impl; - - template<> - struct at_impl - { - template - struct apply - { - typedef typename mpl::if_< - is_const, - typename Sequence::const_reference, - typename Sequence::reference>::type type; - - static type - call(Sequence& seq) - { - return seq[N::value]; - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp deleted file mode 100644 index 52f4b784..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) -#define BOOST_FUSION_BEGIN_IMPL_27122005_1117 - -#include - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef array_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp deleted file mode 100644 index f5069a9e..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044) -#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 - -#include - -namespace boost { namespace fusion { - - struct array_tag; - struct random_access_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef random_access_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp deleted file mode 100644 index 233a64ce..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_27122005_1120) -#define BOOST_FUSION_END_IMPL_27122005_1120 - -#include - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef array_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp deleted file mode 100644 index 5a53f775..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648 - -#include - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp deleted file mode 100644 index fe2c5523..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221) -#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221 - -#include - -namespace boost { namespace fusion -{ - struct array_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp deleted file mode 100644 index 69064da7..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_27122005_1251) -#define BOOST_FUSION_SIZE_IMPL_27122005_1251 - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct size_impl; - - template<> - struct size_impl - { - template - struct apply : mpl::int_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp deleted file mode 100644 index b70a01c1..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_27122005_1256) -#define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256 - -namespace boost { namespace fusion { - - struct array_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - typedef typename Sequence::value_type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/tag_of.hpp b/include/boost/fusion/sequence/adapted/array/tag_of.hpp deleted file mode 100644 index 6e4b1661..00000000 --- a/include/boost/fusion/sequence/adapted/array/tag_of.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) -#define FUSION_SEQUENCE_TAG_OF_27122005_1030 - -#include - -#include - -namespace boost -{ - template - class array; -} - -namespace boost { namespace fusion -{ - struct array_tag; - - namespace traits - { - template - struct tag_of > - { - typedef array_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple.hpp b/include/boost/fusion/sequence/adapted/boost_tuple.hpp deleted file mode 100644 index d6e5b1b2..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732) -#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp deleted file mode 100644 index d8cc5fb7..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851) -#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct forward_traversal_tag; - - template - struct boost_tuple_iterator - : iterator_facade, forward_traversal_tag> - { - typedef Cons cons_type; - - explicit boost_tuple_iterator(Cons& cons) - : cons(cons) {} - Cons& cons; - - template - struct value_of : mpl::identity {}; - - template - struct deref - { - typedef typename value_of::type element; - - typedef typename - mpl::if_< - is_const - , typename tuples::access_traits::const_type - , typename tuples::access_traits::non_const_type - >::type - type; - - static type - call(Iterator const& iter) - { - return iter.cons.get_head(); - } - }; - - template - struct next - { - typedef typename Iterator::cons_type cons_type; - typedef typename cons_type::tail_type tail_type; - - typedef boost_tuple_iterator< - typename mpl::eval_if< - is_const - , add_const - , mpl::identity - >::type> - type; - - static type - call(Iterator const& iter) - { - return type(iter.cons.get_tail()); - } - }; - }; - - template <> - struct boost_tuple_iterator - : iterator_facade, forward_traversal_tag> - { - template - explicit boost_tuple_iterator(Cons const&) {} - }; - - template <> - struct boost_tuple_iterator - : iterator_facade, forward_traversal_tag> - { - template - explicit boost_tuple_iterator(Cons const&) {} - }; - - template <> - struct boost_tuple_iterator > - : iterator_facade >, forward_traversal_tag> - { - template - explicit boost_tuple_iterator(Cons const&) {} - }; - - template <> - struct boost_tuple_iterator const> - : iterator_facade const>, forward_traversal_tag> - { - template - explicit boost_tuple_iterator(Cons const&) {} - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp deleted file mode 100644 index 7ed9c945..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_09262006_1920) -#define BOOST_FUSION_AT_IMPL_09262006_1920 - -#include -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - typedef typename - tuples::element::type - element; - - typedef typename - mpl::if_< - is_const - , typename tuples::access_traits::const_type - , typename tuples::access_traits::non_const_type - >::type - type; - - static type - call(Sequence& seq) - { - return tuples::get(seq); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp deleted file mode 100644 index 699eabac..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) -#define BOOST_FUSION_BEGIN_IMPL_09272006_0719 - -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef boost_tuple_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp deleted file mode 100644 index 677e1825..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726) -#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726 - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - struct forward_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef forward_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp deleted file mode 100644 index 95e81e80..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_09272006_0721) -#define BOOST_FUSION_END_IMPL_09272006_0721 - -#include -#include -#include - -namespace boost { namespace tuples -{ - struct null_type; -}} - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef - boost_tuple_iterator< - typename mpl::if_< - is_const - , tuples::null_type const - , tuples::null_type - >::type - > - type; - - static type - call(Sequence& seq) - { - return type(seq); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp deleted file mode 100644 index 69266b11..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726 - -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp deleted file mode 100644 index 2e394f84..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725) -#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725 - -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp deleted file mode 100644 index 0723d6f4..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724) -#define BOOST_FUSION_SIZE_IMPL_09272006_0724 - -#include -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : mpl::int_::value> {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp deleted file mode 100644 index 7ee6bd69..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926) -#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926 - -#include - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply : tuples::element {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp deleted file mode 100644 index 37e16807..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_09262006_1900) -#define BOOST_FUSION_TAG_OF_09262006_1900 - -#include - -namespace boost { namespace tuples -{ - struct null_type; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - class tuple; - - template - struct cons; -}} - -namespace boost { namespace fusion -{ - struct boost_tuple_tag; - - namespace traits - { - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - struct tag_of > - { - typedef boost_tuple_tag type; - }; - - template - struct tag_of > - { - typedef boost_tuple_tag type; - }; - - template <> - struct tag_of - { - typedef boost_tuple_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp deleted file mode 100644 index 151fe717..00000000 --- a/include/boost/fusion/sequence/adapted/mpl.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_MPL_31122005_1152) -#define BOOST_FUSION_MPL_31122005_1152 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp deleted file mode 100644 index cf3a7c8c..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_31122005_1642) -#define BOOST_FUSION_AT_IMPL_31122005_1642 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - typedef typename mpl::at::type type; - - static type - call(Sequence) - { - return type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp deleted file mode 100644 index 5afea50b..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) -#define BOOST_FUSION_BEGIN_IMPL_31122005_1209 - -#include -#include -#include - -namespace boost { namespace fusion { - - struct mpl_sequence_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename mpl::begin< - typename remove_const::type - >::type iterator; - typedef mpl_iterator type; - - static type - call(Sequence) - { - return type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp deleted file mode 100644 index c196a71d..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) -#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - namespace detail - { - template - struct mpl_sequence_category_of - { - // assumes T is an mpl sequence - // there should be no way this will ever be - // called where T is an mpl iterator - - BOOST_STATIC_ASSERT(mpl::is_sequence::value); - typedef typename - mpl_iterator_category< - typename mpl::begin::type::category - >::type - type; - }; - } - - struct mpl_sequence_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - : detail::mpl_sequence_category_of - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp deleted file mode 100644 index 9b8e1098..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554) -#define BOOST_FUSION_EMPTY_IMPL_31122005_1554 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template <> - struct empty_impl - { - template - struct apply : mpl::empty {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp deleted file mode 100644 index ee286dc2..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_31122005_1237) -#define BOOST_FUSION_END_IMPL_31122005_1237 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename mpl::end< - typename remove_const::type - >::type iterator; - typedef mpl_iterator type; - - static type - call(Sequence) - { - return type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp deleted file mode 100644 index 5a7c2955..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647) -#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct has_key_impl; - - template <> - struct has_key_impl - { - template - struct apply : mpl::has_key {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp deleted file mode 100644 index 6e2ce7da..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp deleted file mode 100644 index 14bc9dd0..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048) -#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::true_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp deleted file mode 100644 index 63213e07..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508) -#define BOOST_FUSION_SIZE_IMPL_31122005_1508 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : mpl::size {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp deleted file mode 100644 index d43982fd..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621) -#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 - -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply : mpl::at {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp deleted file mode 100644 index 0c5587b9..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MPL_ITERATOR_05052005_0731) -#define FUSION_MPL_ITERATOR_05052005_0731 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - struct mpl_iterator - : iterator_facade< - mpl_iterator - , typename detail::mpl_iterator_category::type - > - { - typedef typename remove_const::type iterator_type; - - template - struct value_of : mpl::deref {}; - - template - struct deref - { - typedef typename mpl::deref< - typename Iterator::iterator_type>::type - type; - - static type - call(Iterator) - { - return type(); - } - }; - - template - struct next - { - typedef mpl_iterator< - typename mpl::next::type> - type; - - static type - call(Iterator) - { - return type(); - } - }; - - template - struct prior - { - typedef mpl_iterator< - typename mpl::prior::type> - type; - - static type - call(Iterator) - { - return type(); - } - }; - - template - struct advance - { - typedef mpl_iterator< - typename mpl::advance::type> - type; - - static type - call(Iterator const& i) - { - return type(); - } - }; - - template - struct distance : - mpl::distance< - typename I1::iterator_type - , typename I2::iterator_type> - { - typedef typename - mpl::distance< - typename I1::iterator_type - , typename I2::iterator_type - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp deleted file mode 100644 index 6dcbea15..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_31122005_1153) -#define BOOST_FUSION_TAG_OF_31122005_1153 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace traits - { - template - struct tag_of >::type> - { - typedef mpl_sequence_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair.hpp b/include/boost/fusion/sequence/adapted/std_pair.hpp deleted file mode 100644 index 4b5edb52..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_STD_PAIR_24122005_1744) -#define BOOST_FUSION_STD_PAIR_24122005_1744 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp deleted file mode 100644 index 799bd90d..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) -#define FUSION_STD_PAIR_ITERATOR_09262005_0934 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, 2); - - typedef mpl::int_ index; - typedef Pair_ pair_type; - - std_pair_iterator(Pair_& pair) - : pair(pair) {} - Pair_& pair; - - template - struct value_of; - - template - struct value_of > - : mpl::identity {}; - - template - struct value_of > - : mpl::identity {}; - - template - struct deref; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::first_type const& - , typename Pair::first_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.first; - } - }; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::second_type const& - , typename Pair::second_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.second; - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::pair_type pair_type; - typedef std_pair_iterator type; - - static type - call(Iterator const& iter) - { - return type(iter.pair); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp deleted file mode 100644 index 98b5fa8c..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_24122005_1722) -#define BOOST_FUSION_TAG_OF_24122005_1722 - -#include - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace traits - { - template - struct tag_of > - { - typedef std_pair_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp deleted file mode 100644 index b257089d..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) -#define BOOST_FUSION_AT_IMPL_24122005_1807 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); - typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - > - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - template - static RT get(Sequence& p, mpl::int_<0>) - { - return p.first; - } - - template - static RT get(Sequence& p, mpl::int_<1>) - { - return p.second; - } - - static type - call(Sequence& p) - { - return get(p, N()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp deleted file mode 100644 index 493f3f45..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) -#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef std_pair_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp deleted file mode 100644 index d1c353d3..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) -#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - struct random_access_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef random_access_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp deleted file mode 100644 index 5e311a28..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) -#define BOOST_FUSION_END_IMPL_24122005_1755 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef std_pair_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp deleted file mode 100644 index d36180f8..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp deleted file mode 100644 index f03fb7eb..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) -#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp deleted file mode 100644 index 618408be..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) -#define BOOST_FUSION_SIZE_IMPL_24122005_1759 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : mpl::int_<2> {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp deleted file mode 100644 index 5944ca09..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) -#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 - -#include -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); - typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - >::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp deleted file mode 100644 index b257089d..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) -#define BOOST_FUSION_AT_IMPL_24122005_1807 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); - typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - > - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - template - static RT get(Sequence& p, mpl::int_<0>) - { - return p.first; - } - - template - static RT get(Sequence& p, mpl::int_<1>) - { - return p.second; - } - - static type - call(Sequence& p) - { - return get(p, N()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp deleted file mode 100644 index 493f3f45..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) -#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef std_pair_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp deleted file mode 100644 index d1c353d3..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) -#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - struct random_access_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef random_access_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp deleted file mode 100644 index 5e311a28..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) -#define BOOST_FUSION_END_IMPL_24122005_1755 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef std_pair_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp deleted file mode 100644 index d36180f8..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp deleted file mode 100644 index f03fb7eb..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) -#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp deleted file mode 100644 index 618408be..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) -#define BOOST_FUSION_SIZE_IMPL_24122005_1759 - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : mpl::int_<2> {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp deleted file mode 100644 index 5944ca09..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) -#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 - -#include -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); - typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - >::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp deleted file mode 100644 index 799bd90d..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) -#define FUSION_STD_PAIR_ITERATOR_09262005_0934 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, 2); - - typedef mpl::int_ index; - typedef Pair_ pair_type; - - std_pair_iterator(Pair_& pair) - : pair(pair) {} - Pair_& pair; - - template - struct value_of; - - template - struct value_of > - : mpl::identity {}; - - template - struct value_of > - : mpl::identity {}; - - template - struct deref; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::first_type const& - , typename Pair::first_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.first; - } - }; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::second_type const& - , typename Pair::second_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.second; - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::pair_type pair_type; - typedef std_pair_iterator type; - - static type - call(Iterator const& iter) - { - return type(iter.pair); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp deleted file mode 100644 index 98b5fa8c..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_24122005_1722) -#define BOOST_FUSION_TAG_OF_24122005_1722 - -#include - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace traits - { - template - struct tag_of > - { - typedef std_pair_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison.hpp b/include/boost/fusion/sequence/comparison.hpp deleted file mode 100644 index e4a6b5d7..00000000 --- a/include/boost/fusion/sequence/comparison.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_COMPARISON_10022005_0615) -#define FUSION_SEQUENCE_COMPARISON_10022005_0615 - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp deleted file mode 100644 index 29797ef3..00000000 --- a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958) -#define FUSION_ENABLE_COMPARISON_09232005_1958 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct enable_equality - : mpl::or_, fusion::traits::is_sequence > - {}; - - template - struct enable_comparison - : mpl::and_< - mpl::or_, fusion::traits::is_sequence >, - mpl::equal_to, result_of::size > > - {}; - -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp deleted file mode 100644 index 0b1f4df8..00000000 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_05052005_1142) -#define FUSION_EQUAL_TO_05052005_1142 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_equal_to - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return true; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a == *b - && call(fusion::next(a), fusion::next(b)); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; - - template - struct sequence_equal_to - { - template - static bool - call(I1 const& a, I2 const& b) - { - return false; - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp deleted file mode 100644 index 1f071b73..00000000 --- a/include/boost/fusion/sequence/comparison/detail/greater.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_GREATER_05052005_1142) -#define FUSION_GREATER_05052005_1142 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_greater - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return false; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a > *b - || !(*b > *a) - && call(fusion::next(a), fusion::next(b)); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp deleted file mode 100644 index 28bb7cc8..00000000 --- a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_GREATER_EQUAL_05052005_1142) -#define FUSION_GREATER_EQUAL_05052005_1142 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_greater_equal - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return true; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a >= *b - && (!(*b >= *a) || call(fusion::next(a), fusion::next(b))); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp deleted file mode 100644 index 15db31cb..00000000 --- a/include/boost/fusion/sequence/comparison/detail/less.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LESS_05052005_1141) -#define FUSION_LESS_05052005_1141 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_less - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return false; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a < *b - || !(*b < *a) - && call(fusion::next(a), fusion::next(b)); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp deleted file mode 100644 index 2eff087d..00000000 --- a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LESS_EQUAL_05052005_1141) -#define FUSION_LESS_EQUAL_05052005_1141 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_less_equal - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return true; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a <= *b - && (!(*b <= *a) || call(fusion::next(a), fusion::next(b))); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp deleted file mode 100644 index 65c124c2..00000000 --- a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NOT_EQUAL_TO_05052005_1141) -#define FUSION_NOT_EQUAL_TO_05052005_1141 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct sequence_not_equal_to - { - typedef typename result_of::end::type end1_type; - typedef typename result_of::end::type end2_type; - - template - static bool - call(I1 const&, I2 const&, mpl::true_) - { - return false; - } - - template - static bool - call(I1 const& a, I2 const& b, mpl::false_) - { - return *a != *b - || call(fusion::next(a), fusion::next(b)); - } - - template - static bool - call(I1 const& a, I2 const& b) - { - typename result_of::equal_to::type eq; - return call(a, b, eq); - } - }; - - template - struct sequence_not_equal_to - { - template - static bool - call(I1 const& a, I2 const& b) - { - return true; - } - }; -}}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp deleted file mode 100644 index ee04a24f..00000000 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_05052005_0431) -#define FUSION_EQUAL_TO_05052005_0431 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace sequence_operators - { - template - inline typename - enable_if< - detail::enable_equality - , bool - >::type - operator==(Seq1 const& a, Seq2 const& b) - { - return result_of::size::value == result_of::size::value - && detail::sequence_equal_to< - Seq1 const, Seq2 const - , result_of::size::value == result_of::size::value>:: - call(fusion::begin(a), fusion::begin(b)); - } - } - using sequence_operators::operator==; -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp deleted file mode 100644 index becd6767..00000000 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_GREATER_05052005_0432) -#define FUSION_GREATER_05052005_0432 - -#include -#include -#include - -#if defined(FUSION_DIRECT_OPERATOR_USAGE) -#include -#else -#include -#endif - -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator>(Seq1 const& a, Seq2 const& b) - { -#if defined(FUSION_DIRECT_OPERATOR_USAGE) - return detail::sequence_greater:: - call(fusion::begin(a), fusion::begin(b)); -#else - return (b < a); -#endif - } -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp deleted file mode 100644 index f73ee64f..00000000 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_GREATER_EQUAL_05052005_0432) -#define FUSION_GREATER_EQUAL_05052005_0432 - -#include -#include -#include - -#if defined(FUSION_DIRECT_OPERATOR_USAGE) -#include -#else -#include -#endif - -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator>=(Seq1 const& a, Seq2 const& b) - { -#if defined(FUSION_DIRECT_OPERATOR_USAGE) - return detail::sequence_greater_equal:: - call(fusion::begin(a), fusion::begin(b)); -#else - return !(a < b); -#endif - } -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp deleted file mode 100644 index 96d13d41..00000000 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LESS_05052005_0432) -#define FUSION_LESS_05052005_0432 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator<(Seq1 const& a, Seq2 const& b) - { - return detail::sequence_less:: - call(fusion::begin(a), fusion::begin(b)); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp deleted file mode 100644 index d4b45b2d..00000000 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LESS_EQUAL_05052005_0432) -#define FUSION_LESS_EQUAL_05052005_0432 - -#include -#include -#include - -#if defined(FUSION_DIRECT_OPERATOR_USAGE) -#include -#else -#include -#endif - -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator<=(Seq1 const& a, Seq2 const& b) - { -#if defined(FUSION_DIRECT_OPERATOR_USAGE) - return detail::sequence_less_equal:: - call(fusion::begin(a), fusion::begin(b)); -#else - return !(b < a); -#endif - } -}} - -#endif diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp deleted file mode 100644 index 1464d023..00000000 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NOT_EQUAL_TO_05052005_0431) -#define FUSION_NOT_EQUAL_TO_05052005_0431 - -#include -#include -#include - -#if defined(FUSION_DIRECT_OPERATOR_USAGE) -#include -#else -#include -#endif - -#include -#include - -namespace boost { namespace fusion -{ - namespace sequence_operators - { - template - inline typename - enable_if< - detail::enable_equality - , bool - >::type - operator!=(Seq1 const& a, Seq2 const& b) - { -#if defined(FUSION_DIRECT_OPERATOR_USAGE) - return result_of::size::value != result_of::size::value - || detail::sequence_not_equal_to< - Seq1 const, Seq2 const - , result_of::size::value == result_of::size::value>:: - call(fusion::begin(a), fusion::begin(b)); -#else - return !(a == b); -#endif - } - } - - using sequence_operators::operator!=; -}} - -#endif diff --git a/include/boost/fusion/sequence/container.hpp b/include/boost/fusion/sequence/container.hpp deleted file mode 100644 index c34fc492..00000000 --- a/include/boost/fusion/sequence/container.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CLASS_10022005_0614) -#define FUSION_SEQUENCE_CLASS_10022005_0614 - -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/container/ext_/tree.hpp b/include/boost/fusion/sequence/container/ext_/tree.hpp deleted file mode 100755 index c6edc28c..00000000 --- a/include/boost/fusion/sequence/container/ext_/tree.hpp +++ /dev/null @@ -1,130 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#ifndef FUSION_BINARY_TREE_EAN_05032006_1027 -#define FUSION_BINARY_TREE_EAN_05032006_1027 - -#include -#include -#include -#include -#include -#include -#include -#include // for nil -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct tree_tag; - - namespace detail - { - template - struct reference : add_reference {}; - - template - struct reference : reference::type, false> {}; - - template - struct reference : reference {}; - } - - template - struct tree - : sequence_base > - { - typedef Data data_type; - typedef Left left_type; - typedef Right right_type; - typedef tree_tag fusion_tag; - typedef forward_traversal_tag category; - typedef mpl::false_ is_view; - - typedef typename mpl::if_< - traits::is_sequence - , Data - , single_view - >::type data_view; - - explicit tree( - typename fusion::detail::call_param::type data_ - , typename fusion::detail::call_param::type left_ = Left() - , typename fusion::detail::call_param::type right_ = Right() - ) - : segments(left_, data_view(data_), right_) - {} - - typedef vector3 segments_type; - segments_type segments; - }; - - template - tree make_tree(Data const &data) - { - return tree(data); - } - - template - tree make_tree(Data const &data, Left const &left, Right const &right) - { - return tree(data, left, right); - } - - namespace extension - { - template<> - struct is_segmented_impl - { - template - struct apply : mpl::true_ {}; - }; - - template<> - struct segments_impl - { - template - struct apply - { - typedef typename mpl::if_< - is_const - , typename Sequence::segments_type const & - , typename Sequence::segments_type & - >::type type; - - static type call(Sequence &seq) - { - return seq.segments; - } - }; - }; - - template<> - struct begin_impl - { - template - struct apply - : segmented_begin - {}; - }; - - template<> - struct end_impl - { - template - struct apply - : segmented_end - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list.hpp b/include/boost/fusion/sequence/container/list.hpp deleted file mode 100644 index 77426691..00000000 --- a/include/boost/fusion/sequence/container/list.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) -#define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 - -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp deleted file mode 100644 index 075bee7d..00000000 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ /dev/null @@ -1,143 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_CONS_07172005_0843) -#define FUSION_CONS_07172005_0843 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - struct cons_tag; - struct forward_traversal_tag; - struct fusion_sequence_tag; - - struct nil : sequence_base - { - typedef mpl::int_<0> size; - typedef cons_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef forward_traversal_tag category; - typedef void_ car_type; - typedef void_ cdr_type; - - nil() {} - - template - nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) - {} - - template - void assign_from_iter(Iterator const& iter) - { - } - }; - - template - struct cons : sequence_base > - { - typedef mpl::int_ size; - typedef cons_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef forward_traversal_tag category; - typedef Car car_type; - typedef Cdr cdr_type; - - cons() - : car(), cdr() {} - - explicit cons(typename detail::call_param::type car) - : car(car), cdr() {} - - cons( - typename detail::call_param::type car - , typename detail::call_param::type cdr) - : car(car), cdr(cdr) {} - - template - cons(cons const& rhs) - : car(rhs.car), cdr(rhs.cdr) {} - - cons(cons const& rhs) - : car(rhs.car), cdr(rhs.cdr) {} - - template - cons( - Sequence const& seq - , typename disable_if< - mpl::or_< - is_convertible // use copy ctor instead - , is_convertible // use copy to car instead - > - >::type* dummy = 0 - ) - : car(*fusion::begin(seq)) - , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} - - template - cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) - : car(*iter) - , cdr(fusion::next(iter), mpl::true_()) {} - - template - cons& operator=(cons const& rhs) - { - car = rhs.car; - cdr = rhs.cdr; - return *this; - } - - cons& operator=(cons const& rhs) - { - car = rhs.car; - cdr = rhs.cdr; - return *this; - } - - template - typename disable_if, cons&>::type - operator=(Sequence const& seq) - { - typedef typename result_of::begin::type Iterator; - Iterator iter = fusion::begin(seq); - this->assign_from_iter(iter); - return *this; - } - - template - void assign_from_iter(Iterator const& iter) - { - car = *iter; - cdr.assign_from_iter(fusion::next(iter)); - } - - car_type car; - cdr_type cdr; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/list/cons_iterator.hpp b/include/boost/fusion/sequence/container/list/cons_iterator.hpp deleted file mode 100644 index af25fd1e..00000000 --- a/include/boost/fusion/sequence/container/list/cons_iterator.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_CONS_ITERATOR_07172005_0849) -#define FUSION_CONS_ITERATOR_07172005_0849 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct nil; - struct cons_iterator_tag; - struct forward_traversal_tag; - - template - struct cons_iterator_identity; - - template - struct cons_iterator : iterator_base > - { - typedef cons_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - typedef Cons cons_type; - typedef cons_iterator_identity< - typename add_const::type> - identity; - - explicit cons_iterator(cons_type& cons) - : cons(cons) {} - - cons_type& cons; - }; - - struct nil_iterator : iterator_base - { - typedef forward_traversal_tag category; - typedef cons_iterator_tag fusion_tag; - typedef nil cons_type; - typedef cons_iterator_identity< - add_const::type> - identity; - nil_iterator() {} - explicit nil_iterator(nil const&) {} - }; - - template <> - struct cons_iterator : nil_iterator - { - cons_iterator() {} - explicit cons_iterator(nil const&) {} - }; - - template <> - struct cons_iterator : nil_iterator - { - cons_iterator() {} - explicit cons_iterator(nil const&) {} - }; - - template <> - struct cons_iterator > : nil_iterator - { - cons_iterator() {} - explicit cons_iterator(nil const&) {} - }; - - template <> - struct cons_iterator const> : nil_iterator - { - cons_iterator() {} - explicit cons_iterator(nil const&) {} - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp deleted file mode 100644 index aae026ad..00000000 --- a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_IMPL_07172005_0726) -#define FUSION_AT_IMPL_07172005_0726 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - typedef typename - mpl::eval_if< - is_const - , add_const - , mpl::identity - >::type - cdr_type; - - typedef typename - mpl::eval_if< - mpl::bool_ - , mpl::identity - , apply > - > - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - template - static type - call(Cons& s, mpl::int_) - { - return call(s.cdr, mpl::int_()); - } - - template - static type - call(Cons& s, mpl::int_<0>) - { - return s.car; - } - - static type - call(Sequence& s) - { - return call(s, mpl::int_()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp deleted file mode 100644 index 72384c93..00000000 --- a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_07172005_0824) -#define FUSION_BEGIN_IMPL_07172005_0824 - -#include -#include - -namespace boost { namespace fusion -{ - struct nil; - - struct cons_tag; - - template - struct cons; - - template - struct cons_iterator; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef cons_iterator type; - - static type - call(Sequence& t) - { - return type(t); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp deleted file mode 100644 index d374a8c0..00000000 --- a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_07172005_0831) -#define FUSION_DEREF_IMPL_07172005_0831 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::cons_type cons_type; - typedef typename cons_type::car_type value_type; - - typedef typename mpl::eval_if< - is_const - , add_reference::type> - , add_reference >::type - type; - - static type - call(Iterator const& i) - { - return i.cons.car; - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp deleted file mode 100644 index 0aaeaac4..00000000 --- a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_07172005_0828) -#define FUSION_END_IMPL_07172005_0828 - -#include -#include - -namespace boost { namespace fusion -{ - struct nil; - - struct cons_tag; - - template - struct cons; - - template - struct cons_iterator; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef cons_iterator< - typename mpl::if_, nil const, nil>::type> - type; - - static type - call(Sequence& t) - { - return type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp deleted file mode 100644 index 9c64a47f..00000000 --- a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120) -#define FUSION_EQUAL_TO_IMPL_09172005_1120 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_iterator_tag; - - namespace extension - { - template - struct equal_to_impl; - - template <> - struct equal_to_impl - { - template - struct apply - : is_same< - typename I1::identity - , typename I2::identity - > - { - }; - }; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp deleted file mode 100644 index 541b7513..00000000 --- a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113) -#define FUSION_LIST_FORWARD_CTOR_07172005_0113 - -#include -#include -#include -#include -#include - -#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n) -#define FUSION_LIST_CL_PAREN(z, n, type) ) - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#undef FUSION_LIST_CTOR_MAKE_CONS -#undef FUSION_LIST_CL_PAREN - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#define N BOOST_PP_ITERATION() - -#if N == 1 - explicit -#endif - list(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, _))) - {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp deleted file mode 100644 index eba36539..00000000 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LIST_TO_CONS_07172005_1041) -#define FUSION_LIST_TO_CONS_07172005_1041 - -#include -#include -#include -#include -#include -#include - -#define FUSION_VOID(z, n, _) void_ - -namespace boost { namespace fusion -{ - struct nil; - struct void_; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct list_to_cons - { - typedef T0 head_type; - typedef list_to_cons< - BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_> - tail_list_to_cons; - typedef typename tail_list_to_cons::type tail_type; - - typedef cons type; - - #include - }; - - template <> - struct list_to_cons - { - typedef nil type; - }; -}}} - -#undef FUSION_VOID -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp deleted file mode 100644 index d0cc1821..00000000 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138) -#define FUSION_LIST_TO_CONS_CALL_07192005_0138 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#define N BOOST_PP_ITERATION() - - static type - call(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - { - return type(_0 -#if N > 1 - , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, _))); -#else - ); -#endif - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp deleted file mode 100644 index 92e5c5bd..00000000 --- a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_07172005_0836) -#define FUSION_NEXT_IMPL_07172005_0836 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_iterator_tag; - - template - struct cons_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::cons_type cons_type; - typedef typename cons_type::cdr_type cdr_type; - - typedef cons_iterator< - typename mpl::eval_if< - is_const - , add_const - , mpl::identity - >::type> - type; - - static type - call(Iterator const& i) - { - return type(i.cons.cdr); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp deleted file mode 100644 index 28fd7650..00000000 --- a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_IMPL_07172005_0952) -#define FUSION_VALUE_AT_IMPL_07172005_0952 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - typedef typename - mpl::eval_if< - mpl::bool_ - , mpl::identity - , apply > - >::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp deleted file mode 100644 index b73c73b4..00000000 --- a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_07172005_0838) -#define FUSION_VALUE_OF_IMPL_07172005_0838 - -namespace boost { namespace fusion -{ - struct cons_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::cons_type cons_type; - typedef typename cons_type::car_type type; - }; - }; - } - -}} - -#endif - - diff --git a/include/boost/fusion/sequence/container/list/limits.hpp b/include/boost/fusion/sequence/container/list/limits.hpp deleted file mode 100644 index 0d591098..00000000 --- a/include/boost/fusion/sequence/container/list/limits.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LIST_LIMITS_07172005_0112) -#define FUSION_LIST_LIMITS_07172005_0112 - -#if !defined(FUSION_MAX_LIST_SIZE) -# define FUSION_MAX_LIST_SIZE 10 -#else -# if FUSION_MAX_LIST_SIZE < 3 -# undef FUSION_MAX_LIST_SIZE -# define FUSION_MAX_LIST_SIZE 10 -# endif -#endif - -#endif diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp deleted file mode 100644 index 67219fff..00000000 --- a/include/boost/fusion/sequence/container/list/list.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LIST_07172005_1153) -#define FUSION_LIST_07172005_1153 - -#include -#include - -namespace boost { namespace fusion -{ - struct nil; - struct void_; - - template - struct list - : detail::list_to_cons::type - { - private: - typedef - detail::list_to_cons - list_to_cons; - - public: - typedef typename list_to_cons::type inherited_type; - - list() - : inherited_type() {} - - template - list(list const& rhs) - : inherited_type(rhs) {} - - template - list(Sequence const& rhs) - : inherited_type(rhs) {} - - // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: - // - // list( - // typename detail::call_param::type _0 - // , typename detail::call_param::type _1) - // : inherited_type(list_to_cons::call(_0, _1)) {} - #include - - template - list& - operator=(list const& rhs) - { - inherited_type::operator=(rhs); - return *this; - } - - template - list& - operator=(T const& rhs) - { - inherited_type::operator=(rhs); - return *this; - } - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/list/list_fwd.hpp b/include/boost/fusion/sequence/container/list/list_fwd.hpp deleted file mode 100644 index 120f96bc..00000000 --- a/include/boost/fusion/sequence/container/list/list_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LIST_FORWARD_07172005_0224) -#define FUSION_LIST_FORWARD_07172005_0224 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_LIST_SIZE, typename T, void_) - > - struct list; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map.hpp b/include/boost/fusion/sequence/container/map.hpp deleted file mode 100644 index 72cd4790..00000000 --- a/include/boost/fusion/sequence/container/map.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) -#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 - -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp deleted file mode 100644 index 9fdd7817..00000000 --- a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_KEY_IMPL_05222005_0254) -#define FUSION_AT_KEY_IMPL_05222005_0254 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct map_tag; - - namespace extension - { - template - struct at_key_impl; - - template <> - struct at_key_impl - { - template - struct apply - { - typedef typename Sequence::template meta_at_impl element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& m) - { - return m.at_impl(mpl::identity()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp deleted file mode 100644 index c2c5fe7a..00000000 --- a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05222005_1108) -#define FUSION_BEGIN_IMPL_05222005_1108 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct map_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename - result_of::begin::type - iterator_type; - - typedef typename - result_of::begin::type - const_iterator_type; - - typedef typename - mpl::eval_if< - is_const - , mpl::identity - , mpl::identity - >::type - type; - - static type - call(Sequence& m) - { - return fusion::begin(m.get_data()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp deleted file mode 100644 index 9778c502..00000000 --- a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_05222005_1108) -#define FUSION_END_IMPL_05222005_1108 - -#include - -namespace boost { namespace fusion -{ - struct map_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename - result_of::end::type - iterator_type; - - typedef typename - result_of::end::type - const_iterator_type; - - typedef typename - mpl::eval_if< - is_const - , mpl::identity - , mpl::identity - >::type - type; - - static type - call(Sequence& m) - { - return fusion::end(m.get_data()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp deleted file mode 100644 index c4d037ec..00000000 --- a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LOOKUP_KEY_07222005_1248) -#define FUSION_LOOKUP_KEY_07222005_1248 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct map_data_type - { - typedef typename - add_reference< - typename T::second_type - >::type - type; - }; - - template <> - struct map_data_type - { - typedef void_& type; - }; - - template - struct map_const_data_type - { - typedef typename - add_reference< - typename add_const< - typename T::second_type - >::type - >::type - type; - }; - - template <> - struct map_const_data_type - { - typedef void_ const& type; - }; - - template - struct map_value_type - { - typedef typename T::second_type type; - }; - - template <> - struct map_value_type - { - typedef void_ type; - }; - - template - struct map_key_type - { - typedef typename T::first_type type; - }; - - template - struct map_key_type - { - typedef unknown_key type; - }; - - template - struct map_lookup_key - { - static RT - call(Vector& vec) - { - return vec.at_impl(mpl::int_()).second; - } - }; - - template - struct map_lookup_key, Vector> - { - static void_& - call(Vector& vec); // intentionally undefined - }; -}}} - -#endif - diff --git a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp deleted file mode 100644 index b641f31b..00000000 --- a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106) -#define FUSION_MAP_FORWARD_CTOR_07222005_0106 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - -#if N == 1 - explicit -#endif - map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - : data(BOOST_PP_ENUM_PARAMS(N, _)) {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp deleted file mode 100644 index 4557aa2d..00000000 --- a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAP_LOOKUP_07212005_1118) -#define FUSION_MAP_LOOKUP_07212005_1118 - -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning(disable: 4348) // redefinition of default parameter -#endif - - template - struct meta_at_impl - { - typedef void_ type; - }; - - template - struct meta_find_impl - { - typedef vector_iterator type; - }; - - template - struct meta_find_impl_const - { - typedef vector_iterator type; - }; - - template - vector_iterator - find_impl(mpl::identity) const - { - return vector_iterator(data); - } - - template - vector_iterator - find_impl(mpl::identity) - { - return vector_iterator(data); - } - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE)) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template - struct meta_at_impl< - typename detail::map_key_type::type, dummy> - { - typedef typename detail::map_value_type::type type; - }; - - typename detail::map_data_type::type - at_impl(mpl::identity::type>) - { - return detail::map_lookup_key< - N - , typename detail::map_data_type::type - , typename detail::map_key_type::type - , storage_type>::call(data); - } - - typename detail::map_const_data_type::type - at_impl(mpl::identity::type>) const - { - return detail::map_lookup_key< - N - , typename detail::map_const_data_type::type - , typename detail::map_key_type::type - , storage_type const>::call(data); - } - - template - struct meta_find_impl< - typename detail::map_key_type::type, dummy> - { - typedef vector_iterator type; - }; - - template - struct meta_find_impl_const< - typename detail::map_key_type::type, dummy> - { - typedef vector_iterator type; - }; - - vector_iterator - find_impl(mpl::identity::type>) - { - return vector_iterator(data); - } - - vector_iterator - find_impl(mpl::identity::type>) const - { - return vector_iterator(data); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp deleted file mode 100644 index 5578de80..00000000 --- a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_KEY_IMPL_05222005_0325) -#define FUSION_VALUE_AT_KEY_IMPL_05222005_0325 - -namespace boost { namespace fusion -{ - struct map_tag; - - namespace extension - { - template - struct value_at_key_impl; - - template <> - struct value_at_key_impl - { - template - struct apply - { - typedef typename Sequence:: - template meta_at_impl::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/limits.hpp b/include/boost/fusion/sequence/container/map/limits.hpp deleted file mode 100644 index c7859ba1..00000000 --- a/include/boost/fusion/sequence/container/map/limits.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MAP_LIMITS_07212005_1104) -#define FUSION_MAP_LIMITS_07212005_1104 - -#include - -#if !defined(FUSION_MAX_MAP_SIZE) -# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE -#else -# if FUSION_MAX_MAP_SIZE < 3 -# undef FUSION_MAX_MAP_SIZE -# if (FUSION_MAX_VECTOR_SIZE > 10) -# define FUSION_MAX_MAP_SIZE 10 -# else -# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE -# endif -# endif -#endif - -#endif diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp deleted file mode 100644 index 0a19d823..00000000 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MAP_07212005_1106) -#define FUSION_MAP_07212005_1106 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - struct map_tag; - struct fusion_sequence_tag; - - template - struct map : sequence_base > - { - struct category : forward_traversal_tag, associative_sequence_tag {}; - - typedef map_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> - storage_type; - - typedef typename storage_type::size size; - - map() - : data() {} - - template - map(Sequence const& rhs) - : data(rhs) {} - - #include - #include - - template - map& - operator=(T const& rhs) - { - data = rhs; - return *this; - } - - storage_type& get_data() { return data; } - storage_type const& get_data() const { return data; } - - private: - - storage_type data; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/map_fwd.hpp b/include/boost/fusion/sequence/container/map/map_fwd.hpp deleted file mode 100644 index 2cbfe8a3..00000000 --- a/include/boost/fusion/sequence/container/map/map_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MAP_FORWARD_07212005_1105) -#define FUSION_MAP_FORWARD_07212005_1105 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_MAP_SIZE, typename T, void_) - > - struct map; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set.hpp b/include/boost/fusion/sequence/container/set.hpp deleted file mode 100644 index 477f8ecf..00000000 --- a/include/boost/fusion/sequence/container/set.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CLASS_SET_10022005_0607) -#define FUSION_SEQUENCE_CLASS_SET_10022005_0607 - -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp deleted file mode 100644 index 42609cf2..00000000 --- a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_KEY_IMPL_09162005_1118) -#define FUSION_AT_KEY_IMPL_09162005_1118 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct set_tag; - - namespace extension - { - template - struct at_key_impl; - - template <> - struct at_key_impl - { - template - struct apply - { - typedef typename Sequence::template meta_at_impl element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& s) - { - return s.at_impl(mpl::identity()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp deleted file mode 100644 index 4535d617..00000000 --- a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_09162005_1120) -#define FUSION_BEGIN_IMPL_09162005_1120 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct set_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename - result_of::begin::type - iterator_type; - - typedef typename - result_of::begin::type - const_iterator_type; - - typedef typename - mpl::eval_if< - is_const - , mpl::identity - , mpl::identity - >::type - type; - - static type - call(Sequence& s) - { - return fusion::begin(s.get_data()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp deleted file mode 100644 index 4e098a15..00000000 --- a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_09162005_1121) -#define FUSION_END_IMPL_09162005_1121 - -#include - -namespace boost { namespace fusion -{ - struct set_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename - result_of::end::type - iterator_type; - - typedef typename - result_of::end::type - const_iterator_type; - - typedef typename - mpl::eval_if< - is_const - , mpl::identity - , mpl::identity - >::type - type; - - static type - call(Sequence& s) - { - return fusion::end(s.get_data()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp deleted file mode 100644 index 23dbfaf1..00000000 --- a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_LOOKUP_KEY_09162005_1111) -#define FUSION_LOOKUP_KEY_09162005_1111 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct set_data_type - { - typedef typename add_reference::type type; - }; - - template <> - struct set_data_type - { - typedef void_& type; - }; - - template - struct set_const_data_type - { - typedef typename - add_reference< - typename add_const::type - >::type - type; - }; - - template <> - struct set_const_data_type - { - typedef void_ const& type; - }; - - template - struct set_value_type - { - typedef T type; - }; - - template <> - struct set_value_type - { - typedef void_ type; - }; - - template - struct set_key_type - { - typedef T type; - }; - - template - struct set_key_type - { - typedef unknown_key type; - }; - - template - struct set_lookup_key - { - static RT - call(Vector& vec) - { - return vec.at_impl(mpl::int_()); - } - }; - - template - struct set_lookup_key, Vector> - { - static void_& - call(Vector& vec); // intentionally undefined - }; -}}} - -#endif - diff --git a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp deleted file mode 100644 index 76a89e3a..00000000 --- a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115) -#define FUSION_SET_FORWARD_CTOR_09162005_1115 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - -#if N == 1 - explicit -#endif - set(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : data(BOOST_PP_ENUM_PARAMS(N, _)) {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp deleted file mode 100644 index 2ce15e1c..00000000 --- a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_SET_LOOKUP_09162005_1116) -#define FUSION_SET_LOOKUP_09162005_1116 - -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning(disable: 4348) // redefinition of default parameter -#endif - - template - struct meta_at_impl - { - typedef void_ type; - }; - - template - struct meta_find_impl - { - typedef vector_iterator type; - }; - - template - struct meta_find_impl_const - { - typedef vector_iterator type; - }; - - template - vector_iterator - find_impl(mpl::identity) const - { - return vector_iterator(data); - } - - template - vector_iterator - find_impl(mpl::identity) - { - return vector_iterator(data); - } - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE)) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template - struct meta_at_impl< - typename detail::set_key_type::type, dummy> - { - typedef typename detail::set_value_type::type type; - }; - - typename detail::set_data_type::type - at_impl(mpl::identity::type>) - { - return detail::set_lookup_key< - N - , typename detail::set_data_type::type - , typename detail::set_key_type::type - , storage_type>::call(data); - } - - typename detail::set_const_data_type::type - at_impl(mpl::identity::type>) const - { - return detail::set_lookup_key< - N - , typename detail::set_const_data_type::type - , typename detail::set_key_type::type - , storage_type const>::call(data); - } - - template - struct meta_find_impl< - typename detail::set_key_type::type, dummy> - { - typedef vector_iterator type; - }; - - template - struct meta_find_impl_const< - typename detail::set_key_type::type, dummy> - { - typedef vector_iterator type; - }; - - vector_iterator - find_impl(mpl::identity::type>) - { - return vector_iterator(data); - } - - vector_iterator - find_impl(mpl::identity::type>) const - { - return vector_iterator(data); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp deleted file mode 100644 index 1755eb6d..00000000 --- a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_KEY_IMPL_09162005_1123) -#define FUSION_VALUE_AT_KEY_IMPL_09162005_1123 - -#include - -namespace boost { namespace fusion -{ - struct set_tag; - - namespace extension - { - template - struct value_at_key_impl; - - template <> - struct value_at_key_impl - { - template - struct apply - { - typedef typename Sequence:: - template meta_at_impl::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/limits.hpp b/include/boost/fusion/sequence/container/set/limits.hpp deleted file mode 100644 index d278ac47..00000000 --- a/include/boost/fusion/sequence/container/set/limits.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SET_LIMITS_09162005_1103) -#define FUSION_SET_LIMITS_09162005_1103 - -#include - -#if !defined(FUSION_MAX_SET_SIZE) -# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE -#else -# if FUSION_MAX_SET_SIZE < 3 -# undef FUSION_MAX_SET_SIZE -# if (FUSION_MAX_VECTOR_SIZE > 10) -# define FUSION_MAX_SET_SIZE 10 -# else -# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE -# endif -# endif -#endif - -#endif diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp deleted file mode 100644 index 965e6e60..00000000 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SET_09162005_1104) -#define FUSION_SET_09162005_1104 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - struct set_tag; - struct fusion_sequence_tag; - - template - struct set : sequence_base > - { - struct category : forward_traversal_tag, associative_sequence_tag {}; - - typedef set_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> - storage_type; - - typedef typename storage_type::size size; - - set() - : data() {} - - template - set(Sequence const& rhs) - : data(rhs) {} - - #include - #include - - template - set& - operator=(T const& rhs) - { - data = rhs; - return *this; - } - - storage_type& get_data() { return data; } - storage_type const& get_data() const { return data; } - - private: - - storage_type data; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/set_fwd.hpp b/include/boost/fusion/sequence/container/set/set_fwd.hpp deleted file mode 100644 index 610f27a7..00000000 --- a/include/boost/fusion/sequence/container/set/set_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SET_FORWARD_09162005_1102) -#define FUSION_SET_FORWARD_09162005_1102 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_SET_SIZE, typename T, void_) - > - struct set; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector.hpp b/include/boost/fusion/sequence/container/vector.hpp deleted file mode 100644 index 100fe118..00000000 --- a/include/boost/fusion/sequence/container/vector.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602) -#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp deleted file mode 100644 index 24dc4f2d..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_09172005_1156) -#define FUSION_ADVANCE_IMPL_09172005_1156 - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - - template - struct vector_iterator; - - namespace extension - { - template - struct advance_impl; - - template <> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::index index; - typedef typename Iterator::vector vector; - typedef vector_iterator type; - - static type - call(Iterator const& i) - { - return type(i.vec); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp deleted file mode 100644 index b38119a1..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_IMPL_05042005_0741) -#define FUSION_AT_IMPL_05042005_0741 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - typedef mpl::at element; - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& v) - { - return v.at_impl(N()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp deleted file mode 100644 index b261968a..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05042005_1136) -#define FUSION_BEGIN_IMPL_05042005_1136 - -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef vector_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp deleted file mode 100644 index 25f0d5fe..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_05042005_1037) -#define FUSION_DEREF_IMPL_05042005_1037 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::vector vector; - typedef typename Iterator::index index; - typedef typename mpl::at< - typename vector::types, index> - element; - - typedef typename - mpl::eval_if< - is_const - , fusion::detail::cref_result - , fusion::detail::ref_result - >::type - type; - - static type - call(Iterator const& i) - { - return i.vec.at_impl(index()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp deleted file mode 100644 index bf383e10..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_09172005_0751) -#define FUSION_DISTANCE_IMPL_09172005_0751 - -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - - namespace extension - { - template - struct distance_impl; - - template <> - struct distance_impl - { - template - struct apply : mpl::minus - { - static typename mpl::minus< - typename Last::index, typename First::index>::type - call(First const&, Last const&) - { - typedef typename mpl::minus< - typename Last::index, typename First::index>::type - result; - return result(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp deleted file mode 100644 index 0d760754..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_05042005_1142) -#define FUSION_END_IMPL_05042005_1142 - -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::size size; - typedef vector_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp deleted file mode 100644 index b4971b94..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_IMPL_05052005_1215) -#define FUSION_EQUAL_TO_IMPL_05052005_1215 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - - namespace extension - { - template - struct equal_to_impl; - - template <> - struct equal_to_impl - { - template - struct apply - : is_same< - typename I1::identity - , typename I2::identity - > - { - }; - }; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp deleted file mode 100644 index acc7ecf7..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_05042005_1058) -#define FUSION_NEXT_IMPL_05042005_1058 - -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - template - struct vector_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::vector vector; - typedef typename Iterator::index index; - typedef vector_iterator type; - - static type - call(Iterator const& i) - { - return type(i.vec); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp deleted file mode 100644 index cf6e80f5..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_05042005_1145) -#define FUSION_PRIOR_IMPL_05042005_1145 - -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - template - struct vector_iterator; - - namespace extension - { - template - struct prior_impl; - - template <> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::vector vector; - typedef typename Iterator::index index; - typedef vector_iterator type; - - static type - call(Iterator const& i) - { - return type(i.vec); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp deleted file mode 100644 index 1910400a..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_IMPL_05052005_0232) -#define FUSION_VALUE_AT_IMPL_05052005_0232 - -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - typedef typename mpl::at::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp deleted file mode 100644 index f37e0b5d..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_05052005_1128) -#define FUSION_VALUE_OF_IMPL_05052005_1128 - -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::vector vector; - typedef typename Iterator::index index; - typedef typename mpl::at< - typename vector::types, index>::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp deleted file mode 100644 index dc5535f1..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) -#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - -#if N == 1 - explicit -#endif - vector(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : vec(BOOST_PP_ENUM_PARAMS(N, _)) {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp deleted file mode 100644 index ab295432..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -// No include guard. This file is meant to be included many times - -#if !defined(FUSION_MACRO_05042005) -#define FUSION_MACRO_05042005 - -#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n()) -#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n) -#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n) -#define FUSION_MEMBER_DECL(z, n, _) T##n m##n; - -#define FUSION_MEMBER_ASSIGN(z, n, _) \ - this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); - -#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \ - this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); - -#define FUSION_AT_IMPL(z, n, _) \ - typename add_reference::type \ - at_impl(mpl::int_) { return this->m##n; } \ - typename add_reference::type>::type \ - at_impl(mpl::int_) const { return this->m##n; } - -#define FUSION_ITER_DECL_VAR(z, n, _) \ - typedef typename result_of::next< \ - BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \ - BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \ - = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n))); - -#endif - -#define N BOOST_PP_ITERATION() - - template - struct BOOST_PP_CAT(vector_data, N) : sequence_base - { - BOOST_PP_CAT(vector_data, N)() - : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {} - - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {} - - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_CAT(vector_data, N) const& other) - : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {} - - BOOST_PP_CAT(vector_data, N)& - operator=(BOOST_PP_CAT(vector_data, N) const& vec) - { - BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) - return *this; - } - - template - static BOOST_PP_CAT(vector_data, N) - init_from_sequence(Sequence const& seq) - { - typedef typename result_of::begin::type I0; - I0 i0 = fusion::begin(seq); - BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _) - return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); - } - - BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _) - }; - - template - struct BOOST_PP_CAT(vector, N) - : BOOST_PP_CAT(vector_data, N)< - BOOST_PP_CAT(vector, N) - , BOOST_PP_ENUM_PARAMS(N, T)> - { - typedef BOOST_PP_CAT(vector, N) this_type; - typedef BOOST_PP_CAT(vector_data, N) base_type; - typedef mpl::BOOST_PP_CAT(vector, N) types; - typedef vector_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef random_access_traversal_tag category; - typedef mpl::int_ size; - - BOOST_PP_CAT(vector, N)() {} - -#if (N == 1) - explicit -#endif - BOOST_PP_CAT(vector, N)( - BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} - - template - BOOST_PP_CAT(vector, N)( - BOOST_PP_CAT(vector, N) const& vec) - : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} - - template - BOOST_PP_CAT(vector, N)( - Sequence const& seq - , typename disable_if >::type* dummy = 0) - : base_type(base_type::init_from_sequence(seq)) {} - - template - BOOST_PP_CAT(vector, N)& - operator=(BOOST_PP_CAT(vector, N) const& vec) - { - BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) - return *this; - } - - template - typename disable_if, this_type&>::type - operator=(Sequence const& seq) - { - typedef typename result_of::begin::type I0; - I0 i0 = fusion::begin(seq); - BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _) - BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _) - return *this; - } - - BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _) - - template - typename add_reference::type>::type - at_impl(I i) - { - return this->at_impl(mpl::int_()); - } - - template - typename add_reference::type>::type>::type - at_impl(I i) const - { - return this->at_impl(mpl::int_()); - } - }; - diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp deleted file mode 100644 index 9d6724af..00000000 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) -#define FUSION_VECTOR_N_CHOOSER_07072005_1248 - -#include - -// include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include -#if (FUSION_MAX_VECTOR_SIZE > 10) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 20) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 30) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 40) -#include -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct get_vector_n; - - template <> - struct get_vector_n<0> - { - template - struct call - { - typedef vector0 type; - }; - }; - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - - template - struct vector_n_chooser - { - typedef - mpl::BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE) - - input; - - typedef typename mpl::begin::type begin; - typedef typename mpl::find::type end; - typedef typename mpl::distance::type size; - - typedef typename get_vector_n::template - call::type - type; - }; -}}} - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() - - template <> - struct get_vector_n - { - template - struct call - { - typedef BOOST_PP_CAT(vector, N) type; - }; - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/sequence/container/vector/limits.hpp b/include/boost/fusion/sequence/container/vector/limits.hpp deleted file mode 100644 index 27af0fcf..00000000 --- a/include/boost/fusion/sequence/container/vector/limits.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR_LIMITS_07072005_1246) -#define FUSION_VECTOR_LIMITS_07072005_1246 - -#if !defined(FUSION_MAX_VECTOR_SIZE) -# define FUSION_MAX_VECTOR_SIZE 10 -#else -# if FUSION_MAX_VECTOR_SIZE < 3 -# undef FUSION_MAX_VECTOR_SIZE -# define FUSION_MAX_VECTOR_SIZE 10 -# endif -#endif - -#endif diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp deleted file mode 100644 index bf7ea597..00000000 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ /dev/null @@ -1,153 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR_07072005_1244) -#define FUSION_VECTOR_07072005_1244 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - struct fusion_sequence_tag; - - template - struct vector - : sequence_base > - { - private: - - typedef typename detail::vector_n_chooser< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type - vector_n; - - template - friend struct vector; - - public: - - typedef typename vector_n::types types; - typedef typename vector_n::fusion_tag fusion_tag; - typedef typename vector_n::tag tag; - typedef typename vector_n::size size; - typedef typename vector_n::category category; - typedef typename vector_n::is_view is_view; - - vector() - : vec() {} - - template - vector(vector const& rhs) - : vec(rhs.vec) {} - - vector(vector const& rhs) - : vec(rhs.vec) {} - - template - vector(Sequence const& rhs) -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) - : vec(ctor_helper(rhs, is_base_of())) {} -#else - : vec(rhs) {} -#endif - - // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: - // - // vector( - // typename detail::call_param::type _0 - // , typename detail::call_param::type _1) - // : vec(_0, _1) {} - #include - - template - vector& - operator=(vector const& rhs) - { - vec = rhs.vec; - return *this; - } - - template - vector& - operator=(T const& rhs) - { - vec = rhs; - return *this; - } - - template - typename add_reference< - typename mpl::at_c::type - >::type - at_impl(mpl::int_ index) - { - return vec.at_impl(index); - } - - template - typename add_reference< - typename add_const< - typename mpl::at_c::type - >::type - >::type - at_impl(mpl::int_ index) const - { - return vec.at_impl(index); - } - - template - typename add_reference< - typename mpl::at::type - >::type - at_impl(I index) - { - return vec.at_impl(mpl::int_()); - } - - template - typename add_reference< - typename add_const< - typename mpl::at::type - >::type - >::type - at_impl(I index) const - { - return vec.at_impl(mpl::int_()); - } - - private: - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) - static vector_n const& - ctor_helper(vector const& rhs, mpl::true_) - { - return rhs.vec; - } - - template - static T const& - ctor_helper(T const& rhs, mpl::false_) - { - return rhs; - } -#endif - - vector_n vec; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp deleted file mode 100644 index da09e811..00000000 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR10_05042005_0257) -#define FUSION_VECTOR10_05042005_0257 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - - struct vector0 : sequence_base - { - typedef mpl::vector0<> types; - typedef vector_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef random_access_traversal_tag category; - typedef mpl::int_<0> size; - }; - -// expand vector1 to vector10 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, 10) -#include BOOST_PP_ITERATE() - -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/vector20.hpp b/include/boost/fusion/sequence/container/vector/vector20.hpp deleted file mode 100644 index a1c3477c..00000000 --- a/include/boost/fusion/sequence/container/vector/vector20.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR20_05052005_0205) -#define FUSION_VECTOR20_05052005_0205 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -// expand vector11 to vector20 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (11, 20) -#include BOOST_PP_ITERATE() - -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/vector30.hpp b/include/boost/fusion/sequence/container/vector/vector30.hpp deleted file mode 100644 index 4a40c82d..00000000 --- a/include/boost/fusion/sequence/container/vector/vector30.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR30_05052005_0206) -#define FUSION_VECTOR30_05052005_0206 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -// expand vector21 to vector30 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (21, 30) -#include BOOST_PP_ITERATE() - -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/vector40.hpp b/include/boost/fusion/sequence/container/vector/vector40.hpp deleted file mode 100644 index 9a1f8afc..00000000 --- a/include/boost/fusion/sequence/container/vector/vector40.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR40_05052005_0208) -#define FUSION_VECTOR40_05052005_0208 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -// expand vector31 to vector40 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (31, 40) -#include BOOST_PP_ITERATE() - -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/vector50.hpp b/include/boost/fusion/sequence/container/vector/vector50.hpp deleted file mode 100644 index 437a9ed2..00000000 --- a/include/boost/fusion/sequence/container/vector/vector50.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR50_05052005_0207) -#define FUSION_VECTOR50_05052005_0207 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -// expand vector41 to vector50 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (41, 50) -#include BOOST_PP_ITERATE() - -}} - -#endif - diff --git a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp deleted file mode 100644 index cdd07d4f..00000000 --- a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR_FORWARD_07072005_0125) -#define FUSION_VECTOR_FORWARD_07072005_0125 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - > - struct vector; -}} - -#endif diff --git a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp deleted file mode 100644 index 4a1c1431..00000000 --- a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) -#define FUSION_VECTOR_ITERATOR_05042005_0635 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_iterator_tag; - struct random_access_traversal_tag; - - template - struct vector_iterator_identity; - - template - struct vector_iterator : iterator_base > - { - typedef mpl::int_ index; - typedef Vector vector; - typedef vector_iterator_tag fusion_tag; - typedef random_access_traversal_tag category; - typedef vector_iterator_identity< - typename add_const::type, N> identity; - - vector_iterator(Vector& vec) - : vec(vec) {} - Vector& vec; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp deleted file mode 100644 index 471bd27d..00000000 --- a/include/boost/fusion/sequence/conversion.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_CONVERSION_10022005_0622) -#define FUSION_SEQUENCE_CONVERSION_10022005_0622 - -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/conversion/as_list.hpp b/include/boost/fusion/sequence/conversion/as_list.hpp deleted file mode 100644 index 02a43c76..00000000 --- a/include/boost/fusion/sequence/conversion/as_list.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_LIST_09232005_1215) -#define FUSION_AS_LIST_09232005_1215 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct as_list - { - typedef typename - detail::build_cons< - typename result_of::begin::type - , typename result_of::end::type - > - build_cons; - - typedef typename build_cons::type type; - - static type - call(Sequence& seq) - { - return build_cons::call(fusion::begin(seq), fusion::end(seq)); - } - }; - } - - template - inline typename result_of::as_list::type - as_list(Sequence& seq) - { - return result_of::as_list::call(seq); - } - - template - inline typename result_of::as_list::type - as_list(Sequence const& seq) - { - return result_of::as_list::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/conversion/as_map.hpp b/include/boost/fusion/sequence/conversion/as_map.hpp deleted file mode 100644 index 31b97a17..00000000 --- a/include/boost/fusion/sequence/conversion/as_map.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_MAP_09232005_1340) -#define FUSION_AS_MAP_09232005_1340 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct as_map - { - typedef typename detail::as_map::value> gen; - typedef typename gen:: - template apply::type>::type - type; - }; - } - - template - inline typename result_of::as_map::type - as_map(Sequence& seq) - { - typedef typename result_of::as_map::gen gen; - return gen::call(fusion::begin(seq)); - } - - template - inline typename result_of::as_map::type - as_map(Sequence const& seq) - { - typedef typename result_of::as_map::gen gen; - return gen::call(fusion::begin(seq)); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/conversion/as_set.hpp b/include/boost/fusion/sequence/conversion/as_set.hpp deleted file mode 100644 index b2cc3061..00000000 --- a/include/boost/fusion/sequence/conversion/as_set.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_SET_09232005_1341) -#define FUSION_AS_SET_09232005_1341 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct as_set - { - typedef typename detail::as_set::value> gen; - typedef typename gen:: - template apply::type>::type - type; - }; - } - - template - inline typename result_of::as_set::type - as_set(Sequence& seq) - { - typedef typename result_of::as_set::gen gen; - return gen::call(fusion::begin(seq)); - } - - template - inline typename result_of::as_set::type - as_set(Sequence const& seq) - { - typedef typename result_of::as_set::gen gen; - return gen::call(fusion::begin(seq)); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/conversion/as_vector.hpp b/include/boost/fusion/sequence/conversion/as_vector.hpp deleted file mode 100644 index 077eb564..00000000 --- a/include/boost/fusion/sequence/conversion/as_vector.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_VECTOR_09222005_1104) -#define FUSION_AS_VECTOR_09222005_1104 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct as_vector - { - typedef typename detail::as_vector::value> gen; - typedef typename gen:: - template apply::type>::type - type; - }; - } - - template - inline typename result_of::as_vector::type - as_vector(Sequence& seq) - { - typedef typename result_of::as_vector::gen gen; - return gen::call(fusion::begin(seq)); - } - - template - inline typename result_of::as_vector::type - as_vector(Sequence const& seq) - { - typedef typename result_of::as_vector::gen gen; - return gen::call(fusion::begin(seq)); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp deleted file mode 100644 index 480dbd1d..00000000 --- a/include/boost/fusion/sequence/conversion/detail/as_map.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_AS_MAP_0932005_1339) -#define FUSION_AS_MAP_0932005_1339 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct as_map; - - template <> - struct as_map<0> - { - template - struct apply - { - typedef map<> type; - }; - - template - static typename apply::type - call(Iterator) - { - return map<>(); - } - }; - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - -}}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_map - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef map type; - }; - - template - static typename apply::type - call(Iterator const& i0) - { - typedef apply gen; - typedef typename gen::type result; - BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); - } - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp deleted file mode 100644 index cfdf660f..00000000 --- a/include/boost/fusion/sequence/conversion/detail/as_set.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_AS_SET_0932005_1341) -#define FUSION_AS_SET_0932005_1341 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct as_set; - - template <> - struct as_set<0> - { - template - struct apply - { - typedef set<> type; - }; - - template - static typename apply::type - call(Iterator) - { - return set<>(); - } - }; - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - -}}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_set - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef set type; - }; - - template - static typename apply::type - call(Iterator const& i0) - { - typedef apply gen; - typedef typename gen::type result; - BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); - } - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp deleted file mode 100644 index abbca70c..00000000 --- a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_AS_VECTOR_09222005_0950) -#define FUSION_AS_VECTOR_09222005_0950 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct as_vector; - - template <> - struct as_vector<0> - { - template - struct apply - { - typedef vector<> type; - }; - - template - static typename apply::type - call(Iterator) - { - return vector<>(); - } - }; - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - -}}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_vector - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef vector type; - }; - - template - static typename apply::type - call(Iterator const& i0) - { - typedef apply gen; - typedef typename gen::type result; - BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); - } - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp deleted file mode 100644 index 0391979d..00000000 --- a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BUILD_CONS_09232005_1222) -#define FUSION_BUILD_CONS_09232005_1222 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template < - typename First - , typename Last - , bool is_empty = result_of::equal_to::value> - struct build_cons; - - template - struct build_cons - { - typedef nil type; - - static nil - call(First const&, Last const&) - { - return nil(); - } - }; - - template - struct build_cons - { - typedef - build_cons::type, Last> - next_build_cons; - - typedef cons< - typename result_of::value_of::type - , typename next_build_cons::type> - type; - - static type - call(First const& f, Last const& l) - { - return type(*f, next_build_cons::call(fusion::next(f), l)); - } - }; - -}}} - -#endif diff --git a/include/boost/fusion/sequence/generation.hpp b/include/boost/fusion/sequence/generation.hpp deleted file mode 100644 index b06b7574..00000000 --- a/include/boost/fusion/sequence/generation.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_GENERATION_10022005_0615) -#define FUSION_SEQUENCE_GENERATION_10022005_0615 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/generation/cons_tie.hpp b/include/boost/fusion/sequence/generation/cons_tie.hpp deleted file mode 100644 index 668059ee..00000000 --- a/include/boost/fusion/sequence/generation/cons_tie.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CONS_TIE_07182005_0854) -#define FUSION_CONS_TIE_07182005_0854 - -#include - -namespace boost { namespace fusion -{ - struct nil; - - namespace result_of - { - template - struct cons_tie - { - typedef cons type; - }; - } - - // $$$ do we really want a cons_tie? $$$ - template - inline cons - cons_tie(Car& car) - { - return cons(car); - } - - // $$$ do we really want a cons_tie? $$$ - template - inline cons - cons_tie(Car& car, Cdr const& cdr) - { - return cons(car, cdr); - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/generation/ignore.hpp b/include/boost/fusion/sequence/generation/ignore.hpp deleted file mode 100644 index 0ea553e1..00000000 --- a/include/boost/fusion/sequence/generation/ignore.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001 Doug Gregor - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IGNORE_07192005_0329) -#define FUSION_IGNORE_07192005_0329 - -namespace boost { namespace fusion -{ - // Swallows any assignment (by Doug Gregor) - namespace detail - { - struct swallow_assign - { - template - swallow_assign const& - operator=(const T&) const - { - return *this; - } - }; - } - - // "ignore" allows tuple positions to be ignored when using "tie". - detail::swallow_assign const ignore = detail::swallow_assign(); -}} - -#endif diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp deleted file mode 100644 index ef09e131..00000000 --- a/include/boost/fusion/sequence/generation/list_tie.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_TIE_07192005_0109) -#define FUSION_LIST_TIE_07192005_0109 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_LIST_SIZE, typename T, void_) - , typename Extra = void_ - > - struct list_tie; - } - -// $$$ shouldn't we remove_reference first to allow references? $$$ -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - struct list_tie - { - typedef list type; - }; - } - - template - inline list - list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) - { - return list( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/make_cons.hpp b/include/boost/fusion/sequence/generation/make_cons.hpp deleted file mode 100644 index 779af7b8..00000000 --- a/include/boost/fusion/sequence/generation/make_cons.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_MAKE_CONS_07172005_0918) -#define FUSION_MAKE_CONS_07172005_0918 - -#include -#include - -namespace boost { namespace fusion -{ - struct nil; - - namespace result_of - { - template - struct make_cons - { - typedef cons::type, Cdr> type; - }; - } - - template - inline cons::type> - make_cons(Car const& car) - { - return cons::type>(car); - } - - template - inline cons::type, Cdr> - make_cons(Car const& car, Cdr const& cdr) - { - return cons::type, Cdr>(car, cdr); - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp deleted file mode 100644 index 0ec08442..00000000 --- a/include/boost/fusion/sequence/generation/make_list.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_LIST_07192005_1239) -#define FUSION_MAKE_LIST_07192005_1239 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_LIST_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_list; - - template <> - struct make_list<> - { - typedef list<> type; - }; - } - - inline list<> - make_list() - { - return list<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - struct make_list - { - typedef list type; - }; - } - - template - inline list - make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - { - return list( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp deleted file mode 100644 index c97ec700..00000000 --- a/include/boost/fusion/sequence/generation/make_map.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_MAP_07222005_1247) -#define FUSION_MAKE_MAP_07222005_1247 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename K, void_) - , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename D, void_) - , typename Extra = void_ - > - struct make_map; - - template <> - struct make_map<> - { - typedef map<> type; - }; - } - - inline map<> - make_map() - { - return map<>(); - } - -#define BOOST_FUSION_PAIR(z, n, data) \ - fusion::pair< \ - BOOST_PP_CAT(K, n) \ - , typename detail::as_fusion_element::type> - -#define BOOST_FUSION_MAKE_PAIR(z, n, data) \ - fusion::make_pair(BOOST_PP_CAT(_, n)) \ - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_PAIR -#undef BOOST_FUSION_MAKE_PAIR - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - struct make_map - { - typedef map type; - }; - } - - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - inline map - make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _)) - { - return map( - BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp deleted file mode 100644 index d9924818..00000000 --- a/include/boost/fusion/sequence/generation/make_set.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_SET_09162005_1125) -#define FUSION_MAKE_SET_09162005_1125 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_set; - - template <> - struct make_set<> - { - typedef set<> type; - }; - } - - inline set<> - make_set() - { - return set<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_ELEMENT -#undef BOOST_FUSION_AS_ELEMENT - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - struct make_set - { - typedef set type; - }; - } - - template - inline set - make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - { - return set( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp deleted file mode 100644 index ff5a0611..00000000 --- a/include/boost/fusion/sequence/generation/make_vector.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_VECTOR_07162005_0243) -#define FUSION_MAKE_VECTOR_07162005_0243 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_vector; - - template <> - struct make_vector<> - { - typedef vector<> type; - }; - } - - inline vector<> - make_vector() - { - return vector<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - struct make_vector - { - typedef vector type; - }; - } - - template - inline vector - make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - { - return vector( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp deleted file mode 100644 index 8275e06c..00000000 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAP_TIE_20060814_1116) -#define FUSION_MAP_TIE_20060814_1116 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename K, void_) - , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename D, void_) - , typename Extra = void_ - > - struct map_tie; - - template <> - struct map_tie<> - { - typedef map<> type; - }; - } - - inline map<> - map_tie() - { - return map<>(); - } - -#define BOOST_FUSION_TIED_PAIR(z, n, data) \ - fusion::pair< \ - BOOST_PP_CAT(K, n) \ - , typename add_reference::type> - -#define BOOST_FUSION_PAIR_TIE(z, n, data) \ - fusion::pair_tie(BOOST_PP_CAT(_, n)) \ - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_PAIR -#undef BOOST_FUSION_MAKE_PAIR - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - struct map_tie - { - typedef map type; - }; - } - - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - inline map - map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _)) - { - return map( - BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/generation/pair_tie.hpp b/include/boost/fusion/sequence/generation/pair_tie.hpp deleted file mode 100644 index ebadfdf8..00000000 --- a/include/boost/fusion/sequence/generation/pair_tie.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined (BOOST_FUSION_PAIR_TIE_20060812_2058) -#define BOOST_FUSION_PAIR_TIE_20060812_2058 - -#include -#include - -namespace boost { namespace fusion { - - template - struct pair; - - namespace result_of - { - template - struct pair_tie - { - typedef fusion::pair type; - }; - } - - template - typename disable_if, typename result_of::pair_tie::type>::type - pair_tie(T& t) - { - return typename result_of::pair_tie::type(t); - } - - template - typename result_of::pair_tie::type - pair_tie(T const& t) - { - return typename result_of::pair_tie::type(t); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp deleted file mode 100644 index c16dc5ef..00000000 --- a/include/boost/fusion/sequence/generation/vector_tie.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_TIE_07192005_1242) -#define FUSION_VECTOR_TIE_07192005_1242 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct vector_tie; - } - -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - struct vector_tie - { - typedef vector type; - }; - } - - template - inline vector - vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) - { - return vector( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/sequence/intrinsic.hpp b/include/boost/fusion/sequence/intrinsic.hpp deleted file mode 100644 index 60bc6e81..00000000 --- a/include/boost/fusion/sequence/intrinsic.hpp +++ /dev/null @@ -1,24 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_INTRINSIC_10022005_0618) -#define FUSION_SEQUENCE_INTRINSIC_10022005_0618 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp deleted file mode 100644 index 029135db..00000000 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ /dev/null @@ -1,107 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_05042005_0722) -#define FUSION_AT_05042005_0722 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct at_impl - { - template - struct apply; - }; - - template <> - struct at_impl - { - template - struct apply : Sequence::template at {}; - }; - - template <> - struct at_impl; - - template <> - struct at_impl; - - template <> - struct at_impl; - - template <> - struct at_impl; - } - - namespace result_of - { - template - struct at - : extension::at_impl::type>:: - template apply - {}; - - template - struct at_c - : at > - {}; - } - - - template - inline typename - lazy_disable_if< - is_const - , result_of::at - >::type - at(Sequence& seq) - { - return result_of::at::call(seq); - } - - template - inline typename result_of::at::type - at(Sequence const& seq) - { - return result_of::at::call(seq); - } - - template - inline typename - lazy_disable_if< - is_const - , result_of::at_c - >::type - at_c(Sequence& seq) - { - return at >(seq); - } - - template - inline typename result_of::at_c::type - at_c(Sequence const& seq) - { - return at >(seq); - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp deleted file mode 100644 index fc29c615..00000000 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_KEY_20060304_1755) -#define BOOST_FUSION_AT_KEY_20060304_1755 - -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct at_key_impl - { - template - struct apply; - }; - - template <> - struct at_key_impl - { - template - struct apply : Sequence::template at_key {}; - }; - - template <> - struct at_key_impl; - - template <> - struct at_key_impl; - - template <> - struct at_key_impl; - } - - namespace result_of - { - template - struct at_key - : extension::at_key_impl::type>:: - template apply - {}; - } - - template - inline typename - lazy_disable_if< - is_const - , result_of::at_key - >::type - at_key(Sequence& seq) - { - return result_of::at_key::call(seq); - } - - template - inline typename result_of::at_key::type - at_key(Sequence const& seq) - { - return result_of::at_key::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/back.hpp b/include/boost/fusion/sequence/intrinsic/back.hpp deleted file mode 100644 index e2760bc0..00000000 --- a/include/boost/fusion/sequence/intrinsic/back.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BACK_09162005_0350) -#define FUSION_BACK_09162005_0350 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct fusion_sequence_tag; - - namespace result_of - { - template - struct back - : result_of::deref::type>::type> - {}; - } - - template - inline typename result_of::back::type - back(Sequence& seq) - { - return *fusion::prior(fusion::end(seq)); - } - - template - inline typename result_of::back::type - back(Sequence const& seq) - { - return *fusion::prior(fusion::end(seq)); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp deleted file mode 100644 index 2c60008d..00000000 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_04052005_1132) -#define FUSION_BEGIN_04052005_1132 - -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; // iterator facade tag - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct begin_impl - { - template - struct apply; - }; - - template <> - struct begin_impl - { - template - struct apply : Sequence::template begin {}; - }; - - template <> - struct begin_impl; - - template <> - struct begin_impl; - - template <> - struct begin_impl; - - template <> - struct begin_impl; - } - - namespace result_of - { - template - struct begin - : extension::begin_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::begin::type - begin(Sequence& seq) - { - return result_of::begin::call(seq); - } - - template - inline typename result_of::begin::type - begin(Sequence const& seq) - { - return result_of::begin::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp deleted file mode 100644 index 9013cf01..00000000 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EMPTY_09162005_0335) -#define FUSION_EMPTY_09162005_0335 - -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct mpl_sequence_tag; // mpl sequence tag - - namespace extension - { - template - struct empty_impl - { - template - struct apply - : mpl::bool_<(result_of::size::value == 0)> - {}; - }; - - template <> - struct empty_impl - { - template - struct apply : Sequence::template empty {}; - }; - - template <> - struct empty_impl; - } - - namespace result_of - { - template - struct empty - : extension::empty_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::empty::type - empty(Sequence const&) - { - typedef typename result_of::empty::type result; - return result(); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp deleted file mode 100644 index 0194e53e..00000000 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_04052005_1141) -#define FUSION_END_04052005_1141 - -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct end_impl - { - template - struct apply; - }; - - template <> - struct end_impl - { - template - struct apply : Sequence::template end {}; - }; - - template <> - struct end_impl; - - template <> - struct end_impl; - - template <> - struct end_impl; - - template <> - struct end_impl; - } - - namespace result_of - { - template - struct end - : extension::end_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::end::type - end(Sequence& seq) - { - return result_of::end::call(seq); - } - - template - inline typename result_of::end::type - end(Sequence const& seq) - { - return result_of::end::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp b/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp deleted file mode 100755 index 1d4fd220..00000000 --- a/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_SEGMENTS_04052005_1141) -#define FUSION_SEGMENTS_04052005_1141 - -#include - -namespace boost { namespace fusion -{ - // segments: returns a sequence of sequences - namespace extension - { - template - struct segments_impl - { - template - struct apply {}; - }; - } - - namespace result_of - { - template - struct segments - { - typedef typename - extension::segments_impl::type>:: - template apply::type - type; - }; - } - - template - typename result_of::segments::type - segments(Sequence & seq) - { - return - extension::segments_impl::type>:: - template apply::call(seq); - } - - template - typename result_of::segments::type - segments(Sequence const& seq) - { - return - extension::segments_impl::type>:: - template apply::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/front.hpp b/include/boost/fusion/sequence/intrinsic/front.hpp deleted file mode 100644 index 9ec99599..00000000 --- a/include/boost/fusion/sequence/intrinsic/front.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FRONT_09162005_0343) -#define FUSION_FRONT_09162005_0343 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct fusion_sequence_tag; - - namespace result_of - { - template - struct front - : result_of::deref::type> - {}; - } - - template - inline typename result_of::front::type - front(Sequence& seq) - { - return *fusion::begin(seq); - } - - template - inline typename result_of::front::type - front(Sequence const& seq) - { - return *fusion::begin(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp deleted file mode 100644 index dc0335e9..00000000 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_HAS_KEY_09232005_1454) -#define FUSION_HAS_KEY_09232005_1454 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - // Special tags: - struct sequence_facade_tag; - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct has_key_impl - { - template - struct apply - : mpl::not_::type, void_> > - {}; - }; - - template <> - struct has_key_impl - { - template - struct apply : Sequence::template has_key {}; - }; - - template <> - struct has_key_impl; - - template <> - struct has_key_impl; - - template <> - struct has_key_impl; - } - - namespace result_of - { - template - struct has_key - : extension::has_key_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::has_key::type - has_key(Sequence const& seq) - { - typedef typename result_of::has_key::type result; - return result(); - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl.hpp b/include/boost/fusion/sequence/intrinsic/mpl.hpp deleted file mode 100644 index 30bd2473..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641) -#define FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp deleted file mode 100644 index b4146c4b..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_10022005_1616) -#define FUSION_AT_10022005_1616 - -#include -#include - -namespace boost { -namespace fusion -{ - struct fusion_sequence_tag; -} - -namespace mpl -{ - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply : fusion::result_of::value_at {}; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp deleted file mode 100644 index ae06a7ce..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BACK_10022005_1620) -#define FUSION_BACK_10022005_1620 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct back_impl; - - template <> - struct back_impl - { - template - struct apply : - fusion::result_of::value_of< - typename fusion::result_of::prior< - typename fusion::result_of::end::type - >::type> {}; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp deleted file mode 100644 index e5a1aba6..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_10022005_1620) -#define FUSION_BEGIN_10022005_1620 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef fusion_iterator::type> type; - }; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp deleted file mode 100644 index 68b86bb8..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CLEAR_10022005_1817) -#define FUSION_CLEAR_10022005_1817 - -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct clear_impl; - - template <> - struct clear_impl - { - template - struct apply - { - typedef typename - fusion::detail::clear::type>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp deleted file mode 100644 index 9659f325..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_10022005_1442) -#define FUSION_AS_10022005_1442 - -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct as_impl; - - template <> - struct as_impl - { - template - struct apply : result_of::as_list {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_map {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_set {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_vector {}; - }; - - template - struct as - { - typedef typename - as_impl::template apply::type - type; - }; - -}}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp deleted file mode 100644 index 03cacb6a..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CLEAR_10022005_1442) -#define FUSION_CLEAR_10022005_1442 - -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct clear; - - template <> - struct clear : mpl::identity > {}; - - template <> - struct clear : mpl::identity > {}; - - template <> - struct clear : mpl::identity > {}; - - template <> - struct clear : mpl::identity > {}; - -}}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp deleted file mode 100644 index 8f00c24e..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp +++ /dev/null @@ -1,27 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_EMPTY_10022005_1619) -#define FUSION_EMPTY_10022005_1619 - -#include -#include - -namespace boost { namespace mpl -{ - template - struct empty_impl; - - template <> - struct empty_impl - { - template - struct apply : fusion::result_of::empty {}; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp deleted file mode 100644 index 979f659a..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_10022005_1619) -#define FUSION_END_10022005_1619 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef fusion_iterator::type> type; - }; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp deleted file mode 100644 index f10ab843..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ERASE_10022005_1835) -#define FUSION_ERASE_10022005_1835 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct erase_impl; - - template <> - struct erase_impl - { - template - struct apply - { - typedef typename - fusion::result_of::erase::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp deleted file mode 100644 index a47d0916..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ERASE_KEY_10022005_1907) -#define FUSION_ERASE_KEY_10022005_1907 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct erase_key_impl; - - template <> - struct erase_key_impl - { - template - struct apply - { - typedef typename - fusion::result_of::erase_key::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp deleted file mode 100644 index e503cadb..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FRONT_10022005_1618) -#define FUSION_FRONT_10022005_1618 - -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct front_impl; - - template <> - struct front_impl - { - template - struct apply : - fusion::result_of::value_of::type> {}; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp deleted file mode 100644 index 593f5492..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_HAS_KEY_10022005_1617) -#define FUSION_HAS_KEY_10022005_1617 - -#include -#include - -namespace boost { namespace mpl -{ - template - struct has_key_impl; - - template <> - struct has_key_impl - { - template - struct apply : fusion::result_of::has_key {}; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp deleted file mode 100644 index 677c00c6..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_INSERT_10022005_1837) -#define FUSION_INSERT_10022005_1837 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct insert_impl; - - template <> - struct insert_impl - { - template - struct apply - { - typedef typename - fusion::result_of::insert::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp deleted file mode 100644 index ad85d8d9..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_INSERT_RANGE_10022005_1838) -#define FUSION_INSERT_RANGE_10022005_1838 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct insert_range_impl; - - template <> - struct insert_range_impl - { - template - struct apply - { - typedef typename - fusion::result_of::insert_range::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp deleted file mode 100644 index c3f22cd8..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_POP_BACK_10022005_1801) -#define FUSION_POP_BACK_10022005_1801 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct pop_back_impl; - - template <> - struct pop_back_impl - { - template - struct apply - { - typedef typename - fusion::result_of::pop_back::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp deleted file mode 100644 index 1f4f6739..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_POP_FRONT_10022005_1800) -#define FUSION_POP_FRONT_10022005_1800 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct pop_front_impl; - - template <> - struct pop_front_impl - { - template - struct apply - { - typedef typename - fusion::result_of::pop_front::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp deleted file mode 100644 index 6d635691..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PUSH_BACK_10022005_1647) -#define FUSION_PUSH_BACK_10022005_1647 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct push_back_impl; - - template <> - struct push_back_impl - { - template - struct apply - { - typedef typename - fusion::result_of::push_back::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp deleted file mode 100644 index fb435502..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PUSH_FRONT_10022005_1720) -#define FUSION_PUSH_FRONT_10022005_1720 - -#include -#include -#include -#include - -namespace boost { namespace mpl -{ - template - struct push_front_impl; - - template <> - struct push_front_impl - { - template - struct apply - { - typedef typename - fusion::result_of::push_front::type - result; - - typedef typename - fusion::detail::as::type, result>::type - type; - }; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp deleted file mode 100644 index 0147a65d..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp +++ /dev/null @@ -1,27 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SIZE_10022005_1617) -#define FUSION_SIZE_10022005_1617 - -#include -#include - -namespace boost { namespace mpl -{ - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : fusion::result_of::size {}; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp deleted file mode 100644 index 231e2f74..00000000 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SIZE_05052005_0214) -#define FUSION_SIZE_05052005_0214 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct size_impl - { - template - struct apply : Sequence::size {}; - }; - - template <> - struct size_impl - { - template - struct apply : Sequence::template size {}; - }; - - template <> - struct size_impl; - - template <> - struct size_impl; - - template <> - struct size_impl; - - template <> - struct size_impl; - } - - namespace result_of - { - template - struct size - : extension::size_impl::type>:: - template apply - {}; - } - - template - inline typename result_of::size::type - size(Sequence const&) - { - typedef typename result_of::size::type result; - return result(); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp deleted file mode 100644 index bc73a162..00000000 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_05052005_0229) -#define FUSION_VALUE_AT_05052005_0229 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct value_at_impl - { - template - struct apply; - }; - - template <> - struct value_at_impl - { - template - struct apply : Sequence::template value_at {}; - }; - - template <> - struct value_at_impl; - - template <> - struct value_at_impl; - - template <> - struct value_at_impl; - - template <> - struct value_at_impl; - } - - namespace result_of - { - template - struct value_at - : extension::value_at_impl::type>:: - template apply - {}; - - template - struct value_at_c - : fusion::result_of::value_at > - {}; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp deleted file mode 100644 index 84c1cdeb..00000000 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_KEY_05052005_0229) -#define FUSION_VALUE_AT_KEY_05052005_0229 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct value_at_key_impl - { - template - struct apply; - }; - - template <> - struct value_at_key_impl - { - template - struct apply : Sequence::template value_at_key {}; - }; - - template <> - struct value_at_key_impl; - - template <> - struct value_at_key_impl; - - template <> - struct value_at_key_impl; - } - - namespace result_of - { - template - struct value_at_key - : extension::value_at_key_impl::type>:: - template apply - {}; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/io.hpp b/include/boost/fusion/sequence/io.hpp deleted file mode 100644 index 5547f15c..00000000 --- a/include/boost/fusion/sequence/io.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_IO_10032005_0836) -#define FUSION_SEQUENCE_IO_10032005_0836 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp deleted file mode 100644 index 7054bfe3..00000000 --- a/include/boost/fusion/sequence/io/detail/in.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IN_05052005_0121) -#define FUSION_IN_05052005_0121 - -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct delimiter_in - { - // read a delimiter - template - static void - read(IS& is, char const* delim, mpl::false_ = mpl::false_()) - { - detail::string_ios_manip manip(is); - manip.read(delim); - } - - template - static void - read(IS& is, char const* delim, mpl::true_) - { - } - }; - - struct read_sequence_loop - { - template - static void - call(IS& is, First const&, Last const&, mpl::true_) - { - } - - template - static void - call(IS& is, First const& first, Last const& last, mpl::false_) - { - result_of::equal_to< - typename result_of::next::type - , Last - > - is_last; - - is >> *first; - delimiter_in::read(is, " ", is_last); - call(is, fusion::next(first), last, is_last); - } - - template - static void - call(IS& is, First const& first, Last const& last) - { - result_of::equal_to eq; - call(is, first, last, eq); - } - }; - - template - inline void - read_sequence(IS& is, Sequence& seq) - { - delimiter_in::read(is, "("); - read_sequence_loop::call(is, fusion::begin(seq), fusion::end(seq)); - delimiter_in::read(is, ")"); - } -}}} - -#endif diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp deleted file mode 100644 index c5776199..00000000 --- a/include/boost/fusion/sequence/io/detail/manip.hpp +++ /dev/null @@ -1,318 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MANIP_05052005_1200) -#define FUSION_MANIP_05052005_1200 - -#include -#include -#include -#include -#include - -// Tuple I/O manipulators - -#define FUSION_GET_CHAR_TYPE(T) typename T::char_type -#define FUSION_GET_TRAITS_TYPE(T) typename T::traits_type - -#if defined (BOOST_NO_TEMPLATED_STREAMS) -#define FUSION_STRING_OF_STREAM(Stream) std::string -#else -#define FUSION_STRING_OF_STREAM(Stream) \ - std::basic_string< \ - FUSION_GET_CHAR_TYPE(Stream) \ - , FUSION_GET_TRAITS_TYPE(Stream) \ - > -#endif - -//$$$ these should be part of the public API$$$ -//$$$ rename tuple_open, tuple_close and tuple_delimiter to -// open, close and delimeter and add these synonyms to the -// TR1 tuple module. - -namespace boost { namespace fusion -{ - namespace detail - { - template - int get_xalloc_index(Tag* = 0) - { - // each Tag will have a unique index - static int index = std::ios::xalloc(); - return index; - } - - template - struct stream_data - { - struct arena - { - ~arena() - { - for ( - typename std::vector::iterator i = data.begin() - ; i != data.end() - ; ++i) - { - delete *i; - } - } - - std::vector data; - }; - - static void attach(Stream& stream, T const& data) - { - static arena ar; // our arena - ar.data.push_back(new T(data)); - stream.pword(get_xalloc_index()) = ar.data.back(); - } - - static T const* get(Stream& stream) - { - return (T const*)stream.pword(get_xalloc_index()); - } - }; - - template - class string_ios_manip - { - public: - - typedef FUSION_STRING_OF_STREAM(Stream) string_type; - - typedef stream_data stream_data_t; - - string_ios_manip(Stream& str_) - : stream(str_) - {} - - void - set(string_type const& s) - { - stream_data_t::attach(stream, s); - } - - void - print(char const* default_) const - { - // print a delimiter - string_type const* p = stream_data_t::get(stream); - if (p) - stream << *p; - else - stream << default_; - } - - void - read(char const* default_) const - { - // read a delimiter - string_type const* p = stream_data_t::get(stream); - using namespace std; - ws(stream); - - if (p) - { - typedef typename string_type::const_iterator iterator; - for (iterator i = p->begin(); i != p->end(); ++i) - check_delim(*i); - } - else - { - while (*default_) - check_delim(*default_++); - } - } - - private: - - template - void - check_delim(Char c) const - { - if (!isspace(c)) - { - if (stream.get() != c) - { - stream.unget(); - stream.setstate(std::ios::failbit); - } - } - } - - Stream& stream; - }; - - } // detail - -#if defined (BOOST_NO_TEMPLATED_STREAMS) - -#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ - namespace detail \ - { \ - struct name##_tag; \ - \ - struct name##_type \ - { \ - typedef std::string string_type; \ - string_type data; \ - name##_type(const string_type& d): data(d) {} \ - }; \ - \ - template \ - Stream& operator>>(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - \ - template \ - Stream& operator<<(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - } - -#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ - inline detail::name##_type \ - name(const std::string& s) \ - { \ - return detail::name##_type(s); \ - } \ - \ - inline detail::name##_type \ - name(const char* s) \ - { \ - return detail::name##_type(std::string(s)); \ - } \ - \ - inline detail::name##_type \ - name(char c) \ - { \ - return detail::name##_type(std::string(1, c)); \ - } - -#else // defined(BOOST_NO_TEMPLATED_STREAMS) - -#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ - template \ - inline detail::name##_type \ - name(const std::basic_string& s) \ - { \ - return detail::name##_type(s); \ - } \ - \ - inline detail::name##_type \ - name(char const* s) \ - { \ - return detail::name##_type(std::basic_string(s)); \ - } \ - \ - inline detail::name##_type \ - name(wchar_t const* s) \ - { \ - return detail::name##_type(std::basic_string(s)); \ - } \ - \ - inline detail::name##_type \ - name(char c) \ - { \ - return detail::name##_type(std::basic_string(1, c)); \ - } \ - \ - inline detail::name##_type \ - name(wchar_t c) \ - { \ - return detail::name##_type(std::basic_string(1, c)); \ - } - -#else // defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - -#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ - template \ - inline detail::name##_type \ - name(const std::basic_string& s) \ - { \ - return detail::name##_type(s); \ - } \ - \ - template \ - inline detail::name##_type \ - name(Char s[]) \ - { \ - return detail::name##_type(std::basic_string(s)); \ - } \ - \ - template \ - inline detail::name##_type \ - name(Char const s[]) \ - { \ - return detail::name##_type(std::basic_string(s)); \ - } \ - \ - template \ - inline detail::name##_type \ - name(Char c) \ - { \ - return detail::name##_type(std::basic_string(1, c)); \ - } - -#endif - -#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ - namespace detail \ - { \ - struct name##_tag; \ - \ - template > \ - struct name##_type \ - { \ - typedef std::basic_string string_type; \ - string_type data; \ - name##_type(const string_type& d): data(d) {} \ - }; \ - \ - template \ - Stream& operator>>(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - \ - template \ - Stream& operator<<(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - } \ - -#endif // defined(BOOST_NO_TEMPLATED_STREAMS) - - STD_TUPLE_DEFINE_MANIPULATOR(tuple_open) - STD_TUPLE_DEFINE_MANIPULATOR(tuple_close) - STD_TUPLE_DEFINE_MANIPULATOR(tuple_delimiter) - - STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_open) - STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_close) - STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_delimiter) - -#undef STD_TUPLE_DEFINE_MANIPULATOR -#undef STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS -#undef FUSION_STRING_OF_STREAM -#undef FUSION_GET_CHAR_TYPE -#undef FUSION_GET_TRAITS_TYPE - -}} - -#endif diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp deleted file mode 100644 index e00ed17b..00000000 --- a/include/boost/fusion/sequence/io/detail/out.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_OUT_05052005_0121) -#define FUSION_OUT_05052005_0121 - -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct delimiter_out - { - // print a delimiter - template - static void - print(OS& os, char const* delim, mpl::false_ = mpl::false_()) - { - detail::string_ios_manip manip(os); - manip.print(delim); - } - - template - static void - print(OS& os, char const* delim, mpl::true_) - { - } - }; - - struct print_sequence_loop - { - template - static void - call(OS& os, First const&, Last const&, mpl::true_) - { - } - - template - static void - call(OS& os, First const& first, Last const& last, mpl::false_) - { - result_of::equal_to< - typename result_of::next::type - , Last - > - is_last; - - os << *first; - delimiter_out::print(os, " ", is_last); - call(os, fusion::next(first), last, is_last); - } - - template - static void - call(OS& os, First const& first, Last const& last) - { - result_of::equal_to eq; - call(os, first, last, eq); - } - }; - - template - inline void - print_sequence(OS& os, Sequence const& seq) - { - delimiter_out::print(os, "("); - print_sequence_loop::call(os, fusion::begin(seq), fusion::end(seq)); - delimiter_out::print(os, ")"); - } -}}} - -#endif diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp deleted file mode 100644 index f77e14e8..00000000 --- a/include/boost/fusion/sequence/io/in.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_IN_05042005_0120) -#define BOOST_IN_05042005_0120 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - fusion::traits::is_sequence - , std::istream& - >::type - operator>>(std::istream& is, Sequence& seq) - { - detail::read_sequence(is, seq); - return is; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp deleted file mode 100644 index d5b6fcc8..00000000 --- a/include/boost/fusion/sequence/io/out.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 1999-2003 Jeremiah Willcock - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_OUT_05042005_0120) -#define BOOST_OUT_05042005_0120 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - inline typename - enable_if< - fusion::traits::is_sequence - , std::ostream& - >::type - operator<<(std::ostream& os, Sequence const& seq) - { - detail::print_sequence(os, seq); - return os; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/sequence_facade.hpp b/include/boost/fusion/sequence/sequence_facade.hpp deleted file mode 100644 index 69e3daf5..00000000 --- a/include/boost/fusion/sequence/sequence_facade.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_FACADE_09252006_1044) -#define FUSION_SEQUENCE_FACADE_09252006_1044 - -#include -#include - -namespace boost { namespace fusion -{ - struct sequence_facade_tag; - - template - struct sequence_facade : sequence_base - { - typedef sequence_facade_tag fusion_tag; - typedef Derived derived_type; - typedef Category category; - typedef IsView is_view; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/utility.hpp b/include/boost/fusion/sequence/utility.hpp deleted file mode 100644 index 35a17af9..00000000 --- a/include/boost/fusion/sequence/utility.hpp +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2006 João Abecasis -// -// Distributed under 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) -// - -#if !defined(BOOST_FUSION_SEQUENCE_UTILITY_HPP_INCLUDED) -#define BOOST_FUSION_SEQUENCE_UTILITY_HPP_INCLUDED - -# include - -#endif // include guard diff --git a/include/boost/fusion/sequence/utility/limits.hpp b/include/boost/fusion/sequence/utility/limits.hpp deleted file mode 100644 index 7f3d0136..00000000 --- a/include/boost/fusion/sequence/utility/limits.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2006 João Abecasis -// -// Distributed under 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) -// - -#if !defined(BOOST_FUSION_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED) -#define BOOST_FUSION_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED - -# if !defined(FUSION_MAX_UNPACK_ARG_SIZE) -# define FUSION_MAX_UNPACK_ARG_SIZE 10 -# endif - -#endif // include guard diff --git a/include/boost/fusion/sequence/utility/unpack_args.hpp b/include/boost/fusion/sequence/utility/unpack_args.hpp deleted file mode 100644 index a379a693..00000000 --- a/include/boost/fusion/sequence/utility/unpack_args.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// -// Copyright (c) 2005, 2006 João Abecasis -// -// Distributed under 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) -// - -#if !BOOST_PP_IS_ITERATING - -# if !defined(BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED) -# define BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -namespace boost { namespace fusion -{ - namespace detail - { - template - struct unpack_args_impl_helper - { - typedef typename remove_cv::type f_nocv; - - typedef - typename mpl::eval_if< - is_pointer, - mpl::identity, - mpl::eval_if< - is_function, - add_pointer, - mpl::identity - > - >::type - type; - }; - - template < - class F, - class Sequence, - class F_ = typename unpack_args_impl_helper::type, - class Size = mpl::int_::value> - > - struct unpack_args_impl; - - template - struct unpack_args_impl > - { - typedef typename boost::result_of::type type; - - static type call(F & f, Sequence &) - { - return f(); - } - }; - -# define BOOST_FUSION_next_iterator(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -# define BOOST_FUSION_deref_iterator(z, n, data) \ - typedef typename fusion::result_of::deref::type BOOST_PP_CAT(T, BOOST_PP_INC(n)); - -# define BOOST_FUSION_next_call_iterator(z, n, data) \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)) BOOST_PP_CAT(i, BOOST_PP_INC(n)) \ - = fusion::next(BOOST_PP_CAT(i, n)); - -# define BOOST_FUSION_n BOOST_PP_ITERATION() - -# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, FUSION_MAX_UNPACK_ARG_SIZE, \ - )) - -# include BOOST_PP_ITERATE() - -# undef BOOST_FUSION_next_iterator -# undef BOOST_FUSION_deref_iterator -# undef BOOST_FUSION_next_call_iterator -# undef BOOST_FUSION_n - -# undef BOOST_PP_ITERATION_PARAMS_1 - - } // namespace detail - - namespace result_of - { - - template - struct unpack_args - : detail::unpack_args_impl - { - }; - - } // namespace result_of - - template - inline typename result_of::unpack_args::type - unpack_args(F & f, Sequence & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F const & f, Sequence & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F & f, Sequence const & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F const & f, Sequence const & seq) - { - return result_of::unpack_args::call(f, seq); - } - -}} // namespace boost::fusion - -# endif // include guard - -#else // BOOST_PP_IS_ITERATING - - template - struct unpack_args_impl > - { - typedef typename fusion::result_of::begin::type I0; - typedef typename fusion::result_of::deref::type T0; - - BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_next_iterator, ~) - BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_deref_iterator, ~) - - typedef typename boost::result_of< - F_( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, T) ) - >::type type; - - static type call(F & f, Sequence & seq) - { - I0 i0 = fusion::begin(seq); - - BOOST_PP_REPEAT(BOOST_PP_DEC(BOOST_FUSION_n), BOOST_FUSION_next_call_iterator, ~) - - return f( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, *i) ); - } - }; - -#endif // BOOST_PP_IS_ITERATING diff --git a/include/boost/fusion/sequence/view.hpp b/include/boost/fusion/sequence/view.hpp deleted file mode 100644 index 977c4529..00000000 --- a/include/boost/fusion/sequence/view.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_10022005_0620) -#define FUSION_SEQUENCE_VIEW_10022005_0620 - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp deleted file mode 100755 index 2297aa7f..00000000 --- a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp +++ /dev/null @@ -1,179 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Eric Niebler - - 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) -==============================================================================*/ -#ifndef FUSION_MULTIPLE_VIEW_05052005_0335 -#define FUSION_MULTIPLE_VIEW_05052005_0335 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct multiple_view_tag; - struct forward_traversal_tag; - struct fusion_sequence_tag; - - template - struct multiple_view - : sequence_base > - { - typedef multiple_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_traversal_tag category; - typedef mpl::true_ is_view; - typedef mpl::int_ size; - typedef T value_type; - - multiple_view() - : val() - {} - - explicit multiple_view(typename detail::call_param::type val) - : val(val) - {} - - value_type val; - }; - - template - inline multiple_view::type> - make_multiple_view(T const& v) - { - return multiple_view::type>(v); - } - - struct multiple_view_iterator_tag; - struct forward_traversal_tag; - - template - struct multiple_view_iterator - : iterator_base > - { - typedef multiple_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - typedef typename MultipleView::value_type value_type; - typedef MultipleView multiple_view_type; - typedef Index index; - - explicit multiple_view_iterator(multiple_view_type const &view_) - : view(view_) - {} - - multiple_view_type view; - }; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef multiple_view_iterator< - typename mpl::next::type - , typename Iterator::multiple_view_type - > type; - - static type - call(Iterator const &where) - { - return type(where.view); - } - }; - }; - - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef multiple_view_iterator< - typename Sequence::size - , Sequence - > type; - - static type - call(Sequence &seq) - { - return type(seq); - } - }; - }; - - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::value_type type; - - static type - call(Iterator const& i) - { - return i.view.val; - } - }; - }; - - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef multiple_view_iterator< - mpl::int_<0> - , Sequence - > type; - - static type - call(Sequence &seq) - { - return type(seq); - } - }; - }; - - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::multiple_view_type multiple_view_type; - typedef typename multiple_view_type::value_type type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp deleted file mode 100755 index acde578c..00000000 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp +++ /dev/null @@ -1,425 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#ifndef FUSION_SEGMENTED_ITERATOR_EAN_05032006_1027 -#define FUSION_SEGMENTED_ITERATOR_EAN_05032006_1027 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for nil -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct fusion_sequence_tag; - - namespace detail - { - using mpl::_; - using mpl::not_; - - //////////////////////////////////////////////////////////////////////////// - template - struct is_empty - : result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type - > - {}; - - template - struct is_empty - : is_empty - {}; - - struct segmented_range_tag; - - //////////////////////////////////////////////////////////////////////////// - template - struct segmented_range - : sequence_base > - { - BOOST_MPL_ASSERT_NOT((is_reference)); - typedef mpl::bool_ is_segmented; - typedef segmented_range_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - typedef Iterator iterator_type; - - // If this is a range of segments, skip over the empty ones - typedef typename mpl::if_< - is_segmented - , filter_view > > - , Sequence - >::type sequence_non_ref_type; - - typedef typename mpl::if_< - traits::is_view - , sequence_non_ref_type - , sequence_non_ref_type & - >::type sequence_type; - - typedef typename traits::category_of::type category; - - explicit segmented_range(Sequence &sequence_) - : sequence(sequence_type(sequence_)) - , where(fusion::begin(sequence)) - {} - - segmented_range(sequence_type sequence_, iterator_type const &where_) - : sequence(sequence_) - , where(where_) - {} - - sequence_type sequence; - iterator_type where; - }; - } - - namespace extension - { - template<> - struct is_segmented_impl - { - template - struct apply - : Sequence::is_segmented - {}; - }; - - template<> - struct size_impl - { - template - struct apply - : mpl::int_< - result_of::distance< - typename Sequence::iterator_type - , typename result_of::end::type - >::value - > - {}; - }; - - template<> - struct segments_impl - { - template - struct apply - { - typedef Sequence &type; - static type call(Sequence &seq) - { - return seq; - } - }; - }; - - template<> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::iterator_type type; - static type call(Sequence &seq) - { - return seq.where; - } - }; - }; - - template<> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::sequence_non_ref_type sequence; - typedef typename result_of::end::type type; - - static type call(Sequence &seq) - { - return fusion::end(seq.sequence); - } - }; - }; - } - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - struct range_next; - - template - struct range_next > - { - typedef typename result_of::next::type iterator_type; - typedef segmented_range type; - - static type call(segmented_range const &rng) - { - return type(rng.sequence, fusion::next(rng.where)); - } - }; - - /////////////////////////////////////////////////////////////////////// - template - struct is_range_next_empty - : is_empty::type> - {}; - - template<> - struct is_range_next_empty - : mpl::true_ - {}; - - /////////////////////////////////////////////////////////////////////// - template::value> - struct as_segmented_range - { - typedef typename result_of::segments::type segments; - typedef typename remove_reference::type sequence; - typedef typename result_of::begin > > >::type begin; - typedef segmented_range type; - - static type call(Sequence &seq) - { - segments segs(fusion::segments(seq)); - return type(segs); - } - }; - - template - struct as_segmented_range - { - typedef typename remove_reference::type sequence; - typedef typename result_of::begin::type begin; - typedef segmented_range type; - - static type call(Sequence &seq) - { - return type(seq); - } - }; - - template - struct as_segmented_range, IsSegmented> - { - typedef segmented_range type; - static type &call(type &seq) - { - return seq; - } - }; - - /////////////////////////////////////////////////////////////////////// - template< - typename Sequence - , typename State = nil - , bool IsSegmented = traits::is_segmented::value - > - struct push_segments - { - typedef typename as_segmented_range::type range; - typedef typename result_of::begin::type begin; - typedef typename result_of::deref::type next_ref; - typedef typename remove_reference::type next; - typedef push_segments > push; - typedef typename push::type type; - - static type call(Sequence &seq, State const &state) - { - range rng(as_segmented_range::call(seq)); - next_ref nxt(*fusion::begin(rng)); - return push::call(nxt, fusion::make_cons(rng, state)); - } - }; - - template - struct push_segments - { - typedef typename as_segmented_range::type range; - typedef cons type; - - static type call(Sequence &seq, State const &state) - { - range rng(as_segmented_range::call(seq)); - return fusion::make_cons(rng, state); - } - }; - - /////////////////////////////////////////////////////////////////////// - template::value> - struct pop_segments - { - typedef range_next next; - typedef push_segments push; - typedef typename push::type type; - - static type call(State const &state) - { - typename next::type rng(next::call(state.car)); - return push::call(rng, state.cdr); - } - }; - - template - struct pop_segments - { - typedef pop_segments pop; - typedef typename pop::type type; - - static type call(State const &state) - { - return pop::call(state.cdr); - } - }; - - template<> - struct pop_segments - { - typedef nil type; - - static type call(nil const &) - { - return nil(); - } - }; - } // namespace detail - - struct segmented_iterator_tag; - - //////////////////////////////////////////////////////////////////////////// - template - struct segmented_iterator - : fusion::iterator_base > - { - typedef segmented_iterator_tag fusion_tag; - typedef fusion::forward_traversal_tag category; - - typedef Cons cons_type; - typedef typename Cons::car_type car_type; - typedef typename Cons::cdr_type cdr_type; - - explicit segmented_iterator(Cons const &cons) - : cons_(cons) - {} - - cons_type const &cons() const { return this->cons_; }; - car_type const &car() const { return this->cons_.car; }; - cdr_type const &cdr() const { return this->cons_.cdr; }; - - private: - Cons cons_; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct segmented_begin - { - typedef typename detail::push_segments push; - typedef segmented_iterator type; - - static type call(Sequence &seq) - { - return type(push::call(seq, nil())); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct segmented_end - { - typedef segmented_iterator type; - - static type call(Sequence &) - { - return type(nil()); - } - }; - - namespace extension - { - template<> - struct value_of_impl - { - template - struct apply - { - typedef typename result_of::begin::type begin; - typedef typename result_of::value_of::type type; - }; - }; - - template<> - struct deref_impl - { - template - struct apply - { - typedef typename result_of::begin::type begin; - typedef typename result_of::deref::type type; - - static type call(Iterator const &it) - { - return *fusion::begin(it.car()); - } - }; - }; - - // discards the old head, expands the right child of the new head - // and pushes the result to the head of the list. - - template<> - struct next_impl - { - template< - typename Iterator - , bool IsSegmentDone = detail::is_range_next_empty::value - > - struct apply - { - typedef typename Iterator::cdr_type cdr_type; - typedef detail::range_next next; - typedef segmented_iterator > type; - - static type call(Iterator const &it) - { - return type(fusion::make_cons(next::call(it.car()), it.cdr())); - } - }; - - template - struct apply // segment done, move to next segment - { - typedef typename Iterator::cdr_type cdr_type; - typedef typename detail::pop_segments pop; - typedef segmented_iterator type; - - static type call(Iterator const &it) - { - return type(pop::call(it.cdr())); - } - }; - }; - } -}} // namespace boost::fusion - -#endif diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp deleted file mode 100755 index 7bab8789..00000000 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp +++ /dev/null @@ -1,522 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#ifndef FUSION_SEGMENTED_ITERATOR_RANGE_EAN_05032006_1027 -#define FUSION_SEGMENTED_ITERATOR_RANGE_EAN_05032006_1027 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - namespace detail - { - //////////////////////////////////////////////////////////////////////////// - template - struct reverse_cons; - - template - struct reverse_cons, State> - { - typedef reverse_cons > reverse; - typedef typename reverse::type type; - - static type call(cons const &cons, State const &state = State()) - { - return reverse::call(cons.cdr, fusion::make_cons(cons.car, state)); - } - }; - - template - struct reverse_cons - { - typedef State type; - - static State const &call(nil const &, State const &state = State()) - { - return state; - } - }; - - //////////////////////////////////////////////////////////////////////////// - // tags - struct full_view {}; - struct left_view {}; - struct right_view {}; - struct center_view {}; - - template - struct segmented_view_tag; - - //////////////////////////////////////////////////////////////////////////// - // a segmented view of that includes all elements either to the - // right or the left of a segmented iterator. - template - struct segmented_view - : sequence_base > - { - typedef segmented_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - typedef forward_traversal_tag category; - - explicit segmented_view(Cons1 const &cons) - : cons(cons) - {} - - typedef Cons1 cons_type; - cons_type const &cons; - }; - - // a segmented view that contains all the elements in between - // two segmented iterators - template - struct segmented_view - : sequence_base > - { - typedef segmented_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - typedef forward_traversal_tag category; - - segmented_view(Cons1 const &lcons, Cons2 const &rcons) - : left_cons(lcons) - , right_cons(rcons) - {} - - typedef Cons1 left_cons_type; - typedef Cons2 right_cons_type; - - left_cons_type const &left_cons; - right_cons_type const &right_cons; - }; - - //////////////////////////////////////////////////////////////////////////// - // Used to transform a sequence of segments. The first segment is - // bounded by RightCons, and the last segment is bounded by LeftCons - // and all the others are passed through unchanged. - template - struct segments_transform - { - explicit segments_transform(RightCons const &cons_) - : right_cons(cons_) - , left_cons(cons_) - {} - - segments_transform(RightCons const &right_cons_, LeftCons const &left_cons_) - : right_cons(right_cons_) - , left_cons(left_cons_) - {} - - template - struct result; - - template - struct result - { - typedef segmented_view type; - }; - - template - struct result - { - typedef segmented_view type; - }; - - template - struct result - { - typedef Second type; - }; - - template - segmented_view operator ()(right_view, Second &second) const - { - return segmented_view(this->right_cons); - } - - template - segmented_view operator ()(left_view, Second &second) const - { - return segmented_view(this->left_cons); - } - - template - Second &operator ()(full_view, Second &second) const - { - return second; - } - - private: - RightCons const &right_cons; - LeftCons const &left_cons; - }; - - } // namespace detail - - namespace extension - { - //////////////////////////////////////////////////////////////////////////// - template - struct is_segmented_impl > - { - template - struct apply - : mpl::true_ - {}; - }; - - //////////////////////////////////////////////////////////////////////////// - template<> - struct segments_impl > - { - template< - typename Sequence - , typename Cdr = typename Sequence::cons_type::cdr_type - > - struct apply - { - typedef typename Sequence::cons_type::car_type segmented_range; - typedef typename result_of::size::type size; - typedef typename mpl::prior::type size_minus_1; - typedef detail::segments_transform tfx; - typedef joint_view< - single_view const - , multiple_view const - > mask; - typedef transform_view type; - - static type call(Sequence &seq) - { - return type( - mask( - make_single_view(detail::right_view()) - , make_multiple_view(detail::full_view()) - ) - , seq.cons.car - , tfx(seq.cons.cdr) - ); - } - }; - - template - struct apply - { - typedef typename Sequence::cons_type::car_type segmented_range; - typedef typename segmented_range::iterator_type begin; - typedef typename segmented_range::sequence_non_ref_type sequence_type; - typedef typename result_of::end::type end; - typedef iterator_range range; - typedef single_view type; - - static type call(Sequence &seq) - { - return type(range(seq.cons.car.where, fusion::end(seq.cons.car.sequence))); - } - }; - }; - - //////////////////////////////////////////////////////////////////////////// - template<> - struct segments_impl > - { - template< - typename Sequence - , typename Cdr = typename Sequence::cons_type::cdr_type - > - struct apply - { - typedef typename Sequence::cons_type::car_type right_segmented_range; - typedef typename right_segmented_range::sequence_type sequence_type; - typedef typename right_segmented_range::iterator_type iterator_type; - - typedef iterator_range< - typename result_of::begin::type - , typename result_of::next::type - > segmented_range; - - typedef detail::segments_transform tfx; - typedef typename result_of::size::type size; - typedef typename mpl::prior::type size_minus_1; - typedef joint_view< - multiple_view const - , single_view const - > mask; - typedef transform_view type; - - static type call(Sequence &seq) - { - return type( - mask( - make_multiple_view(detail::full_view()) - , make_single_view(detail::left_view()) - ) - , segmented_range(fusion::begin(seq.cons.car.sequence), fusion::next(seq.cons.car.where)) - , tfx(seq.cons.cdr) - ); - } - }; - - template - struct apply - { - typedef typename Sequence::cons_type::car_type segmented_range; - typedef typename segmented_range::sequence_non_ref_type sequence_type; - typedef typename result_of::begin::type begin; - typedef typename segmented_range::iterator_type end; - typedef iterator_range range; - typedef single_view type; - - static type call(Sequence &seq) - { - return type(range(fusion::begin(seq.cons.car.sequence), seq.cons.car.where)); - } - }; - }; - - //////////////////////////////////////////////////////////////////////////// - template<> - struct segments_impl > - { - template - struct apply - { - typedef typename Sequence::right_cons_type right_cons_type; - typedef typename Sequence::left_cons_type left_cons_type; - typedef typename right_cons_type::car_type right_segmented_range; - typedef typename left_cons_type::car_type left_segmented_range; - - typedef iterator_range< - typename result_of::begin::type - , typename result_of::next::type>::type - > segmented_range; - - typedef typename mpl::minus< - typename result_of::size::type - , mpl::int_<2> - >::type size_minus_2; - - BOOST_MPL_ASSERT_RELATION(0, <=, size_minus_2::value); - - typedef detail::segments_transform< - typename left_cons_type::cdr_type - , typename right_cons_type::cdr_type - > tfx; - - typedef joint_view< - multiple_view const - , single_view const - > left_mask; - - typedef joint_view< - single_view const - , left_mask const - > mask; - - typedef transform_view type; - - static type call(Sequence &seq) - { - left_mask lmask( - make_multiple_view(detail::full_view()) - , make_single_view(detail::left_view()) - ); - return type( - mask(make_single_view(detail::right_view()), lmask) - , segmented_range(fusion::begin(seq.left_cons.car), fusion::next(fusion::begin(seq.right_cons.car))) - , tfx(seq.left_cons.cdr, seq.right_cons.cdr) - ); - } - }; - }; - } - - // specialize iterator_range for use with segmented iterators, so that - // it presents a segmented view of the range. - template - struct iterator_range; - - template - struct iterator_range, segmented_iterator > - : sequence_base, segmented_iterator > > - { - typedef typename convert_iterator >::type begin_type; - typedef typename convert_iterator >::type end_type; - typedef typename detail::reverse_cons::type begin_cons_type; - typedef typename detail::reverse_cons::type end_cons_type; - typedef iterator_range_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef typename traits::category_of::type category; - typedef typename result_of::distance::type size; - typedef mpl::true_ is_view; - - iterator_range(segmented_iterator const& first_, segmented_iterator const& last_) - : first(convert_iterator >::call(first_)) - , last(convert_iterator >::call(last_)) - , first_cons(detail::reverse_cons::call(first_.cons())) - , last_cons(detail::reverse_cons::call(last_.cons())) - {} - - begin_type first; - end_type last; - - begin_cons_type first_cons; - end_cons_type last_cons; - }; - - namespace detail - { - - template - struct same_segment - : mpl::false_ - {}; - - template - struct same_segment, cons > - : mpl::and_< - traits::is_segmented - , is_same - > - {}; - - //////////////////////////////////////////////////////////////////////////// - template - struct segments_gen; - - //////////////////////////////////////////////////////////////////////////// - template - struct segments_gen2 - { - typedef segments_gen gen; - typedef typename gen::type type; - - static type call(Cons1 const &cons1, Cons2 const &cons2) - { - return gen::call(cons1.cdr, cons2.cdr); - } - }; - - template - struct segments_gen2 - { - typedef segmented_view view; - typedef typename result_of::segments::type type; - - static type call(Cons1 const &cons1, Cons2 const &cons2) - { - view v(cons1, cons2); - return fusion::segments(v); - } - }; - - template - struct segments_gen2, cons, false> - { - typedef iterator_range< - typename Car1::iterator_type - , typename Car2::iterator_type - > range; - - typedef single_view type; - - static type call(cons const &cons1, cons const &cons2) - { - return type(range(cons1.car.where, cons2.car.where)); - } - }; - - //////////////////////////////////////////////////////////////////////////// - template - struct segments_gen - : segments_gen2::value> - {}; - - template - struct segments_gen, nil> - { - typedef segmented_view > view; - typedef typename result_of::segments::type type; - - static type call(cons const &cons, nil const &) - { - view v(cons); - return fusion::segments(v); - } - }; - - template<> - struct segments_gen - { - typedef nil type; - - static type call(nil const &, nil const &) - { - return nil(); - } - }; - } // namespace detail - - namespace extension - { - template - struct is_segmented_impl; - - // An iterator_range of segmented_iterators is segmented - template<> - struct is_segmented_impl - { - template - struct is_segmented_iterator : mpl::false_ {}; - - template - struct is_segmented_iterator > : mpl::true_ {}; - - template - struct apply - : mpl::and_< - is_segmented_iterator - , is_segmented_iterator - > - {}; - }; - - template - struct segments_impl; - - template<> - struct segments_impl - { - template - struct apply - { - typedef typename Sequence::begin_cons_type begin_cons; - typedef typename Sequence::end_cons_type end_cons; - - typedef detail::segments_gen gen; - typedef typename gen::type type; - - static type call(Sequence &sequence) - { - return gen::call(sequence.first_cons, sequence.last_cons); - } - }; - }; - } - -}} - -#endif diff --git a/include/boost/fusion/sequence/view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view.hpp deleted file mode 100644 index c5416662..00000000 --- a/include/boost/fusion/sequence/view/filter_view.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) -#define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp deleted file mode 100644 index 42999deb..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05062005_0903) -#define FUSION_BEGIN_IMPL_05062005_0903 - -namespace boost { namespace fusion -{ - struct filter_view_tag; - - template - struct filter_iterator; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::first_type first_type; - typedef typename Sequence::last_type last_type; - typedef typename Sequence::pred_type pred_type; - typedef filter_iterator type; - - static type - call(Sequence& s) - { - return type(s.first()); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp deleted file mode 100644 index fd46bf86..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_05062005_0905) -#define FUSION_DEREF_IMPL_05062005_0905 - -#include - -namespace boost { namespace fusion -{ - struct filter_view_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - : detail::adapt_deref_traits {}; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp deleted file mode 100644 index bdaed67d..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_05062005_0906) -#define FUSION_END_IMPL_05062005_0906 - -namespace boost { namespace fusion -{ - struct filter_view_tag; - - template - struct filter_iterator; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::last_type last_type; - typedef typename Sequence::pred_type pred_type; - typedef filter_iterator type; - - static type - call(Sequence& s) - { - return type(s.last()); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp deleted file mode 100644 index 33e92555..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_02012005_2133) -#define BOOST_FUSION_EQUAL_TO_IMPL_02012005_2133 - -namespace boost { namespace fusion -{ - struct filter_view_iterator_tag; - - namespace extension - { - template - struct equal_to; - - template - struct equal_to_impl; - - template<> - struct equal_to_impl - { - template - struct apply - : result_of::equal_to - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp deleted file mode 100644 index 3b35f9c6..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_06052005_0900) -#define FUSION_NEXT_IMPL_06052005_0900 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct filter_view_iterator_tag; - - template - struct filter_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename Iterator::last_type last_type; - typedef typename Iterator::pred_type pred_type; - - typedef typename - mpl::eval_if< - result_of::equal_to - , mpl::identity - , result_of::next - >::type - next_type; - - typedef typename detail::static_find_if< - next_type, last_type, pred_type> - filter; - - typedef filter_iterator< - typename filter::type, last_type, pred_type> - type; - - static type - call(Iterator const& i) - { - return type(filter::call(i.first)); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp deleted file mode 100644 index 55b91d36..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SIZE_IMPL_09232005_1058) -#define FUSION_SIZE_IMPL_09232005_1058 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct filter_view_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply - : result_of::distance< - typename result_of::begin::type - , typename result_of::end::type> - {}; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp deleted file mode 100644 index 4114dd9f..00000000 --- a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_05062005_0857) -#define FUSION_VALUE_OF_IMPL_05062005_0857 - -#include - -namespace boost { namespace fusion -{ - struct filter_view_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - : detail::adapt_value_traits {}; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp deleted file mode 100644 index 69e0b80f..00000000 --- a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_FILTER_VIEW_HPP) -#define FUSION_SEQUENCE_FILTER_VIEW_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct filter_view_tag; - struct forward_traversal_tag; - struct fusion_sequence_tag; - - template - struct filter_view : sequence_base > - { - typedef filter_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_traversal_tag category; - typedef mpl::true_ is_view; - - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - typedef Pred pred_type; - - filter_view(Sequence& seq) - : seq(seq) - {} - - first_type first() const { return fusion::begin(seq); } - last_type last() const { return fusion::end(seq); } - typename mpl::if_, Sequence, Sequence&>::type seq; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp deleted file mode 100644 index bf6a9aec..00000000 --- a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) -#define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct filter_view_iterator_tag; - struct forward_traversal_tag; - - template - struct filter_iterator : iterator_base > - { - typedef convert_iterator first_converter; - typedef typename first_converter::type first_iter; - typedef convert_iterator last_converter; - typedef typename last_converter::type last_iter; - - typedef filter_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - typedef detail::static_find_if filter; - typedef typename filter::type first_type; - typedef last_iter last_type; - typedef Pred pred_type; - - filter_iterator(First const& first) - : first(filter::call(first_converter::call(first))) {} - - first_type first; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range.hpp deleted file mode 100644 index 15fab150..00000000 --- a/include/boost/fusion/sequence/view/iterator_range.hpp +++ /dev/null @@ -1,13 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) -#define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 - -#include - -#endif diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp deleted file mode 100644 index 8cde61be..00000000 --- a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05062005_1226) -#define FUSION_BEGIN_IMPL_05062005_1226 - -namespace boost { namespace fusion -{ - struct iterator_range_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::begin_type type; - - static type - call(Sequence& s) - { - return s.first; - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp deleted file mode 100644 index dfd1ee2e..00000000 --- a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_05062005_1226) -#define FUSION_END_IMPL_05062005_1226 - -namespace boost { namespace fusion -{ - struct iterator_range_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::end_type type; - - static type - call(Sequence& s) - { - return s.last; - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp deleted file mode 100644 index 87635f79..00000000 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_RANGE_05062005_1224) -#define FUSION_ITERATOR_RANGE_05062005_1224 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct iterator_range_tag; - struct fusion_sequence_tag; - - template - struct iterator_range : sequence_base > - { - typedef typename convert_iterator::type begin_type; - typedef typename convert_iterator::type end_type; - typedef iterator_range_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef typename result_of::distance::type size; - typedef mpl::true_ is_view; - - typedef typename traits::category_of::type category; - - iterator_range(First const& first, Last const& last) - : first(convert_iterator::call(first)) - , last(convert_iterator::call(last)) {} - - begin_type first; - end_type last; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view.hpp deleted file mode 100644 index 64c22604..00000000 --- a/include/boost/fusion/sequence/view/joint_view.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) -#define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp deleted file mode 100644 index 83bc970e..00000000 --- a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_07162005_0115) -#define FUSION_BEGIN_IMPL_07162005_0115 - -#include -#include - -namespace boost { namespace fusion -{ - struct joint_view_tag; - - template - struct joint_view_iterator; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::first_type first_type; - typedef typename Sequence::last_type last_type; - typedef typename Sequence::concat_type concat_type; - typedef result_of::equal_to equal_to; - - typedef typename - mpl::if_< - equal_to - , concat_type - , joint_view_iterator - >::type - type; - - static type - call(Sequence& s, mpl::true_) - { - return s.concat(); - } - - static type - call(Sequence& s, mpl::false_) - { - return type(s.first(), s.concat()); - } - - static type - call(Sequence& s) - { - return call(s, equal_to()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp deleted file mode 100644 index 2e927b23..00000000 --- a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_07162005_0137) -#define FUSION_DEREF_IMPL_07162005_0137 - -#include - -namespace boost { namespace fusion -{ - struct joint_view_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - : detail::adapt_deref_traits {}; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp deleted file mode 100644 index b39a56b2..00000000 --- a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_07162005_0128) -#define FUSION_END_IMPL_07162005_0128 - -#include -#include - -namespace boost { namespace fusion -{ - struct joint_view_tag; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::concat_last_type type; - - static type - call(Sequence& s) - { - return s.concat_last(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp deleted file mode 100644 index 1f6d78f6..00000000 --- a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_07162005_0136) -#define FUSION_NEXT_IMPL_07162005_0136 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct joint_view_iterator_tag; - - template - struct joint_view_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename Iterator::last_type last_type; - typedef typename Iterator::concat_type concat_type; - typedef typename result_of::next::type next_type; - typedef result_of::equal_to equal_to; - - typedef typename - mpl::if_< - equal_to - , concat_type - , joint_view_iterator - >::type - type; - - static type - call(Iterator const& i, mpl::true_) - { - return i.concat; - } - - static type - call(Iterator const& i, mpl::false_) - { - return type(fusion::next(i.first), i.concat); - } - - static type - call(Iterator const& i) - { - return call(i, equal_to()); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp deleted file mode 100644 index 68cb053d..00000000 --- a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_IMPL_07162005_0132) -#define FUSION_VALUE_IMPL_07162005_0132 - -#include - -namespace boost { namespace fusion -{ - struct joint_view_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - : detail::adapt_value_traits {}; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp deleted file mode 100644 index 40abc41c..00000000 --- a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_JOINT_VIEW_07162005_0140) -#define FUSION_JOINT_VIEW_07162005_0140 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct joint_view_tag; - struct forward_traversal_tag; - struct fusion_sequence_tag; - - template - struct joint_view : sequence_base > - { - typedef joint_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_traversal_tag category; - typedef mpl::true_ is_view; - - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - typedef typename result_of::begin::type concat_type; - typedef typename result_of::end::type concat_last_type; - typedef typename mpl::plus, result_of::size >::type size; - - joint_view(Sequence1& seq1, Sequence2& seq2) - : seq1(seq1) - , seq2(seq2) - {} - - first_type first() const { return fusion::begin(seq1); } - concat_type concat() const { return fusion::begin(seq2); } - concat_last_type concat_last() const { return fusion::end(seq2); } - - private: - - typename mpl::if_, Sequence1, Sequence1&>::type seq1; - typename mpl::if_, Sequence2, Sequence2&>::type seq2; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp deleted file mode 100644 index ca93e418..00000000 --- a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) -#define FUSION_JOINT_VIEW_ITERATOR_07162005_0140 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct joint_view_iterator_tag; - struct forward_traversal_tag; - - template - struct joint_view_iterator - : iterator_base > - { - typedef convert_iterator first_converter; - typedef convert_iterator last_converter; - typedef convert_iterator concat_converter; - - typedef typename first_converter::type first_type; - typedef typename last_converter::type last_type; - typedef typename concat_converter::type concat_type; - - typedef joint_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - BOOST_STATIC_ASSERT((!result_of::equal_to::value)); - - joint_view_iterator(First const& first, Concat const& concat) - : first(first_converter::call(first)) - , concat(concat_converter::call(concat)) - {} - - first_type first; - concat_type concat; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view.hpp deleted file mode 100644 index cf782dac..00000000 --- a/include/boost/fusion/sequence/view/reverse_view.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) -#define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp deleted file mode 100644 index 4508c9db..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_14122005_2015) -#define FUSION_ADVANCE_IMPL_14122005_2015 - -#include -#include - -namespace boost { namespace fusion { - - struct reverse_view_iterator_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template - struct advance_impl; - - template<> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename mpl::negate::type negative_dist; - typedef typename result_of::advance::type advanced_type; - typedef reverse_view_iterator type; - - static type - call(Iterator const& i) - { - return type(boost::fusion::advance(i.first)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp deleted file mode 100644 index 77ec5aac..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_07202005_0849) -#define FUSION_BEGIN_IMPL_07202005_0849 - -namespace boost { namespace fusion -{ - struct reverse_view_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef reverse_view_iterator type; - - static type - call(Sequence const& s) - { - return type(s.last()); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp deleted file mode 100644 index f6dc07c4..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_07202005_0851) -#define FUSION_DEREF_IMPL_07202005_0851 - -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename - result_of::deref< - typename result_of::prior< - typename Iterator::first_type - >::type - >::type - type; - - static type - call(Iterator const& i) - { - return *fusion::prior(i.first); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp deleted file mode 100644 index b6db99cd..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_14122005_2104) -#define FUSION_DISTANCE_IMPL_14122005_2104 - -#include - -namespace boost { namespace fusion { - - struct reverse_view_iterator_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template - struct distance_impl; - - template<> - struct distance_impl - { - template - struct apply - { - typedef typename First::first_type first_type; - typedef typename Last::first_type last_type; - typedef typename result_of::distance::type type; - - static type - call(First const& first, Last const& last) - { - return boost::fusion::distance(last.first, first.first); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp deleted file mode 100644 index 39e28dd0..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_07202005_0851) -#define FUSION_END_IMPL_07202005_0851 - -namespace boost { namespace fusion -{ - struct reverse_view_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef reverse_view_iterator type; - - static type - call(Sequence const& s) - { - return type(s.first()); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp deleted file mode 100644 index 3e075ce5..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_07202005_0856) -#define FUSION_NEXT_IMPL_07202005_0856 - -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_iterator_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename prior_impl:: - template apply - wrapped; - - typedef reverse_view_iterator type; - - static type - call(Iterator const& i) - { - return type(wrapped::call(i.first)); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp deleted file mode 100644 index 3c9d63c3..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_07202005_0857) -#define FUSION_PRIOR_IMPL_07202005_0857 - -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_iterator_tag; - - template - struct reverse_view_iterator; - - namespace extension - { - template <> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename next_impl:: - template apply - wrapped; - - typedef reverse_view_iterator type; - - static type - call(Iterator const& i) - { - return type(wrapped::call(i.first)); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp deleted file mode 100644 index 1d8f93a0..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_07202005_0900) -#define FUSION_VALUE_OF_IMPL_07202005_0900 - -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename - result_of::value_of< - typename result_of::prior< - typename Iterator::first_type - >::type - >::type - type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp deleted file mode 100644 index e8fb92a8..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REVERSE_VIEW_07202005_0836) -#define FUSION_REVERSE_VIEW_07202005_0836 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_tag; - struct fusion_sequence_tag; - - template - struct reverse_view : sequence_base > - { - typedef reverse_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - - typedef typename traits::category_of::type category; - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - typedef typename result_of::size::type size; - - BOOST_STATIC_ASSERT(( - is_base_of< - bidirectional_traversal_tag - , typename traits::category_of::type>::value)); - - reverse_view(Sequence& seq) - : seq(seq) - {} - - first_type first() const { return fusion::begin(seq); } - last_type last() const { return fusion::end(seq); } - typename mpl::if_, Sequence, Sequence&>::type seq; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp deleted file mode 100644 index 6f09d1cb..00000000 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) -#define FUSION_REVERSE_VIEW_ITERATOR_07202005_0835 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct reverse_view_iterator_tag; - - template - struct reverse_view_iterator - : iterator_base > - { - typedef convert_iterator converter; - typedef typename converter::type first_type; - typedef reverse_view_iterator_tag fusion_tag; - typedef typename traits::category_of::type category; - - BOOST_STATIC_ASSERT(( - is_base_of< - bidirectional_traversal_tag - , category>::value)); - - reverse_view_iterator(First const& first) - : first(converter::call(first)) {} - - first_type first; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/view/single_view.hpp b/include/boost/fusion/sequence/view/single_view.hpp deleted file mode 100644 index 65410a36..00000000 --- a/include/boost/fusion/sequence/view/single_view.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SINGLE_VIEW_03192006_2216) -#define FUSION_SINGLE_VIEW_03192006_2216 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp deleted file mode 100644 index 18ca8104..00000000 --- a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_05052005_0305) -#define FUSION_BEGIN_IMPL_05052005_0305 - -namespace boost { namespace fusion -{ - struct single_view_tag; - - template - struct single_view_iterator; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef single_view_iterator type; - - static type - call(Sequence& s) - { - return type(s); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp deleted file mode 100644 index d46bccef..00000000 --- a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_05052005_0258) -#define FUSION_DEREF_IMPL_05052005_0258 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct single_view_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::value_type type; - - static type - call(Iterator const& i) - { - return i.val; - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp deleted file mode 100644 index 576985c5..00000000 --- a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_05052005_0332) -#define FUSION_END_IMPL_05052005_0332 - -namespace boost { namespace fusion -{ - struct single_view_tag; - - template - struct single_view_iterator_end; - - namespace extension - { - template - struct end_impl; - - template <> - struct end_impl - { - template - struct apply - { - typedef single_view_iterator_end type; - - static type - call(Sequence&) - { - return type(); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp deleted file mode 100644 index 02b823e5..00000000 --- a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_05052005_0331) -#define FUSION_NEXT_IMPL_05052005_0331 - -namespace boost { namespace fusion -{ - struct single_view_iterator_tag; - - template - struct single_view_iterator_end; - - template - struct single_view_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef single_view_iterator_end< - typename Iterator::single_view_type> - type; - - static type - call(Iterator) - { - return type(); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp deleted file mode 100644 index 05c97afc..00000000 --- a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_IMPL_05052005_0324) -#define FUSION_VALUE_IMPL_05052005_0324 - -namespace boost { namespace fusion -{ - struct single_view_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::single_view_type single_view_type; - typedef typename single_view_type::value_type type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp deleted file mode 100644 index 4584905d..00000000 --- a/include/boost/fusion/sequence/view/single_view/single_view.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SINGLE_VIEW_05052005_0335) -#define FUSION_SINGLE_VIEW_05052005_0335 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct single_view_tag; - struct forward_traversal_tag; - struct fusion_sequence_tag; - - template - struct single_view : sequence_base > - { - typedef single_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_traversal_tag category; - typedef mpl::true_ is_view; - typedef mpl::int_<1> size; - typedef T value_type; - - single_view() - : val() {} - - explicit single_view(typename detail::call_param::type val) - : val(val) {} - - value_type val; - }; - - template - inline single_view::type> - make_single_view(T const& v) - { - return single_view::type>(v); - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp deleted file mode 100644 index 67492749..00000000 --- a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) -#define FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct single_view_iterator_tag; - struct forward_traversal_tag; - - template - struct single_view_iterator_end - : iterator_base > - { - typedef single_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - }; - - template - struct single_view_iterator - : iterator_base > - { - typedef single_view_iterator_tag fusion_tag; - typedef forward_traversal_tag category; - typedef typename SingleView::value_type value_type; - typedef SingleView single_view_type; - - explicit single_view_iterator(single_view_type const& view) - : val(view.val) {} - - value_type val; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view.hpp deleted file mode 100644 index 62ef8a10..00000000 --- a/include/boost/fusion/sequence/view/transform_view.hpp +++ /dev/null @@ -1,14 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) -#define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp deleted file mode 100644 index 9a1cf14d..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_13122005_1906) -#define FUSION_ADVANCE_IMPL_13122005_1906 - -#include - -namespace boost { namespace fusion -{ - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - template - struct transform_view_iterator; - - template - struct transform_view_iterator2; - - namespace extension - { - template - struct advance_impl; - - // Unary Version - template<> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename result_of::advance::type advanced_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator type; - - static type - call(Iterator const& i) - { - return type(boost::fusion::advance(i.first), i.f); - } - }; - }; - - // Binary Version - template<> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::first1_type first1_type; - typedef typename Iterator::first2_type first2_type; - typedef typename result_of::advance::type advanced1_type; - typedef typename result_of::advance::type advanced2_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator2 type; - - static type - call(Iterator const& i) - { - return type( - boost::fusion::advance(i.first1) - , boost::fusion::advance(i.first2), i.f); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp deleted file mode 100644 index 3ff0b8ad..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) -#define FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 - -namespace boost { namespace fusion -{ - struct void_; - - namespace detail - { - template - struct apply_transform_result - { - template - struct apply - { - typedef typename F::template result::type type; - }; - - template - struct apply - { - typedef typename F::template result::type type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp deleted file mode 100644 index 3d935c26..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_20061029_1946) -#define BOOST_FUSION_AT_IMPL_20061029_1946 - -#include -#include -#include - -namespace boost { namespace fusion { - struct transform_view_tag; - struct transform_view2_tag; - - namespace extension - { - template - struct at_impl; - - template<> - struct at_impl - { - template - struct apply - { - typedef typename Seq::transform_type F; - typedef detail::apply_transform_result transform_type; - typedef typename boost::fusion::result_of::at::type value_type; - typedef typename mpl::apply::type type; - - static type call(Seq& seq) - { - return seq.f(boost::fusion::at(seq.seq)); - } - }; - }; - - template<> - struct at_impl - { - template - struct apply - { - typedef typename Seq::transform_type F; - typedef detail::apply_transform_result transform_type; - typedef typename boost::fusion::result_of::at::type value1_type; - typedef typename boost::fusion::result_of::at::type value2_type; - typedef typename mpl::apply::type type; - - static type call(Seq& seq) - { - return seq.f(boost::fusion::at(seq.seq1), boost::fusion::at(seq.seq2)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp deleted file mode 100644 index 94f7b5f6..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_07162005_1031) -#define FUSION_BEGIN_IMPL_07162005_1031 - -#include - -namespace boost { namespace fusion -{ - template - struct transform_view_iterator; - - template - struct transform_view_iterator2; - - namespace extension - { - template - struct begin_impl; - - // Unary Version - template <> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::first_type first_type; - typedef typename Sequence::transform_type transform_type; - typedef transform_view_iterator type; - - static type - call(Sequence& s) - { - return type(s.first(), s.f); - } - }; - }; - - // Binary Version - template <> - struct begin_impl - { - template - struct apply - { - typedef typename Sequence::first1_type first1_type; - typedef typename Sequence::first2_type first2_type; - typedef typename Sequence::transform_type transform_type; - typedef transform_view_iterator2 type; - - static type - call(Sequence& s) - { - return type(s.first1(), s.first2(), s.f); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp deleted file mode 100644 index 3da4e396..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_07162005_1026) -#define FUSION_DEREF_IMPL_07162005_1026 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - namespace extension - { - template - struct deref_impl; - - // Unary Version - template <> - struct deref_impl - { - template - struct apply - { - typedef typename - result_of::value_of::type - value_type; - - typedef detail::apply_transform_result transform_type; - typedef typename mpl::apply::type type; - - static type - call(Iterator const& i) - { - return i.f(*i.first); - } - }; - }; - - // Binary Version - template <> - struct deref_impl - { - template - struct apply - { - typedef typename - result_of::value_of::type - value1_type; - typedef typename - result_of::value_of::type - value2_type; - - typedef detail::apply_transform_result transform_type; - typedef typename mpl::apply::type type; - - static type - call(Iterator const& i) - { - return i.f(*i.first1, *i.first2); - } - }; - }; } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp deleted file mode 100644 index cf20b593..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_13122005_2139) -#define FUSION_DISTANCE_IMPL_13122005_2139 - -#include - -namespace boost { namespace fusion { - - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - namespace extension - { - template - struct distance_impl; - - // Unary Version - template<> - struct distance_impl - { - template - struct apply - { - typedef typename First::first_type first_type; - typedef typename Last::first_type last_type; - typedef typename result_of::distance::type type; - - static type - call(First const& first, Last const& last) - { - return boost::fusion::distance(first.first, last.first); - } - }; - }; - - // Binary Version - template<> - struct distance_impl - { - template - struct apply - { - typedef typename First::first1_type first1_type; - typedef typename Last::first1_type last1_type; - typedef typename result_of::distance::type type; - - static type - call(First const& first, Last const& last) - { - return boost::fusion::distance(first.first1, last.first1); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp deleted file mode 100644 index 3b2d4af0..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_07162005_1028) -#define FUSION_END_IMPL_07162005_1028 - -#include - -namespace boost { namespace fusion -{ - template - struct transform_view_iterator; - - template - struct transform_view_iterator2; - - namespace extension - { - template - struct end_impl; - - // Unary Version - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::last_type last_type; - typedef typename Sequence::transform_type transform_type; - typedef transform_view_iterator type; - - static type - call(Sequence& s) - { - return type(s.last(), s.f); - } - }; - }; - - // Binary Version - template <> - struct end_impl - { - template - struct apply - { - typedef typename Sequence::last1_type last1_type; - typedef typename Sequence::last2_type last2_type; - typedef typename Sequence::transform_type transform_type; - typedef transform_view_iterator2 type; - - static type - call(Sequence& s) - { - return type(s.last1(), s.last2(), s.f); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp deleted file mode 100644 index 9823569b..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_07162005_1029) -#define FUSION_NEXT_IMPL_07162005_1029 - -#include - -namespace boost { namespace fusion -{ - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - template - struct transform_view_iterator; - - template - struct transform_view_iterator2; - - namespace extension - { - template - struct next_impl; - - // Unary Version - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename result_of::next::type next_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator type; - - static type - call(Iterator const& i) - { - return type(fusion::next(i.first), i.f); - } - }; - }; - - // Binary Version - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::first1_type first1_type; - typedef typename Iterator::first2_type first2_type; - typedef typename result_of::next::type next1_type; - typedef typename result_of::next::type next2_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator2 type; - - static type - call(Iterator const& i) - { - return type(fusion::next(i.first1), fusion::next(i.first2), i.f); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp deleted file mode 100644 index d53a28e0..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_PREV_IMPL_13122005_2110) -#define FUSION_PREV_IMPL_13122005_2110 - -#include - -namespace boost { namespace fusion -{ - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - template - struct transform_view_iterator; - - template - struct transform_view_iterator2; - - namespace extension - { - template - struct prior_impl; - - // Unary Version - template<> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::first_type first_type; - typedef typename result_of::prior::type prior_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator type; - - static type - call(Iterator const& i) - { - return type(fusion::prior(i.first), i.f); - } - }; - }; - - // Binary Version - template<> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::first1_type first1_type; - typedef typename Iterator::first2_type first2_type; - typedef typename result_of::prior::type prior1_type; - typedef typename result_of::prior::type prior2_type; - typedef typename Iterator::transform_type transform_type; - typedef transform_view_iterator2 type; - - static type - call(Iterator const& i) - { - return type(fusion::prior(i.first1), fusion::prior(i.first2), i.f); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp deleted file mode 100644 index b0e682f9..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_20061101_0745) -#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 - -#include -#include -#include - -namespace boost { namespace fusion { - struct transform_view_tag; - struct transform_view2_tag; - - namespace extension - { - template - struct value_at_impl; - - template<> - struct value_at_impl - { - template - struct apply - { - typedef typename Seq::transform_type F; - typedef detail::apply_transform_result transform_type; - typedef typename boost::fusion::result_of::at::type value_type; - typedef typename mpl::apply::type type; - }; - }; - - template<> - struct value_at_impl - { - template - struct apply - { - typedef typename Seq::transform_type F; - typedef detail::apply_transform_result transform_type; - typedef typename boost::fusion::result_of::at::type value1_type; - typedef typename boost::fusion::result_of::at::type value2_type; - typedef typename mpl::apply::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp deleted file mode 100644 index e95aa105..00000000 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_07162005_1030) -#define FUSION_VALUE_OF_IMPL_07162005_1030 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct transform_view_iterator_tag; - struct transform_view_iterator2_tag; - - namespace extension - { - template - struct value_of_impl; - - // Unary Version - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename - result_of::value_of::type - value_type; - - typedef detail::apply_transform_result transform_type; - typedef typename mpl::apply::type type; - }; - }; - - // Binary Version - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename - result_of::value_of::type - value1_type; - typedef typename - result_of::value_of::type - value2_type; - - typedef detail::apply_transform_result transform_type; - typedef typename mpl::apply::type type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp deleted file mode 100644 index 7a62ffe0..00000000 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TRANSFORM_VIEW_07162005_1037) -#define FUSION_TRANSFORM_VIEW_07162005_1037 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - struct transform_view_tag; - struct transform_view2_tag; - struct fusion_sequence_tag; - - // Binary Version - template - struct transform_view : sequence_base > - { - BOOST_STATIC_ASSERT(result_of::size::value == result_of::size::value); - typedef transform_view2_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - - typedef typename traits::category_of::type category1; - typedef typename traits::category_of::type category2; - typedef typename result_of::begin::type first1_type; - typedef typename result_of::begin::type first2_type; - typedef typename result_of::end::type last1_type; - typedef typename result_of::end::type last2_type; - typedef typename result_of::size::type size; - typedef Sequence1 sequence1_type; - typedef Sequence2 sequence2_type; - typedef F transform_type; - - transform_view(Sequence1& seq1, Sequence2& seq2, F const& binop) - : f(binop) - , seq1(seq1) - , seq2(seq2) - {} - - first1_type first1() const { return fusion::begin(seq1); } - first2_type first2() const { return fusion::begin(seq2); } - last1_type last1() const { return fusion::end(seq1); } - last2_type last2() const { return fusion::end(seq2); } - - transform_type f; - typename mpl::if_, Sequence1, Sequence1&>::type seq1; - typename mpl::if_, Sequence2, Sequence2&>::type seq2; - }; - - // Unary Version - template - struct transform_view : sequence_base > - { - typedef transform_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - - typedef typename traits::category_of::type category; - typedef typename result_of::begin::type first_type; - typedef typename result_of::end::type last_type; - typedef typename result_of::size::type size; - typedef Sequence sequence_type; - typedef F transform_type; - - transform_view(Sequence& seq, F const& f) - : seq(seq) - , f(f) - {} - - first_type first() const { return fusion::begin(seq); } - last_type last() const { return fusion::end(seq); } - typename mpl::if_, Sequence, Sequence&>::type seq; - transform_type f; - }; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp deleted file mode 100644 index 324d2dd9..00000000 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TRANSFORM_VIEW_FORWARD_01052006_1839) -#define FUSION_TRANSFORM_VIEW_FORWARD_01052006_1839 - -namespace boost { namespace fusion -{ - struct void_; - struct transform_view_tag; - struct transform_view2_tag; - - template - struct transform_view; -}} - -#endif - - diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp deleted file mode 100644 index e76b05dc..00000000 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) -#define FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - // Unary Version - struct transform_view_iterator_tag; - - template - struct transform_view_iterator - : iterator_base > - { - typedef transform_view_iterator_tag fusion_tag; - typedef convert_iterator converter; - typedef typename converter::type first_type; - typedef typename traits::category_of::type category; - typedef F transform_type; - - transform_view_iterator(First const& first, F const& f) - : first(converter::call(first)), f(f) {} - - first_type first; - transform_type f; - }; - - // Binary Version - struct transform_view_iterator2_tag; - - template - struct transform_view_iterator2 - : iterator_base > - { - typedef transform_view_iterator2_tag fusion_tag; - typedef convert_iterator converter1; - typedef convert_iterator converter2; - typedef typename converter1::type first1_type; - typedef typename converter2::type first2_type; - typedef typename traits::category_of::type category; - typedef F transform_type; - - transform_view_iterator2(First1 const& first1, First2 const& first2, F const& f) - : first1(converter1::call(first1)), first2(converter2::call(first2)), f(f) {} - - first1_type first1; - first2_type first2; - transform_type f; - }; -}} - -#endif - diff --git a/include/boost/fusion/sequence/view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view.hpp deleted file mode 100644 index c2acf665..00000000 --- a/include/boost/fusion/sequence/view/zip_view.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ZIP_VIEW_23012006_0811) -#define FUSION_ZIP_VIEW_23012006_0811 - -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp deleted file mode 100644 index 4a423604..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_20061024_2021) -#define FUSION_ADVANCE_IMPL_20061024_2021 - -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - template - struct poly_advance - { - template - struct result - : result_of::advance - {}; - - template - typename result::type - operator()(const It& it) const - { - return fusion::advance(it); - } - }; - } - - namespace extension - { - template - struct advance_impl; - - template<> - struct advance_impl - { - template - struct apply - { - typedef zip_view_iterator< - typename result_of::transform >::type> type; - - static type - call(It const& it) - { - return type( - fusion::transform(it.iterators_, detail::poly_advance())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp deleted file mode 100644 index cdcc22a6..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_AT_IMPL_20060124_1933) -#define FUSION_AT_IMPL_20060124_1933 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct zip_view_tag; - - namespace detail - { - template - struct poly_at - { - template - struct result - : result_of::at::type, N> - { - BOOST_MPL_ASSERT((is_reference)); - }; - - template - typename result::type - operator()(Seq& seq) const - { - return fusion::at(seq); - } - - template - typename result::type - operator()(Seq const& seq) const - { - return fusion::at(seq); - } - }; - } - - namespace extension - { - template - struct at_impl; - - template<> - struct at_impl - { - template - struct apply - { - typedef typename result_of::as_vector< - typename result_of::transform< - typename Seq::sequences, detail::poly_at >::type>::type type; - - static type - call(Seq& seq) - { - return type( - fusion::transform(seq.sequences_, detail::poly_at())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp deleted file mode 100644 index 9ba435b7..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_BEGIN_IMPL_20060123_2147) -#define FUSION_BEGIN_IMPL_20060123_2147 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_tag; - - namespace detail - { - struct poly_begin - { - template - struct result - : result_of::begin::type> - { - BOOST_MPL_ASSERT((is_reference)); - }; - - template - typename result::type - operator()(Seq& seq) const - { - return fusion::begin(seq); - } - - template - typename result::type - operator()(Seq const& seq) const - { - return fusion::begin(seq); - } - - }; - } - - namespace extension - { - template - struct begin_impl; - - template<> - struct begin_impl - { - template - struct apply - { - typedef zip_view_iterator< - typename result_of::transform::type, - typename Sequence::category> type; - - static type - call(Sequence& sequence) - { - return type( - fusion::transform(sequence.sequences_, detail::poly_begin())); - } - }; - - - - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp deleted file mode 100644 index fcab17c4..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_20061024_1959) -#define FUSION_DEREF_IMPL_20061024_1959 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - struct poly_deref - { - template - struct result - : result_of::deref - {}; - - template - typename result::type - operator()(const It& it) const - { - return fusion::deref(it); - } - }; - } - - namespace extension - { - template - struct deref_impl; - - template<> - struct deref_impl - { - template - struct apply - { - typedef typename result_of::as_vector< - typename result_of::transform::type>::type type; - - static type - call(It const& it) - { - return type( - fusion::transform(it.iterators_, detail::poly_deref())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp deleted file mode 100644 index e1505a9e..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_20060124_2033) -#define FUSION_DISTANCE_IMPL_20060124_2033 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - struct random_access_iterator_tag; - - namespace detail - { - template - struct best_distance - { - typedef typename result_of::find_if< - typename SearchIt::iterators, is_same, random_access_iterator_tag> > finder; - - BOOST_MPL_ASSERT_NOT((is_same >)); - - typedef typename result_of::distance::type type; - }; - - template - struct default_distance - : result_of::distance< - typename result_of::value_at_c::type, - typename result_of::value_at_c::type> - {}; - - template - struct zip_view_iterator_distance - { - typedef typename result_of::find_if< - typename It1::iterators, is_same, random_access_iterator_tag> > finder; - - typedef typename mpl::eval_if< - is_same::type>, - detail::default_distance , - detail::best_distance >::type type; - }; - } - - namespace extension - { - template - struct distance_impl; - - template<> - struct distance_impl - { - template - struct apply - : detail::zip_view_iterator_distance::type - { - static typename detail::zip_view_iterator_distance::type - call(It1 const& it1, It2 const& it2) - { - return typename detail::zip_view_iterator_distance::type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp deleted file mode 100644 index 95735da8..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_END_IMPL_20060123_2208) -#define FUSION_END_IMPL_20060123_2208 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_tag; - - namespace detail - { - template - struct endpoints - { - template - struct result - { - typedef typename remove_reference::type Seq; - typedef typename result_of::begin::type begin; - typedef typename result_of::advance::type type; - }; - - template - typename result::type - operator()(Seq& seq) const - { - return fusion::advance(fusion::begin(seq)); - } - - template - typename result::type - operator()(Seq const& seq) - { - return fusion::advance(fusion::begin(seq)); - } - }; - } - - namespace extension - { - template - struct end_impl; - - template<> - struct end_impl - { - template - struct apply - { - typedef zip_view_iterator< - typename result_of::transform >::type, - typename Sequence::category> type; - - static type - call(Sequence& sequence) - { - return type( - fusion::transform(sequence.sequences_, detail::endpoints())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp deleted file mode 100644 index 10643609..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) -#define FUSION_EQUAL_TO_IMPL_20060128_1423 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - template - struct zip_iterators_equal - { - typedef mpl::zip_view > zipped; - typedef mpl::transform_view > > transformed; - - typedef typename mpl::find_if >::type found; - - typedef typename is_same::type, found>::type type; - }; - } - - namespace extension - { - template - struct equal_to_impl; - - template<> - struct equal_to_impl - { - template - struct apply - : detail::zip_iterators_equal::type - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp deleted file mode 100644 index 45d618fb..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_20060124_2006) -#define FUSION_NEXT_IMPL_20060124_2006 - -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - struct poly_next - { - template - struct result - : result_of::next - {}; - - template - typename result::type - operator()(const It& it) const - { - return fusion::next(it); - } - }; - } - - namespace extension - { - template - struct next_impl; - - template<> - struct next_impl - { - template - struct apply - { - typedef fusion::zip_view_iterator< - typename result_of::transform::type, - typename Iterator::category> type; - - static type - call(Iterator const& it) - { - return type( - fusion::transform(it.iterators_, detail::poly_next())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp deleted file mode 100644 index 35187f48..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_20060124_2006) -#define FUSION_PRIOR_IMPL_20060124_2006 - -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - struct poly_prior - { - template - struct result - : result_of::prior - {}; - - template - typename result::type - operator()(const It& it) const - { - return fusion::prior(it); - } - }; - } - - namespace extension - { - template - struct prior_impl; - - template<> - struct prior_impl - { - template - struct apply - { - typedef zip_view_iterator< - typename result_of::transform::type, - typename Iterator::category> type; - - static type - call(Iterator const& it) - - { - return type( - fusion::transform(it.iterators_, detail::poly_prior())); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp deleted file mode 100644 index d6d576f2..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_SIZE_IMPL_20060124_0800) -#define FUSION_SIZE_IMPL_20060124_0800 - -namespace boost { namespace fusion { - - struct zip_view_tag; - - namespace extension - { - template - struct size; - - template - struct size_impl; - - template<> - struct size_impl - { - template - struct apply - : Sequence::size - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp deleted file mode 100644 index 594d3c3b..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101) -#define FUSION_STRICTEST_TRAVERSAL_20060123_2101 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct forward_traversal_tag; - struct bidirectional_traversal_tag; - struct random_access_traversal_tag; - - namespace detail - { - template - struct strictest_traversal_impl - { - typedef StrictestSoFar tag1; - typedef typename traits::category_of< - typename remove_reference::type>::type tag2; - - typedef typename mpl::or_< - is_same, - is_same >::type - has_forward_traversal; - - typedef typename mpl::or_< - is_same, - is_same >::type - has_bidirectional_traversal; - - typedef typename mpl::if_< - has_forward_traversal, - forward_traversal_tag, - typename mpl::if_< - has_bidirectional_traversal, - bidirectional_traversal_tag, - random_access_traversal_tag>::type>::type type; - }; - - template - struct strictest_traversal - : result_of::fold< - Sequence, fusion::random_access_traversal_tag, - strictest_traversal_impl > - {}; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp deleted file mode 100644 index cf2bf5d9..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) -#define FUSION_VALUE_AT_IMPL_20060124_2129 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_tag; - - namespace detail - { - template - struct poly_value_at - { - template - struct result - : result_of::value_at::type, N> - {}; - }; - } - - namespace extension - { - template - struct value_at_impl; - - template<> - struct value_at_impl - { - template - struct apply - { - typedef typename result_of::transform< - typename Sequence::sequences, - detail::poly_value_at >::type values; - typedef typename result_of::as_vector::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp deleted file mode 100644 index 46ed7330..00000000 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_20060124_2147) -#define FUSION_VALUE_OF_IMPL_20060124_2147 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - namespace detail - { - struct poly_value_of - { - template - struct result - : result_of::value_of - {}; - }; - } - - namespace extension - { - template - struct value_of_impl; - - template<> - struct value_of_impl - { - template - struct apply - { - typedef typename result_of::transform< - typename Iterator::iterators, - detail::poly_value_of>::type values; - - typedef typename result_of::as_vector::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp deleted file mode 100644 index ef9d6a8c..00000000 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ZIP_VIEW_23012006_0813) -#define FUSION_ZIP_VIEW_23012006_0813 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -namespace boost { namespace fusion { - - namespace detail - { - template - struct all_references - : fusion::result_of::equal_to > >::type, typename fusion::result_of::end::type> - {}; - - struct seq_ref_size - { - template - struct result - : result_of::size::type> - {}; - }; - - struct poly_min - { - template - struct result - : mpl::min - {}; - }; - - template - struct min_size - { - typedef typename result_of::transform::type sizes; - typedef typename result_of::fold::type, detail::poly_min>::type type; - }; - } - - struct zip_view_tag; - struct fusion_sequence_tag; - - template - struct zip_view : sequence_base< zip_view > - { - BOOST_MPL_ASSERT((detail::all_references)); - typedef typename detail::strictest_traversal::type category; - typedef zip_view_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::true_ is_view; - typedef typename fusion::result_of::as_vector::type sequences; - typedef typename detail::min_size::type size; - - zip_view( - const Sequences& seqs) - : sequences_(seqs) - {}; - - sequences sequences_; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp deleted file mode 100644 index 4048005a..00000000 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) -#define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace fusion { - - struct zip_view_iterator_tag; - - template< - typename IteratorSequence, - typename Traversal> - struct zip_view_iterator - : iterator_base > - { - typedef zip_view_iterator_tag fusion_tag; - typedef Traversal category; - - template - zip_view_iterator( - const InitSeq& iterator_seq) - : iterators_(iterator_seq) - {} - - typedef typename result_of::as_vector::type iterators; - iterators iterators_; - }; -}} - -#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp deleted file mode 100644 index 974e931a..00000000 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) -#define FUSION_ZIP_VIEW_ITERATOR_FWD - -#include - -namespace boost { namespace fusion { - - template< - typename IteratorSequence, - typename Traversal = typename detail::strictest_traversal::type> - struct zip_view_iterator; - -}} - -#endif diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp deleted file mode 100644 index 764fe795..00000000 --- a/include/boost/fusion/support.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SUPPORT_10022005_0545) -#define FUSION_SUPPORT_10022005_0545 - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp deleted file mode 100644 index c22ac8c3..00000000 --- a/include/boost/fusion/support/category_of.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CATEGORY_OF_07202005_0308) -#define FUSION_CATEGORY_OF_07202005_0308 - -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - struct incrementable_traversal_tag {}; - - struct single_pass_traversal_tag - : incrementable_traversal_tag {}; - - struct forward_traversal_tag - : single_pass_traversal_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; - - struct associative_sequence_tag {}; - - namespace extension - { - template - struct category_of_impl - { - template - struct apply : detail::fusion_category_of {}; - }; - - template <> - struct category_of_impl; - - template <> - struct category_of_impl; - - template <> - struct category_of_impl; - - template <> - struct category_of_impl; - } - - namespace traits - { - template - struct category_of - : extension::category_of_impl::type>:: - template apply - {}; - - template - struct is_associative - : is_base_of< - associative_sequence_tag - , typename category_of::type> - {}; - - template - struct is_incrementable - : is_base_of< - incrementable_traversal_tag - , typename category_of::type> - {}; - - template - struct is_single_pass - : is_base_of< - single_pass_traversal_tag - , typename category_of::type> - {}; - - template - struct is_forward - : is_base_of< - forward_traversal_tag - , typename category_of::type> - {}; - - template - struct is_bidirectional - : is_base_of< - bidirectional_traversal_tag - , typename category_of::type> - {}; - - template - struct is_random_access - : is_base_of< - random_access_traversal_tag - , typename category_of::type> - {}; - } -}} - -#endif diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp deleted file mode 100644 index e4449d3a..00000000 --- a/include/boost/fusion/support/detail/access.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ACCESS_04182005_0737) -#define FUSION_ACCESS_04182005_0737 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct ref_result - { - typedef typename add_reference::type type; - }; - - template - struct cref_result - { - typedef typename - add_reference< - typename add_const::type - >::type - type; - }; - - template - struct non_ref_parameter - { - typedef typename boost::remove_cv::type const& type; - }; - - template - struct call_param - { - typedef typename - mpl::eval_if< - is_reference - , mpl::identity - , non_ref_parameter - >::type - type; - }; -}}} - -#endif - diff --git a/include/boost/fusion/support/detail/as_fusion_element.hpp b/include/boost/fusion/support/detail/as_fusion_element.hpp deleted file mode 100644 index 74fa53f5..00000000 --- a/include/boost/fusion/support/detail/as_fusion_element.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338) -#define FUSION_AS_FUSION_ELEMENT_05052005_0338 - -#include - -namespace boost { namespace fusion { namespace detail -{ - template - struct as_fusion_element - { - typedef T type; - }; - - template - struct as_fusion_element > - { - typedef T& type; - }; - - template - struct as_fusion_element - { - typedef const T(&type)[N]; - }; - - template - struct as_fusion_element - { - typedef const volatile T(&type)[N]; - }; - - template - struct as_fusion_element - { - typedef const volatile T(&type)[N]; - }; - -}}} - -#endif diff --git a/include/boost/fusion/support/detail/category_of.hpp b/include/boost/fusion/support/detail/category_of.hpp deleted file mode 100644 index 78f474f2..00000000 --- a/include/boost/fusion/support/detail/category_of.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CATEGORY_OF_07212005_1025) -#define FUSION_CATEGORY_OF_07212005_1025 - -namespace boost { namespace fusion { namespace detail -{ - template - struct fusion_category_of - { - typedef typename T::category type; - }; -}}} - -#endif diff --git a/include/boost/fusion/support/detail/compiler_config.hpp b/include/boost/fusion/support/detail/compiler_config.hpp deleted file mode 100644 index 8d90f27a..00000000 --- a/include/boost/fusion/support/detail/compiler_config.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_COMPILER_CONFIG_01052006_1200) -#define FUSION_COMPILER_CONFIG_01052006_1200 - -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) -#pragma warning(disable : 4512 4244 4100 4305) -#endif - -#endif diff --git a/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/include/boost/fusion/support/detail/is_mpl_sequence.hpp deleted file mode 100644 index 09a77a8b..00000000 --- a/include/boost/fusion/support/detail/is_mpl_sequence.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_DETAIL_IS_MPL_SEQUENCE_15122005_2137) -#define FUSION_DETAIL_IS_MPL_SEQUENCE_15122005_2137 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - struct mpl_int_detect - { - template - mpl_int_detect(mpl::int_) {} - - template - mpl_int_detect(mpl::bool_) {} - - template - mpl_int_detect(mpl::integral_c) {} - - template - mpl_int_detect(mpl::long_) {} - - template - mpl_int_detect(mpl::size_t) {} - }; - - template - struct is_mpl_sequence - : mpl::and_< - mpl::not_ > - , mpl::not_ > - , mpl::is_sequence > - {}; -}}} - -#endif diff --git a/include/boost/fusion/support/detail/is_view.hpp b/include/boost/fusion/support/detail/is_view.hpp deleted file mode 100644 index 489c27f9..00000000 --- a/include/boost/fusion/support/detail/is_view.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_VIEW_03202006_0018) -#define FUSION_IS_VIEW_03202006_0018 - -namespace boost { namespace fusion { namespace detail -{ - template - struct fusion_is_view - { - typedef typename T::is_view type; - }; -}}} - -#endif diff --git a/include/boost/fusion/support/detail/mpl_iterator_category.hpp b/include/boost/fusion/support/detail/mpl_iterator_category.hpp deleted file mode 100644 index 771c08a8..00000000 --- a/include/boost/fusion/support/detail/mpl_iterator_category.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_MPL_ITERATOR_CATEGORY_07212005_0923) -#define FUSION_MPL_ITERATOR_CATEGORY_07212005_0923 - -namespace boost { namespace mpl -{ - struct forward_iterator_tag; - struct bidirectional_iterator_tag; - struct random_access_iterator_tag; -}} - -namespace boost { namespace fusion -{ - struct forward_traversal_tag; - struct bidirectional_traversal_tag; - struct random_access_traversal_tag; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct mpl_iterator_category; - - template <> - struct mpl_iterator_category - { - typedef forward_traversal_tag type; - }; - - template <> - struct mpl_iterator_category - { - typedef bidirectional_traversal_tag type; - }; - - template <> - struct mpl_iterator_category - { - typedef random_access_traversal_tag type; - }; - - template <> - struct mpl_iterator_category - { - typedef forward_traversal_tag type; - }; - - template <> - struct mpl_iterator_category - { - typedef bidirectional_traversal_tag type; - }; - - template <> - struct mpl_iterator_category - { - typedef random_access_traversal_tag type; - }; -}}} - -#endif diff --git a/include/boost/fusion/support/detail/unknown_key.hpp b/include/boost/fusion/support/detail/unknown_key.hpp deleted file mode 100644 index 11c53eb4..00000000 --- a/include/boost/fusion/support/detail/unknown_key.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_UNKNOWN_KEY_09242005_1219) -#define FUSION_UNKNOWN_KEY_09242005_1219 - -namespace boost { namespace fusion { namespace detail -{ - template - struct unknown_key {}; -}}} - -#endif diff --git a/include/boost/fusion/support/ext_/is_segmented.hpp b/include/boost/fusion/support/ext_/is_segmented.hpp deleted file mode 100755 index eb6b9e93..00000000 --- a/include/boost/fusion/support/ext_/is_segmented.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Eric Niebler - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_SEGMENTED_03202006_0015) -#define FUSION_IS_SEGMENTED_03202006_0015 - -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - struct iterator_range_tag; - - namespace extension - { - template - struct is_segmented_impl - { - template - struct apply - : mpl::false_ - {}; - }; - - template<> - struct is_segmented_impl; - } - - namespace traits - { - template - struct is_segmented - : extension::is_segmented_impl::type>:: - template apply - { - }; - } -}} - -#endif diff --git a/include/boost/fusion/support/is_iterator.hpp b/include/boost/fusion/support/is_iterator.hpp deleted file mode 100644 index 63020a4b..00000000 --- a/include/boost/fusion/support/is_iterator.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_ITERATOR_05062005_1219) -#define FUSION_IS_ITERATOR_05062005_1219 - -#include - -namespace boost { namespace fusion -{ - struct iterator_root; - - template - struct is_fusion_iterator : is_base_of {}; -}} - -#endif diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp deleted file mode 100644 index b13af130..00000000 --- a/include/boost/fusion/support/is_sequence.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_SEQUENCE_05052005_1002) -#define FUSION_IS_SEQUENCE_05052005_1002 - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct non_fusion_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct is_sequence_impl - { - template - struct apply : is_base_of {}; - }; - - template <> - struct is_sequence_impl - { - template - struct apply : mpl::false_ {}; - }; - - template <> - struct is_sequence_impl; - - template <> - struct is_sequence_impl; - - template <> - struct is_sequence_impl; - - template <> - struct is_sequence_impl; - } - - namespace traits - { - template - struct is_sequence - : extension::is_sequence_impl::type>:: - template apply - {}; - } -}} - -#endif diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp deleted file mode 100644 index 12818319..00000000 --- a/include/boost/fusion/support/is_view.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_VIEW_03202006_0015) -#define FUSION_IS_VIEW_03202006_0015 - -#include -#include - -namespace boost { namespace fusion -{ - // Special tags: - struct sequence_facade_tag; - struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag - struct mpl_sequence_tag; // mpl sequence tag - struct std_pair_tag; // std::pair tag - - namespace extension - { - template - struct is_view_impl - { - template - struct apply - : detail::fusion_is_view - {}; - }; - - template <> - struct is_view_impl - { - template - struct apply : Sequence::is_view {}; - }; - - template <> - struct is_view_impl; - - template <> - struct is_view_impl; - - template <> - struct is_view_impl; - - template <> - struct is_view_impl; - } - - namespace traits - { - template - struct is_view : - extension::is_view_impl::type>:: - template apply::type - {}; - } -}} - -#endif diff --git a/include/boost/fusion/support/iterator_base.hpp b/include/boost/fusion/support/iterator_base.hpp deleted file mode 100644 index aa5e99ee..00000000 --- a/include/boost/fusion/support/iterator_base.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_BASE_05042005_1008) -#define FUSION_ITERATOR_BASE_05042005_1008 - -#include - -namespace boost { namespace fusion -{ - struct iterator_root {}; - - template - struct iterator_base : iterator_root - { - Iterator const& - cast() const - { - return static_cast(*this); - } - - Iterator& - cast() - { - return static_cast(*this); - } - }; -}} - -#endif diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp deleted file mode 100644 index 8cbc841d..00000000 --- a/include/boost/fusion/support/pair.hpp +++ /dev/null @@ -1,104 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2006 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) -==============================================================================*/ -#if !defined(FUSION_PAIR_07222005_1203) -#define FUSION_PAIR_07222005_1203 - -#include -#include -#include - -namespace boost { namespace fusion -{ - // A half runtime pair where the first type does not have data - template - struct pair - { - pair() - : second() {} - - pair(typename detail::call_param::type val) - : second(val) {} - - template - pair(pair const& rhs) - : second(rhs.second) {} - - template - pair& operator=(pair const& rhs) - { - second = rhs.second; - return *this; - } - - typedef First first_type; - typedef Second second_type; - Second second; - }; - - namespace result_of - { - template - struct make_pair - { - typedef fusion::pair::type> type; - }; - - template - struct first - { - typedef typename Pair::first_type type; - }; - - template - struct second - { - typedef typename Pair::second_type type; - }; - } - - template - inline typename result_of::make_pair::type - make_pair(Second const& val) - { - return pair::type>(val); - } - - template - inline OStream& - operator<<(OStream& os, pair const& p) - { - os << p.second; - return os; - } - - template - inline IStream& - operator>>(IStream& is, pair& p) - { - is >> p.second; - return is; - } - - template - inline bool - operator==(pair const& l, pair const& r) - { - return l.second == r.second; - } - - template - inline bool - operator!=(pair const& l, pair const& r) - { - return l.second != r.second; - } -}} - -#endif diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp deleted file mode 100644 index ed1fffc7..00000000 --- a/include/boost/fusion/support/sequence_base.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_SEQUENCE_BASE_04182005_0737) -#define FUSION_SEQUENCE_BASE_04182005_0737 - -#include - -namespace boost { namespace fusion -{ - struct sequence_root {}; - - template - struct sequence_base : sequence_root - { - Sequence const& - derived() const - { - return static_cast(*this); - } - - Sequence& - derived() - { - return static_cast(*this); - } - }; -}} - -#endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp deleted file mode 100644 index 33a954c0..00000000 --- a/include/boost/fusion/support/tag_of.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TAG_OF_09232005_0845) -#define FUSION_TAG_OF_09232005_0845 - -#include -#include -#include -#include -#include -#include -#include - -namespace boost -{ - template - class array; // forward - - namespace tuples - { - struct null_type; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - class tuple; - - template - struct cons; - } -} - -namespace boost { namespace fusion -{ - struct non_fusion_tag; - - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) - } - - namespace traits - { - template - struct tag_of - { - typedef non_fusion_tag type; - }; - - template - struct tag_of >::type> - { - typedef typename Sequence::fusion_tag type; - }; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - struct tag_of >; - - template - struct tag_of >; - - template <> - struct tag_of; - - template - struct tag_of >; - - template - struct tag_of >::type>; - - template - struct tag_of >; - } - - namespace detail - { - template - struct tag_of - : traits::tag_of::type> - {}; - } -}} -#endif diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp deleted file mode 100644 index 991c2576..00000000 --- a/include/boost/fusion/support/tag_of_fwd.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_FWD_31122005_1445) -#define BOOST_FUSION_TAG_OF_FWD_31122005_1445 - -namespace boost { namespace fusion { - - namespace traits - { - template - struct tag_of; - } -}} - -#endif diff --git a/include/boost/fusion/tuple.hpp b/include/boost/fusion/tuple.hpp deleted file mode 100644 index 3df7adef..00000000 --- a/include/boost/fusion/tuple.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TUPLE_10032005_0806) -#define FUSION_TUPLE_10032005_0806 - -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp b/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp deleted file mode 100644 index e69db42e..00000000 --- a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_TUPLE_FORWARD_CTOR_10032005_0815) -#define FUSION_TUPLE_FORWARD_CTOR_10032005_0815 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - -#if N == 1 - explicit -#endif - tuple(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/tuple/make_tuple.hpp b/include/boost/fusion/tuple/make_tuple.hpp deleted file mode 100644 index c6e58fc0..00000000 --- a/include/boost/fusion/tuple/make_tuple.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_TUPLE_10032005_0843) -#define FUSION_MAKE_TUPLE_10032005_0843 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - inline tuple<> - make_tuple() - { - return tuple<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template - inline tuple - make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - { - return tuple( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp deleted file mode 100644 index 1e3d9cca..00000000 --- a/include/boost/fusion/tuple/tuple.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TUPLE_10032005_0810) -#define FUSION_TUPLE_10032005_0810 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - struct tuple : vector - { - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> - base_type; - - tuple() - : base_type() {} - - template - tuple(Sequence const& rhs) - : base_type(rhs) {} - - #include - - template - tuple& - operator=(T const& rhs) - { - base_type::operator=(rhs); - return *this; - } - }; - - template - struct tuple_size : result_of::size {}; - - template - struct tuple_element : result_of::value_at_c {}; - - template - inline typename - lazy_disable_if< - is_const - , result_of::at_c - >::type - get(Tuple& tup) - { - return at_c(tup); - } - - template - inline typename result_of::at_c::type - get(Tuple const& tup) - { - return at_c(tup); - } -}} - -#endif diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp deleted file mode 100644 index 272ce536..00000000 --- a/include/boost/fusion/tuple/tuple_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_TUPLE_FORWARD_10032005_0956) -#define FUSION_TUPLE_FORWARD_10032005_0956 - -#include -#include - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - > - struct tuple; -}} - -#endif diff --git a/include/boost/fusion/tuple/tuple_tie.hpp b/include/boost/fusion/tuple/tuple_tie.hpp deleted file mode 100644 index 2c5ed4cc..00000000 --- a/include/boost/fusion/tuple/tuple_tie.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_TUPLE_TIE_10032005_0846) -#define FUSION_TUPLE_TIE_10032005_0846 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF - -}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template - inline tuple - tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) - { - return tuple( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 deleted file mode 100644 index 03acc124..00000000 --- a/test/Jamfile.v2 +++ /dev/null @@ -1,112 +0,0 @@ -#============================================================================== -# Copyright (c) 2003-2006 Joel de Guzman -# -# 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) -#============================================================================== - -# bring in rules for testing -import testing ; - -{ - test-suite fusion : - - [ run algorithm/all.cpp : : : : ] - [ run algorithm/any.cpp : : : : ] - [ run algorithm/clear.cpp : : : : ] - [ run algorithm/count.cpp : : : : ] - [ run algorithm/count_if.cpp : : : : ] - [ run algorithm/erase.cpp : : : : ] - [ run algorithm/erase_key.cpp : : : : ] - [ run algorithm/filter.cpp : : : : ] - [ run algorithm/filter_if.cpp : : : : ] - [ run algorithm/find.cpp : : : : ] - [ run algorithm/find_if.cpp : : : : ] - [ run algorithm/fold.cpp : : : : ] - [ run algorithm/for_each.cpp : : : : ] - [ run algorithm/insert.cpp : : : : ] - [ run algorithm/insert_range.cpp : : : : ] - [ run algorithm/none.cpp : : : : ] - [ run algorithm/pop_back.cpp : : : : ] - [ run algorithm/pop_front.cpp : : : : ] - [ run algorithm/push_back.cpp : : : : ] - [ run algorithm/push_front.cpp : : : : ] - [ run algorithm/remove.cpp : : : : ] - [ run algorithm/remove_if.cpp : : : : ] - [ run algorithm/replace.cpp : : : : ] - [ run algorithm/replace_if.cpp : : : : ] - [ run algorithm/reverse.cpp : : : : ] - [ run algorithm/transform.cpp : : : : ] - [ run algorithm/join.cpp : : : : ] - [ run algorithm/zip.cpp : : : : ] - [ run algorithm/zip2.cpp : : : : ] - - [ run sequence/as_list.cpp : : : : ] - [ run sequence/as_map.cpp : : : : ] - [ run sequence/as_set.cpp : : : : ] - [ run sequence/as_vector.cpp : : : : ] - [ run sequence/boost_tuple.cpp : : : : ] - [ run sequence/cons.cpp : : : : ] - [ run sequence/filter_view.cpp : : : : ] - [ run sequence/io.cpp : : : : ] - [ run sequence/iterator_range.cpp : : : : ] - [ run sequence/joint_view.cpp : : : : ] - [ run sequence/list_comparison.cpp : : : : ] - [ run sequence/list_construction.cpp : : : : ] - [ run sequence/list_copy.cpp : : : : ] - [ run sequence/list_iterator.cpp : : : : ] - [ run sequence/list_make.cpp : : : : ] - [ run sequence/list_misc.cpp : : : : ] - [ run sequence/list_mutate.cpp : : : : ] - [ run sequence/list_tie.cpp : : : : ] - [ run sequence/list_value_at.cpp : : : : ] - [ run sequence/make_list.cpp : : : : ] - [ run sequence/make_vector.cpp : : : : ] - [ run sequence/map.cpp : : : : ] - [ run sequence/reverse_view.cpp : : : : ] - [ run sequence/set.cpp : : : : ] - [ run sequence/single_view.cpp : : : : ] - [ run sequence/std_pair.cpp : : : : ] - [ run sequence/array.cpp : : : : ] - [ run sequence/tuple_comparison.cpp : : : : ] - [ run sequence/tuple_construction.cpp : : : : ] - [ run sequence/tuple_copy.cpp : : : : ] - [ run sequence/tuple_element.cpp : : : : ] - [ run sequence/tuple_make.cpp : : : : ] - [ run sequence/tuple_misc.cpp : : : : ] - [ run sequence/tuple_mutate.cpp : : : : ] - [ run sequence/tuple_tie.cpp : : : : ] - [ run sequence/transform_view.cpp : : : : ] - [ run sequence/unpack_args.cpp ] - [ run sequence/vector_comparison.cpp : : : : ] - [ run sequence/vector_construction.cpp : : : : ] - [ run sequence/vector_copy.cpp : : : : ] - [ run sequence/vector_iterator.cpp : : : : ] - [ run sequence/vector_make.cpp : : : : ] - [ run sequence/vector_misc.cpp : : : : ] - [ run sequence/vector_mutate.cpp : : : : ] - [ run sequence/vector_n.cpp : : : : ] - [ run sequence/vector_tie.cpp : : : : ] - [ run sequence/vector_value_at.cpp : : : : ] - [ run sequence/zip_view.cpp : : : : ] - [ run sequence/zip_view2.cpp : : : : ] -# [ compile-fail xxx.cpp : : : : ] - - ; -} - -{ - # Text for extension features, must be explicitly specified on the command line to be run - # TODO these are not in a test-suite because currently test-suites cannot be marked "explicit" - - run algorithm/ext_/for_each_s.cpp ; - explicit for_each_s ; - - run algorithm/ext_/find_if_s.cpp ; - explicit find_if_s ; - - run sequence/ext_/iterator_range_s.cpp ; - explicit iterator_range_s ; -} - diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp deleted file mode 100644 index 8cc75586..00000000 --- a/test/algorithm/all.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int -main() -{ - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4))); - BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0))); - } - - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 == 1))); - BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 < 3))); - } - - { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::all(mpl_vec(), boost::lambda::_1 < 4)); - BOOST_TEST(!boost::fusion::all(mpl_vec(), boost::lambda::_1 == 2)); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp deleted file mode 100644 index 5b7ab2ed..00000000 --- a/test/algorithm/any.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int -main() -{ - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST(boost::fusion::any(t, boost::lambda::_1 == 2)); - } - - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST(!boost::fusion::any(t, boost::lambda::_1 == 3)); - } - - { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::any(mpl_vec(), boost::lambda::_1 == 2)); - BOOST_TEST(!boost::fusion::any(mpl_vec(), boost::lambda::_1 == 4)); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/clear.cpp b/test/algorithm/clear.cpp deleted file mode 100644 index 830e3821..00000000 --- a/test/algorithm/clear.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing pop_back - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - - { - std::cout << clear(t1) << std::endl; - BOOST_TEST((clear(t1) == make_vector())); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - std::cout << boost::fusion::clear(mpl_vec()) << std::endl; - BOOST_TEST((boost::fusion::clear(mpl_vec()) == make_vector())); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/count.cpp b/test/algorithm/count.cpp deleted file mode 100644 index 718427c2..00000000 --- a/test/algorithm/count.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int -main() -{ - { - boost::fusion::vector t(1, 1, 1); - BOOST_TEST(boost::fusion::count(t, 1) == 3); - } - - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST(boost::fusion::count(t, 3) == 0); - } - - { - boost::fusion::vector t(4, "hello", 4); - BOOST_TEST(boost::fusion::count(t, "hello") == 1); - } - - { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::count(mpl_vec(), 2) == 3); - BOOST_TEST(boost::fusion::count(mpl_vec(), 3) == 2); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp deleted file mode 100644 index 3130cdc4..00000000 --- a/test/algorithm/count_if.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int -main() -{ - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 2) == 1); - } - - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 3) == 0); - } - - { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 <= 2) == 2); - BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 > 2) == 1); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp deleted file mode 100644 index 97520964..00000000 --- a/test/algorithm/erase.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector_c; - using boost::mpl::begin; - using boost::mpl::advance; - using boost::mpl::int_; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing erase - - { - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, "Ruby"); - vector_iterator pos(t1); - - std::cout << erase(t1, pos) << std::endl; - BOOST_TEST((erase(t1, pos) == make_vector(1, 'x', std::string("Ruby")))); - BOOST_TEST((erase(t1, end(t1)) == make_vector(1, 'x', 3.3, std::string("Ruby")))); - } - - { - typedef vector_c mpl_vec; - typedef boost::mpl::begin::type mpl_vec_begin; - typedef boost::mpl::advance >::type mpl_vec_at3; - typedef boost::mpl::next::type n1; - typedef boost::mpl::next::type n2; - typedef boost::mpl::next::type n3; - - BOOST_STATIC_ASSERT((boost::is_same::value)); - - - std::cout << erase(mpl_vec(), mpl_vec_at3()) << std::endl; - BOOST_TEST((erase(mpl_vec(), mpl_vec_at3()) - == make_vector(1, 2, 3, 5))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp deleted file mode 100644 index 1540ff6e..00000000 --- a/test/algorithm/erase_key.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -template -void test_set(Set const& set) -{ - using namespace boost::fusion; - std::cout << set << std::endl; - - BOOST_STATIC_ASSERT(result_of::size::value == 3); - BOOST_TEST((*find(set) == 1)); - BOOST_TEST((*find(set) == 1.5)); - BOOST_TEST((*find(set) == "hello")); -} - -typedef boost::mpl::int_<1> _1; -typedef boost::mpl::int_<2> _2; -typedef boost::mpl::int_<3> _3; -typedef boost::mpl::int_<4> _4; - -template -void test_map(Map const& map) -{ - using namespace boost::fusion; - std::cout << map << std::endl; - - BOOST_STATIC_ASSERT(result_of::size::value == 3); - BOOST_TEST(((*find<_1>(map)).second == 1)); - BOOST_TEST(((*find<_3>(map)).second == 1.5)); - BOOST_TEST(((*find<_4>(map)).second == std::string("hello"))); -} - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - using boost::fusion::pair; - using boost::fusion::make_pair; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - test_set(as_set(erase_key(make_set(1, 'x', 1.5, std::string("hello"))))); - test_map(as_map(erase_key<_2>(make_map<_1, _2, _3, _4>(1, 'x', 1.5, "hello")))); - - return boost::report_errors(); -} - diff --git a/test/algorithm/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp deleted file mode 100755 index 8f5484ad..00000000 --- a/test/algorithm/ext_/find_if_s.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator int() const - { - return 12345; - } -}; - -template -void -process_tree(Tree const &tree) -{ - using namespace boost; - using mpl::_; - - typedef typename fusion::result_of::find_if_s >::type short_iter; - typedef typename fusion::result_of::find_if_s >::type float_iter; - - // find_if_s of a segmented data structure returns generic - // segmented iterators - short_iter si = fusion::find_if_s >(tree); - float_iter fi = fusion::find_if_s >(tree); - - // they behave like ordinary Fusion iterators ... - BOOST_TEST((*si == short('d'))); - BOOST_TEST((*fi == float(1))); -} - -int -main() -{ - using namespace boost::fusion; - - { - using boost::is_same; - using boost::mpl::_; - - typedef vector vector_type; - vector_type v(12345, 'x', 678910, 3.36); - - std::cout << *find_if_s >(v) << std::endl; - BOOST_TEST((*find_if_s >(v) == 'x')); - - std::cout << *find_if_s >(v) << std::endl; - BOOST_TEST((*find_if_s >(v) == 12345)); - - std::cout << *find_if_s >(v) << std::endl; - BOOST_TEST((*find_if_s >(v) == 3.36)); - } - - { - using boost::mpl::vector; - using boost::is_same; - using boost::mpl::_; - - typedef vector mpl_vec; - BOOST_TEST((*find_if_s >(mpl_vec()) == 12345)); - } - - { - using boost::mpl::vector_c; - using boost::mpl::less; - using boost::mpl::int_; - using boost::is_same; - using boost::mpl::_; - - typedef vector_c mpl_vec; - BOOST_TEST((*find_if_s > >(mpl_vec()) == 1)); - } - - { - process_tree( - make_tree( - make_vector(double(0),'B') - , make_tree( - make_vector(1,2,long(3)) - , make_tree(make_vector('a','b','c')) - , make_tree(make_vector(short('d'),'e','f')) - ) - , make_tree( - make_vector(4,5,6) - , make_tree(make_vector(float(1),'h','i')) - , make_tree(make_vector('j','k','l')) - ) - ) - ); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/ext_/for_each_s.cpp b/test/algorithm/ext_/for_each_s.cpp deleted file mode 100755 index b0e28f7a..00000000 --- a/test/algorithm/ext_/for_each_s.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman, Eric Niebler - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -struct print -{ - template - void operator()(T const& v) const - { - std::cout << "[ " << v << " ] "; - } -}; - -struct increment -{ - template - void operator()(T& v) const - { - ++v; - } -}; - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector_c; - namespace fusion = boost::fusion; - - { - typedef vector vector_type; - vector_type v(1, 'x', 3.3, "Ruby"); - for_each_s(v, print()); - std::cout << std::endl; - } - - { - typedef vector vector_type; - vector_type v(1, 'x', 3.3, "Ruby"); - for_each_s(v, increment()); - std::cout << v << std::endl; - } - - { - typedef vector_c mpl_vec; - fusion::for_each_s(mpl_vec(), print()); - std::cout << std::endl; - } - - { - fusion::for_each_s( - make_tree( - make_vector(double(0),'B') - , make_tree( - make_vector(1,2,long(3)) - , make_tree(make_vector('a','b','c')) - , make_tree(make_vector(short('d'),'e','f')) - ) - , make_tree( - make_vector(4,5,6) - , make_tree(make_vector(float(1),'h','i')) - , make_tree(make_vector('j','k','l')) - ) - ) - , print() - ); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/filter.cpp b/test/algorithm/filter.cpp deleted file mode 100644 index 196e37b8..00000000 --- a/test/algorithm/filter.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - typedef boost::fusion::vector vector_type; - vector_type t('a', 6.6, 'b'); - - { - std::cout << filter(t) << std::endl; - BOOST_TEST((filter(t) - == make_vector('a', 'b'))); - } - - { - typedef boost::mpl::vector mpl_vec; - BOOST_TEST((filter(mpl_vec()) - == make_vector('\0', '\0'))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/filter_if.cpp b/test/algorithm/filter_if.cpp deleted file mode 100644 index b8b80735..00000000 --- a/test/algorithm/filter_if.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator char const*() const - { - return ""; - } -}; - -struct Y -{ - operator char const*() const - { - return ""; - } -}; - -int -main() -{ - using namespace boost::fusion; - - using boost::mpl::_; - using boost::mpl::not_; - using boost::is_class; - using boost::is_same; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing filter_if - - X x; Y y; - typedef boost::fusion::vector vector_type; - vector_type t(y, '@', 987654, x, true, 6.6); - - { - std::cout << filter_if > >(t) << std::endl; - BOOST_TEST((filter_if > >(t) - == make_vector('@', 987654, true, 6.6))); - } - - { - std::cout << filter_if >(t) << std::endl; - BOOST_TEST((filter_if >(t) - == make_vector(y, x))); - } - - { - typedef boost::mpl::vector mpl_vec; - BOOST_TEST((filter_if > >(mpl_vec()) - == make_vector(char(), long(), bool()))); - BOOST_TEST((filter_if >(mpl_vec()) - == make_vector(y, x))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/find.cpp b/test/algorithm/find.cpp deleted file mode 100644 index 3bf4d1b3..00000000 --- a/test/algorithm/find.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator int() const - { - return 12345; - } -}; -int -main() -{ - using namespace boost::fusion; - using boost::mpl::identity; - - { - typedef vector seq_type; - seq_type seq(12345, 'x', 678910, 3.36); - - std::cout << *boost::fusion::find(seq) << std::endl; - BOOST_TEST(*boost::fusion::find(seq) == 'x'); - - std::cout << *boost::fusion::find(seq) << std::endl; - BOOST_TEST(*boost::fusion::find(seq) == 12345); - - std::cout << *boost::fusion::find(seq) << std::endl; - BOOST_TEST(*boost::fusion::find(seq) == 3.36); - - BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); - } - - { - typedef set seq_type; - seq_type seq(12345, 'x', 3.36); - std::cout << *boost::fusion::find(seq) << std::endl; - BOOST_TEST(*boost::fusion::find(seq) == 'x'); - BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); - } - - { - typedef map< - pair - , pair > - map_type; - - map_type seq( - make_pair('X') - , make_pair("Men")); - - std::cout << *boost::fusion::find(seq) << std::endl; - std::cout << *boost::fusion::find(seq) << std::endl; - BOOST_TEST((*boost::fusion::find(seq)).second == 'X'); - BOOST_TEST((*boost::fusion::find(seq)).second == "Men"); - BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); - } - - { - typedef boost::mpl::vector mpl_vec; - BOOST_TEST((*boost::fusion::find(mpl_vec()) == 12345)); - BOOST_TEST(boost::fusion::find(mpl_vec()) == boost::fusion::end(mpl_vec())); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/find_if.cpp b/test/algorithm/find_if.cpp deleted file mode 100644 index 18e262b2..00000000 --- a/test/algorithm/find_if.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator int() const - { - return 12345; - } -}; - -int -main() -{ - using namespace boost::fusion; - - { - using boost::is_same; - using boost::mpl::_; - - typedef vector vector_type; - vector_type v(12345, 'x', 678910, 3.36); - - std::cout << *find_if >(v) << std::endl; - BOOST_TEST((*find_if >(v) == 'x')); - - std::cout << *find_if >(v) << std::endl; - BOOST_TEST((*find_if >(v) == 12345)); - - std::cout << *find_if >(v) << std::endl; - BOOST_TEST((*find_if >(v) == 3.36)); - } - - { - using boost::mpl::vector; - using boost::is_same; - using boost::mpl::_; - - typedef vector mpl_vec; - BOOST_TEST((*find_if >(mpl_vec()) == 12345)); - } - - { - using boost::mpl::vector_c; - using boost::mpl::less; - using boost::mpl::int_; - using boost::is_same; - using boost::mpl::_; - - typedef vector_c mpl_vec; - BOOST_TEST((*find_if > >(mpl_vec()) == 1)); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp deleted file mode 100644 index 61dc3e91..00000000 --- a/test/algorithm/fold.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using boost::mpl::if_; -using boost::mpl::int_; -using boost::is_same; - -struct add_ints_only -{ - template - struct result - { - typedef State type; - }; - - template - State const& - operator()(T const& x, State const& state) const - { - return state; - } - - int - operator()(int x, int state) const - { - return x + state; - } -}; - -struct count_ints -{ - template - struct result - { - typedef typename - if_< - is_same - , typename boost::mpl::next::type - , CountT - >::type - type; - }; - - template - typename result::type - operator()(T const&, CountT const&) const - { - typedef typename result::type result; - return result(); - } -}; - -int -main() -{ - using namespace boost::fusion; - namespace fusion = boost::fusion; - - { - typedef vector vector_type; - vector_type v(12345, 'x', 678910, 3.36); - int result = fold(v, 0, add_ints_only()); - std::cout << result << std::endl; - BOOST_TEST(result == 12345+678910); - } - - { - typedef vector vector_type; - vector_type v(12345); - - int n = fusion::fold(v, int_<0>(), count_ints()); - std::cout << n << std::endl; - BOOST_TEST(n == 1); - } - - { - typedef vector vector_type; - vector_type v(12345, 'x', 678910, 3.36, 8756); - - int n = fusion::fold(v, int_<0>(), count_ints()); - std::cout << n << std::endl; - BOOST_TEST(n == 3); - } - - { - typedef boost::mpl::vector mpl_vec; - int n = fusion::fold(mpl_vec(), int_<0>(), count_ints()); - std::cout << n << std::endl; - BOOST_TEST(n == 3); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp deleted file mode 100644 index 26a9831d..00000000 --- a/test/algorithm/for_each.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -struct print -{ - template - void operator()(T const& v) const - { - std::cout << "[ " << v << " ] "; - } -}; - -struct increment -{ - template - void operator()(T& v) const - { - ++v; - } -}; - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector_c; - namespace fusion = boost::fusion; - - { - typedef vector vector_type; - vector_type v(1, 'x', 3.3, "Ruby"); - for_each(v, print()); - std::cout << std::endl; - } - - { - typedef vector vector_type; - vector_type v(1, 'x', 3.3, "Ruby"); - for_each(v, increment()); - std::cout << v << std::endl; - } - - { - typedef vector_c mpl_vec; - fusion::for_each(mpl_vec(), print()); - std::cout << std::endl; - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/insert.cpp b/test/algorithm/insert.cpp deleted file mode 100644 index da3858ad..00000000 --- a/test/algorithm/insert.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector_c; - using boost::mpl::advance; - using boost::mpl::int_; - namespace fusion = boost::fusion; - namespace mpl = boost::mpl; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing insert - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - vector_iterator pos(t1); - - std::cout << insert(t1, pos, 123456) << std::endl; - BOOST_TEST((insert(t1, pos, 123456) - == make_vector(1, 'x', 123456, 3.3, s))); - - std::cout << insert(t1, end(t1), 123456) << std::endl; - BOOST_TEST((insert(t1, end(t1), 123456) - == make_vector(1, 'x', 3.3, s, 123456))); - - std::cout << insert(t1, begin(t1), "glad") << std::endl; - BOOST_TEST((insert(t1, begin(t1), "glad") - == make_vector(std::string("glad"), 1, 'x', 3.3, s))); - } - - { - typedef vector_c mpl_vec; - typedef mpl::begin::type mpl_vec_begin; - typedef advance >::type mpl_vec_at3; - - std::cout << fusion::insert(mpl_vec(), mpl_vec_at3(), int_<66>()) << std::endl; - BOOST_TEST((fusion::insert(mpl_vec(), mpl_vec_at3(), int_<66>()) - == make_vector(1, 2, 3, 66, 4, 5))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/insert_range.cpp b/test/algorithm/insert_range.cpp deleted file mode 100644 index 030d194c..00000000 --- a/test/algorithm/insert_range.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector_c; - using boost::mpl::advance; - using boost::mpl::int_; - namespace fusion = boost::fusion; - namespace mpl = boost::mpl; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing insert_range - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - vector_iterator pos(t1); - - typedef vector vector_type2; - vector_type2 t2(999, 'z'); - - std::cout << insert_range(t1, pos, t2) << std::endl; - BOOST_TEST((insert_range(t1, pos, t2) - == make_vector(1, 'x', 999, 'z', 3.3, s))); - - std::cout << insert_range(t1, end(t1), t2) << std::endl; - BOOST_TEST((insert_range(t1, end(t1), t2) - == make_vector(1, 'x', 3.3, s, 999, 'z'))); - - std::cout << insert_range(t1, begin(t1), t2) << std::endl; - BOOST_TEST((insert_range(t1, begin(t1), t2) - == make_vector(999, 'z', 1, 'x', 3.3, s))); - } - - { - typedef vector_c mpl_vec; - typedef mpl::begin::type mpl_vec_begin; - typedef advance >::type mpl_vec_at3; - typedef vector_c mpl_vec2; - - std::cout << fusion::insert_range(mpl_vec(), mpl_vec_at3(), mpl_vec2()) << std::endl; - BOOST_TEST((fusion::insert_range(mpl_vec(), mpl_vec_at3(), mpl_vec2()) - == make_vector(1, 2, 3, -1, -2, 4, 5))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/join.cpp b/test/algorithm/join.cpp deleted file mode 100644 index 9a5ec800..00000000 --- a/test/algorithm/join.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int main() -{ - using namespace boost::fusion; - { - BOOST_TEST(join(make_vector(1,2), make_vector('a','b')) == make_vector(1,2,'a','b')); - } - { - typedef boost::mpl::vector2_c vec1; - typedef boost::mpl::vector2_c vec2; - BOOST_TEST(join(vec1(), vec2()) == make_vector(1,2,3,4)); - - } - return boost::report_errors(); -} diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp deleted file mode 100644 index 00d355be..00000000 --- a/test/algorithm/none.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int -main() -{ - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 > 4))); - BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 < 0))); - } - - { - boost::fusion::vector t(1, 2, 3.3); - BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 == 1))); - BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 < 3))); - } - - { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::none(mpl_vec(), boost::lambda::_1 > 4)); - BOOST_TEST(!boost::fusion::none(mpl_vec(), boost::lambda::_1 != 2)); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp deleted file mode 100644 index 7f2b3438..00000000 --- a/test/algorithm/pop_back.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing pop_back - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - - { - std::cout << pop_back(t1) << std::endl; - BOOST_TEST((pop_back(t1) == make_vector(1, 'x', 3.3))); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - std::cout << boost::fusion::pop_back(mpl_vec()) << std::endl; - BOOST_TEST((boost::fusion::pop_back(mpl_vec()) == make_vector(1, 2, 3, 4))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/pop_front.cpp b/test/algorithm/pop_front.cpp deleted file mode 100644 index 0daea5cd..00000000 --- a/test/algorithm/pop_front.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing pop_front - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - - { - std::cout << pop_front(t1) << std::endl; - BOOST_TEST((pop_front(t1) == make_vector('x', 3.3, s))); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - std::cout << boost::fusion::pop_front(mpl_vec()) << std::endl; - BOOST_TEST((boost::fusion::pop_front(mpl_vec()) == make_vector(2, 3, 4, 5))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/push_back.cpp b/test/algorithm/push_back.cpp deleted file mode 100644 index b2b1386a..00000000 --- a/test/algorithm/push_back.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct plus_one -{ - template - void operator()(T& v) const - { - v += 1; - } -}; - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing push_back - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - - { - std::cout << push_back(t1, 123456) << std::endl; - BOOST_TEST((push_back(t1, 123456) - == make_vector(1, 'x', 3.3, s, 123456))); - } - - { - std::cout << push_back(t1, "funny") << std::endl; - BOOST_TEST((push_back(t1, "funny") - == make_vector(1, 'x', 3.3, s, std::string("funny")))); - } - - { - std::cout << push_back(t1, t1) << std::endl; - BOOST_TEST((push_back(t1, t1) - == make_vector(1, 'x', 3.3, s, t1))); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - std::cout << boost::fusion::push_back(mpl_vec(), boost::mpl::int_<6>()) << std::endl; - BOOST_TEST((boost::fusion::push_back(mpl_vec(), boost::mpl::int_<6>()) - == make_vector(1, 2, 3, 4, 5, 6))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/push_front.cpp b/test/algorithm/push_front.cpp deleted file mode 100644 index c2c4dc70..00000000 --- a/test/algorithm/push_front.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing push_front - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3.3, s); - - { - std::cout << push_front(t1, 123456) << std::endl; - BOOST_TEST((push_front(t1, 123456) - == make_vector(123456, 1, 'x', 3.3, s))); - } - - { - std::cout << push_front(t1, "lively") << std::endl; - BOOST_TEST((push_front(t1, "lively") - == make_vector(std::string("lively"), 1, 'x', 3.3, s))); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - std::cout << boost::fusion::push_front(mpl_vec(), boost::mpl::int_<1>()) << std::endl; - BOOST_TEST((boost::fusion::push_front(mpl_vec(), boost::mpl::int_<1>()) - == make_vector(1, 2, 3, 4, 5, 6))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/remove.cpp b/test/algorithm/remove.cpp deleted file mode 100644 index cdc69ff3..00000000 --- a/test/algorithm/remove.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator char const*() const - { - return ""; - } -}; - -struct Y -{ - operator char const*() const - { - return ""; - } -}; - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::identity; - using boost::mpl::vector; - namespace fusion = boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing remove - - X x; Y y; - typedef fusion::vector vector_type; - vector_type t(y, '@', 987654, x, true, 6.6); - - { - std::cout << fusion::remove(t) << std::endl; - BOOST_TEST((fusion::remove(t) - == make_vector(y, '@', 987654, true, 6.6))); - } - - { - std::cout << fusion::remove(t) << std::endl; - BOOST_TEST((fusion::remove(t) - == make_vector('@', 987654, x, true, 6.6))); - } - - { - std::cout << fusion::remove(t) << std::endl; - BOOST_TEST((fusion::remove(t) - == make_vector(y, '@', x, true, 6.6))); - } - - { - typedef vector mpl_vec; - BOOST_TEST((fusion::remove(mpl_vec()) - == vector())); - BOOST_TEST((fusion::remove(mpl_vec()) - == vector())); - BOOST_TEST((fusion::remove(mpl_vec()) - == vector())); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/remove_if.cpp b/test/algorithm/remove_if.cpp deleted file mode 100644 index 8268e7f9..00000000 --- a/test/algorithm/remove_if.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator char const*() const - { - return ""; - } -}; - -struct Y -{ - operator char const*() const - { - return ""; - } -}; - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::vector; - using boost::mpl::_; - using boost::mpl::not_; - using boost::is_class; - using boost::is_same; - namespace fusion = boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing remove_if - - X x; Y y; - typedef fusion::vector vector_type; - vector_type t(y, '@', 987654, x, true, 6.6); - - { - std::cout << remove_if > >(t) << std::endl; - BOOST_TEST((remove_if > >(t) - == make_vector(y, x))); - } - - { - std::cout << remove_if >(t) << std::endl; - BOOST_TEST((remove_if >(t) - == make_vector('@', 987654, true, 6.6))); - } - - { - typedef vector mpl_vec; - BOOST_TEST((remove_if > >(mpl_vec()) - == vector())); - BOOST_TEST((remove_if >(mpl_vec()) - == vector())); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/replace.cpp b/test/algorithm/replace.cpp deleted file mode 100644 index afdbae0c..00000000 --- a/test/algorithm/replace.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing replace - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 'x', 3, s); - - { - std::cout << replace(t1, 'x', 'y') << std::endl; - BOOST_TEST((replace(t1, 'x', 'y') - == make_vector(1, 'y', 3, s))); - } - - { - char const* s2 = "funny"; - std::cout << replace(t1, s, s2) << std::endl; - BOOST_TEST((replace(t1, s, s2) - == make_vector(1, 'x', 3, s2))); - } - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/replace_if.cpp b/test/algorithm/replace_if.cpp deleted file mode 100644 index f2760b0e..00000000 --- a/test/algorithm/replace_if.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct gt3 -{ - template - bool operator()(T x) const - { - return x > 3; - } -}; - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing replace - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type t1(1, 2, 3.3, 4, s, 5.5); - - { - std::cout << replace_if(t1, gt3(), -456) << std::endl; - BOOST_TEST((replace_if(t1, gt3(), -456) - == make_vector(1, 2, -456, -456, s, -456))); - } - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/reverse.cpp b/test/algorithm/reverse.cpp deleted file mode 100644 index a2bbcacf..00000000 --- a/test/algorithm/reverse.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing the reverse_view - - { - typedef boost::mpl::range_c mpl_list1; - mpl_list1 sequence; - - std::cout << reverse(sequence) << std::endl; - BOOST_TEST((reverse(sequence) == make_vector(8, 7, 6, 5))); - } - - { - char const* s = "Hi Kim"; - typedef vector vector_type; - vector_type t(123, 'x', 3.36, s); - - std::cout << reverse(t) << std::endl; - BOOST_TEST((reverse(t) == make_vector(s, 3.36, 'x', 123))); - std::cout << reverse(reverse(t)) << std::endl; - BOOST_TEST((reverse(reverse(t)) == t)); - } - - return boost::report_errors(); -} - - diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp deleted file mode 100644 index e0cfdf34..00000000 --- a/test/algorithm/transform.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct square -{ - template - struct result - { - BOOST_STATIC_ASSERT(!boost::is_reference::value); - typedef int type; - }; - - template - int operator()(T x) const - { - return x * x; - } -}; - -struct add -{ - template - struct result - { - typedef int type; - }; - - template - int operator()(A a, B b) const - { - return a + b; - } -}; - -int -main() -{ - using namespace boost::fusion; - using boost::mpl::range_c; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing the transform - - { - typedef range_c sequence_type; - sequence_type sequence; - std::cout << transform(sequence, square()) << std::endl; - BOOST_TEST((transform(sequence, square()) == make_vector(25, 36, 49, 64))); - } - - { - typedef range_c mpl_list1; - std::cout << transform(mpl_list1(), square()) << std::endl; - BOOST_TEST((transform(mpl_list1(), square()) == make_vector(25, 36, 49, 64))); - } - - { - vector tup(1, 2, 3); - std::cout << transform(tup, square()) << std::endl; - BOOST_TEST((transform(tup, square()) == make_vector(1, 4, 9))); - } - - { - vector tup1(1, 2, 3); - vector tup2(4, 5, 6); - std::cout << transform(tup1, tup2, add()) << std::endl; - BOOST_TEST((transform(tup1, tup2, add()) == make_vector(5, 7, 9))); - } - - return boost::report_errors(); -} - diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp deleted file mode 100644 index bc403a53..00000000 --- a/test/algorithm/zip.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -int main() -{ - using namespace boost::fusion; - { - BOOST_TEST(zip(make_vector(1,2), make_vector('a','b')) == make_vector(make_vector(1,'a'), make_vector(2,'b'))); - BOOST_TEST( - zip( - make_vector(1,2), - make_vector('a','b'), - make_vector(-1,-2)) - == make_vector( - make_vector(1,'a',-1), - make_vector(2,'b',-2))); // Zip more than 2 sequences - } - return boost::report_errors(); -} diff --git a/test/algorithm/zip2.cpp b/test/algorithm/zip2.cpp deleted file mode 100644 index f7efbb7c..00000000 --- a/test/algorithm/zip2.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include - -int main() -{ - using namespace boost::fusion; - { - const vector2 shorter(1,2); - const vector3 longer('a', 'b', 'c'); - const vector2, vector2 > result(vector2(1,'a'), vector2(2,'b')); - BOOST_TEST(zip(shorter, longer) == result); - } - { - const vector3 longer(1,2,3); - const vector2 shorter('a', 'b'); - const vector2, vector2 > result(vector2(1,'a'), vector2(2,'b')); - BOOST_TEST(zip(longer, shorter) == result); - } - return boost::report_errors(); -} diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp deleted file mode 100644 index b9144baa..00000000 --- a/test/sequence/array.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -int main() -{ - using namespace boost::fusion; - typedef boost::array array_type; - - BOOST_MPL_ASSERT((traits::is_sequence)); - BOOST_MPL_ASSERT_NOT((traits::is_view)); - - array_type arr = {{1,2,3}}; - - BOOST_TEST(*begin(arr) == 1); - BOOST_TEST(*next(begin(arr)) == 2); - BOOST_TEST(*advance_c<2>(begin(arr)) == 3); - BOOST_TEST(prior(next(begin(arr))) == begin(arr)); - BOOST_TEST(*prior(end(arr)) == 3); - BOOST_TEST(at_c<2>(arr) == 3); - BOOST_TEST(size(arr) == 3); - BOOST_TEST(distance(begin(arr), end(arr)) == 3); - - return boost::report_errors(); -} diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp deleted file mode 100644 index d21da3c4..00000000 --- a/test/sequence/as_list.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - vector0 empty; - std::cout << as_list(make_vector(1, 1.23, "harru")) << std::endl; - std::cout << as_list(push_back(empty, 999)) << std::endl; - - BOOST_TEST(as_list(make_vector(1, 1.23, "harru")) == make_vector(1, 1.23, std::string("harru"))); - BOOST_TEST(as_list(push_back(empty, 999)) == push_back(empty, 999)); - } - - { - std::cout << as_list(mpl::vector_c()) << std::endl; - BOOST_TEST((as_list(mpl::vector_c()) - == mpl::vector_c())); - } - - { - // test conversion - list l(make_vector(123, "harru")); - BOOST_TEST(l == make_vector(123, "harru")); - l = (make_vector(235, "hola")); // test assign - BOOST_TEST(l == make_vector(235, "hola")); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp deleted file mode 100644 index 5b4fa6d7..00000000 --- a/test/sequence/as_map.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - vector0 empty; - std::cout << as_map(make_list(make_pair('X'), make_pair("Men"))) << std::endl; - std::cout << as_map(push_back(empty, make_pair(999))) << std::endl; - } - - { - typedef pair p1; - typedef pair p2; - result_of::as_map >::type map(make_pair('X'), make_pair("Men")); - std::cout << at_key(map) << std::endl; - std::cout << at_key(map) << std::endl; - BOOST_TEST(at_key(map) == 'X'); - BOOST_TEST(at_key(map) == "Men"); - } - - { - // test conversion - typedef map< - pair - , pair > - map_type; - - map_type m(make_vector(make_pair('X'), make_pair("Men"))); - BOOST_TEST(as_vector(m) == make_vector(make_pair('X'), make_pair("Men"))); - m = (make_vector(make_pair('X'), make_pair("Men"))); // test assign - BOOST_TEST(as_vector(m) == make_vector(make_pair('X'), make_pair("Men"))); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp deleted file mode 100644 index 2a093d9d..00000000 --- a/test/sequence/as_set.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - vector0 empty; - std::cout << as_set(make_list(1, 1.23, "harru")) << std::endl; - std::cout << as_set(push_back(empty, 999)) << std::endl; - - BOOST_TEST(as_list(as_set(make_list(1, 1.23, "harru"))) - == make_list(1, 1.23, std::string("harru"))); - BOOST_TEST(as_list(as_set(push_back(empty, 999))) - == push_back(empty, 999)); - } - - { - result_of::as_set >::type set(1, 1.23, "harru"); - std::cout << at_key(set) << std::endl; - BOOST_TEST(at_key(set) == 1); - } - - { - std::cout << as_set(mpl::vector_c()) << std::endl; - BOOST_TEST((as_list(as_set(mpl::vector_c())) - == mpl::vector_c())); - } - - { - // test conversion - set s(make_vector(123, "harru")); - BOOST_TEST(as_vector(s) == make_vector(123, "harru")); - s = (make_vector(235, "hola")); // test assign - BOOST_TEST(as_vector(s) == make_vector(235, "hola")); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp deleted file mode 100644 index 8360e2e0..00000000 --- a/test/sequence/as_vector.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - vector0 empty; - std::cout << as_vector(make_list(1, 1.23, "harru")) << std::endl; - std::cout << as_vector(push_back(empty, 999)) << std::endl; - - BOOST_TEST(as_vector(make_list(1, 1.23, "harru")) == make_list(1, 1.23, std::string("harru"))); - BOOST_TEST(as_vector(push_back(empty, 999)) == push_back(empty, 999)); - } - - { - std::cout << as_vector(mpl::vector_c()) << std::endl; - BOOST_TEST((as_vector(mpl::vector_c()) - == mpl::vector_c())); - } - - { - // test conversion - vector v(make_list(123, "harru")); - BOOST_TEST(v == make_list(123, "harru")); - v = (make_list(235, "hola")); // test assign - BOOST_TEST(v == make_list(235, "hola")); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp deleted file mode 100644 index 9fc93985..00000000 --- a/test/sequence/boost_tuple.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - typedef boost::tuple tuple_type; - BOOST_MPL_ASSERT_NOT((traits::is_view)); - tuple_type t(123, "Hola!!!"); - - std::cout << at_c<0>(t) << std::endl; - std::cout << at_c<1>(t) << std::endl; - std::cout << t << std::endl; - BOOST_TEST(t == make_vector(123, "Hola!!!")); - - at_c<0>(t) = 6; - at_c<1>(t) = "mama mia"; - BOOST_TEST(t == make_vector(6, "mama mia")); - - BOOST_STATIC_ASSERT(result_of::size::value == 2); - BOOST_STATIC_ASSERT(!result_of::empty::value); - - BOOST_TEST(front(t) == 6); - } - - { - fusion::vector v1(4, 3.3f); - boost::tuple v2(5, 3.3f); - fusion::vector v3(5, 4.4); - BOOST_TEST(v1 < v2); - BOOST_TEST(v1 <= v2); - BOOST_TEST(v2 > v1); - BOOST_TEST(v2 >= v1); - BOOST_TEST(v2 < v3); - BOOST_TEST(v2 <= v3); - BOOST_TEST(v3 > v2); - BOOST_TEST(v3 >= v2); - } - - { - // conversion from boost tuple to vector - fusion::vector v(tuples::make_tuple(123, "Hola!!!")); - v = tuples::make_tuple(123, "Hola!!!"); - } - - { - // conversion from boost tuple to list - fusion::list l(tuples::make_tuple(123, "Hola!!!")); - l = tuples::make_tuple(123, "Hola!!!"); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp deleted file mode 100644 index b7378c66..00000000 --- a/test/sequence/comparison.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -void -equality_test() -{ - using namespace boost::fusion; - - FUSION_SEQUENCE v1(5, 'a'); - FUSION_SEQUENCE v2(5, 'a'); - BOOST_TEST(v1 == v2); - - FUSION_SEQUENCE v3(5, 'b'); - FUSION_SEQUENCE t4(2, 'a'); - BOOST_TEST(v1 != v3); - BOOST_TEST(v1 != t4); - BOOST_TEST(!(v1 != v2)); - - FUSION_SEQUENCE v5(5, 'a', true); - BOOST_TEST(v1 != v5); - BOOST_TEST(!(v1 == v5)); - BOOST_TEST(v5 != v1); - BOOST_TEST(!(v5 == v1)); -} - -void -ordering_test() -{ - using namespace boost::fusion; - - FUSION_SEQUENCE v1(4, 3.3f); - FUSION_SEQUENCE v2(5, 3.3f); - FUSION_SEQUENCE v3(5, 4.4); - BOOST_TEST(v1 < v2); - BOOST_TEST(v1 <= v2); - BOOST_TEST(v2 > v1); - BOOST_TEST(v2 >= v1); - BOOST_TEST(v2 < v3); - BOOST_TEST(v2 <= v3); - BOOST_TEST(v3 > v2); - BOOST_TEST(v3 >= v2); - -#if defined(FUSION_TEST_FAIL) - FUSION_SEQUENCE v5(5, 'a', true); - v1 >= v5; -#endif -} - - - diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp deleted file mode 100644 index 22a150f2..00000000 --- a/test/sequence/cons.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*============================================================================= - Copyright (c) 2005 Joel de Guzman - Copyright (c) 2005 Eric Niebler - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -int -main() -{ - using namespace boost::fusion; - using boost::is_same; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing cons - - { - std::string hello("hello"); - cons > ns = - make_cons(1, make_cons(hello)); - - BOOST_TEST((*begin(ns) == 1)); - BOOST_TEST((*next(begin(ns)) == hello)); - - *begin(ns) += 1; - *next(begin(ns)) += ' '; - - BOOST_TEST((*begin(ns) == 2)); - BOOST_TEST((*next(begin(ns)) == hello + ' ')); - - for_each(ns, boost::lambda::_1 += ' '); - - BOOST_TEST((*begin(ns) == 2 + ' ')); - BOOST_TEST((*next(begin(ns)) == hello + ' ' + ' ')); - } - - { - BOOST_TEST( - make_cons("hello") == make_vector(std::string("hello")) - ); - - BOOST_TEST( - make_cons(123, make_cons("hello")) == - make_vector(123, std::string("hello")) - ); - } - - { - vector t(1, 1.1f); - cons > nf = - make_cons(1, make_cons(1.1f)); - - BOOST_TEST((t == nf)); - BOOST_TEST((vector(1) == filter_if >(nf))); - - std::cout << nf << std::endl; - std::cout << filter_if >(nf) << std::endl; - } - - { - int i = 3; - cons tie(cons_tie(i)); - BOOST_TEST((*begin(tie) == 3)); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp deleted file mode 100644 index da9e400a..00000000 --- a/test/sequence/construction.hpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -namespace -{ - // something to prevent warnings for unused variables - template void dummy(const T&) {} - - // no public default constructor - class foo - { - public: - - explicit foo(int v) : val(v) {} - - bool operator==(const foo& other) const - { - return val == other.val; - } - - private: - - foo() {} - int val; - }; - - // another class without a public default constructor - class no_def_constructor - { - no_def_constructor() {} - - public: - - no_def_constructor(std::string) {} - }; -} - -inline void -test() -{ - using namespace boost::fusion; - - FUSION_SEQUENCE t1; - BOOST_TEST(FUSION_AT<0>(t1) == int()); - - FUSION_SEQUENCE t2(5.5f); - BOOST_TEST(FUSION_AT<0>(t2) > 5.4f && FUSION_AT<0>(t2) < 5.6f); - - FUSION_SEQUENCE t3(foo(12)); - BOOST_TEST(FUSION_AT<0>(t3) == foo(12)); - - FUSION_SEQUENCE t4(t2); - BOOST_TEST(FUSION_AT<0>(t4) > 5.4 && FUSION_AT<0>(t4) < 5.6); - - FUSION_SEQUENCE t5; - BOOST_TEST(FUSION_AT<0>(t5) == int()); - BOOST_TEST(FUSION_AT<1>(t5) == float()); - - FUSION_SEQUENCE t6(12, 5.5f); - BOOST_TEST(FUSION_AT<0>(t6) == 12); - BOOST_TEST(FUSION_AT<1>(t6) > 5.4f && FUSION_AT<1>(t6) < 5.6f); - - FUSION_SEQUENCE t7(t6); - BOOST_TEST(FUSION_AT<0>(t7) == 12); - BOOST_TEST(FUSION_AT<1>(t7) > 5.4f && FUSION_AT<1>(t7) < 5.6f); - - FUSION_SEQUENCE t8(t6); - BOOST_TEST(FUSION_AT<0>(t8) == 12); - BOOST_TEST(FUSION_AT<1>(t8) > 5.4f && FUSION_AT<1>(t8) < 5.6f); - - dummy - ( - FUSION_SEQUENCE( - std::string("Jaba"), // ok, since the default - std::string("Daba"), // constructor is not used - std::string("Doo") - ) - ); - - dummy(FUSION_SEQUENCE()); - dummy(FUSION_SEQUENCE(1,3.14)); - -#if defined(FUSION_TEST_FAIL) - dummy(FUSION_SEQUENCE()); // should fail, no defaults for references - dummy(FUSION_SEQUENCE()); // likewise -#endif - - { - double dd = 5; - dummy(FUSION_SEQUENCE(dd)); // ok - dummy(FUSION_SEQUENCE(dd+3.14)); // ok, but dangerous - } - -#if defined(FUSION_TEST_FAIL) - dummy(FUSION_SEQUENCE(dd+3.14)); // should fail, - // temporary to non-const reference -#endif -} diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp deleted file mode 100644 index 7e88caf4..00000000 --- a/test/sequence/copy.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -#if !defined(FUSION_MAKE) -#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) -#endif - -#if !defined(FUSION_TIE) -#define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) -#endif - -namespace -{ - // classes with different kinds of conversions - class AA {}; - class BB : public AA {}; - struct CC { CC() {} CC(const BB&) {} }; - struct DD { operator CC() const { return CC(); }; }; -} - -boost::fusion::FUSION_SEQUENCE -foo(int i) -{ - return boost::fusion::FUSION_MAKE(i, i+1, i+2, i+3); -} - -void -test() -{ - using namespace boost::fusion; - - FUSION_SEQUENCE t1(4, 'a'); - FUSION_SEQUENCE t2(5, 'b'); - t2 = t1; - BOOST_TEST(FUSION_AT<0>(t1) == FUSION_AT<0>(t2)); - BOOST_TEST(FUSION_AT<1>(t1) == FUSION_AT<1>(t2)); - - FUSION_SEQUENCE t3(2, "a"); - t3 = t1; - BOOST_TEST((double)FUSION_AT<0>(t1) == FUSION_AT<0>(t3)); - BOOST_TEST(FUSION_AT<1>(t1) == FUSION_AT<1>(t3)[0]); - - // testing copy and assignment with implicit conversions - // between elements testing tie - - FUSION_SEQUENCE t; - FUSION_SEQUENCE a(t); - a = t; - - int i; char c; double d; - FUSION_TIE(i, c, d) = FUSION_MAKE(1, 'a', 5.5); - - BOOST_TEST(i==1); - BOOST_TEST(c=='a'); - BOOST_TEST(d>5.4 && d<5.6); - - // returning a tuple with conversion - foo(2); -} diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp deleted file mode 100755 index ddbfd682..00000000 --- a/test/sequence/ext_/iterator_range_s.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct ostream_fun -{ - ostream_fun(std::ostream &sout) - : sout_(sout) - {} - template - void operator ()(T const &t) const - { - sout_ << t << ' '; - } -private: - std::ostream & sout_; -}; - -template -void -process_tree(Tree const &tree) -{ - using namespace boost; - using namespace fusion; - using mpl::_; - - typedef typename result_of::find_if_s >::type short_iter; - typedef typename result_of::find_if_s >::type float_iter; - - typedef iterator_range slice_t; - BOOST_STATIC_ASSERT(traits::is_segmented::value); - - // find_if_s of a segmented data structure returns generic - // segmented iterators - short_iter si = find_if_s >(tree); - float_iter fi = find_if_s >(tree); - - // If you put them in an iterator range, the range - // is automatically a segmented data structure. - slice_t slice(si, fi); - - std::stringstream sout; - fusion::for_each_s(slice, ostream_fun(sout)); - BOOST_TEST((sout.str() == "100 e f 0 B ")); -} - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type vec(1, 'x', 3.3, s); - - { - typedef vector_iterator i1t; - typedef vector_iterator i3t; - - i1t i1(vec); - i3t i3(vec); - - typedef iterator_range slice_t; - slice_t slice(i1, i3); - std::cout << slice << std::endl; - BOOST_TEST((slice == make_vector('x', 3.3))); - BOOST_STATIC_ASSERT(result_of::size::value == 2); - } - - { - typedef vector_iterator i1t; - typedef vector_iterator i3t; - - i1t i1(vec); - i3t i3(vec); - - typedef iterator_range slice_t; - slice_t slice(i1, i3); - std::cout << slice << std::endl; - BOOST_TEST(slice == make_vector()); - BOOST_STATIC_ASSERT(result_of::size::value == 0); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - typedef boost::mpl::begin::type it0; - typedef boost::mpl::next::type it1; - typedef boost::mpl::next::type it2; - typedef boost::mpl::next::type it3; - - it1 f; - it3 l; - - typedef iterator_range slice_t; - slice_t slice(f, l); - std::cout << slice << std::endl; - BOOST_TEST((slice == make_vector(3, 4))); - BOOST_STATIC_ASSERT(result_of::size::value == 2); - } - - { - process_tree( - make_tree( - make_vector(double(0),'B') - , make_tree( - make_vector(1,2,long(3)) - , make_tree(make_vector('a','b','c')) - , make_tree(make_vector(short('d'),'e','f')) - ) - , make_tree( - make_vector(4,5,6) - , make_tree(make_vector(float(1),'h','i')) - , make_tree(make_vector('j','k','l')) - ) - ) - ); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp deleted file mode 100644 index 4d54166e..00000000 --- a/test/sequence/filter_view.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator char const*() const - { - return ""; - } -}; - -struct Y -{ - operator char const*() const - { - return ""; - } -}; - -struct reject_all -{ - template - struct apply : boost::mpl::false_ - {}; -}; - -int -main() -{ - using namespace boost::fusion; - - using boost::mpl::int_; - using boost::mpl::_; - using boost::mpl::not_; - using boost::mpl::less; - using boost::mpl::vector_c; - using boost::is_class; - using boost::is_same; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { // Testing the static find_if (internal function) - - typedef vector vector_type; - - vector_type v(1, 'x', 987654, X()); - typedef vector_iterator begin; - typedef vector_iterator end; - typedef detail::static_find_if > filter; - typedef filter::type type; - - BOOST_TEST(*type(v) == 987654); - std::cout << *type(v) << std::endl; - std::cout << *filter::call(begin(v)) << std::endl; - BOOST_TEST(*type(v) == *filter::call(begin(v))); - } - - { - typedef vector vector_type; - - X x; Y y; - vector_type v(y, '@', 987654, x, true, 6.6); - typedef filter_view > > filter_view_type; - filter_view_type view(v); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector('@', 987654, true, 6.6))); - BOOST_STATIC_ASSERT(result_of::size::value == 4); - } - - { - // $$$ JDG $$$ For some obscure reason, EDG based compilers - // (e.g. comeau 4.3.3, intel) have problems with this. - // vc7.1 and g++ are ok. The errors from comeau are useless. - - typedef vector_c vector_type; - typedef filter_view > > filter_view_type; - vector_type v; - filter_view_type view(v); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(1, 2, 0, -1))); - BOOST_STATIC_ASSERT(result_of::size::value == 4); - } - - { - // Previous filtering out all values caused problems as begin was not equal to end - // Picked up by Andreas Pokorny - typedef vector vec; - typedef filter_view filter_view_type; - - BOOST_MPL_ASSERT((result_of::equal_to::type, result_of::end::type>)); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp deleted file mode 100644 index 3b101a53..00000000 --- a/test/sequence/io.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/*============================================================================= - Copyright (C) 1999-2003 Jaakko Järvi - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#if defined BOOST_NO_STRINGSTREAM -# include -#else -# include -#endif - -using boost::fusion::vector; -using boost::fusion::make_vector; -using boost::fusion::tuple_close; -using boost::fusion::tuple_open; -using boost::fusion::tuple_delimiter; - -#if defined BOOST_NO_STRINGSTREAM - using std::ostrstream; - using std::istrstream; - typedef ostrstream useThisOStringStream; - typedef istrstream useThisIStringStream; -#else - using std::ostringstream; - using std::istringstream; - typedef ostringstream useThisOStringStream; - typedef istringstream useThisIStringStream; -#endif - -using std::endl; -using std::ofstream; -using std::ifstream; -using std::string; - -int -main() -{ - using boost::fusion::tuple_close; - using boost::fusion::tuple_open; - using boost::fusion::tuple_delimiter; - - useThisOStringStream os1; - - // Set format [a, b, c] for os1 - os1 << tuple_open('['); - os1 << tuple_close(']'); - os1 << tuple_delimiter(','); - os1 << make_vector(1, 2, 3); - - BOOST_TEST (os1.str() == std::string("[1,2,3]") ); - - { - useThisOStringStream os2; - // Set format (a:b:c) for os2; - os2 << tuple_open('('); - os2 << tuple_close(')'); - os2 << tuple_delimiter(':'); - - os2 << make_vector("TUPU", "HUPU", "LUPU", 4.5); - BOOST_TEST (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") ); - } - - // The format is still [a, b, c] for os1 - os1 << make_vector(1, 2, 3); - BOOST_TEST (os1.str() == std::string("[1,2,3][1,2,3]") ); - - std::ofstream tmp("temp.tmp"); - - tmp << make_vector("One", "Two", 3); - tmp << tuple_delimiter(':'); - tmp << make_vector(1000, 2000, 3000) << endl; - - tmp.close(); - - // When reading tuples from a stream, manipulators must be set correctly: - ifstream tmp3("temp.tmp"); - vector j; - - tmp3 >> j; - BOOST_TEST (tmp3.good() ); - - tmp3 >> tuple_delimiter(':'); - vector i; - tmp3 >> i; - BOOST_TEST (tmp3.good() ); - - tmp3.close(); - - // reading vector in format (a b c); - useThisIStringStream is("(100 200 300)"); - - vector ti; - BOOST_TEST(bool((is >> ti) != 0)); - BOOST_TEST(ti == make_vector(100, 200, 300)); - - // Note that strings are problematic: - // writing a tuple on a stream and reading it back doesn't work in - // general. If this is wanted, some kind of a parseable string class - // should be used. - - return boost::report_errors(); -} - diff --git a/test/sequence/iterator.hpp b/test/sequence/iterator.hpp deleted file mode 100644 index 629f9bfc..00000000 --- a/test/sequence/iterator.hpp +++ /dev/null @@ -1,198 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void test() -{ - using namespace boost::fusion; - using namespace boost; - - { // Testing deref, next, prior, begin, end - - char const* s = "Hello"; - typedef FUSION_SEQUENCE seq_type; - seq_type v(1, 'x', 3.3, s); - result_of::begin::type i(v); - - BOOST_TEST(*i == 1); - BOOST_TEST(*next(i) == 'x'); - BOOST_TEST(*next(next(i)) == 3.3); - BOOST_TEST(*next(next(next(i))) == s); - next(next(next(next(i)))); // end - -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*prior(next(next(next(i)))) == 3.3); - BOOST_TEST(*prior(prior(next(next(next(i))))) == 'x'); - BOOST_TEST(*prior(prior(prior(next(next(next(i)))))) == 1); -#endif - BOOST_TEST(*begin(v) == 1); -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*prior(end(v)) == s); -#endif - - *i = 3; - BOOST_TEST(*i == 3); - BOOST_TEST(&*i == &at_c<0>(v)); - - // prove that it is mutable - *i = 987; - BOOST_TEST(*i == 987); - } - - { // Testing const sequence and const iterator - - char const* s = "Hello"; - typedef FUSION_SEQUENCE const seq_type; - seq_type t(1, 'x', 3.3, s); - result_of::begin::type i(t); - - BOOST_TEST(*i == 1); - BOOST_TEST(*next(i) == 'x'); - BOOST_TEST(*begin(t) == 1); -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*prior(end(t)) == s); -#endif - -#ifdef FUSION_TEST_FAIL - *i = 3; // must not compile -#endif - } - - { // Testing iterator equality - - typedef FUSION_SEQUENCE seq_type; - typedef FUSION_SEQUENCE const cseq_type; - typedef result_of::begin::type vi1; - typedef result_of::begin::type vi2; - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - BOOST_STATIC_ASSERT((result_of::equal_to::value)); - } - - { - typedef FUSION_SEQUENCE seq_type; - typedef result_of::begin::type begin_type; - typedef result_of::end::type end_type; - typedef result_of::next::type i1; - typedef result_of::next::type i2; - - BOOST_STATIC_ASSERT((is_same::value)); - } - - { // testing deref, next, prior, begin, end - - char const* s = "Hello"; - typedef FUSION_SEQUENCE seq_type; - seq_type t(1, 'x', 3.3, s); - result_of::begin::type i(t); - - BOOST_TEST(*i == 1); - BOOST_TEST(*next(i) == 'x'); - BOOST_TEST(*next(next(i)) == 3.3); - BOOST_TEST(*next(next(next(i))) == s); - - next(next(next(next(i)))); // end - -#ifdef FUSION_TEST_FAIL - next(next(next(next(next(i))))); // past the end: must not compile -#endif - -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*prior(next(next(next(i)))) == 3.3); - BOOST_TEST(*prior(prior(next(next(next(i))))) == 'x'); - BOOST_TEST(*prior(prior(prior(next(next(next(i)))))) == 1); -#endif - BOOST_TEST(*begin(t) == 1); -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*prior(end(t)) == s); -#endif - - *i = 3; - BOOST_TEST(*i == 3); - BOOST_TEST(*i == at_c<0>(t)); - } - - { // Testing distance - - typedef FUSION_SEQUENCE seq_type; - seq_type t(1, 'x', 3.3, "Hello"); - - BOOST_STATIC_ASSERT((result_of::distance< - result_of::begin::type - , result_of::end::type >::value == 4)); - - BOOST_TEST(distance(begin(t), end(t)).value == 4); - } - - { // Testing tuple iterator result_of::value_of, result_of::deref, result_of::value_at - - typedef FUSION_SEQUENCE seq_type; - typedef result_of::begin::type i0; - typedef result_of::next::type i1; - typedef result_of::next::type>::type i2; - - BOOST_STATIC_ASSERT(( - is_same::type, int>::value)); - - BOOST_STATIC_ASSERT(( - is_same::type, char&>::value)); - - BOOST_STATIC_ASSERT(( - is_same::type, FUSION_TRAVERSAL_TAG>::value)); - - BOOST_STATIC_ASSERT((is_same::type, int&>::value)); - BOOST_STATIC_ASSERT((is_same::type, char&>::value)); - - BOOST_STATIC_ASSERT((is_same::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type, char&>::value)); - } - - { // Testing advance - - typedef FUSION_SEQUENCE seq_type; - seq_type t(1, 'x', 3.3, "Hello"); - - BOOST_TEST(*advance_c<0>(begin(t)) == at_c<0>(t)); - BOOST_TEST(*advance_c<1>(begin(t)) == at_c<1>(t)); - BOOST_TEST(*advance_c<2>(begin(t)) == at_c<2>(t)); - BOOST_TEST(*advance_c<3>(begin(t)) == at_c<3>(t)); - -#if !defined(FUSION_NO_PRIOR) - BOOST_TEST(*advance_c<-1>(end(t)) == at_c<3>(t)); - BOOST_TEST(*advance_c<-2>(end(t)) == at_c<2>(t)); - BOOST_TEST(*advance_c<-3>(end(t)) == at_c<1>(t)); - BOOST_TEST(*advance_c<-4>(end(t)) == at_c<0>(t)); -#endif - - BOOST_TEST(&*advance_c<0>(begin(t)) == &at_c<0>(t)); - BOOST_TEST(&*advance_c<1>(begin(t)) == &at_c<1>(t)); - BOOST_TEST(&*advance_c<2>(begin(t)) == &at_c<2>(t)); - BOOST_TEST(&*advance_c<3>(begin(t)) == &at_c<3>(t)); - } -} - - - - diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp deleted file mode 100644 index dd1131be..00000000 --- a/test/sequence/iterator_range.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - char const* s = "Ruby"; - typedef vector vector_type; - vector_type vec(1, 'x', 3.3, s); - - { - typedef vector_iterator i1t; - typedef vector_iterator i3t; - - i1t i1(vec); - i3t i3(vec); - - typedef iterator_range slice_t; - slice_t slice(i1, i3); - std::cout << slice << std::endl; - BOOST_TEST((slice == make_vector('x', 3.3))); - BOOST_STATIC_ASSERT(result_of::size::value == 2); - } - - { - typedef vector_iterator i1t; - typedef vector_iterator i3t; - - i1t i1(vec); - i3t i3(vec); - - typedef iterator_range slice_t; - slice_t slice(i1, i3); - std::cout << slice << std::endl; - BOOST_TEST(slice == make_vector()); - BOOST_STATIC_ASSERT(result_of::size::value == 0); - } - } - - { - typedef boost::mpl::vector_c mpl_vec; - typedef boost::mpl::begin::type it0; - typedef boost::mpl::next::type it1; - typedef boost::mpl::next::type it2; - typedef boost::mpl::next::type it3; - - it1 f; - it3 l; - - typedef iterator_range slice_t; - slice_t slice(f, l); - std::cout << slice << std::endl; - BOOST_TEST((slice == make_vector(3, 4))); - BOOST_STATIC_ASSERT(result_of::size::value == 2); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp deleted file mode 100644 index 3457f076..00000000 --- a/test/sequence/joint_view.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include - -struct X -{ - operator char const*() const - { - return ""; - } -}; - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing joint_view - - { - vector t1(3); - vector t2; - typedef joint_view, vector > view_type; - view_type view(t1, t2); - - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(3, X()))); - } - - { - vector t1(3, 'x'); - vector t2; - typedef joint_view, vector > view_type; - view_type view(t1, t2); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(3, 'x', X()))); - - *begin(view) = 4; - BOOST_TEST(at_c<0>(t1) == 4); - } - - { - vector t1(3, 'x'); - vector t2; - typedef joint_view, vector > view_type; - view_type view(t1, t2); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(3, 'x', X(), 0))); - } - - { - typedef vector t1_type; - t1_type t1(777); - typedef vector t2_type; - t2_type t2(1, 'x', 3.3); - - { - typedef joint_view view_type; - view_type view(t1, t2); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(777, 1, 'x', 3.3))); - } - - { - typedef joint_view view_type; - view_type view(t2, t1); - std::cout << view << std::endl; - BOOST_TEST((view == make_vector(1, 'x', 3.3, 777))); - } - - { - typedef joint_view jv_type; - typedef joint_view jv2_type; - - jv_type jv(t2, t1); - jv2_type jv2(jv, jv); - - std::cout << jv << std::endl; - std::cout << jv2 << std::endl; - - BOOST_TEST(jv2 - == make_vector(1, 'x', 3.3, 777, 1, 'x', 3.3, 777)); - } - - { - typedef joint_view jt_type; - typedef joint_view jv2_type; - typedef joint_view jv3_type; - - jt_type jt(t2, t1); - jv2_type jv2(t1, t2); - jv3_type jv3(jt, jv2); - - std::cout << jt << std::endl; - std::cout << jv2 << std::endl; - std::cout << jv3 << std::endl; - - BOOST_TEST(jv3 - == make_vector(1, 'x', 3.3, 777, 777, 1, 'x', 3.3)); - } - - { - typedef joint_view, t1_type> jt_type; - vector<> empty; - jt_type jt(empty, t1); - std::cout << jt << std::endl; - BOOST_TEST(jt == make_vector(777)); - } - - { - typedef joint_view > jt_type; - vector<> empty; - jt_type jt(t1, empty); - std::cout << jt << std::endl; - BOOST_TEST(jt == make_vector(777)); - } - - { - typedef joint_view, vector<> > jt_type; - vector<> empty; - jt_type jt(empty, empty); - std::cout << jt << std::endl; - BOOST_TEST(jt == make_vector()); - } - } - - return boost::report_errors(); -} - diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp deleted file mode 100644 index 402bf704..00000000 --- a/test/sequence/list_comparison.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE list -#include "comparison.hpp" - -int -main() -{ - equality_test(); - ordering_test(); - return boost::report_errors(); -} diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp deleted file mode 100644 index fb412f16..00000000 --- a/test/sequence/list_construction.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE list -#include "construction.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp deleted file mode 100644 index 673b1c42..00000000 --- a/test/sequence/list_copy.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include - -#define FUSION_SEQUENCE list -#include "copy.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/list_iterator.cpp b/test/sequence/list_iterator.cpp deleted file mode 100644 index 20e04383..00000000 --- a/test/sequence/list_iterator.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE list -#define FUSION_NO_PRIOR -#define FUSION_TRAVERSAL_TAG forward_traversal_tag -#include "./iterator.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - - - diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp deleted file mode 100644 index 03919708..00000000 --- a/test/sequence/list_make.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE list -#include "make.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp deleted file mode 100644 index c6ea3149..00000000 --- a/test/sequence/list_misc.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE list -#define FUSION_FORWARD_ONLY -#include "misc.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp deleted file mode 100644 index fac31fb5..00000000 --- a/test/sequence/list_mutate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE list -#include "mutate.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp deleted file mode 100644 index 950b75a7..00000000 --- a/test/sequence/list_tie.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include - -#define FUSION_SEQUENCE list -#include "tie.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp deleted file mode 100644 index 47347d69..00000000 --- a/test/sequence/list_value_at.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE list -#include "value_at.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/make.hpp b/test/sequence/make.hpp deleted file mode 100644 index 1b175811..00000000 --- a/test/sequence/make.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -#if !defined(FUSION_MAKE) -#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) -#endif - -namespace -{ - // something to prevent warnings for unused variables - template void dummy(const T&) {} - - class A {}; - class B {}; -} - -void make_tuple_test() {} - -void -test() -{ - using namespace boost::fusion; - - { - FUSION_SEQUENCE t1 = FUSION_MAKE(5, 'a'); - BOOST_TEST(FUSION_AT<0>(t1) == 5); - BOOST_TEST(FUSION_AT<1>(t1) == 'a'); - - FUSION_SEQUENCE t2; - t2 = FUSION_MAKE((short int)2, std::string("Hi")); - BOOST_TEST(FUSION_AT<0>(t2) == 2); - BOOST_TEST(FUSION_AT<1>(t2) == "Hi"); - } - - { // This test was previously disallowed for non-PTS compilers. - A a = A(); B b; - const A ca = a; - FUSION_MAKE(boost::cref(a), b); - FUSION_MAKE(boost::ref(a), b); - FUSION_MAKE(boost::ref(a), boost::cref(b)); - FUSION_MAKE(boost::ref(ca)); - } - - { // the result of make_xxx is assignable: - BOOST_TEST(FUSION_MAKE(2, 4, 6) == - (FUSION_MAKE(1, 2, 3) = FUSION_MAKE(2, 4, 6))); - } - - { // This test was previously disallowed for non-PTS compilers. - FUSION_MAKE("Donald", "Daisy"); // should work; - // std::make_pair("Doesn't","Work"); // fails - } - - { - // You can store a reference to a function in a sequence - FUSION_SEQUENCE adf(make_tuple_test); - dummy(adf); // avoid warning for unused variable - } - -#if defined(FUSION_TEST_FAIL) - { - // But make_xxx doesn't work - // with function references, since it creates a const - // qualified function type - - FUSION_MAKE(make_tuple_test); - } -#endif - - { - // With function pointers, make_xxx works just fine - FUSION_MAKE(&make_tuple_test); - } -} diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp deleted file mode 100644 index 03919708..00000000 --- a/test/sequence/make_list.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE list -#include "make.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp deleted file mode 100644 index ff80e84c..00000000 --- a/test/sequence/make_vector.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE vector -#include "make.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp deleted file mode 100644 index bef6880c..00000000 --- a/test/sequence/map.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - using boost::fusion::pair; - using boost::fusion::make_pair; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - typedef map< - pair - , pair > - map_type; - - BOOST_MPL_ASSERT((traits::is_associative)); - - map_type m( - make_pair('X') - , make_pair("Men")); - - std::cout << at_key(m) << std::endl; - std::cout << at_key(m) << std::endl; - - BOOST_TEST(at_key(m) == 'X'); - BOOST_TEST(at_key(m) == "Men"); - - BOOST_STATIC_ASSERT(( - boost::is_same::type, char>::value)); - BOOST_STATIC_ASSERT(( - boost::is_same::type, std::string>::value)); - - std::cout << m << std::endl; - - BOOST_STATIC_ASSERT((result_of::has_key::value)); - BOOST_STATIC_ASSERT((result_of::has_key::value)); - BOOST_STATIC_ASSERT((!result_of::has_key::value)); - } - - { - std::cout << make_map('X', 123) << std::endl; - BOOST_TEST(at_key(make_map('X', 123)) == 'X'); - BOOST_TEST(at_key(make_map('X', 123)) == 123); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp deleted file mode 100644 index 279c91ee..00000000 --- a/test/sequence/misc.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/*============================================================================= - Copyright (C) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -#if !defined(FUSION_SIZE) -#define FUSION_SIZE result_of::size -#endif - -template -struct is_same -{ -}; - -struct test_intrinsics1 -{ - // test at, begin, end, next, prior, advance, size, deref, etc. - - typedef boost::fusion::FUSION_SEQUENCE sequence; - typedef boost::mpl::begin::type first; - typedef boost::mpl::next::type second; - typedef boost::mpl::next::type third; - typedef boost::mpl::next::type fourth; - typedef boost::mpl::end::type last; - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, int>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, float>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, bool>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, char>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::at_c::type, bool>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::front::type, int>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref< - boost::mpl::advance_c::type>::type, char>::value)); - - BOOST_STATIC_ASSERT((boost::mpl::size::value == 4)); - BOOST_STATIC_ASSERT(!(boost::mpl::empty::value)); - BOOST_STATIC_ASSERT((boost::mpl::distance::value == 2)); - -#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev - - typedef boost::mpl::prior::type fourth_; - typedef boost::mpl::prior::type third_; - typedef boost::mpl::prior::type second_; - typedef boost::mpl::prior::type first_; - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, int>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, float>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, bool>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::deref::type, char>::value)); - - BOOST_STATIC_ASSERT((boost::is_same< - boost::mpl::back::type, char>::value)); - -#endif -}; - -struct test_intrinsics2 -{ - typedef boost::fusion::FUSION_SEQUENCE<> seq0; - -#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev - - typedef boost::fusion::FUSION_SEQUENCE target1; - typedef boost::mpl::push_back::type seq1; - BOOST_STATIC_ASSERT((boost::mpl::equal::value)); - - typedef boost::fusion::FUSION_SEQUENCE target2; - typedef boost::mpl::push_back::type seq2; - BOOST_STATIC_ASSERT((boost::mpl::equal::value)); - -#endif - - typedef boost::fusion::FUSION_SEQUENCE target3; - typedef boost::mpl::push_front::type seq3; - BOOST_STATIC_ASSERT((boost::mpl::equal::value)); - - typedef boost::fusion::FUSION_SEQUENCE target4; - typedef boost::mpl::push_front::type seq4; - BOOST_STATIC_ASSERT((boost::mpl::equal::value)); -}; - -void -test() -{ - using namespace boost::fusion; - - { // testing const sequences - - const FUSION_SEQUENCE t1(5, 3.3f); - BOOST_TEST(FUSION_AT<0>(t1) == 5); - BOOST_TEST(FUSION_AT<1>(t1) == 3.3f); - } - - { // testing at works with MPL integral constants - const FUSION_SEQUENCE t1(101, 'z'); - BOOST_TEST(boost::fusion::at >(t1) == 101); - BOOST_TEST(boost::fusion::at >(t1) == 'z'); - // explicitly try something other than mpl::int_ - BOOST_TEST((boost::fusion::at >(t1) == 101)); - BOOST_TEST((boost::fusion::at >(t1) == 'z')); - } - - { // testing size & empty - - typedef FUSION_SEQUENCE t1; - typedef FUSION_SEQUENCE<> t2; - - BOOST_STATIC_ASSERT(FUSION_SIZE::value == 3); - BOOST_STATIC_ASSERT(FUSION_SIZE::value == 0); - BOOST_STATIC_ASSERT(!result_of::empty::value); - BOOST_STATIC_ASSERT(result_of::empty::value); - } - - { // testing front & back - - typedef FUSION_SEQUENCE tup; - tup t(1, 2.2, "Kimpo"); - - BOOST_TEST(front(t) == 1); -#if !defined(FUSION_FORWARD_ONLY) // list has no back - BOOST_TEST(back(t) == "Kimpo"); -#endif - } - - { // testing is_sequence - - typedef FUSION_SEQUENCE t1; - typedef FUSION_SEQUENCE<> t2; - typedef FUSION_SEQUENCE t3; - - BOOST_STATIC_ASSERT(traits::is_sequence::value); - BOOST_STATIC_ASSERT(traits::is_sequence::value); - BOOST_STATIC_ASSERT(traits::is_sequence::value); - BOOST_STATIC_ASSERT(!traits::is_sequence::value); - BOOST_STATIC_ASSERT(!traits::is_sequence::value); - } - - { // testing mpl compatibility - - // test begin, end, next, prior, advance, size, deref, etc. - //~ typedef FUSION_SEQUENCE tuple_type; - //~ test_intrinsics1 test1; - //~ (void)test1; // prevent unused variable warning - - // test an algorithm - typedef FUSION_SEQUENCE t1; - typedef boost::mpl::find::type iter; - typedef boost::mpl::deref::type type; - BOOST_STATIC_ASSERT((boost::is_same::value)); - - } -} diff --git a/test/sequence/mutate.hpp b/test/sequence/mutate.hpp deleted file mode 100644 index d1cd66df..00000000 --- a/test/sequence/mutate.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -namespace -{ - // no public default constructor - class foo - { - public: - - explicit foo(int v) : val(v) {} - - bool operator==(const foo& other) const - { - return val == other.val; - } - - private: - - foo() {} - int val; - }; -} - -void -test() -{ - using namespace boost::fusion; - - FUSION_SEQUENCE t1(5, 12.2f, true, foo(4)); - FUSION_AT<0>(t1) = 6; - FUSION_AT<1>(t1) = 2.2f; - FUSION_AT<2>(t1) = false; - FUSION_AT<3>(t1) = foo(5); - - BOOST_TEST(FUSION_AT<0>(t1) == 6); - BOOST_TEST(FUSION_AT<1>(t1) > 2.1f && FUSION_AT<1>(t1) < 2.3f); - BOOST_TEST(FUSION_AT<2>(t1) == false); - BOOST_TEST(FUSION_AT<3>(t1) == foo(5)); -} diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp deleted file mode 100644 index 50b445b7..00000000 --- a/test/sequence/reverse_view.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing the reverse_view - - { - typedef boost::mpl::range_c mpl_list1; - mpl_list1 l; - reverse_view rev(l); - - std::cout << rev << std::endl; - BOOST_TEST((rev == make_vector(8, 7, 6, 5))); - } - - { - char const* s = "Hi Kim"; - typedef vector vector_type; - vector_type t(123, 'x', 123456789, s); - typedef reverse_view view_type; - view_type rev(t); - - std::cout << rev << std::endl; - BOOST_TEST((rev == make_vector(s, 123456789, 'x', 123))); - - typedef result_of::begin::type first_type; - first_type first_it(begin(rev)); - typedef result_of::next::type second_type; - second_type second_it(next(first_it)); - BOOST_TEST((*second_it == 123456789)); - BOOST_TEST((*prior(second_it) == s)); - BOOST_TEST((*advance_c<2>(first_it) == 'x')); - BOOST_TEST((distance(first_it, second_it) == 1)); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp deleted file mode 100644 index 08c86833..00000000 --- a/test/sequence/set.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - using boost::fusion::pair; - using boost::fusion::make_pair; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - typedef set set_type; - - BOOST_MPL_ASSERT((traits::is_associative)); - - set_type m(123, "Hola"); - - std::cout << at_key(m) << std::endl; - std::cout << at_key(m) << std::endl; - - BOOST_TEST(at_key(m) == 123); - BOOST_TEST(at_key(m) == "Hola"); - - BOOST_STATIC_ASSERT(( - boost::is_same::type, int>::value)); - BOOST_STATIC_ASSERT(( - boost::is_same::type, std::string>::value)); - - std::cout << m << std::endl; - - BOOST_STATIC_ASSERT((result_of::has_key::value)); - BOOST_STATIC_ASSERT((result_of::has_key::value)); - BOOST_STATIC_ASSERT((!result_of::has_key::value)); - } - - { - std::cout << make_set('X', 123) << std::endl; - BOOST_TEST(at_key(make_set('X', 123)) == 'X'); - BOOST_TEST(at_key(make_set('X', 123)) == 123); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp deleted file mode 100644 index 6aec1d8b..00000000 --- a/test/sequence/single_view.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include - -struct X {}; - -template -OS& operator<<(OS& os, X const&) -{ - os << ""; - return os; -} - -void foo() {} - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - single_view view1(3); - std::cout << view1 << std::endl; - -#ifdef FUSION_TEST_FAIL - // single_view is immutable - *begin(view1) += 4; -#endif - std::cout << view1 << std::endl; - BOOST_TEST(*begin(view1) == 3); - BOOST_TEST(view1.val == 3); - - single_view view2; - std::cout << view2 << std::endl; - } - - { - std::cout << make_single_view(1) << std::endl; - std::cout << make_single_view("Hello, World") << std::endl; - std::cout << make_single_view(&foo) << std::endl; - } - - return boost::report_errors(); -} - diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp deleted file mode 100644 index 2f8536a2..00000000 --- a/test/sequence/std_pair.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - - { - typedef std::pair pair_type; - BOOST_MPL_ASSERT_NOT((traits::is_view)); - pair_type p(123, "Hola!!!"); - - std::cout << at_c<0>(p) << std::endl; - std::cout << at_c<1>(p) << std::endl; - std::cout << p << std::endl; - BOOST_TEST(p == make_vector(123, "Hola!!!")); - - at_c<0>(p) = 6; - at_c<1>(p) = "mama mia"; - BOOST_TEST(p == make_vector(6, "mama mia")); - - BOOST_STATIC_ASSERT(result_of::size::value == 2); - BOOST_STATIC_ASSERT(!result_of::empty::value); - - BOOST_TEST(front(p) == 6); - BOOST_TEST(back(p) == "mama mia"); - } - - { - fusion::vector v1(4, 3.3f); - std::pair v2(5, 3.3f); - fusion::vector v3(5, 4.4); - BOOST_TEST(v1 < v2); - BOOST_TEST(v1 <= v2); - BOOST_TEST(v2 > v1); - BOOST_TEST(v2 >= v1); - BOOST_TEST(v2 < v3); - BOOST_TEST(v2 <= v3); - BOOST_TEST(v3 > v2); - BOOST_TEST(v3 >= v2); - } - - { - // conversion from pair to vector - fusion::vector v(std::make_pair(123, "Hola!!!")); - v = std::make_pair(123, "Hola!!!"); - } - - { - // conversion from pair to list - fusion::list l(std::make_pair(123, "Hola!!!")); - l = std::make_pair(123, "Hola!!!"); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp deleted file mode 100644 index a36c3985..00000000 --- a/test/sequence/tie.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -#if !defined(FUSION_MAKE) -#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) -#endif - -#if !defined(FUSION_TIE) -#define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) -#endif - -namespace -{ - // something to prevent warnings for unused variables - template void dummy(const T&) {} - - // no public default constructor - class foo - { - public: - - explicit foo(int v) : val(v) {} - - bool operator==(const foo& other) const - { - return val == other.val; - } - - private: - - foo() {} - int val; - }; -} - -void -test() -{ - using namespace boost::fusion; - - int a; - char b; - foo c(5); - - FUSION_TIE(a, b, c) = FUSION_MAKE(2, 'a', foo(3)); - BOOST_TEST(a == 2); - BOOST_TEST(b == 'a'); - BOOST_TEST(c == foo(3)); - - FUSION_TIE(a, ignore, c) = FUSION_MAKE((short int)5, false, foo(5)); - BOOST_TEST(a == 5); - BOOST_TEST(b == 'a'); - BOOST_TEST(c == foo(5)); - - int i, j; - FUSION_TIE(i, j) = FUSION_MAKE(1, 2); - BOOST_TEST(i == 1 && j == 2); - - FUSION_SEQUENCE ta; - -#if defined(FUSION_TEST_FAIL) - ta = std::FUSION_MAKE(1, 2); // should fail, tuple is of length 3, not 2 -#endif - - dummy(ta); - - // ties cannot be rebound - int d = 3; - FUSION_SEQUENCE ti(a); - BOOST_TEST(&FUSION_AT<0>(ti) == &a); - ti = FUSION_SEQUENCE(d); - BOOST_TEST(&FUSION_AT<0>(ti) == &a); -} diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp deleted file mode 100644 index d89b439a..00000000 --- a/test/sequence/transform_view.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -struct square -{ - template - struct result - { - typedef int type; - }; - - template - int operator()(T x) const - { - return x * x; - } -}; - -struct add -{ - template - struct result - { - typedef int type; - }; - - template - int operator()(A a, B b) const - { - return a + b; - } -}; - -int -main() -{ - using namespace boost::fusion; - - std::cout << tuple_open('['); - std::cout << tuple_close(']'); - std::cout << tuple_delimiter(", "); - -/// Testing the transform_view - - { - typedef boost::mpl::range_c sequence_type; - sequence_type sequence; - square sq; - typedef transform_view xform_type; - xform_type xform(sequence, sq); - - std::cout << xform << std::endl; - BOOST_TEST((xform == make_vector(25, 36, 49, 64))); - - typedef boost::fusion::result_of::begin::type first_type; - first_type first_it(boost::fusion::begin(xform)); - - typedef boost::fusion::result_of::next::type next_type; - next_type next_it(boost::fusion::next(first_it)); - BOOST_TEST((*next_it == 36)); - BOOST_TEST((*boost::fusion::prior(next_it) == 25)); - BOOST_TEST((boost::fusion::distance(first_it, next_it) == 1)); - - BOOST_TEST((*boost::fusion::advance_c<3>(boost::fusion::begin(xform)) == 64)); - BOOST_TEST((boost::fusion::at_c<2>(xform) == 49)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - } - - { - typedef boost::mpl::range_c sequence1_type; - typedef boost::mpl::range_c sequence2_type; - sequence1_type sequence1; - sequence2_type sequence2; - add f; - typedef transform_view xform_type; - xform_type xform(sequence1, sequence2, f); - - std::cout << xform << std::endl; - BOOST_TEST((xform == make_vector(15, 17, 19, 21))); - BOOST_TEST((boost::fusion::at_c<2>(xform) == 19)); - BOOST_MPL_ASSERT((boost::is_same::type, int>)); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp deleted file mode 100644 index 3a98b28a..00000000 --- a/test/sequence/tuple_comparison.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE tuple -#include "comparison.hpp" - -int -main() -{ - equality_test(); - ordering_test(); - return boost::report_errors(); -} diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp deleted file mode 100644 index 888a5cd4..00000000 --- a/test/sequence/tuple_construction.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#include "construction.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} diff --git a/test/sequence/tuple_copy.cpp b/test/sequence/tuple_copy.cpp deleted file mode 100644 index fc9a100a..00000000 --- a/test/sequence/tuple_copy.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#define FUSION_MAKE make_tuple -#define FUSION_TIE tie -#include "copy.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_element.cpp b/test/sequence/tuple_element.cpp deleted file mode 100644 index cf61f953..00000000 --- a/test/sequence/tuple_element.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#define FUSION_VALUE_AT(S, N) tuple_element -#include "value_at.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_make.cpp b/test/sequence/tuple_make.cpp deleted file mode 100644 index e8dcbbfb..00000000 --- a/test/sequence/tuple_make.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#define FUSION_MAKE make_tuple -#include "make.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp deleted file mode 100644 index 3945dcbc..00000000 --- a/test/sequence/tuple_misc.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#define FUSION_SIZE tuple_size -#include "misc.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_mutate.cpp b/test/sequence/tuple_mutate.cpp deleted file mode 100644 index ba72edbc..00000000 --- a/test/sequence/tuple_mutate.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#include "mutate.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/tuple_tie.cpp b/test/sequence/tuple_tie.cpp deleted file mode 100644 index 85c69d96..00000000 --- a/test/sequence/tuple_tie.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE tuple -#define FUSION_AT get -#define FUSION_MAKE make_tuple -#define FUSION_TIE tie -#include "tie.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/unpack_args.cpp b/test/sequence/unpack_args.cpp deleted file mode 100644 index c46ea722..00000000 --- a/test/sequence/unpack_args.cpp +++ /dev/null @@ -1,228 +0,0 @@ -// -// Copyright (c) 2006 João Abecasis -// -// Distributed under 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) -// - -#include - -#include -#include -#include -#include -#include -#include - -namespace fusion = boost::fusion; - -//////////////////////////////////////////////////////////////////////////////// -// -// Helper stuff -// - -struct object {}; -struct nc_object : boost::noncopyable {}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -//////////////////////////////////////////////////////////////////////////////// -// -// Test functoids -// - -// polymorphic functors -struct foo -{ - typedef int result_type; - - int operator()() { return 0; } - int operator()() const { return 1; } - - int operator()(int i) { return 2 + i; } - int operator()(int i) const { return 3 + i; } - - int operator()(int i, object &) { return 4 + i; } - int operator()(int i, object &) const { return 5 + i; } - int operator()(int i, object const &) { return 6 + i; } - int operator()(int i, object const &) const { return 7 + i; } - - int operator()(int i, object &, nc_object &) { return 10 + i; } - int operator()(int i, object &, nc_object &) const { return 11 + i; } -}; - -struct nc_foo - : boost::noncopyable -{ - typedef int result_type; - - int operator()() { return 0; } - int operator()() const { return 1; } - - int operator()(int i) { return 2 + i; } - int operator()(int i) const { return 3 + i; } -}; - -// nullary function -int bar() { return 20; } - -// unary function -int square(int i) { return i * i; } - -// binary functions -int baz1(int i, object &) { return 30 + i; } -int baz2(int i, object const &) { return 70 + i; } - -// cv-qualified unary function pointers -typedef int (* func_ptr)(int); -typedef int (* const c_func_ptr)(int); -typedef int (* volatile v_func_ptr)(int); -typedef int (* const volatile cv_func_ptr)(int); - - func_ptr func_ptr1 = □ - c_func_ptr func_ptr2 = □ - v_func_ptr func_ptr3 = □ -cv_func_ptr func_ptr4 = □ - -//////////////////////////////////////////////////////////////////////////////// -// -// Test data -// - -typedef int element1_type; -typedef object element2_type; -typedef nc_object & element3_type; - -int element1 = 100; -object element2 = object(); -nc_object element3; - -//////////////////////////////////////////////////////////////////////////////// -// -// Tests (by sequence size) -// - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<0>) -{ - { - foo f; - - BOOST_TEST( f () == fusion::unpack_args( f , seq )); - BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), seq )); - BOOST_TEST( f () == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), const_(seq))); - } - - { - nc_foo nc_f; - - BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , seq )); - BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), seq )); - BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), const_(seq))); - } - - BOOST_TEST(bar() == fusion::unpack_args(bar, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<1>) -{ - { - foo f; - - BOOST_TEST( f (element1) == fusion::unpack_args( f , seq )); - BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), seq )); - BOOST_TEST( f (element1) == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), const_(seq))); - } - - { - nc_foo nc_f; - - BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , seq )); - BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), seq )); - BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), const_(seq))); - } - - BOOST_TEST(square(element1) == fusion::unpack_args(square, seq)); - - BOOST_TEST(func_ptr1(element1) == fusion::unpack_args(func_ptr1, seq)); - BOOST_TEST(func_ptr2(element1) == fusion::unpack_args(func_ptr2, seq)); - BOOST_TEST(func_ptr3(element1) == fusion::unpack_args(func_ptr3, seq)); - BOOST_TEST(func_ptr4(element1) == fusion::unpack_args(func_ptr4, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<2>) -{ - { - foo f; - - BOOST_TEST( f (element1, element2) == fusion::unpack_args( f , seq)); - BOOST_TEST(const_(f)(element1, element2) == fusion::unpack_args(const_(f), seq)); - - BOOST_TEST( f (element1, const_(element2)) == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)(element1, const_(element2)) == fusion::unpack_args(const_(f), const_(seq))); - } - - BOOST_TEST(baz1(element1, element2) == fusion::unpack_args(baz1, seq)); - BOOST_TEST(baz2(element1, element2) == fusion::unpack_args(baz2, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<3>) -{ - foo f; - - BOOST_TEST( f (element1, element2, element3) == fusion::unpack_args( f , seq)); - BOOST_TEST(const_(f)(element1, element2, element3) == fusion::unpack_args(const_(f), seq)); -} - -//////////////////////////////////////////////////////////////////////////////// -template -void test_sequence(Sequence & seq) -{ - test_sequence_n(seq, fusion::size(seq)); -} - -//////////////////////////////////////////////////////////////////////////////// -int main() -{ - typedef fusion::vector<> vector0; - typedef fusion::vector vector1; - typedef fusion::vector vector2; - typedef fusion::vector vector3; - - vector0 v0; - vector1 v1(element1); - vector2 v2(element1, element2); - vector3 v3(element1, element2, element3); - - test_sequence(v0); - test_sequence(v1); - test_sequence(v2); - test_sequence(v3); - - typedef fusion::list<> list0; - typedef fusion::list list1; - typedef fusion::list list2; - typedef fusion::list list3; - - list0 l0; - list1 l1(element1); - list2 l2(element1, element2); - list3 l3(element1, element2, element3); - - test_sequence(l0); - test_sequence(l1); - test_sequence(l2); - test_sequence(l3); -} diff --git a/test/sequence/value_at.hpp b/test/sequence/value_at.hpp deleted file mode 100644 index 72eebad9..00000000 --- a/test/sequence/value_at.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include - -#if !defined(FUSION_AT) -#define FUSION_AT at_c -#endif - -#if !defined(FUSION_VALUE_AT) -#define FUSION_VALUE_AT(S, N) result_of::value_at_c -#endif - -namespace -{ - // something to prevent warnings for unused variables - template void dummy(const T&) {} - - class A {}; -} - -void -test() -{ - using namespace boost::fusion; - - double d = 2.7; - A a; - FUSION_SEQUENCE t(1, d, a, 2); - const FUSION_SEQUENCE ct(t); - - int i = FUSION_AT<0>(t); - int i2 = FUSION_AT<3>(t); - - BOOST_TEST(i == 1 && i2 == 2); - - int j = FUSION_AT<0>(ct); - BOOST_TEST(j == 1); - - FUSION_AT<0>(t) = 5; - BOOST_TEST(FUSION_AT<0>(t) == 5); - -#if defined(FUSION_TEST_FAIL) - FUSION_AT<0>(ct) = 5; // can't assign to const -#endif - - double e = FUSION_AT<1>(t); - BOOST_TEST(e > 2.69 && e < 2.71); - - FUSION_AT<1>(t) = 3.14+i; - BOOST_TEST(FUSION_AT<1>(t) > 4.13 && FUSION_AT<1>(t) < 4.15); - -#if defined(FUSION_TEST_FAIL) - FUSION_AT<4>(t) = A(); // can't assign to const - dummy(FUSION_AT<5>(ct)); // illegal index -#endif - - ++FUSION_AT<0>(t); - BOOST_TEST(FUSION_AT<0>(t) == 6); - - typedef FUSION_SEQUENCE seq_type; - - BOOST_STATIC_ASSERT(!( - boost::is_const::value)); - - // constness should not affect - BOOST_STATIC_ASSERT(!( - boost::is_const::value)); - - BOOST_STATIC_ASSERT(!( - boost::is_const::value)); - - // constness should not affect - BOOST_STATIC_ASSERT(!( - boost::is_const::value)); - - dummy(i); dummy(i2); dummy(j); dummy(e); // avoid warns for unused variables -} diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp deleted file mode 100644 index ef8e750e..00000000 --- a/test/sequence/vector_comparison.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE vector -#include "comparison.hpp" - -int -main() -{ - equality_test(); - ordering_test(); - return boost::report_errors(); -} diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp deleted file mode 100644 index cabec110..00000000 --- a/test/sequence/vector_construction.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE vector -#include "construction.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp deleted file mode 100644 index 997ad089..00000000 --- a/test/sequence/vector_copy.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include - -#define FUSION_SEQUENCE vector -#include "copy.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/vector_iterator.cpp b/test/sequence/vector_iterator.cpp deleted file mode 100644 index a04f642e..00000000 --- a/test/sequence/vector_iterator.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE vector -#define FUSION_TRAVERSAL_TAG random_access_traversal_tag -#include "./iterator.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - - - diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp deleted file mode 100644 index ff80e84c..00000000 --- a/test/sequence/vector_make.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include - -#define FUSION_SEQUENCE vector -#include "make.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp deleted file mode 100644 index 69f488e4..00000000 --- a/test/sequence/vector_misc.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE vector -#include "misc.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp deleted file mode 100644 index 151c32c5..00000000 --- a/test/sequence/vector_mutate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE vector -#include "mutate.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp deleted file mode 100644 index 49550b80..00000000 --- a/test/sequence/vector_n.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - - -int -main() -{ - using namespace boost::fusion; - using namespace boost; - using namespace std; - - { - vector0 vec; - (void) vec; - cout << "(): " << sizeof(vec) << endl; - } - - { - typedef vector1 type; - type vec; - BOOST_STATIC_ASSERT(result_of::size::value == 1); - - BOOST_TEST(at_c<0>(vec) == 0); - BOOST_STATIC_ASSERT((is_same::type>::value)); - - // prove that it is mutable - at_c<0>(vec) = 987; - BOOST_TEST(at_c<0>(vec) == 987); - } - - { - typedef vector1 type; - type vec(123); - BOOST_TEST(at_c<0>(vec) == 123); - cout << "(int): " << sizeof(vec) << endl; - } - - { // testing const vector - vector1 const vec(999); - BOOST_TEST(at_c<0>(vec) == 999); - -#ifdef FUSION_TEST_COMPILE_FAIL - at_c<0>(vec) = 321; -#endif - } - - { - vector1 t1(123L); // try conversion from long to int - vector1 t2(t1); // try copy - (void)t2; - } - - { - typedef vector2 type; - type vec; - BOOST_STATIC_ASSERT(result_of::size::value == 2); - - BOOST_TEST(at_c<0>(vec) == 0); - BOOST_TEST(at_c<1>(vec) == char()); - - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - } - - { - typedef vector2 type; - type vec(123, 'x'); - BOOST_TEST(at_c<0>(vec) == 123); - BOOST_TEST(at_c<1>(vec) == 'x'); - cout << "(int, char): " << sizeof(vec) << endl; - } - - { - vector2 t1(123, 456); - vector2 t2(t1); - (void)t2; - } - - { - typedef vector3 type; - type vec; - BOOST_STATIC_ASSERT(result_of::size::value == 3); - - BOOST_TEST(at_c<0>(vec) == 0); - BOOST_TEST(at_c<1>(vec) == char()); - BOOST_TEST(at_c<2>(vec) == double()); - - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - } - - { - typedef vector3 type; - type vec(123, 'x', 123.456); - BOOST_TEST(at_c<0>(vec) == 123); - BOOST_TEST(at_c<1>(vec) == 'x'); - BOOST_TEST(at_c<2>(vec) >= 123.455 && at_c<2>(vec) <= 123.457); - cout << "(int, char, double): " << sizeof(vec) << endl; - } - - { - typedef vector4 type; - type vec(123, 'x', 123.456, true); - cout << "(int, char, double, bool): " << sizeof(vec) << endl; - } - - { - typedef vector4 type; - type vec(123, 'x', true, 123.456); - cout << "(int, char, bool, double): " << sizeof(vec) << endl; - } - - { - typedef vector7 type; - type vec(false, 'x', 3, 4, 5, 6.0, 7.0); - - BOOST_TEST(at_c<0>(vec) == false); - BOOST_TEST(at_c<1>(vec) == 'x'); - BOOST_TEST(at_c<2>(vec) == 3); - BOOST_TEST(at_c<3>(vec) == 4); - BOOST_TEST(at_c<4>(vec) == 5); - BOOST_TEST(at_c<5>(vec) >= 5.9 && at_c<5>(vec) <= 6.1); - BOOST_TEST(at_c<6>(vec) >= 6.9 && at_c<6>(vec) <= 7.1); - - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - cout << "(bool, char, short, int, long, float, double): " << sizeof(vec) << endl; - } - - { - typedef vector10 type; - type vec; // compile check only - cout << "vector10 of int: " << sizeof(vec) << endl; - } - - { - typedef vector20< - int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int> type; - - type vec; // compile check only - cout << "vector20 of int: " << sizeof(vec) << endl; - } - - { - typedef vector30< - int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int> type; - - type vec; // compile check only - cout << "vector30 of int: " << sizeof(vec) << endl; - } - - { - typedef vector40< - int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int> type; - - type vec; // compile check only - cout << "vector40 of int: " << sizeof(vec) << endl; - } - - { - typedef vector50< - int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int - , int, int, int, int, int, int, int, int, int, int> type; - - type vec; // compile check only - cout << "vector50 of int: " << sizeof(vec) << endl; - } - - { - // testing copy and assign from a view - vector0 empty; - fusion::vector2 v(fusion::push_back(fusion::push_back(empty, 123), 456)); - BOOST_TEST(at_c<0>(v) == 123); - BOOST_TEST(at_c<1>(v) == 456); - v = fusion::push_back(fusion::push_back(empty, 123), 456); // test assign - BOOST_TEST(at_c<0>(v) == 123); - BOOST_TEST(at_c<1>(v) == 456); - } - - { - // testing copy and assign from a vector_c - mpl::vector_c vec_c; - fusion::vector2 v(vec_c); - BOOST_TEST(at_c<0>(v) == 123); - BOOST_TEST(at_c<1>(v) == 456); - v = mpl::vector_c(); // test assign - BOOST_TEST(at_c<0>(v) == 123); - BOOST_TEST(at_c<1>(v) == 456); - } - - return boost::report_errors(); -} - diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp deleted file mode 100644 index 272421dc..00000000 --- a/test/sequence/vector_tie.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include -#include -#include -#include - -#define FUSION_SEQUENCE vector -#include "tie.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp deleted file mode 100644 index 97859bcd..00000000 --- a/test/sequence/vector_value_at.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Järvi - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#include - -#define FUSION_SEQUENCE vector -#include "value_at.hpp" - -int -main() -{ - test(); - return boost::report_errors(); -} - diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp deleted file mode 100644 index e4b3fa9a..00000000 --- a/test/sequence/zip_view.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -int main() -{ - using namespace boost::fusion; - { - typedef vector2 int_vector; - typedef vector2 char_vector; - typedef vector seqs_type; - typedef zip_view view; - - BOOST_MPL_ASSERT((boost::mpl::equal_to::type, boost::fusion::result_of::size::type>)); - BOOST_STATIC_ASSERT((boost::fusion::result_of::size::value == 2)); - - int_vector iv(1,2); - char_vector cv('a', 'b'); - seqs_type seqs(iv, cv); - view v(seqs); - - BOOST_TEST(at_c<0>(v) == make_vector(1, 'a')); - BOOST_TEST(at_c<1>(v) == make_vector(2, 'b')); - BOOST_TEST(front(v) == make_vector(1, 'a')); - BOOST_TEST(back(v) == make_vector(2, 'b')); - BOOST_TEST(*next(begin(v)) == make_vector(2, 'b')); - BOOST_TEST(*prior(end(v)) == make_vector(2, 'b')); - BOOST_TEST(advance_c<2>(begin(v)) == end(v)); - BOOST_TEST(advance_c<-2>(end(v)) == begin(v)); - BOOST_TEST(distance(begin(v), end(v)) == 2); - - BOOST_STATIC_ASSERT((boost::fusion::result_of::distance::type, boost::fusion::result_of::end::type>::value == 2)); - - BOOST_MPL_ASSERT((boost::is_same::type, vector >)); - BOOST_MPL_ASSERT((boost::is_same::type>::type, vector >)); - } - { - using namespace boost; - typedef mpl::vector2 v1_type; - typedef mpl::vector2 v2_type; - typedef fusion::vector seqs_type; - typedef fusion::zip_view view; - - v1_type v1; - v2_type v2; - seqs_type seqs(v1,v2); - view v(seqs); - BOOST_TEST((fusion::at_c<0>(v) == mpl::vector2())); - BOOST_TEST((fusion::at_c<1>(v) == mpl::vector2())); - BOOST_TEST((fusion::front(v) == mpl::vector2())); - BOOST_TEST((fusion::back(v) == mpl::vector2())); - BOOST_TEST((*fusion::next(fusion::begin(v)) == mpl::vector2())); - BOOST_TEST((*fusion::prior(fusion::end(v)) == mpl::vector2())); - BOOST_TEST(fusion::advance_c<2>(fusion::begin(v)) == fusion::end(v)); - BOOST_TEST(fusion::advance_c<-2>(fusion::end(v)) == fusion::begin(v)); - BOOST_TEST(fusion::distance(fusion::begin(v), fusion::end(v)) == 2); - } - return boost::report_errors(); -} - diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp deleted file mode 100644 index b4054c38..00000000 --- a/test/sequence/zip_view2.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - 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) -==============================================================================*/ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -int main() -{ - { - using namespace boost::fusion; - typedef vector2 int_vector; - typedef vector2 char_vector; - typedef list char_list; - typedef vector seqs_type; - typedef zip_view view; - - BOOST_MPL_ASSERT((boost::mpl::equal_to::type, boost::fusion::result_of::size::type>)); - BOOST_STATIC_ASSERT((boost::fusion::result_of::size::value == 2)); - - int_vector iv(1,2); - char_vector cv('a', 'b'); - char_list cl('y','z'); - seqs_type seqs(iv, cv, cl); - view v(seqs); - - BOOST_TEST(at_c<0>(v) == make_vector(1, 'a', 'y')); - BOOST_TEST(at_c<1>(v) == make_vector(2, 'b', 'z')); - BOOST_TEST(front(v) == make_vector(1, 'a', 'y')); - BOOST_TEST(*next(begin(v)) == make_vector(2, 'b', 'z')); - BOOST_TEST(advance_c<2>(begin(v)) == end(v)); - BOOST_TEST(distance(begin(v), end(v)) == 2); - BOOST_STATIC_ASSERT((boost::fusion::result_of::distance::type, boost::fusion::result_of::end::type>::value == 2)); - - BOOST_MPL_ASSERT((boost::is_same::type, vector >)); - BOOST_MPL_ASSERT((boost::is_same::type>::type, vector >)); - } - return boost::report_errors(); -} diff --git a/todo.txt b/todo.txt deleted file mode 100644 index 66899882..00000000 --- a/todo.txt +++ /dev/null @@ -1,8 +0,0 @@ -* Consider object equivalent of functions and algorithms (so you can do transform(iterators, deref()) with needing to put together a wrapper for deref). -* Consider segmented sequence / algorithm support -* Consider utility element_ref::type thats consts and refs as appropriate -* Improved motivation section -* Expand details of view concept -* Examples, examples, examples -* unpack_args documentation -* look at lambda stuff \ No newline at end of file