Beispiel #1
0
void grok_free_clone(const grok_t *grok) {
  if (grok->re != NULL) {
    pcre_free(grok->re);
  }

  if (grok->full_pattern != NULL) {
    free(grok->full_pattern);
  }

  if (grok->pcre_capture_vector != NULL) {
    free(grok->pcre_capture_vector);
  }

  if (grok->captures_by_name != NULL) {
    tctreedel(grok->captures_by_name);
  }

  if (grok->captures_by_subname != NULL) {
    tctreedel(grok->captures_by_subname);
  }

  if (grok->captures_by_capture_number != NULL) {
    tctreedel(grok->captures_by_capture_number);
  }

  if (grok->captures_by_id != NULL) {
    tctreedel(grok->captures_by_id);
  }
}
Beispiel #2
0
void main () {

  uint32_t key = 123;
  const char *val = "abcdefkrnglrg";

  // Make a new tree
  TCTREE *tree = tctreenew();

  // Put an integer key
  tctreeput(tree, &key, sizeof(key), val, strlen(val));
  
  // Put a different key
  key = 122;
  tctreeput(tree, &key, sizeof(key), val, strlen(val));
  
  // Put the same key twice
  tctreeput(tree, &key, sizeof(key), val, strlen(val));

  // Put the same key but keep the old value
  tctreeputkeep(tree, &key, sizeof(key), val, strlen(val));

  // Get back a value
  int size;
  void *newVal = tctreeget(tree, &key, sizeof(key), &size);
  printf("Got value %s\n", newVal);

  // Create an iterator
  tctreeiterinit(tree);

  // Walk the tree
  tctreeiternext(tree, &size);
  tctreeiternext(tree, &size);
  tctreeiternext(tree, &size);

  // Clear the tree
  tctreeclear(tree);

  // Put one value back in the tree to make sure it's freed on delete 
  tctreeput(tree, &key, sizeof(key), val, strlen(val));

  // Delete the tree
  tctreedel(tree);

  // Make a list
  TCLIST *list = tclistnew();

  // Push a few times
  tclistpush(list, &key, sizeof(key));
  key += 1;
  tclistpush(list, &key, sizeof(key));
  key += 1;
  tclistpush(list, &key, sizeof(key));
 
  // Overwrite an existing element
  tclistover(list, 1, &key, sizeof(key));

  // Get a value
  tclistval(list, 2, &size);

  // Remove some values
  newVal = tclistremove(list, 2, &size);
  free(newVal);
  newVal = tclistremove(list, 0, &size);
  free(newVal);

  // Free the whole list
  tclistdel(list);
}
Beispiel #3
0
void grok_discover_clean(grok_discover_t *gdt) {
  tctreedel(gdt->complexity_tree);
  gdt->base_grok = NULL;
}
Beispiel #4
0
void grok_free(grok_t *grok) {
  grok_free_clone(grok);
  if (grok->patterns != NULL)
    tctreedel(grok->patterns);
}