Ejemplo n.º 1
0
cc_int32 ccs_list_new (ccs_list_t                      *out_list,
                       cc_int32                         in_object_not_found_err,
                       cc_int32                         in_iterator_not_found_err,
                       ccs_object_compare_identifier_t  in_object_compare_identifier,
                       ccs_object_release_t             in_object_release)
{
    cc_int32 err = ccNoError;
    ccs_list_t list = NULL;
    
    if (!out_list) { err = cci_check_error (ccErrBadParam); }
    
    if (!err) {
        list = malloc (sizeof (*list));
        if (list) { 
            *list = ccs_list_initializer;
            list->object_not_found_err = in_object_not_found_err;
            list->iterator_not_found_err = in_iterator_not_found_err;
            list->object_compare_identifier = in_object_compare_identifier;
        } else {
            err = cci_check_error (ccErrNoMem); 
        }
    }
    
    if (!err) {
        err = cci_array_new (&list->objects, in_object_release);
    }
    
    if (!err) {
        err = cci_array_new (&list->iterators, ccs_list_iterator_object_release);
    }
    
    if (!err) {
        *out_list = list;
        list = NULL;
    }
    
    ccs_list_release (list);
    
    return cci_check_error (err);    
}
Ejemplo n.º 2
0
cc_int32 ccs_lock_array_new (ccs_lock_array_t *out_array)
{
    return cci_array_new (out_array, ccs_lock_object_release);
}
Ejemplo n.º 3
0
inline cc_int32 ccs_client_array_new (ccs_client_array_t *out_array)
{
    return cci_array_new (out_array, ccs_client_object_release);
}
Ejemplo n.º 4
0
cc_int32 ccs_iteratorref_array_new (ccs_iteratorref_array_t *out_array)
{
    /* Ref arrays do not own their contents; pass NULL for release function */
    return cci_array_new (out_array, NULL);
}