<commit_before>/*
 * Project:     libFIRM
 * File name:   ir/adt/eset.c
 * Purpose:     Datentyp: Vereinfachte Map (hash-map) zum Speichern von
 *              Zeigern/Adressen -> Zeigern/Adressen.
 * Author:      <NAME>
 * Modified by:
 * Created:     09.06.2002
 * CVS-ID:      $Id$
 * Copyright:   (c) 2002 Universitt Karlsruhe
 * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
 */

#ifndef _PMAP_H_
#define _PMAP_H_

/* Map die Adressen auf Adressen abbildet. Der Vergleich und das
 * Hashen findet ber die Adresse statt. */

typedef struct pmap pmap;

typedef struct pmap_entry {
  void * key;
  void * value;
} pmap_entry;


/* Erzeugt eine neue leere Map. */
pmap * pmap_create(void);

/* Lscht eine Map. */
void pmap_destroy(pmap *);

/* Fgt ein Paar (key,value) in die Map ein. Gibt es bereits einen
 * Eintrag mit "key" in er Map, so wird der entsprechende "value"
 * berschrieben. */
void pmap_insert(pmap *, void * key, void * value);

/* Prft ob ein Eintrag zu "key" exisitiert. */
int pmap_contains(pmap *, void * key);

/* Gibt den Eintrag zu "key" zurck. */
pmap_entry * pmap_find(pmap *, void * key);

/* Gibt fr den Eintrag zu "key" den "value" zurck. */
void * pmap_get(pmap *, void * key);

/* Mit den Funktionen "pmap_first" und "pmap_next" kann man durch die
 * Map iterieren. Die Funktionen geben einen Zeiger auf einen Eintrag
 * zurck (key,value). Die Funktionen geben "NULL" zurck, wenn kein
 * weiterer Eintrag existiert. */
pmap_entry * pmap_first(pmap *);
pmap_entry * pmap_next(pmap *);

void pmap_break(pmap *map);

#endif /* _PMAP_H_ */<commit_msg>Added pmap_for_each iterator<commit_after>/*
 * Project:     libFIRM
 * File name:   ir/adt/eset.c
 * Purpose:     Datentyp: Vereinfachte Map (hash-map) zum Speichern von
 *              Zeigern/Adressen -> Zeigern/Adressen.
 * Author:      <NAME>
 * Modified by:
 * Created:     09.06.2002
 * CVS-ID:      $Id$
 * Copyright:   (c) 2002 Universit�t Karlsruhe
 * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
 */

#ifndef _PMAP_H_
#define _PMAP_H_

/* Map die Adressen auf Adressen abbildet. Der Vergleich und das
 * Hashen findet �ber die Adresse statt. */

typedef struct pmap pmap;

typedef struct pmap_entry {
  void * key;
  void * value;
} pmap_entry;


/* Erzeugt eine neue leere Map. */
pmap * pmap_create(void);

/* L�scht eine Map. */
void pmap_destroy(pmap *);

/* F�gt ein Paar (key,value) in die Map ein. Gibt es bereits einen
 * Eintrag mit "key" in er Map, so wird der entsprechende "value"
 * �berschrieben. */
void pmap_insert(pmap *, void * key, void * value);

/* Pr�ft ob ein Eintrag zu "key" exisitiert. */
int pmap_contains(pmap *, void * key);

/* Gibt den Eintrag zu "key" zur�ck. */
pmap_entry * pmap_find(pmap *, void * key);

/* Gibt f�r den Eintrag zu "key" den "value" zur�ck. */
void * pmap_get(pmap *, void * key);

/* Mit den Funktionen "pmap_first" und "pmap_next" kann man durch die
 * Map iterieren. Die Funktionen geben einen Zeiger auf einen Eintrag
 * zur�ck (key,value). Die Funktionen geben "NULL" zur�ck, wenn kein
 * weiterer Eintrag existiert. */
pmap_entry * pmap_first(pmap *);
pmap_entry * pmap_next(pmap *);

#define pmap_foreach(pmap, curr) \
	for(curr=pmap_first(pmap); curr; curr=pmap_next(pmap))

void pmap_break(pmap *map);

#endif /* _PMAP_H_ */
{'fraction_non_alphanumeric': 0.12206855081178593, 'fraction_numerical': 0.0072158749248346366, 'mean_word_length': 3.430093209054594, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4388096', 'n_tokens_mistral': 1275, 'n_tokens_neox': 1271, 'n_words': 384}