Exemple #1
0
set *set_intersect(set *s1, set *s2)
{
	set_iter itr;
	char *str;
	set *s = set_init((set_size(s1) + set_size(s2)) / 2);

	for(set_iter_init(s1, &itr); (str = set_iterate(s1, &itr)) != NULL; )	{
		if(set_ismember(s2, str))
			set_add(s, str);
	}

	for(set_iter_init(s2, &itr); (str = set_iterate(s2, &itr)) != NULL; )	{
		if(set_ismember(s1, str))
			set_add(s, str);
	}

	return s;
}
Exemple #2
0
set *set_xor(set *s1, set *s2)
{
	set_iter itr;
	set *new_set = set_init(set_size(s1) + set_size(s2) / 2);
	char *elm;

	for(set_iter_init(s1, &itr); (elm = set_iterate(s1, &itr)) != NULL; )	{
		if(!set_ismember(s2, elm))
			set_add(new_set, elm);
	}

	for(set_iter_init(s2, &itr); (elm = set_iterate(s2, &itr)) != NULL; )	{
		if(!set_ismember(s1, elm))
			set_add(new_set, elm);
	}

	return new_set;
}
Exemple #3
0
/*
 * db_col_ismember() - This function can be used to determine if a particular
 *    value is found within a collection.
 * return :
 *      0 = the value was not found within the collection
 *     >0 = the value was found within the collection
 *     <0 = an error was detected.
 * col(in): collection
 * value(in): value to search for
 */
int
db_col_ismember (DB_COLLECTION * col, DB_VALUE * value)
{
  int member;

  CHECK_CONNECT_MINUSONE ();
  CHECK_1ARG_MINUSONE (col);

  member = set_ismember (col, value) ? 1 : 0;

  return member;
}
Exemple #4
0
int set_subset(set *s1, set *s2)
{
	set_iter itr;
	char *elm;

	for(set_iter_init(s2, &itr); (elm = set_iterate(s2, &itr)) != NULL; )	{
		if(!set_ismember(s1, elm))
			return 0;
	}

	return 1;
}
Exemple #5
0
/*
 * db_set_ismember() - This function checks to see if a value is found in a set
 * return : non-zero if the value is in the set
 * set(in): set descriptor
 * value(in): value to test
 */
int
db_set_ismember (DB_SET * set, DB_VALUE * value)
{
  int retval;

  CHECK_CONNECT_FALSE ();
  CHECK_1ARG_FALSE (set);

  /* allow all types */
  retval = (set_ismember (set, value)) ? 1 : 0;

  return (retval);
}