예제 #1
0
cc_int32 ccs_list_iterator_release (ccs_list_iterator_t io_list_iterator)
{
    cc_int32 err = ccNoError;
    
    if (!err && io_list_iterator) {
        cc_uint64 i = 0;
        
        if (ccs_list_find_iterator_index (io_list_iterator->list, 
                                          io_list_iterator->identifier, 
                                          &i) == ccNoError) {
            /* cci_array_remove will call ccs_list_iterator_object_release */
            err = cci_array_remove (io_list_iterator->list->iterators, i);
        } else {
            cci_debug_printf ("Warning: iterator not in iterator list!");
        }
    }
    
    return err;        
}
예제 #2
0
cc_int32 ccs_list_find_iterator (ccs_list_t           in_list,
                                 cci_identifier_t     in_identifier,
                                 ccs_list_iterator_t *out_list_iterator)
{
    cc_int32 err = ccNoError;
    cc_uint64 i;
    
    if (!in_list          ) { err = cci_check_error (ccErrBadParam); }
    if (!in_identifier    ) { err = cci_check_error (ccErrBadParam); }
    if (!out_list_iterator) { err = cci_check_error (ccErrBadParam); }
    
    if (!err) {
        err = ccs_list_find_iterator_index (in_list, in_identifier, &i);
    }
    
    if (!err) {
        *out_list_iterator = cci_array_object_at_index (in_list->iterators, i);
    }
    
    return cci_check_error (err);    
}