//sumatrapdf code int extractText(miniexp_t item, Arraylist list, fz_bbox * target) { miniexp_t type = miniexp_car(item); if (!miniexp_symbolp(type)) return 0; item = miniexp_cdr(item); if (!miniexp_numberp(miniexp_car(item))) return 0; int x0 = miniexp_to_int(miniexp_car(item)); item = miniexp_cdr(item); if (!miniexp_numberp(miniexp_car(item))) return 0; int y0 = miniexp_to_int(miniexp_car(item)); item = miniexp_cdr(item); if (!miniexp_numberp(miniexp_car(item))) return 0; int x1 = miniexp_to_int(miniexp_car(item)); item = miniexp_cdr(item); if (!miniexp_numberp(miniexp_car(item))) return 0; int y1 = miniexp_to_int(miniexp_car(item)); item = miniexp_cdr(item); //RectI rect = RectI::FromXY(x0, y0, x1, y1); fz_bbox rect = {x0 , y0 , x1 , y1}; miniexp_t str = miniexp_car(item); if (miniexp_stringp(str) && !miniexp_cdr(item)) { fz_bbox inters = fz_intersect_bbox(rect, *target); //LOGI("Start text extraction: rectangle=[%d,%d,%d,%d] %s", rect.x0, rect.y0, rect.x1, rect.y1, content); if (!fz_is_empty_bbox(inters)) { const char *content = miniexp_to_str(str); while (*content) { arraylist_add(list, *content++); } // if (value) { // size_t len = str::Len(value); // // TODO: split the rectangle into individual parts per glyph // for (size_t i = 0; i < len; i++) // coords.Append(RectI(rect.x, rect.y, rect.dx, rect.dy)); // extracted.AppendAndFree(value); // } if (miniexp_symbol("word") == type) { arraylist_add(list, ' '); //coords.Append(RectI(rect.x + rect.dx, rect.y, 2, rect.dy)); } else if (miniexp_symbol("char") != type) { arraylist_add(list, '\n'); // extracted.Append(lineSep); // for (size_t i = 0; i < str::Len(lineSep); i++) // coords.Append(RectI()); } } item = miniexp_cdr(item); } while (miniexp_consp(str)) { extractText(str, list, target); item = miniexp_cdr(item); str = miniexp_car(item); } return !item; }
void match(int token){ if(token==lookahead){ if(lookahead==GOES){ //printf(" %s", val); arraylist_add(stringArray,val); arraylist_add(intArray,lookahead); } lookahead=yylex(); } else {printf("error1");} //printf(" %s ", val);} }
void productionBody(){ if(lookahead==NT||lookahead==T||lookahead==EOLN){ if(lookahead==EOLN){ //strcpy(list[count],"epsilon"); count++; //printf(" epsil"); arraylist_add(stringArray,"Epsilon"); arraylist_add(intArray,7); } rule(); productionRule(); } else printf("\nPB"); }
void production(){ //printf("hello"); //val=yytext(); //printf(" %s", val); arraylist_add(stringArray,val); arraylist_add(intArray,lookahead); //strcpy(list[count],str); match(NT); match(GOES); productionBody(); match(SEMI); //printf("\n"); match(EOLN); }
int file_open(char *path) { // Check if file exists int file_num; int inumber = path_to_inumber(path); printf("path_to_inumber returned %d\n", inumber); if ( inumber <= 0 ) return ERR_FILE_EXISTS; // Check if file or dir inode *in = get_inode(inumber); printf("get_inode returned %p\n", in); if ( in->directory_flag ) return ERR_FILE_NOT_FOUND; // make file_info and add to open_files arraylist file_info *new_file = (file_info *) malloc(sizeof(file_info)); strcpy(new_file->filepath, path); new_file->inumber = inumber; new_file->cursor = 0; file_num = arraylist_add(new_file,open_files); return file_num; }
void setRooms(Map *m) { for (int i=0; i<MAP_SIZE(*m); i++) { if (m->map[i] == ROOM) { int *p = (int*)malloc(sizeof(int)); *p = i; arraylist_add(m->rooms, (void*)p); } } }
void productionRule(){ if(lookahead==OR){ //printf(" %s", val); arraylist_add(stringArray,val); arraylist_add(intArray,lookahead); //strcpy(list[count],str); match(OR); if(lookahead==EOLN){ //printf(" ep"); arraylist_add(stringArray,"Epsilon"); arraylist_add(intArray,7); //strcpy(list[count],"epsilon"); } rule(); productionRule(); } else if(lookahead==SEMI){ arraylist_add(finalString, stringArray); arraylist_add(finalInt,intArray); counter++; stringArray = arraylist_create(objEquals); intArray = arraylist_create(objEquals); return;} else if(lookahead==EOLN) { return;} else printf("\nPR"); }
//////////////////////////// //////Gets all the terminal values and epsilon ///////////////////////// void passOne(){ int r,c;//=arraylist_size(arraylist_get(finalString,0)); int i,j; //counters int set=1; //printf("\nTHIS IS THE SIZE %d\n", s); r=arraylist_size(finalString);//r is row for (i=0;i<r;i++){ c=arraylist_size(arraylist_get(finalString,i)); for(j=0;j<c;j++){ char *str=arraylist_get(arraylist_get(finalString,i),j); int *num=arraylist_get(arraylist_get(finalInt,i),j); //printf("%s",str); if (arraylist_get(arraylist_get(finalInt,i),(j+1))==GOES){ arraylist_add(p1Str,val); arraylist_add(p1Int,lookahead); arraylist_add(p1Str,":"); arraylist_add(p1Int,8); //8 Is for : printf("\n%s: ",str); set=1; } else if(num==OR){ printf("");set=1; } else if(set && num==GOES){ printf(""); } else if(set && num==NT){ printf(""); set=0; } else if(set && num==7){ arraylist_add(p1Str,val); arraylist_add(p1Int,lookahead); printf("Epsilon "); set=0; } else if(set && num==T){ arraylist_add(p1Str,val); arraylist_add(p1Int,lookahead); printf("%s ",str); set=0; } else{ //printf("Inside ELSE value is %s --", str); } } } }
void rule(){ if(lookahead==NT){ //printf(" %s", val); arraylist_add(stringArray,val); arraylist_add(intArray,lookahead); //strcpy(list[count],str); match(NT); rule(); } if(lookahead==T){ //printf("\n%s", val); arraylist_add(stringArray,val); arraylist_add(intArray,lookahead); //strcpy(list[count],str); match(T); rule(); } if(lookahead==EOLN){ match(EOLN); } //not sure here else return; }
struct t_gui_completion_word * gui_completion_partial_list_add (struct t_gui_completion *completion, const char *word, int count) { struct t_gui_completion_word *new_completion_word; new_completion_word = malloc (sizeof (*new_completion_word)); if (new_completion_word) { new_completion_word->word = strdup (word); new_completion_word->nick_completion = 0; new_completion_word->count = count; arraylist_add (completion->partial_list, new_completion_word); } return new_completion_word; }
ArrayList* simple_string_split(const char* self, const char* regex) { ArrayList* values = arraylist_new(-1); char* buffer = strdup(self); char* buf = buffer; char* ptr = NULL; char* sub = NULL; while ((sub = strtok_r(buf, regex, &ptr)) != NULL) { char* value = malloc(sizeof(strlen(sub) + 1)); bzero(value, strlen(sub) + 1); memcpy(value, sub, strlen(sub)); arraylist_add(values, value); buf = NULL; } free(buffer); return values; }
int main(int argc, char **argv) { hash_t = hashtable_create(); array_a = arraylist_create(); hashtable_set(hash_t, "application name", "Test Application"); arraylist_add(array_a, "abcd"); LOG.debug = 1; //LOG.error_log_path = "error.log"; log_init(); log_debug("Starting server now...\n"); config_init(); parse_conf(); read_logfile("./test.log"); hashtable_destroy(hash_t); arraylist_destroy(array_a); return 0; }
JNIEXPORT jstring JNICALL Java_universe_constellation_orion_viewer_djvu_DjvuDocument_getText(JNIEnv *env, jobject thiz, int pageNumber, int startX, int startY, int width, int height) { LOGI("==================Start Text Extraction=============="); miniexp_t pagetext; while ((pagetext=ddjvu_document_get_pagetext(doc,pageNumber,0))==miniexp_dummy) { //handle_ddjvu_messages(ctx, TRUE); } if (miniexp_nil == pagetext) { return NULL; } // ddjvu_status_t status; ddjvu_pageinfo_t info; while ((status = ddjvu_document_get_pageinfo(doc, pageNumber, &info)) < DDJVU_JOB_OK) { //nothing } LOGI("Extraction rectangle=[%d,%d,%d,%d]", startX, startY, width, height); Arraylist values = arraylist_create(); int w = info.width; int h = info.height; fz_bbox target = {startX, h - startY - height, startX + width, h - startY}; LOGI("Extraction irectangle=[%d,%d,%d,%d]", target.x0, target.y0, target.x1, target.y1); extractText(pagetext, values, &target); arraylist_add(values, 0); LOGI("Data: %s", arraylist_getData(values)); jstring result = (*env)->NewStringUTF(env, arraylist_getData(values)); arraylist_free(values); return result; }
// Add a new element to the end of the list int arraylist_push(arraylist_t *a, void *d, unsigned int l) { fprintf(stderr, "Adding at %d\n", a->count); return arraylist_add(a, d, l, a->count); }
int main(int argc, char *argv[]) { #if 0 intptr_t list = 0; data_t data[8]; int i = 0; intptr_t iter = 0; for (i = 0; i < ARRAY_COUNT(data); ++i) { data[i].__x__ = i; list_add(&list, &data[i].__node__); } assert(0 == list_rm(&list, 0)); assert(0 == list_rm(&list, 7)); iter = list; while (0 != iter) { data_t *data = CONTAINER_OF((intptr_t *)iter, data_t, __node__); (void)fprintf(stderr, "%d\n", data->__x__); iter = *(intptr_t *)iter; } return 0; #endif #if 0 intptr_t head = 0; intptr_t node = 0; (void)fprintf(stderr, "&head: %p, &node: %p\n", &head, &node); list_add(&head, &node); (void)fprintf(stderr, "head: %x, node: %x\n", head, node); list_remove(&head); (void)fprintf(stderr, "head: %x, node: %x\n", head, node); return 0; #endif #if 0 intptr_t i = 0; data_t data[8]; print_data((data_t){9, 0, {0, 0}}); memset(data, 0, SIZE_OF(data)); arraylist_add(&data[0].__node__, &data[2].__node__, 2); arraylist_add(&data[2].__node__, &data[3].__node__, 3); arraylist_add(&data[3].__node__, &data[7].__node__, 7); arraylist_del(&data[0].__node__, &data[2].__node__); for (i = 0; i < (intptr_t)ARRAY_COUNT(data); ++i) { (void)fprintf(stderr, "data[%d] : %d\n", i, data[i].__node__); } memset(data, 0, SIZE_OF(data)); arraydlist_add(&data[0].__dnode__, &data[0].__dnode__, &data[0].__dnode__, 0); arraydlist_add(&data[0].__dnode__, &data[0].__dnode__, &data[2].__dnode__, 2); arraydlist_add(&data[0].__dnode__, &data[2].__dnode__, &data[3].__dnode__, 3); arraydlist_add(&data[3].__dnode__, &data[2].__dnode__, &data[7].__dnode__, 7); /* that's NOT right, broke the dlist arraydlist_add(&data[2].__dnode__, &data[3].__dnode__, &data[7].__dnode__, 7);*/ /*arraydlist_del(&data[3].__dnode__, &data[2].__dnode__, &data[7].__dnode__);*/ for (i = 0; i < (intptr_t)ARRAY_COUNT(data); ++i) { (void)fprintf(stderr, "data[%d] : (%d, %d)\n", i, data[i].__dnode__.__prev__, data[i].__dnode__.__next__); } return 0; #endif #if 1 typedef struct { intptr_t a; intptr_t b; } mydata_t; dlist_t dlist; mydata_t x1 = {1, 2}; mydata_t x2 = {3, 4}; mydata_t x3 = {5, 6}; (void)init_dlist(&dlist, SIZE_OF(mydata_t)); dlist_insert(&dlist, &x2); dlist_insert(&dlist, &x3); dlist_insert(&dlist, &x1); for (intptr_t iter = dlist.__head__->__next__; iter != 0; iter = dlist_next(&dlist, iter)) { // mydata_t *d = CONTAINER_OF(iter, mydata_t, __dnode__); intptr_t shell_size = dlist.__obj_size__ + SIZE_OF(arraydlist_t); mydata_t *d = (mydata_t *)(dlist.__cache__ + shell_size * iter); fprintf(stderr, "%d, %d\n", d->a, d->b); } exit_dlist(&dlist); return 0; #endif }
/* * adds a copy of the item pointed to by itemPtr to the end of list * constant time average */ void arraylist_addEnd(arraylist *list, void* itemPtr){ arraylist_add(list,list->size,itemPtr); }
void test_arraylist (int initial_size, int sorted, int allow_duplicates) { struct t_arraylist *arraylist; int i, index, index_insert; void *pointer; const char *item_aaa = "aaa"; const char *item_abc = "abc"; const char *item_DEF = "DEF"; const char *item_Def = "Def"; const char *item_def = "def"; const char *item_xxx = "xxx"; const char *item_zzz = "zzz"; /* create arraylist */ arraylist = arraylist_new (initial_size, sorted, allow_duplicates, &test_cmp_cb, NULL, NULL, NULL); /* check values after creation */ CHECK(arraylist); LONGS_EQUAL(0, arraylist->size); LONGS_EQUAL(initial_size, arraylist->size_alloc); LONGS_EQUAL(initial_size, arraylist->size_alloc_min); if (initial_size > 0) { CHECK(arraylist->data); for (i = 0; i < initial_size; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { POINTERS_EQUAL(NULL, arraylist->data); } LONGS_EQUAL(sorted, arraylist->sorted); LONGS_EQUAL(allow_duplicates, arraylist->allow_duplicates); /* check size */ LONGS_EQUAL(0, arraylist_size (arraylist)); /* get element (this should always fail, the list is empty!) */ POINTERS_EQUAL(NULL, arraylist_get (NULL, -1)); POINTERS_EQUAL(NULL, arraylist_get (NULL, 0)); POINTERS_EQUAL(NULL, arraylist_get (NULL, 1)); POINTERS_EQUAL(NULL, arraylist_get (arraylist, -1)); POINTERS_EQUAL(NULL, arraylist_get (arraylist, 0)); POINTERS_EQUAL(NULL, arraylist_get (arraylist, 1)); /* search element (this should always fail, the list is empty!) */ POINTERS_EQUAL(NULL, arraylist_search (NULL, NULL, NULL, NULL)); POINTERS_EQUAL(NULL, arraylist_search (arraylist, NULL, NULL, NULL)); POINTERS_EQUAL(NULL, arraylist_search (NULL, (void *)item_abc, NULL, NULL)); POINTERS_EQUAL(NULL, arraylist_search (arraylist, (void *)item_abc, NULL, NULL)); /* invalid add of element */ LONGS_EQUAL(-1, arraylist_add (NULL, NULL)); /* add some elements */ if (sorted) { TEST_ARRAYLIST_ADD(0, item_zzz); TEST_ARRAYLIST_ADD(0, item_xxx); TEST_ARRAYLIST_ADD(0, NULL); TEST_ARRAYLIST_ADD(1, item_DEF); TEST_ARRAYLIST_ADD((allow_duplicates) ? 2 : 1, item_def); TEST_ARRAYLIST_ADD((allow_duplicates) ? 3 : 1, item_Def); TEST_ARRAYLIST_ADD(1, item_abc); } else { TEST_ARRAYLIST_ADD(0, item_zzz); TEST_ARRAYLIST_ADD(1, item_xxx); TEST_ARRAYLIST_ADD(2, NULL); TEST_ARRAYLIST_ADD(3, item_DEF); TEST_ARRAYLIST_ADD((allow_duplicates) ? 4 : 3, item_def); TEST_ARRAYLIST_ADD((allow_duplicates) ? 5 : 3, item_Def); TEST_ARRAYLIST_ADD((allow_duplicates) ? 6 : 4, item_abc); } /* * arraylist is now: * sorted: * dup : [NULL, "abc", "DEF", "def", "Def", "xxx", "zzz"] + 2 NULL * no dup: [NULL, "abc", "Def", "xxx", "zzz"] + 1 NULL * not sorted: * dup : ["zzz", "xxx", NULL, "DEF", "def", "Def", "abc"] + 2 NULL * no dup: ["zzz", "xxx", NULL, "Def", "abc"] + 1 NULL */ /* check size after adds */ LONGS_EQUAL((allow_duplicates) ? 7 : 5, arraylist->size); LONGS_EQUAL((allow_duplicates) ? 7 : 5, arraylist_size (arraylist)); LONGS_EQUAL((allow_duplicates) ? 9 : 6, arraylist->size_alloc); /* check content after adds */ if (sorted) { if (allow_duplicates) { POINTERS_EQUAL(NULL, arraylist->data[0]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_DEF, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_def, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[4]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[5]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[6]); for (i = 7; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { POINTERS_EQUAL(NULL, arraylist->data[0]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[4]); for (i = 5; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } else { if (allow_duplicates) { STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[1]); POINTERS_EQUAL(NULL, arraylist->data[2]); STRCMP_EQUAL(item_DEF, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_def, (const char *)arraylist->data[4]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[5]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[6]); for (i = 7; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[1]); POINTERS_EQUAL(NULL, arraylist->data[2]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[4]); for (i = 5; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } /* search elements */ if (sorted) { if (allow_duplicates) { TEST_ARRAYLIST_SEARCH(NULL, 0, 1, NULL); TEST_ARRAYLIST_SEARCH(item_abc, 1, 2, item_abc); TEST_ARRAYLIST_SEARCH(item_DEF, 2, 5, item_DEF); TEST_ARRAYLIST_SEARCH(item_DEF, 2, 5, item_def); TEST_ARRAYLIST_SEARCH(item_DEF, 2, 5, item_Def); TEST_ARRAYLIST_SEARCH(item_xxx, 5, 6, item_xxx); TEST_ARRAYLIST_SEARCH(item_zzz, 6, 7, item_zzz); } else { TEST_ARRAYLIST_SEARCH(NULL, 0, 1, NULL); TEST_ARRAYLIST_SEARCH(item_abc, 1, 2, item_abc); TEST_ARRAYLIST_SEARCH(item_Def, 2, 3, item_DEF); TEST_ARRAYLIST_SEARCH(item_Def, 2, 3, item_def); TEST_ARRAYLIST_SEARCH(item_Def, 2, 3, item_Def); TEST_ARRAYLIST_SEARCH(item_xxx, 3, 4, item_xxx); TEST_ARRAYLIST_SEARCH(item_zzz, 4, 5, item_zzz); } /* search non-existing element */ TEST_ARRAYLIST_SEARCH(NULL, -1, 1, item_aaa); } else { if (allow_duplicates) { TEST_ARRAYLIST_SEARCH(item_zzz, 0, -1, item_zzz); TEST_ARRAYLIST_SEARCH(item_xxx, 1, -1, item_xxx); TEST_ARRAYLIST_SEARCH(NULL, 2, -1, NULL); TEST_ARRAYLIST_SEARCH(item_DEF, 3, -1, item_DEF); TEST_ARRAYLIST_SEARCH(item_DEF, 3, -1, item_def); TEST_ARRAYLIST_SEARCH(item_DEF, 3, -1, item_Def); TEST_ARRAYLIST_SEARCH(item_abc, 6, -1, item_abc); } else { TEST_ARRAYLIST_SEARCH(item_zzz, 0, -1, item_zzz); TEST_ARRAYLIST_SEARCH(item_xxx, 1, -1, item_xxx); TEST_ARRAYLIST_SEARCH(NULL, 2, -1, NULL); TEST_ARRAYLIST_SEARCH(item_Def, 3, -1, item_DEF); TEST_ARRAYLIST_SEARCH(item_Def, 3, -1, item_def); TEST_ARRAYLIST_SEARCH(item_Def, 3, -1, item_Def); TEST_ARRAYLIST_SEARCH(item_abc, 4, -1, item_abc); } /* search non-existing element */ TEST_ARRAYLIST_SEARCH(NULL, -1, -1, item_aaa); } /* invalid remove of elements */ LONGS_EQUAL(-1, arraylist_remove (NULL, -1)); LONGS_EQUAL(-1, arraylist_remove (arraylist, -1)); LONGS_EQUAL(-1, arraylist_remove (NULL, 0)); /* remove the 3 first elements and check size after each remove */ LONGS_EQUAL(0, arraylist_remove (arraylist, 0)); LONGS_EQUAL((allow_duplicates) ? 6 : 4, arraylist->size); LONGS_EQUAL((allow_duplicates) ? 6 : 4, arraylist_size (arraylist)); LONGS_EQUAL((allow_duplicates) ? 9 : 6, arraylist->size_alloc); LONGS_EQUAL(0, arraylist_remove (arraylist, 0)); LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist->size); LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist_size (arraylist)); LONGS_EQUAL((allow_duplicates) ? 9 : 6, arraylist->size_alloc); LONGS_EQUAL(0, arraylist_remove (arraylist, 0)); LONGS_EQUAL((allow_duplicates) ? 4 : 2, arraylist->size); LONGS_EQUAL((allow_duplicates) ? 4 : 2, arraylist_size (arraylist)); LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist->size_alloc); /* * arraylist is now: * sorted: * dup : ["def", "Def", "xxx", "zzz"] + 1 NULL * no dup: ["xxx", "zzz"] + 1 NULL * not sorted: * dup : ["DEF", "def", "Def", "abc"] + 1 NULL * no dup: ["Def", "abc"] + 1 NULL */ /* check content after the 3 deletions */ if (sorted) { if (allow_duplicates) { STRCMP_EQUAL(item_def, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[3]); for (i = 4; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[1]); for (i = 2; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } else { if (allow_duplicates) { STRCMP_EQUAL(item_DEF, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_def, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[3]); for (i = 4; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { STRCMP_EQUAL(item_Def, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[1]); for (i = 2; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } /* invalid insert of element */ LONGS_EQUAL(-1, arraylist_insert (NULL, 0, NULL)); /* insert of one element */ LONGS_EQUAL(0, arraylist_insert (arraylist, 0, (void *)item_aaa)); /* * arraylist is now: * sorted: * dup : ["aaa", "def", "Def", "xxx", "zzz"] * no dup: ["aaa", "xxx", "zzz"] * not sorted: * dup : ["aaa", "DEF", "def", "Def", "abc"] * no dup: ["aaa", "Def", "abc"] */ /* check size after insert */ LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist->size); LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist_size (arraylist)); LONGS_EQUAL((allow_duplicates) ? 5 : 3, arraylist->size_alloc); /* check content after the insert */ if (sorted) { if (allow_duplicates) { STRCMP_EQUAL(item_aaa, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_def, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[4]); for (i = 5; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { STRCMP_EQUAL(item_aaa, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_xxx, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_zzz, (const char *)arraylist->data[2]); for (i = 3; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } else { if (allow_duplicates) { STRCMP_EQUAL(item_aaa, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_DEF, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_def, (const char *)arraylist->data[2]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[3]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[4]); for (i = 5; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { STRCMP_EQUAL(item_aaa, (const char *)arraylist->data[0]); STRCMP_EQUAL(item_Def, (const char *)arraylist->data[1]); STRCMP_EQUAL(item_abc, (const char *)arraylist->data[2]); for (i = 3; i < arraylist->size_alloc; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } } /* clear arraylist */ LONGS_EQUAL(0, arraylist_clear (NULL)); LONGS_EQUAL(1, arraylist_clear (arraylist)); /* check size and data after clear */ LONGS_EQUAL(0, arraylist->size); LONGS_EQUAL(0, arraylist_size (arraylist)); LONGS_EQUAL(initial_size, arraylist->size_alloc); if (initial_size > 0) { CHECK(arraylist->data); for (i = 0; i < initial_size; i++) { POINTERS_EQUAL(NULL, arraylist->data[i]); } } else { POINTERS_EQUAL(NULL, arraylist->data); } /* free arraylist */ arraylist_free (arraylist); }