/*!
 * Build in initial \c linked_list_chunk and then do various list modifications.
 * Everything is destroyed in the end.
 */
int main ( void ) {
    chunk ch ;
    linked_list_chunk llc = linked_list_chunk_create () ;
    assert ( linked_list_chunk_is_empty ( llc ) ) ;

    test_llc_ch ( llc , value_error_create ( 0 ) ) ;
    test_llc_ch ( llc , value_error_create ( 1 ) ) ;
    test_llc_ch ( llc , value_error_create ( 2 ) ) ;
    test_llc_ch ( llc , value_error_create ( 3 ) ) ;
    test_llc_ch ( llc , value_error_create ( 4 ) ) ;
    test_llc_ch ( llc , value_error_create ( 5 ) ) ;

    linked_list_chunk llc_2 = linked_list_chunk_copy ( llc ) ;
    linked_list_chunk_destroy ( llc );
    puts ( " copy" ) ;
    linked_list_chunk_print ( llc_2 , stdout ) ;
    linked_list_chunk llc_3 = linked_list_chunk_copy ( llc_2 ) ;

    while ( ! linked_list_chunk_is_empty ( llc_2 ) ) {
        chunk ch = linked_list_chunk_pop_front ( llc_2 ) ;
        fprintf ( stdout , "*** removing from front : \"" ) ;
        chunk_print ( ch , stdout ) ;
        fprintf ( stdout , "\" :\n" ) ;
        linked_list_chunk_print ( llc_2 , stdout ) ;
        chunk_destroy ( ch ) ;
    }
    linked_list_chunk_destroy ( llc_2 );
    fprintf ( stdout , "*** Adding a copy of 3 first elements: \n" ) ;
    linked_list_chunk_add_self_copy_front ( llc_3 , 3 ) ;
    linked_list_chunk_print ( llc_3 , stdout ) ;

    linked_list_chunk_destroy ( llc_3 );

    return 0 ;
}
 */linked_list_chunk linked_list_chunk_copy ( linked_list_chunk llc )  {
    linked_list_chunk llc2 = linked_list_chunk_create();
    inner_linked_chunk* buff = llc->first;
    while(buff != NULL) {
        linked_list_chunk_add_back(llc2 , chunk_copy(buff->value));
        buff = buff->suivant;
    }
    return llc2;
}