__declspec(dllexport) void curl_shim_cleanup() { Table_map(g_delegateTable, vfree, NULL); Table_free(&g_delegateTable); DeleteCriticalSection(&g_csDelegateTable); Table_map(g_shareDelegateTable, vfree, NULL); Table_free(&g_shareDelegateTable); DeleteCriticalSection(&g_csShareDelegateTable); }
void wf(char *name, FILE *fp) { Table_T table = Table_new(0, NULL, NULL); char buf[128]; while (getword(fp, buf, sizeof buf, first, rest)) { const char *word; int i, *count; for (i = 0; buf[i] != '\0'; i++) buf[i] = tolower(buf[i]); word = Atom_string(buf); count = Table_get(table, word); if (count) (*count)++; else { NEW(count); *count = 1; Table_put(table, word, count); } } if (name) printf("%s:\n", name); { int i; void **array = Table_toArray(table, NULL); qsort(array, Table_length(table), 2*sizeof (*array), compare); for (i = 0; array[i]; i += 2) printf("%d\t%s\n", *(int *)array[i+1], (char *)array[i]); FREE(array); } Table_map(table, vfree, NULL); Table_free(&table); }
int main(int argc, char *argv[]) { int i; Table_T identifiers = Table_new(5000, (int (*)(const void *, const void *))strcmp, strhash); Fmt_register('S', Str_fmt); first = Str_catv("abcdefghijklmnopqrstuvwxyz", 1, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1, 0, "_", 1, 0, NULL); rest = Str_cat(first, 1, 0, "0123456789", 1, 0); for (i = 1; i < argc; i++) { FILE *fp = fopen(argv[i], "r"); if (fp == NULL) fprintf(stderr, "%s: can't open '%s' (%s)\n", argv[0], argv[i], strerror(errno)); else { kref(argv[i], fp, identifiers); fclose(fp); } } if (argc == 1) kref(NULL, stdin, identifiers); { int i; void **array = Table_toArray(identifiers, NULL); qsort(array, Table_length(identifiers), 2*sizeof (*array), compare); for (i = 0; array[i]; i += 2) { Fmt_print("%S", array[i], 1, 0); print(array[i+1]); FREE(array[i]); } FREE(array); Table_free(&identifiers); } return EXIT_SUCCESS; }
void Umsections_free(T *asmp) { Table_map((*asmp)->sections,applyFree,NULL); Table_free(&((*asmp)->sections)); Seq_free(&((*asmp)->sectionOrder)); // Seq_free(((*asmp)->currentSection)); free(*asmp); }
int main(int argc, char *argv[]) { int i; Table_T identifiers = Table_new(10000, textcmp, texthash); Text_save_T mark = Text_save(); Fmt_register('T', Text_fmt); Fmt_register('D', Integer_fmt); first = Text_cat(Text_cat(Text_ucase, Text_lcase), Text_box("_", 1)); rest = Text_cat(first, Text_digits); for (i = 1; i < argc; i++) { FILE *fp = fopen(argv[i], "r"); if (fp == NULL) fprintf(stderr, "%s: can't open '%s' (%s)\n", argv[0], argv[i], strerror(errno)); else { cref(argv[i], fp, identifiers); fclose(fp); } } if (argc == 1) cref(NULL, stdin, identifiers); { int i; void **array = Table_toArray(identifiers, NULL); qsort(array, Table_length(identifiers), 2*sizeof (*array), compare); for (i = 0; array[i]; i += 2) { Fmt_print("%T", array[i]); print(array[i+1]); FREE(array[i]); } FREE(array); Table_free(&identifiers); } Text_restore(&mark); return EXIT_SUCCESS; }
/* Frees a given Umsections_T */ void Umsections_free(Umsections_T *asmp) { Table_map((*asmp)->table, apply_free, NULL); Table_free(&((*asmp)->table)); Seq_free(&((*asmp)->order)); free(*asmp); }
int main( int argc, char *argv[]) { (void) argc; (void) argv; Table_T fpTable = Table_new( initTableSize, NULL, NULL ); readAll( fpTable ); printAll( fpTable); Table_free(&fpTable); return 0; }
static void _cleanup(OeSession session) { T _this_ = OeNet_get_proto(OeSession_get_net(session)); int sz = Table_length(_this_->pending); void **array = Table_toArray(_this_->pending, NULL); for ( int i = 0; i < sz && array[i]; i+= 2 ) { CID_KEY *key = (CID_KEY *) array[i]; ACContext *pc = Table_remove(_this_->pending, key); _send_con_closed(pc->context); } Mem_free(array, __FILE__, __LINE__); Table_free(&_this_->pending); //OepClient_free(&_this_); //closing the proto is hard and buggy. }
/*Function Definitions*/ int main(int argc, char** argv) { Table_T ftable = Table_new(1, NULL, NULL); if (argc == 1) { input(&ftable); print_table(&ftable); } else { fprintf(stderr, "%s: %s\n", argv[0], "Could not open file for reading"); exit(1); } Table_free(&ftable); }
unsigned test_table() { Table_T tbl = Table_new(10, NULL, NULL); struct Test t1 = { 10, "Luca"}; char* s1 = TestToStr(&t1); const char* a1 = Atom_string(s1); char * result; Table_put(tbl, a1, "Luca"); result = (char*) Table_get(tbl, a1); test_assert(strcmp(result, "Luca") == 0); Table_free(&tbl); FREE(s1); Atom_freeAll(); return TEST_SUCCESS; }
END_TEST START_TEST(test_put_replace) { /* New values replace old values with the same key. */ Table_T *table = Table_new(0, cmpatom, hashatom); Table_put(table, (void*)0x12, (void*)0x34); Table_put(table, (void*)0x12, (void*)0x56); fail_unless( Table_length(table) == 1 ); fail_unless( Table_get(table, (void*)0x12) == (void*)0x56); Table_remove(table, (void*)0x12); Table_free(&table); }
void print(Table_T files) { int i; void **array = Table_toArray(files, NULL); qsort(array, Table_length(files), 2*sizeof (*array), compare); for (i = 0; array[i]; i += 2) { Seq_T seq = array[i+1]; char *filename = array[i]; if (*filename) Fmt_print("\t%S:", filename, 1, 0); while (Seq_length(seq) > 0) Fmt_print(" %S", Seq_remhi(seq), 1, 0); Fmt_print("\n"); FREE(filename); Seq_free(&seq); } FREE(array); Table_free(&files); }
void Oed_Dispatcher_free(T *_this_p) { assert(_this_p && *_this_p); T _this_ = *_this_p; if (_this_->name) { Mem_free((void *) _this_->name, __FILE__, __LINE__); } Table_T items = _this_->items; Table_free( &items ); event_base_free( (struct event_base *) Oed_Dispatcher_get_event_base(_this_) ); #ifdef OE_USE_THREADS Mem_free( _this_->notify_event, __FILE__, __LINE__); #endif Mem_free( _this_->que, __FILE__, __LINE__); Mem_free( _this_, __FILE__, __LINE__); }
void print_fgroups(T* table) { char ** arr = (char **)Table_toArray(*table, NULL); int table_length = Table_length(*table) * 2; for (int i=0; i < table_length; i+=2) { L list_ptr = ((L)arr[i+1]); int list_size = List_length(list_ptr); if (list_size >= 2) { char **names = (char**) List_toArray(list_ptr, NULL); for (int j = 0; names[j]; j++) printf("%s\n", (char*)(names[j])); if (2*i+2 < table_length) printf("\n"); free(names); } List_free(&list_ptr); } free(arr); Table_free(table); }
END_TEST START_TEST(test_get) { /* Table_get() with non-existant key returns NULL */ Table_T *table = Table_new(0, cmpatom, hashatom); Table_put(table, (void*)0x12, (void*)0x34); fail_unless( Table_length(table) == 1 ); fail_unless( Table_get(table, (void*)0x12) == (void*)0x34); /* non-existant key */ fail_unless( Table_get(table, (void*)0x34) == NULL); Table_remove(table, (void*)0x12); Table_free(&table); }
int try_running_tests_in_dso(struct herc *h, const char *file, void *handle) { size_t i = 0; void *suite_fixture, *test_fixture; //get the suites Table_T suitesTable = get_testnames_in_file(file, handle); //convert to array for easier sorting and iteration unsigned nSuites = Table_length(suitesTable); void **suites = Table_toArray(suitesTable, 0); Table_free(&suitesTable); //sort qsort(suites, nSuites, 2*sizeof(suites[0]), (int (*)(const void *, const void *))strcmp); //iterate and run for (i = 0; i<nSuites; i++) { suite_desc *suite = suites[i*2+1]; suite_fixture = invoke_before_suite(suite);//TODO call RBE callback cr_list_iter *iter = cr_list_iter_create(suite->tests); while (!cr_list_iter_past_end(iter)) { test_fixture = invoke_before_test(suite, suite_fixture); test_desc *test = (test_desc*)cr_list_iter_get(iter); herc_rbe_invoke(h->rbe, start_test, test); run_test(h, handle, test, test_fixture); herc_rbe_invoke(h->rbe, end_test, test); invoke_after_test(suite, test_fixture); cr_list_iter_next(iter); } cr_list_iter_free(iter); invoke_after_suite(suite, suite_fixture); } for (i = 0; i<nSuites; i++) { suite_desc_free(suites[i*2+1]); } free(suites); return 0; }
END_TEST START_TEST(test_put_in_same_bucket) { /* Our hash function always places key/vals in the same bucket - * assert that multiple items can be placed and retreived from * the same bucket */ Table_T *table = Table_new(0, cmpatom, hashatom); Table_put(table, (void*)0x12, (void*)0x34); Table_put(table, (void*)0x56, (void*)0x78); fail_unless( Table_length(table) == 2 ); fail_unless( Table_get(table, (void*)0x12) == (void*)0x34); fail_unless( Table_get(table, (void*)0x56) == (void*)0x78); Table_remove(table, (void*)0x12); Table_remove(table, (void*)0x56); Table_free(&table); }
void print(Table_T files) { int i; void **array = Table_toArray(files, NULL); qsort(array, Table_length(files), 2*sizeof (*array), compare); for (i = 0; array[i]; i += 2) { Ring_T ring = array[i+1]; Text_T *filename = array[i]; if (filename->len > 0) Fmt_print("\t%T:", filename); while (Ring_length(ring) > 0) { Integer_T line = Ring_remhi(ring); Fmt_print(" %D", line); FREE(line); } Fmt_print("\n"); FREE(filename); Ring_free(&ring); } FREE(array); Table_free(&files); }
int main() { FILE *fp = fopen("test.txt", "r"); int c = 0; int i = 0; char s[512]; Table_T our_table = Table_new(10, NULL, NULL); char * name; const char *fingerprint; const char* temp; while((c=fgetc(fp)) != ' ' && c != EOF) //Fingerprint section { s[i]= c; i++; } s[i] = '\0'; //Here we have fingerprint in s fingerprint = Atom_string(s); temp = Atom_string(s); i = 0; while((c = getc(fp)) != '\n' && c != EOF) { s[i] = c; i++; } s[i] = '\0'; //Here we have name in s name = s; Table_put(our_table, fingerprint, name); while( c != EOF) { i = 0; while((c = fgetc(fp)) != ' ' && c != EOF) // Fingerprint section { s[i] = c; i++; } s[i] = '\0'; fingerprint = Atom_string(s); i = 0; while((c = getc(fp)) != '\n' && c != EOF) { s[i] = c; i++; } s[i] = '\0'; name = s; printf("FP: %s\n ", fingerprint); printf("NAME: %s\n", name); char * test = Table_put(our_table, fingerprint, name); printf("idk: %s\n", test); // printf("VALUE STORED IN FP: %s\n\n", (char *)Table_get(our_table, temp)); } // NEED TO DEAL WITH TABLE MAP AND IMPLEMENTING A LIST // Table_map(our_table, vfree, NULL); //printf("%s", fingerprint); // printf("%s", (char *)Table_get(our_table, fingerprint)); printf("%d", Table_length(our_table)); // Table_map(our_table, vfree, NULL); int length = Table_length(our_table); void **table = Table_toArray(our_table, NULL); for(int x = 0; x < 2*length; x++) { printf("%s ", (char *)table[x]); } Table_free(&our_table); return 0; }
void exponent_table_free(exponent_table **E) { Table_free(&((*E)->table)); FREE(*E); *E = 0; }
/* Modifies chrlength_table to store offsets, rather than chrlengths */ static void write_chromosome_file (char *genomesubdir, char *fileroot, Tableint_T chrlength_table) { FILE *textfp, *chrsubsetfp; char *divstring, *textfile, *chrsubsetfile, *iitfile, *chr_string, emptystring[1]; int n, i; Chrom_T *chroms; Genomicpos_T chroffset = 0, chrlength; List_T divlist = NULL; List_T intervallist = NULL, chrtypelist = NULL, labellist = NULL, annotlist = NULL, p; Table_T intervaltable, labeltable, annottable; Interval_T interval; emptystring[0] = '\0'; if (divsort == NO_SORT) { chroms = (Chrom_T *) Tableint_keys_by_timeindex(chrlength_table,0U); n = Tableint_length(chrlength_table); } else { /* Get chromosomes in order */ chroms = (Chrom_T *) Tableint_keys(chrlength_table,0U); n = Tableint_length(chrlength_table); switch (divsort) { case ALPHA_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_alpha); break; case NUMERIC_ALPHA_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_numeric_alpha); break; case CHROM_SORT: qsort(chroms,n,sizeof(Chrom_T),Chrom_compare_chrom); break; default: abort(); } } /* Write chromosome text file and chrsubset file */ textfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+ strlen(fileroot)+strlen(".chromosome")+1,sizeof(char)); sprintf(textfile,"%s/%s.chromosome",genomesubdir,fileroot); /* Use binary, not text, so files are Unix-compatible */ if ((textfp = FOPEN_WRITE_BINARY(textfile)) == NULL) { fprintf(stderr,"Can't write to file %s\n",textfile); exit(9); } FREE(textfile); chrsubsetfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+ strlen(fileroot)+strlen(".chrsubset")+1,sizeof(char)); sprintf(chrsubsetfile,"%s/%s.chrsubset",genomesubdir,fileroot); /* Use binary, not text, so files are Unix-compatible */ if ((chrsubsetfp = FOPEN_WRITE_BINARY(chrsubsetfile)) == NULL) { fprintf(stderr,"Can't write to file %s\n",chrsubsetfile); exit(9); } FREE(chrsubsetfile); fprintf(chrsubsetfp,">all\n"); fprintf(chrsubsetfp,"\n"); chrtypelist = List_push(chrtypelist,""); for (i = 0; i < n; i++) { chrlength = (Genomicpos_T) Tableint_get(chrlength_table,chroms[i]); assert(chroffset <= chroffset+chrlength-1); chr_string = Chrom_string(chroms[i]); if (i < 100) { fprintf(stderr,"Chromosome %s has universal coordinates %u..%u\n", chr_string,chroffset+1,chroffset+1+chrlength-1); } else if (i == 100) { fprintf(stderr,"More than 100 contigs. Will stop printing messages\n"); } if (n <= 100) { fprintf(chrsubsetfp,">%s\n",chr_string); fprintf(chrsubsetfp,"+%s\n",chr_string); } fprintf(textfp,"%s\t%u..%u\t%u\n", chr_string,chroffset+1,chroffset+chrlength,chrlength); intervallist = List_push(intervallist,(void *) Interval_new(chroffset,chroffset+chrlength-1U,0)); labellist = List_push(labellist,(void *) chr_string); annotlist = List_push(annotlist,(void *) emptystring); /* No annotations */ Tableint_put(chrlength_table,chroms[i],chroffset); chroffset += chrlength; } FREE(chroms); intervallist = List_reverse(intervallist); labellist = List_reverse(labellist); fclose(chrsubsetfp); fclose(textfp); /* Write chromosome IIT file */ divstring = (char *) CALLOC(1,sizeof(char)); divstring[0] = '\0'; divlist = List_push(NULL,divstring); intervaltable = Table_new(65522,Table_string_compare,Table_string_hash); labeltable = Table_new(65522,Table_string_compare,Table_string_hash); annottable = Table_new(65522,Table_string_compare,Table_string_hash); Table_put(intervaltable,(void *) divstring,intervallist); Table_put(labeltable,(void *) divstring,labellist); Table_put(annottable,(void *) divstring,annotlist); iitfile = (char *) CALLOC(strlen(genomesubdir)+strlen("/")+ strlen(fileroot)+strlen(".chromosome.iit")+1,sizeof(char)); sprintf(iitfile,"%s/%s.chromosome.iit",genomesubdir,fileroot); IIT_write(iitfile,divlist,chrtypelist,/*fieldlist*/(List_T) NULL, intervaltable,labeltable,annottable,divsort, /*version, use 1 for backward compatibility*/1, /*label_pointers_8p*/false,/*annot_pointers_8p*/false); FREE(iitfile); List_free(&divlist); FREE(divstring); Table_free(&annottable); Table_free(&labeltable); Table_free(&intervaltable); List_free(&annotlist); /* Do not free strings in labellist, since they are not allocated */ List_free(&labellist); /* chrtypelist has no dynamically allocated strings */ List_free(&chrtypelist); for (p = intervallist; p != NULL; p = List_next(p)) { interval = (Interval_T) List_head(p); Interval_free(&interval); } List_free(&intervallist); return; }