1 | |

2 | __#ifndef BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED__ |

3 | __#define BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED__ |

4 | |

5 | *// Copyright Eric Friedman 2002-2003* |

6 | *// Copyright Aleksey Gurtovoy 2004* |

7 | *//* |

8 | *// Distributed under the Boost Software License, Version 1.0. * |

9 | *// (See accompanying file LICENSE_1_0.txt or copy at * |

10 | *// http://www.boost.org/LICENSE_1_0.txt)* |

11 | *//* |

12 | *// See http://www.boost.org/libs/mpl for documentation.* |

13 | |

14 | *// $Id$* |

15 | *// $Date$* |

16 | *// $Revision$* |

17 | |

18 | __#include <boost/mpl/fold.hpp>__ |

19 | __#include <boost/mpl/reverse_fold.hpp>__ |

20 | __#include <boost/mpl/protect.hpp>__ |

21 | __#include <boost/mpl/aux_/partition_op.hpp>__ |

22 | __#include <boost/mpl/aux_/inserter_algorithm.hpp>__ |

23 | __#include <boost/mpl/aux_/na.hpp>__ |

24 | |

25 | **namespace** boost { **namespace** mpl { |

26 | |

27 | **namespace** aux { |

28 | |

29 | **template** < |

30 | **typename** Sequence |

31 | , **typename** Pred |

32 | , **typename** In |

33 | , **typename** In2 |

34 | , **typename** In1 = **typename** if_na<In,In2>::type |

35 | > |

36 | **struct** stable_partition_impl |

37 | : fold< |

38 | Sequence |

39 | , pair< **typename** In1::state, **typename** In2::state > |

40 | , protect< partition_op< |

41 | Pred |

42 | , **typename** In1::operation |

43 | , **typename** In2::operation |

44 | > > |

45 | > |

46 | { |

47 | }; |

48 | |

49 | **template** < |

50 | **typename** Sequence |

51 | , **typename** Pred |

52 | , **typename** In |

53 | , **typename** In2 |

54 | , **typename** In1 = **typename** if_na<In,In2>::type |

55 | > |

56 | **struct** reverse_stable_partition_impl |

57 | : reverse_fold< |

58 | Sequence |

59 | , pair< **typename** In1::state, **typename** In2::state > |

60 | , protect< partition_op< |

61 | Pred |

62 | , **typename** In1::operation |

63 | , **typename** In2::operation |

64 | > > |

65 | > |

66 | { |

67 | }; |

68 | |

69 | } *// namespace aux* |

70 | |

71 | BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(`4`, stable_partition) |

72 | |

73 | }} |

74 | |

75 | __#endif // BOOST_MPL_STABLE_PARTITION_HPP_INCLUDED__ |

76 | |