本文整理汇总了C++中set_free函数的典型用法代码示例。如果您正苦于以下问题:C++ set_free函数的具体用法?C++ set_free怎么用?C++ set_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了set_free函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_controller_flush_cmd
bool do_controller_flush_cmd(int argc, char *argv[]) {
chunk_ptr msg = msg_new_flush();
word_t w;
int fd;
bool ok = true;
set_iterstart(worker_fd_set);
while (set_iternext(worker_fd_set, &w)) {
fd = w;
if (!chunk_write(fd, msg)) {
err(false,
"Failed to send flush message to worker with descriptor %d", fd);
ok = false;
}
}
set_iterstart(client_fd_set);
while (set_iternext(client_fd_set, &w)) {
fd = w;
if (!chunk_write(fd, msg)) {
err(false,
"Failed to send flush message to client with descriptor %d", fd);
ok = false;
}
}
chunk_free(msg);
free_global_ops();
gc_state = GC_READY;
need_worker_cnt = 0;
if (need_client_fd_set != NULL)
set_free(need_client_fd_set);
need_client_fd_set = NULL;
if (defer_client_fd_set != NULL)
set_free(defer_client_fd_set);
defer_client_fd_set = NULL;
return ok;
}
示例2: set_new
static Set *new_matches(void) {
Set *set;
char *tmp;
int r;
set = set_new(trivial_hash_func, trivial_compare_func);
if (!set) {
log_oom();
return NULL;
}
tmp = strdup("MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1");
if (!tmp) {
log_oom();
set_free(set);
return NULL;
}
r = set_consume(set, tmp);
if (r < 0) {
log_error("failed to add to set: %s", strerror(-r));
set_free(set);
return NULL;
}
return set;
}
示例3: ddf_CheckEmptiness
ddf_boolean ddf_CheckEmptiness(ddf_PolyhedraPtr poly, ddf_ErrorType *err)
{
ddf_rowset R, S;
ddf_MatrixPtr M=NULL;
ddf_boolean answer=ddf_FALSE;
*err=ddf_NoError;
if (poly->representation==ddf_Inequality){
M=ddf_CopyInequalities(poly);
set_initialize(&R, M->rowsize);
set_initialize(&S, M->rowsize);
if (!ddf_ExistsRestrictedFace(M, R, S, err)){
poly->child->CompStatus=ddf_AllFound;
poly->IsEmpty=ddf_TRUE;
poly->n=0;
answer=ddf_TRUE;
}
set_free(R);
set_free(S);
ddf_FreeMatrix(M);
} else if (poly->representation==ddf_Generator && poly->m<=0){
*err=ddf_EmptyVrepresentation;
poly->IsEmpty=ddf_TRUE;
poly->child->CompStatus=ddf_AllFound;
answer=ddf_TRUE;
poly->child->Error=*err;
}
return answer;
示例4: test_communicate
void
test_communicate() {
int valuebuf[] = { 1 };
size_t i;
ListObject *lp = list_new();
for(i = 0; i < 10; i++) {
*valuebuf = i;
list_add(lp, valuebuf);
}
ListObject *lp2 = list_new();
for(i = 5; i < 15; i++) {
*valuebuf = i;
list_add(lp2, valuebuf);
}
printf("list1 is:\n");
list_print(lp);
printf("list2 is:\n");
list_print(lp2);
SetObject *sp = set_fromlist(lp, int_hash, lp->keycmp, lp->keydup, 0);
printf("set from list1 is:\n");
set_print_int(sp);
SetObject *sp2 = set_fromlist(lp2, int_hash, lp2->keycmp, lp2->keydup, 0);
printf("set from list2 is:\n");
set_print_int(sp2);
printf("so, intersection of the two list is\n");
set_print_int(set_and(sp, sp2));
list_free(lp);
list_free(lp2);
set_free(sp);
set_free(sp2);
}
示例5: exit_status_set_free
void exit_status_set_free(ExitStatusSet *x) {
assert(x);
set_free(x->status);
set_free(x->signal);
x->status = x->signal = NULL;
}
示例6: test_set
static void
test_set(void) {
char *keys1[] = {"a", "b", "r", "a", "c", "a", "d", "a", "b", "r", "a"};
char *keys2[] = {"a", "l", "a", "c", "a", "z", "a", "m"};
SetObject *a = set_new();
SetObject *b = set_new();
set_addfrom(a, (void**)keys1, 11);
set_addfrom(b, (void**)keys2, 8);
set_print(a); // { 'c', 'd', 'r', 'a', 'b', }
set_print(b); // { 'c', 'l', 'm', 'a', 'z', }
set_print(set_rsub(a, b)); //{ 'd', 'b', 'r', }
set_print(set_ror(a, b)); //{ 'a', 'b', 'c', 'd', 'l', 'm', 'r', 'z', }
set_print(set_rand(a, b)); //{ 'c', 'a', }
set_print(set_rxor(a, b)); //{ 'b', 'd', 'l', 'm', 'r', 'z', }
set_ior(a, b);
set_print(a);
set_isub(a, b);
set_print(a);
set_ixor(a, b);
set_print(a);
set_iand(a, b);
set_print(a);
set_free(a);
set_free(b);
char *keys3[] = {"a", "b"};
char *keys4[] = {"a", "b", "d", "c", "e", "f", "g", "h"};
SetObject *c = set_new();
SetObject *d = set_new();
set_addfrom(c, (void**)keys3, 2);
set_addfrom(d, (void**)keys4, 8);
set_print(set_xor(c, d));
set_print(set_and(c, d));
set_print(set_sub(c, d));
}
示例7: set_new
static Set *new_matches(void) {
Set *set;
char *tmp;
int r;
set = set_new(NULL);
if (!set) {
log_oom();
return NULL;
}
tmp = strdup("MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1");
if (!tmp) {
log_oom();
set_free(set);
return NULL;
}
r = set_consume(set, tmp);
if (r < 0) {
log_error_errno(r, "failed to add to set: %m");
set_free(set);
return NULL;
}
return set;
}
示例8: set_new
Set *set_union(Set *set1, Set *set2)
{
SetIterator iterator;
Set *new_set;
SetValue value;
new_set = set_new(set1->hash_func, set1->equal_func);
if (new_set == NULL) {
return NULL;
}
/* Add all values from the first set */
set_iterate(set1, &iterator);
while (set_iter_has_more(&iterator)) {
/* Read the next value */
value = set_iter_next(&iterator);
/* Copy the value into the new set */
if (!set_insert(new_set, value)) {
/* Failed to insert */
set_free(new_set);
return NULL;
}
}
/* Add all values from the second set */
set_iterate(set2, &iterator);
while (set_iter_has_more(&iterator)) {
/* Read the next value */
value = set_iter_next(&iterator);
/* Has this value been put into the new set already?
* If so, do not insert this again */
if (set_query(new_set, value) == 0) {
if (!set_insert(new_set, value)) {
/* Failed to insert */
set_free(new_set);
return NULL;
}
}
}
return new_set;
}
示例9: test_set_intersection
void test_set_intersection (void) {
int numbers1[] = {1, 2, 3, 4, 5, 6, 7};
int numbers2[] = {5, 6, 7, 8, 9, 10, 11};
int result[] = {5, 6, 7};
int i;
Set* set1;
Set* set2;
Set* result_set;
size_t allocated;
/* Create the first set */
set1 = set_new (int_hash, int_equal);
for (i = 0; i < 7; ++i) {
set_insert (set1, &numbers1[i]);
}
/* Create the second set */
set2 = set_new (int_hash, int_equal);
for (i = 0; i < 7; ++i) {
set_insert (set2, &numbers2[i]);
}
/* Perform the intersection */
result_set = set_intersection (set1, set2);
assert (set_num_entries (result_set) == 3);
for (i = 0; i < 3; ++i) {
assert (set_query (result_set, &result[i]) != 0);
}
/* Test out of memory scenario */
alloc_test_set_limit (0);
assert (set_intersection (set1, set2) == NULL);
/* Can allocate set, can't copy all values */
alloc_test_set_limit (2 + 2);
allocated = alloc_test_get_allocated();
assert (set_intersection (set1, set2) == NULL);
assert (alloc_test_get_allocated() == allocated);
set_free (set1);
set_free (set2);
set_free (result_set);
}
示例10: set_test
void
set_test()
{
printf("SET S: ");
set* s = set_init();
set_add(s, (SETDATA*)1);
set_add(s, (SETDATA*)2);
set_add(s, (SETDATA*)3);
set_add(s, (SETDATA*)4);
set_add(s, (SETDATA*)5);
set_add(s, (SETDATA*)6);
set_print(s, set_testcb);
printf("S \\ 2, 6: ");
set_remove(s, (SETDATA*)6);
set_remove(s, (SETDATA*)2);
set_print(s, set_testcb);
printf("SET T: ");
set* t = set_init();
set_add(t, (SETDATA*)1);
set_add(t, (SETDATA*)2);
set_add(t, (SETDATA*)9);
set_add(t, (SETDATA*)4);
set_print(t, set_testcb);
printf("UNION OF S, T: ");
set* u = set_init();
set_union(u, s, t);
set_print(u, set_testcb);
printf("INTERSECTION OF S, T: ");
set* i = set_init();
set_intersection(i, s, t);
set_print(i, set_testcb);
printf("DIFFERENCE OF S, T: ");
set* d = set_init();
set_difference(d, s, t);
set_print(d, set_testcb);
printf("CLEAR S: ");
set_clear(s);
set_print(s, set_testcb);
set_free(s);
set_free(t);
set_free(u);
set_free(i);
set_free(d);
}
示例11: validate_free
static void validate_free(validate_type * validate) {
if (validate->common_selection_set != NULL) set_free(validate->common_selection_set);
if (validate->indexed_selection_set != NULL) {
for (int i = 0; i < validate->argc_max; i++)
if (validate->indexed_selection_set[i] != NULL)
set_free(validate->indexed_selection_set[i]);
free(validate->indexed_selection_set);
}
int_vector_free( validate->type_map );
if (validate->required_children != NULL) stringlist_free(validate->required_children);
if (validate->required_children_value != NULL) hash_free(validate->required_children_value);
free(validate);
}
示例12: split_item
void split_item(item_p i, size_t size) {
if (block_size(i) <= size)
return;
item_p j = get_unmatched_item();
if (j == NULL)
return;
j->size = block_size(i) - size;
i->size = size;
set_free(i); set_free(j);
j->data = i->data + size;
j->next = i->next;
i->next = j;
freeblks++;
}
示例13: automount_done
static void automount_done(Unit *u) {
Automount *a = AUTOMOUNT(u);
assert(a);
unmount_autofs(a);
a->where = mfree(a->where);
a->tokens = set_free(a->tokens);
a->expire_tokens = set_free(a->expire_tokens);
a->expire_event_source = sd_event_source_unref(a->expire_event_source);
}
示例14: context_free
static void context_free(Context *context) {
sd_event_source *es;
Connection *c;
assert(context);
while ((es = set_steal_first(context->listen)))
sd_event_source_unref(es);
while ((c = set_first(context->connections)))
connection_free(c);
set_free(context->listen);
set_free(context->connections);
}
示例15: word_adds_find_dupes
/* 0 files to go -> "0s " */
TEST word_adds_find_dupes() {
set *s = set_new(2, dumb_hash, cmp);
int duplicates[word_count];
bzero(duplicates, word_count * sizeof(int));
for (int i=0; i<word_count; i++) {
char *w = words[i];
ASSERT(w);
if (set_known(s, w)) {
duplicates[i] = 1;
} else {
if (set_store(s, (void *) w) == TABLE_SET_FAIL) FAIL();
}
}
for (int i=0; i<word_count; i++) {
if (0) printf("%d - %s %d\n", i, words[i], duplicates[i]);
}
for (int i=0; i<18; i++) {
ASSERT_EQm("none of the first 18 are duplicates", 0, duplicates[i]);
}
ASSERT_EQm("words[19] (\"onion\") is a dup", 1, duplicates[19]);
ASSERT_EQm("the last word (\"fennel\") is a dup", 1, duplicates[word_count - 1]);
set_free(s, NULL);
PASS();
}