Esempio n. 1
0
cc_int32 ccs_list_add (ccs_list_t   io_list,
                       ccs_object_t in_object)
{
    cc_int32 err = ccNoError;
    cc_uint64 add_index;
    
    if (!io_list  ) { err = cci_check_error (ccErrBadParam); }
    if (!in_object) { err = cci_check_error (ccErrBadParam); }
    
    if (!err) {
        add_index = cci_array_count (io_list->objects);
        
        err = cci_array_insert (io_list->objects, in_object, add_index);
    }
    
    if (!err) {
        /* Fixup iterator indexes */
        cc_uint64 i;
        
        for (i = 0; !err && i < cci_array_count (io_list->iterators); i++) {
            ccs_list_iterator_t iterator = cci_array_object_at_index (io_list->iterators, i);
            
            err = ccs_list_iterator_update (iterator, ccs_list_action_insert, add_index);
        }        
    }    
    
    return cci_check_error (err);    
}
Esempio n. 2
0
cc_int32 ccs_iteratorref_array_insert (ccs_iteratorref_array_t     io_array,
				       ccs_generic_list_iterator_t in_iterator,
				       cc_uint64                   in_position)
{
    return cci_array_insert (io_array,
                             (cci_array_object_t) in_iterator,
                             in_position);
}
static cc_int32 ccs_list_iterator_new (ccs_list_iterator_t *out_list_iterator,
                                       ccs_list_t           io_list,
                                       ccs_pipe_t           in_client_pipe)
{
    cc_int32 err = ccNoError;
    ccs_list_iterator_t list_iterator = NULL;
    
    if (!out_list_iterator) { err = cci_check_error (ccErrBadParam); }
    if (!io_list          ) { err = cci_check_error (ccErrBadParam); }
    /* client_pipe may be NULL if the iterator exists for internal server use */
    
    if (!err) {
        list_iterator = malloc (sizeof (*list_iterator));
        if (list_iterator) { 
            *list_iterator = ccs_list_iterator_initializer;
        } else {
            err = cci_check_error (ccErrNoMem); 
        }
    }
    
    if (!err) {
        err = ccs_server_new_identifier (&list_iterator->identifier);
    }

    if (!err) {
        list_iterator->list = io_list;
        list_iterator->current = 0;
        
        err = cci_array_insert (io_list->iterators, 
                                (cci_array_object_t) list_iterator, 
				cci_array_count (io_list->iterators));
    }
    
    if (!err && ccs_pipe_valid (in_client_pipe)) {
        ccs_client_t client = NULL;
        
        err = ccs_pipe_copy (&list_iterator->client_pipe, in_client_pipe);
        
        if (!err) {
            err = ccs_server_client_for_pipe (in_client_pipe, &client);
        }
        
        if (!err) {
            err = ccs_client_add_iterator (client, list_iterator);
        }
    }

    if (!err) {
        *out_list_iterator = list_iterator;
        list_iterator = NULL;
    }
    
    ccs_list_iterator_release (list_iterator);
    
    return cci_check_error (err);    
}
Esempio n. 4
0
static cc_int32 ccs_list_iterator_new (ccs_list_iterator_t *out_list_iterator,
                                       ccs_list_t           io_list)
{
    cc_int32 err = ccNoError;
    ccs_list_iterator_t list_iterator = NULL;
    
    if (!out_list_iterator) { err = cci_check_error (ccErrBadParam); }
    if (!io_list          ) { err = cci_check_error (ccErrBadParam); }
    
    if (!err) {
        list_iterator = malloc (sizeof (*list_iterator));
        if (list_iterator) { 
            *list_iterator = ccs_list_iterator_initializer;
        } else {
            err = cci_check_error (ccErrNoMem); 
        }
    }
    
    if (!err) {
        err = ccs_server_new_identifier (&list_iterator->identifier);
    }

    if (!err) {
        list_iterator->list = io_list;
        list_iterator->current = 0;
        
        err = cci_array_insert (io_list->iterators, 
                                list_iterator, cci_array_count (io_list->iterators));
    }

    if (!err) {
        *out_list_iterator = list_iterator;
        list_iterator = NULL;
    }
    
    ccs_list_iterator_release (list_iterator);
    
    return cci_check_error (err);    
}
Esempio n. 5
0
inline cc_int32 ccs_client_array_insert (ccs_client_array_t io_array,
                                         ccs_client_t       in_client,
                                         cc_uint64          in_position)
{
    return cci_array_insert (io_array, in_client, in_position);
}
Esempio n. 6
0
cc_int32 ccs_callbackref_array_insert (ccs_callbackref_array_t io_array,
				       ccs_callback_t          in_callback,
				       cc_uint64               in_position)
{
    return cci_array_insert (io_array, (cci_array_object_t) in_callback, in_position);
}