2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 13:02:11 +00:00
Files
build/v2/util/set.jam
2006-11-05 07:13:39 +00:00

63 lines
1.2 KiB
Plaintext

# Copyright 2001, 2002 Dave Abrahams
# Copyright 2003 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
# difference
# returns the elements of B that are not in A
rule difference ( B * : A * )
{
local result = ;
local element ;
for element in $(B)
{
if ! ( $(element) in $(A) )
{
result += $(element) ;
}
}
return $(result) ;
}
NATIVE_RULE set : difference ;
# intersection set1 : set2
#
# Removes from set1 any items which don't appear in set2 and returns the result.
rule intersection ( set1 * : set2 * )
{
local result ;
for local v in $(set1)
{
if $(v) in $(set2)
{
result += $(v) ;
}
}
return $(result) ;
}
rule equal ( set1 * : set2 * )
{
if $(set1) in $(set2) && ( $(set2) in $(set1) )
{
return true ;
}
}
rule __test__ ( )
{
import assert ;
assert.result 0 1 4 6 8 9
: difference 0 1 2 3 4 5 6 7 8 9 : 2 3 5 7 ;
assert.result 2 5 7 : intersection 0 1 2 4 5 6 7 8 9 : 2 3 5 7 ;
assert.true equal 1 1 2 3 : 3 2 2 1 ;
assert.false equal 2 3 : 3 2 2 1 ;
}