2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 13:02:11 +00:00
Files
build/v2/engine/modules/set.c
Steven Watanabe a0fe6ff6e0 Reimplement the interpreter.
[SVN r75736]
2011-11-30 00:00:35 +00:00

43 lines
930 B
C

/* Copyright Vladimir Prus 2003. 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 "../native.h"
#include "../object.h"
/*
local result = ;
local element ;
for element in $(B)
{
if ! ( $(element) in $(A) )
{
result += $(element) ;
}
}
return $(result) ;
*/
LIST *set_difference( FRAME *frame, int flags )
{
LIST* b = lol_get( frame->args, 0 );
LIST* a = lol_get( frame->args, 1 );
LIST* result = 0;
for(; b; b = b->next)
{
if (!list_in(a, b->value))
result = list_new(result, object_copy(b->value));
}
return result;
}
void init_set()
{
{
const char* args[] = { "B", "*", ":", "A", "*", 0 };
declare_native_rule("set", "difference", args, set_difference, 1);
}
}