#ifndef ISO_HASH_H
#define ISO_HASH_H

struct iso_hash_node {
	struct iso_hash_node *next;
	char *path;
};

#define HASH_NODES	128

/**
 * Searches in the hash table if the path exists.
 *
 * \param table The hash table.
 * \param path The path of the file to look for.
 *
 * \return 1 if the path exists in the hash table, 0 otherwise.
 */
int iso_hash_lookup(struct iso_hash_node **table, const char *path);

/**
 * Insert a new path in the hash table.
 *
 * \param table The hash table.
 * \param path The path of a file to add to the hash table.
 *
 * \return 1 if the file wasn't already in the hash table, 0 otherwise.
 */
int iso_hash_insert(struct iso_hash_node **table, const char *path);

/**
 * Remove a path from the hash table.
 *
 * \param table The hash table.
 * \param path The path of a file to remove from the hash table.
 *
 * \return 1 if the file was found and removed, 0 otherwise.
 */
int iso_hash_remove(struct iso_hash_node **table, const char *path);

/**
 * Empty the hash table.
 */
void iso_hash_empty(struct iso_hash_node **table);

#endif /* ISO_HASH_H */