Dal by se nějak zkrátit tento zápis?
http://paste.ofcode.org/MH236TZH9gRSDWYKkVnyVn
Je to v podstatě se třikrát opakuje jedno a to samé ale pokaždé pro jiného člena:
if (col==HCol) {
switch(attribute){
case min_fc:
w->color_files[file_no].color_sets[color_set].H.min=atoi(colTok);
break;
case max_fc:
w->color_files[file_no].color_sets[color_set].H.max=atoi(colTok);
break;
case avg_fc:
w->color_files[file_no].color_sets[color_set].H.max=atof(colTok);
break;
case fuzz_fc:
w->color_files[file_no].color_sets[color_set].H.fuzz=atof(colTok);
break;
case no_attr_fc:
printf("Color file: no attribute present for H.\n");
break;
}
}
typedef enum {
min_fc,
max_fc,
avg_fc,
fuzz_fc,
no_attr_fc
} COLORFILE_ATTR_t;
typedef struct COLORS_CF_ {
uint16_t class;
uint16_t group;
uint16_t color;
uint16_t attr;
ATTRIBUTES_t H;
ATTRIBUTES_t S;
ATTRIBUTES_t V;
} COLORS_CF_t;
typedef struct COLOR_FILE_
{
COLORS_CF_t * color_sets;
}
Existuje něco jako řešení pomocí pointeru? Nastavit pointer na člena a pak použít na to pointer? Jestli to jde jak ukažte jak.