ext/preprocessor/seq/foldright.bi

This file is part of the <ext/Preprocessor> library API, and can be directly included by user programs.

Summary
ext/preprocessor/seq/foldright.biThis file is part of the <ext/Preprocessor> library API, and can be directly included by user programs.
LicenseCopyright © 2007-2011, FreeBASIC Extended Library Development Group Copyright © 2002, Paul Mensonides
Macros
fbextPP_SeqFoldRightExpands a macro returning a new state for each element in a sequence.

License

Copyright © 2007-2011, FreeBASIC Extended Library Development Group Copyright © 2002, Paul Mensonides

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)

Distributed under the FreeBASIC Extended Library Group license.  See accompanying file LICENSE.txt or copy at http://code.google.com/p/fb-extended-lib/wiki/License

Macros

fbextPP_SeqFoldRight

# define fbextPP_SeqFoldRight(
   op,
   state,
   seq
) FBEXT_PP_REPEAT(FBEXT_PP_SEQ_SIZE(SEQ), fbextPP_SeqFoldRight__L, op) state FBEXT_PP_SEQ_FOREACHI(fbextPP_SeqFoldRight__R, seq, seq)

Expands a macro returning a new state for each element in a sequence.

Parameters

opA procedure macro of the form op(state, elem), where state is the current state, and elem is the current sequence element.  This macro should return a new state.
stateThe initial state of the fold.
seqA sequence.

Returns

The final state.

Description

Given a sequence (a)(b)(c)(d), this macro will expand to op(op(op(op(state, d), c), b), a).

# define fbextPP_SeqFoldRight(
   op,
   state,
   seq
) FBEXT_PP_REPEAT(FBEXT_PP_SEQ_SIZE(SEQ), fbextPP_SeqFoldRight__L, op) state FBEXT_PP_SEQ_FOREACHI(fbextPP_SeqFoldRight__R, seq, seq)
Expands a macro returning a new state for each element in a sequence.