Data Structures | |
struct | list |
Defines | |
#define | assure(EXPR) assert(EXPR) |
Functions | |
list * | list_new (void) |
Constructor. | |
list * | list_duplicate (const list *l, void *(*duplicate)(const void *)) |
Copy constructor. | |
void | list_delete_const (const list **l, void(*delete)(void **)) |
void | list_delete (list **l, void(*delete)(void **)) |
int | list_size (const list *l) |
void | list_insert (list *l, void *e) |
const void * | list_remove_const (list *l, const void *e) |
void * | list_remove (list *l, void *e) |
void | list_reverse (list *l) |
const void * | list_first_const (const list *l) |
void * | list_first (list *l) |
const void * | list_next_const (const list *l) |
void * | list_next (list *l) |
void | list_first_pair_const (const list *l, const void **e1, const void **e2) |
void | list_first_pair (list *l, void **e1, void **e2) |
void | list_next_pair_const (const list *l, const void **e1, const void **e2) |
void | list_next_pair (list *l, void **e1, void **e2) |
list * | list_extract (const list *l, void *(*duplicate)(const void *), bool(*predicate)(const void *, void *), void *data) |
Extract elements. | |
void * | list_min (list *l, list_func_lt less_than, void *data) |
void * | list_min_val (list *l, list_func_eval eval, void *data) |
void * | list_max_val (list *l, list_func_eval eval, void *data) |
const void * | list_max_const (const list *l, list_func_lt less_than, void *data) |
void * | list_max (list *l, list_func_lt less_than, void *data) |
static const void * | kth (const void *a[], int k, int n, list_func_lt less_than, void *data) |
const void * | list_kth_const (const list *l, int k, list_func_lt less_than, void *data) |
void * | list_kth (list *l, int k, list_func_lt less_than, void *data) |
static bool | val_less_than (const void *e1, const void *e2, void *data) |
const void * | list_kth_val_const (const list *l, int k, list_func_eval eval, void *data) |
void * | list_kth_val (list *l, int k, list_func_eval eval, void *data) |
double | list_median (const list *l, list_func_eval eval, void *data) |
double | list_mean (const list *l, list_func_eval eval, void *data) |
double | list_mean_optimal (const list *l, list_func_eval eval, void *data_eval, list_func_eval eval_err, void *data_err, double *err, double *red_chisq) |
static double | abs_dev (const void *e1, void *data) |
double | list_mad (list *l, list_func_eval eval, void *data) |
Variables | |
static void *(*) | list_malloc (size_t) = malloc |
static void *(*) | list_calloc (size_t, size_t) = calloc |
static void *(*) | list_realloc (void *, size_t) = realloc |
static void(*) | list_free (const void *) = (void (*)(const void *))free |
This container is polymorphic and typesafe. That is, the elements are typed, not void pointers.
A few things to be aware of:
To define a class called e.g. integer_list, put in a source file
#define LIST_DEFINE #define LIST_ELEM integer #include <list.h>
And put in the header
#define LIST_ELEM integer #include <list.h>
#define assure | ( | EXPR | ) | assert(EXPR) |
Define error handling here
Definition at line 101 of file list.c.
Referenced by _get_optional_table_value(), build_equations_lhs_matrix_from_parameters(), build_equations_lhs_matrix_from_poly(), create_bias(), create_dark(), create_phot_table(), create_screen_flat(), create_sky_flat(), create_std_cat(), extract_sex(), extract_test(), fors_angle_diff(), fors_bias(), fors_dark(), fors_dfs_add_wcs(), fors_dfs_pipeline_version(), fors_dfs_set_groups(), fors_extract(), fors_extract_method_new(), fors_fixed_pattern_noise(), fors_fixed_pattern_noise_bias(), fors_frame_get_group_string(), fors_frame_get_level_string(), fors_frame_get_type_string(), fors_frameset_extract(), fors_get_airmass(), fors_identify(), fors_identify_method_new(), fors_image_abs(), fors_image_collapse_create(), fors_image_collapse_ksigma_create(), fors_image_collapse_median_create(), fors_image_collapse_minmax_create(), fors_image_crop(), fors_image_divide(), fors_image_divide_noerr(), fors_image_divide_scalar(), fors_image_draw(), fors_image_duplicate(), fors_image_exponential(), fors_image_filter_max_create(), fors_image_filter_median_create(), fors_image_flat_fit_create(), fors_image_get_data_const(), fors_image_get_error_mean(), fors_image_get_max(), fors_image_get_mean(), fors_image_get_median(), fors_image_get_min(), fors_image_get_size_x(), fors_image_get_size_y(), fors_image_get_stdev(), fors_image_get_stdev_robust(), fors_image_load(), fors_image_load_list(), fors_image_multiply(), fors_image_multiply_noerr(), fors_image_multiply_scalar(), fors_image_new(), fors_image_save(), fors_image_save_sex(), fors_image_square(), fors_image_subtract(), fors_image_subtract_scalar(), fors_img_science(), fors_img_screen_flat(), fors_img_sky_flat(), fors_parameterlist_set_defaults(), fors_photometry(), fors_photometry_define_polyf(), fors_photometry_define_polyp(), fors_photometry_get_night_id(), fors_photometry_read_input(), fors_photometry_remove_unnecessary(), fors_point_distsq(), fors_point_duplicate(), fors_qc_write_group_heading(), fors_setting_new_level(), fors_setting_verify(), fors_stack_const(), fors_stack_method_get_string(), fors_stack_method_new(), fors_star_distsq(), fors_star_duplicate(), fors_star_ellipticity(), fors_star_equal(), fors_star_ext_corr(), fors_star_extension(), fors_star_get_x(), fors_star_get_y(), fors_star_get_zeropoint(), fors_star_get_zeropoint_err(), fors_star_is_identified(), fors_star_new(), fors_star_new_from_table(), fors_star_stellarity(), fors_utils_median_corr(), fors_zeropoint(), fors_zeropoint_astrometry(), fors_zeropoint_astrometry_apply_unidentified_xy2radec(), fors_zeropoint_astrometry_shift_wcs_origin(), get_zeropoint(), is_star(), list_duplicate(), list_extract(), list_first_const(), list_first_pair_const(), list_insert(), list_kth_const(), list_kth_val_const(), list_mad(), list_max_const(), list_max_val(), list_mean(), list_mean_optimal(), list_median(), list_min(), list_min_val(), list_next_const(), list_next_pair_const(), list_remove_const(), list_reverse(), list_size(), match_patterns(), remove_large_scale(), remove_large_scale_fit(), solve_normal(), test_bias(), test_dark(), test_identify(), test_img_science(), test_img_screen_flat(), test_img_sky_flat(), test_photometry(), test_recipe_output(), test_stack(), test_zeropoint(), and write_qc().
list* list_new | ( | void | ) |
Constructor.
Definition at line 108 of file list.c.
References list_malloc.
Referenced by list_extract().
Copy constructor.
l | list to duplicate | |
duplicate | element copy constructor, or NULL for no deep copy |
Definition at line 126 of file list.c.
References assure, list::back, list::current, list::current_p1, list::current_p2, list::elements, list_malloc, and list::size.
list* list_extract | ( | const list * | l, | |
void *(*)(const void *) | duplicate, | |||
bool(*)(const void *, void *) | predicate, | |||
void * | data | |||
) |
Extract elements.
l | list | |
duplicate | element copy constructor | |
predicate | function returning true iff the element (given as the 1st) argument must be extracted. | |
data | Auxillary data sent to the selection function. May be NULL. |
Definition at line 507 of file list.c.
References assure, list::elements, list_insert(), list_new(), and list::size.
void*(*) list_malloc(size_t) = malloc [static] |
Define memory handling here
Definition at line 92 of file list.c.
Referenced by list_duplicate(), list_kth_const(), and list_new().