コード例 #1
0
ファイル: setprod.c プロジェクト: bubuker/keggle_santa
/* This gets the fore part of the product and saves it and
 * also gets the back part
 */
static Bool get_both_parts(
   const Set* a,
   const Set* b,
   SetIter*   iter,
   SetIter*   iter_a,
   SetIter*   iter_b,
   Tuple*     tuple,
   int        offset,
   int        offset2)
{
   int i;
   
   if (!set_iter_next_intern(iter_a, a, tuple, offset))
      return FALSE;

   for(i = 0; i < a->head.dim; i++)
   {
      assert(iter->prod.elem[i] == NULL);
      
      iter->prod.elem[i] = elem_copy(tuple_get_elem(tuple, i + offset));

      assert(elem_is_valid(iter->prod.elem[i]));
   }
   if (!set_iter_next_intern(iter_b, b, tuple, offset2))
      return FALSE;

   return TRUE;
}
コード例 #2
0
ファイル: list.c プロジェクト: bubuker/keggle_santa
List* list_new_elem(const Elem* elem)
{
   ListData data;
   
   assert(elem_is_valid(elem));

   data.elem = elem_copy(elem);

   return list_new(LIST_ELEM, &data);
}
コード例 #3
0
ファイル: list.c プロジェクト: bubuker/keggle_santa
void list_insert_elem(List* list, const Elem* elem)
{
   ListData data;

   assert(list_is_valid(list));
   assert(elem_is_valid(elem));
   assert(list->type == LIST_ELEM);
   
   data.elem = elem_copy(elem);

   list_insert_data(list, &data);
}
コード例 #4
0
ファイル: hash.c プロジェクト: aimanqais/gerardus
void hash_add_elem_idx(Hash* hash, const Elem* elem, int idx)
{
   HElem*       he = blk_alloc(sizeof(*he));
   unsigned int hcode;

   assert(hash_is_valid(hash));
   assert(elem_is_valid(elem));
   assert(he != NULL);
   
   hcode                   = elem_hash(elem) % hash->size;
   he->value.elem_idx.elem = elem;
   he->value.elem_idx.idx  = idx;
   he->next                = hash->bucket[hcode];
   hash->bucket[hcode]     = he;
   hash->elems++;
}
コード例 #5
0
ファイル: hash.c プロジェクト: aimanqais/gerardus
/* Liefert -1 wenn nicht gefunden.
 */
int hash_lookup_elem_idx(const Hash* hash, const Elem* elem)
{
   unsigned int hcode = elem_hash(elem) % hash->size;
   HElem*       he;
   
   assert(hash_is_valid(hash));
   assert(elem_is_valid(elem));

   for(he = hash->bucket[hcode]; he != NULL; he = he->next)
      if (!elem_cmp(he->value.elem_idx.elem, elem))
         break;

   if (he == NULL)
      return -1;

   assert(he != NULL);

   return he->value.elem_idx.idx;
}