<commit_before>#ifndef __DTAB_H__
#define __DTAB_H__

#include <stdlib.h>

#define dtab_t(name)                                                    \
  dtab_##name##_t

#define DTAB(name, type)                                                \
  typedef struct dtab_t(name) {                                         \
      int   len;                                                        \
      int   size;                                                       \
      type* data;                                                       \
  } dtab_t(name);                                                       \
                                                                        \
  dtab_t(name)* dtab_##name##_init(void)                                \
  {                                                                     \
      dtab_t(name)* dtab;                                               \
      dtab = (dtab_t(name)*)malloc(sizeof(dtab_t(name)));               \
      dtab->len  = 0;                                                   \
      dtab->size = 0;                                                   \
      dtab->data = NULL;                                                \
      return dtab;                                                      \
  }                                                                     \
                                                                        \
  type* dtab_##name##_add(dtab_t(name)* dtab, type* data)               \
  {                                                                     \
      if(dtab->size == dtab->len)                                       \
      {                                                                 \
          dtab->len += 8;                                               \
          dtab->data = realloc(dtab->data, dtab->len*sizeof(dtab_t(name))); \
      }                                                                 \
                                                                        \
      if(data)                                                          \
      {                                                                 \
          dtab->data[dtab->size] = *data;                               \
      }                                                                 \
      dtab->size++;                                                     \
                                                                        \
      return &dtab->data[dtab->size-1];                                 \
  }                                                                     \
                                                                        \
  int dtab_##name##_get_index(dtab_t(name)* dtab, type* data)           \
  {                                                                     \
      int pos;                                                          \
      pos = (data - dtab->data);                                        \
      if(pos < 0 || pos >= dtab->size)                                  \
          return -1;                                                    \
      return pos;                                                       \
  }                                                                     \
                                                                        \
  type* dtab_##name##_get(dtab_t(name)* dtab, int pos)                  \
  {                                                                     \
      if(pos < 0 || pos >= dtab->size)                                  \
          return NULL;                                                  \
      return &dtab->data[pos];                                          \
  }                                                                     \
                                                                        \
  int dtab_##name##_del(dtab_t(name)* dtab, int pos)                    \
  {                                                                     \
      if(pos >= dtab->size)                                             \
          return -1;                                                    \
                                                                        \
      dtab->size--;                                                     \
      if(dtab->size != pos) {                                           \
          dtab->data[pos] = dtab->data[dtab->size];                     \
      }                                                                 \
      if(dtab->len - dtab->size >= 8) {                                 \
          dtab->len -= 8;                                               \
          dtab->data = realloc(dtab->data, dtab->len*sizeof(type));     \
      }                                                                 \
      return 0;                                                         \
  }                                                                     \
                                                                        \
  void dtab_##name##_clean(dtab_t(name)* dtab)                          \
  {                                                                     \
      if(dtab->data)                                                    \
          free(dtab->data);                                             \
      free(dtab);                                                       \
  }



#define dtab_init(name)                                                 \
  dtab_##name##_init()

#define dtab_add(name, dtab, data)                                      \
    dtab_##name##_add(dtab, data)

#define dtab_del(name, dtab, pos)                                       \
    dtab_##name##_del(dtab, pos)

#define dtab_get(name, dtab, pos)                                       \
    dtab_##name##_get(dtab, pos)

#define dtab_get_index(name, dtab, data)                                \
    dtab_##name##_get_index(dtab, data)

#define dtab_clean(name, dtab)                                          \
  dtab_##name##_clean(dtab)

#define dtab_for_each(name, dtab, __data)                               \
    for(i = 0, __data = dtab->data; i < dtab->size; ++i, ++__data)

#endif /* __DTAB_H__ */<commit_msg>com: fix dtab for each<commit_after>#ifndef __DTAB_H__
#define __DTAB_H__

#include <stdlib.h>

