data_structures
hashset_copy.c
Go to the documentation of this file.
1 /* ************************************************************************** */
3 /* */
4 /* ::: :::::::: */
5 /* hashset_copy.c :+: :+: :+: */
6 /* +:+ +:+ +:+ */
7 /* By: unite <marvin@42.fr> +#+ +:+ +#+ */
8 /* +#+#+#+#+#+ +#+ */
9 /* Created: 2020/07/22 01:37:51 by unite #+# #+# */
10 /* Updated: 2020/09/07 21:59:00 by unite ### ########.fr */
11 /* */
12 /* ************************************************************************** */
13 
14 #include "hashset.h"
15 
17 {
18  t_hashset *copy;
19  t_queue *vals;
20  void *val;
21 
22  copy = hashset_new(hs->type);
23  vals = hashset_vals(hs);
24  while ((val = queue_dequeue(vals)))
25  hashset_put(copy, val);
26  queue_delete(vals);
27  return (copy);
28 }
hashset_new
t_hashset * hashset_new(const t_type *type)
Initializes a new empty set.
Definition: hashset_new.c:16
hashset_put
void hashset_put(t_hashset *hs, const void *val)
Adds a copy of the specified element to the hashset.
Definition: hashset_put.c:17
hashset.h
queue_delete
void queue_delete(t_queue *queue)
Deletes the queue and frees all memory taken by its contents, or does nothing if the argument is NULL...
Definition: queue_delete.c:16
s_list
Doubly-linked list of generic items.
Definition: list.h:54
queue_dequeue
void * queue_dequeue(t_queue *queue)
Removes and returns the item on this queue that was least recently added.
Definition: queue_dequeue.c:16
hashset_copy
t_hashset * hashset_copy(const t_hashset *hs)
Copies the hashset and all it contents.
Definition: hashset_copy.c:16
hashset_vals
t_queue * hashset_vals(const t_hashset *hs)
Returns a queue with all the elements in the set.
Definition: hashset_vals.c:16
s_hashset
A dynamically resizing linear-probing hashset.
Definition: hashset.h:43
s_hashset::type
const t_type * type
The type of elements in the hashset.
Definition: hashset.h:48