diff --git a/v2/util/sequence.jam b/v2/util/sequence.jam index 3e2ca72b5..4b2d4e935 100644 --- a/v2/util/sequence.jam +++ b/v2/util/sequence.jam @@ -149,17 +149,30 @@ rule length ( s * ) return $(result) ; } -rule unique ( list * ) +rule unique ( list * : stable ? ) { local result ; local prev ; - for local i in [ SORT $(list) ] + if $(stable) { - if $(i) != $(prev) + for local f in $(list) { - result += $(i) ; + if ! $(f) in $(result) + { + result += $(f) ; + } + } + } + else + { + for local i in [ SORT $(list) ] + { + if $(i) != $(prev) + { + result += $(i) ; + } + prev = $(i) ; } - prev = $(i) ; } return $(result) ; }