#define dtab_t(name)                                                    \
  dtab_##name##_t

#define DTAB(name, type)                                                \
  typedef struct dtab_t(name) {                                         \
      int   len;                                                        \
      int   size;                                                       \
      type* data;                                                       \
  } dtab_t(name);                                                       \
                                                                        \
  dtab_t(name)* dtab_##name##_init(void)                                \
  {                                                                     \
      dtab_t(name)* dtab;                                               \
      dtab = (dtab_t(name)*)malloc(sizeof(dtab_t(name)));               \
      dtab->len  = 0;                                                   \
      dtab->size = 0;                                                   \
      dtab->data = NULL;                                                \
      return dtab;                                                      \
  }                                                                     \
                                                                        \
  type* dtab_##name##_add(dtab_t(name)* dtab, type* data)               \
  {                                                                     \
      if(dtab->size == dtab->len)                                       \
      {                                                                 \
          dtab->len += 8;                                               \
          dtab->data = realloc(dtab->data, dtab->len*sizeof(dtab_t(name))); \
      }                                                                 \
                                                                        \
      if(data)                                                          \
      {                                                                 \
          dtab->data[dtab->size] = *data;                               \
      }                                                                 \
      dtab->size++;                                                     \
                                                                        \
      return &dtab->data[dtab->size-1];                                 \
  }                                                                     \
                                                                        \
  int dtab_##name##_get_index(dtab_t(name)* dtab, type* data)           \
  {                                                                     \
      int pos;                                                          \
      pos = (data - dtab->data);                                        \
      if(pos < 0 || pos >= dtab->size)                                  \
          return -1;                                                    \
      return pos;                                                       \
  }                                                                     \
                                                                        \
  type* dtab_##name##_get(dtab_t(name)* dtab, int pos)                  \
  {                                                                     \
      if(pos < 0 || pos >= dtab->size)                                  \
          return NULL;                                                  \
      return &dtab->data[pos];                                          \
  }                                                                     \
                                                                        \
  int dtab_##name##_del(dtab_t(name)* dtab, int pos)                    \
  {                                                                     \
      if(pos >= dtab->size)                                             \
          return -1;                                                    \
                                                                        \
      dtab->size--;                                                     \
      if(dtab->size != pos) {                                           \
          dtab->data[pos] = dtab->data[dtab->size];                     \
      }                                                                 \
      if(dtab->len - dtab->size >= 8) {                                 \
          dtab->len -= 8;                                               \
          dtab->data = realloc(dtab->data, dtab->len*sizeof(type));     \
      }                                                                 \
      return 0;                                                         \
  }                                                                     \
                                                                        \
  void dtab_##name##_clean(dtab_t(name)* dtab)                          \
  {                                                                     \
      if(dtab->data)                                                    \
          free(dtab->data);                                             \
      free(dtab);                                                       \
  }



#define dtab_init(name)                                                 \
  dtab_##name##_init()

#define dtab_add(name, dtab, data)                                      \
    dtab_##name##_add(dtab, data)

#define dtab_del(name, dtab, pos)                                       \
    dtab_##name##_del(dtab, pos)

#define dtab_get(name, dtab, pos)                                       \
    dtab_##name##_get(dtab, pos)

#define dtab_get_index(name, dtab, data)                                \
    dtab_##name##_get_index(dtab, data)

#define dtab_clean(name, dtab)                                          \
  dtab_##name##_clean(dtab)

#define dtab_for_each(name, dtab, __data)                               \
    for(i = dtab->size, __data = &dtab->data[dtab->size - 1];           \
        i--; --__data)

#endif /* __DTAB_H__ */
{'fraction_non_alphanumeric': 0.07670839645961247, 'fraction_numerical': 0.0019137229885974004, 'mean_word_length': 0.3385272145144077, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 82, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 290, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1471336', 'n_tokens_mistral': 2160, 'n_tokens_neox': 2113, 'n_words': 323}