struct Interactive_Style{ u32 bar_color; u32 bar_active_color; u32 base_color; u32 pop1_color; u32 pop2_color; }; struct Style_Main_Data{ u32 back_color; u32 margin_color; u32 margin_hover_color; u32 margin_active_color; u32 cursor_color; u32 at_cursor_color; u32 highlight_color; u32 at_highlight_color; u32 mark_color; u32 default_color; u32 comment_color; u32 keyword_color; u32 str_constant_color; u32 char_constant_color; u32 int_constant_color; u32 float_constant_color; u32 bool_constant_color; u32 preproc_color; u32 include_color; u32 special_character_color; u32 highlight_junk_color; u32 highlight_white_color; u32 paste_color; u32 undo_color; u32 next_undo_color; Interactive_Style file_info_style; }; inline u32* style_index_by_tag(Style_Main_Data *s, u32 tag){ u32 *result = 0; switch (tag){ case Stag_Bar: result = &s->file_info_style.bar_color; break; case Stag_Bar_Active: result = &s->file_info_style.bar_active_color; break; case Stag_Base: result = &s->file_info_style.base_color; break; case Stag_Pop1: result = &s->file_info_style.pop1_color; break; case Stag_Pop2: result = &s->file_info_style.pop2_color; break; case Stag_Back: result = &s->back_color; break; case Stag_Margin: result = &s->margin_color; break; case Stag_Margin_Hover: result = &s->margin_hover_color; break; case Stag_Margin_Active: result = &s->margin_active_color; break; case Stag_Cursor: result = &s->cursor_color; break; case Stag_At_Cursor: result = &s->at_cursor_color; break; case Stag_Highlight: result = &s->highlight_color; break; case Stag_At_Highlight: result = &s->at_highlight_color; break; case Stag_Mark: result = &s->mark_color; break; case Stag_Default: result = &s->default_color; break; case Stag_Comment: result = &s->comment_color; break; case Stag_Keyword: result = &s->keyword_color; break; case Stag_Str_Constant: result = &s->str_constant_color; break; case Stag_Char_Constant: result = &s->char_constant_color; break; case Stag_Int_Constant: result = &s->int_constant_color; break; case Stag_Float_Constant: result = &s->float_constant_color; break; case Stag_Bool_Constant: result = &s->bool_constant_color; break; case Stag_Preproc: result = &s->preproc_color; break; case Stag_Include: result = &s->include_color; break; case Stag_Special_Character: result = &s->special_character_color; break; case Stag_Highlight_Junk: result = &s->highlight_junk_color; break; case Stag_Highlight_White: result = &s->highlight_white_color; break; case Stag_Paste: result = &s->paste_color; break; case Stag_Undo: result = &s->undo_color; break; case Stag_Next_Undo: result = &s->next_undo_color; break; } return(result); }