void stringlist_insert_stringlist_copy(stringlist_type * stringlist, const stringlist_type * src, int pos) { int size_old = stringlist_get_size(stringlist); /** Cannot use assert_index here. */ if(pos < 0 || pos > size_old) util_abort("%s: Position %d is out of bounds. Min: 0 Max: %d\n", pos, size_old); { stringlist_type * start = stringlist_alloc_new(); stringlist_type * end = stringlist_alloc_new(); stringlist_type * newList = stringlist_alloc_new(); int i; for( i=0; i<pos; i++) stringlist_append_ref(start, stringlist_iget(stringlist, i)); for( i=pos; i<size_old; i++) stringlist_append_ref(end , stringlist_iget(stringlist, i)); stringlist_append_stringlist_copy(newList, start); stringlist_append_stringlist_copy(newList, src ); stringlist_append_stringlist_copy(newList, end ); stringlist_clear(stringlist); stringlist_append_stringlist_copy(stringlist, newList); stringlist_free(newList); stringlist_free(start); stringlist_free(end); } }
stringlist_type * config_content_item_alloc_stringlist(const config_content_item_type * item, bool copy) { const config_content_node_type * node = config_content_item_get_last_node( item ); stringlist_type * stringlist = stringlist_alloc_new(); const stringlist_type * src_list = config_content_node_get_stringlist( node ); if (copy) stringlist_append_stringlist_copy( stringlist , src_list ); else stringlist_append_stringlist_ref( stringlist , src_list ); return stringlist; }
stringlist_type * config_content_item_alloc_complete_stringlist(const config_content_item_type * item, bool copy) { int inode; stringlist_type * stringlist = stringlist_alloc_new(); for (inode = 0; inode < vector_get_size( item->nodes ); inode++) { const config_content_node_type * node = config_content_item_iget_node(item , inode); const stringlist_type * src_list = config_content_node_get_stringlist( node ); if (copy) stringlist_append_stringlist_copy( stringlist , src_list ); else stringlist_append_stringlist_ref( stringlist , src_list ); } return stringlist; }