Index: trunk/src/flag_str.c =================================================================== --- trunk/src/flag_str.c (revision 18123) +++ trunk/src/flag_str.c (revision 18124) @@ -550,6 +550,17 @@ return pcb_strflg_common_f2s(flags, object_type, pcb_object_flagbits, PCB_ENTRIES(pcb_object_flagbits), intconn, compat); } +const pcb_flag_bits_t *pcb_strflg_1bit(unsigned long bit, int object_type) +{ + int i, n_flagbits = PCB_ENTRIES(pcb_object_flagbits);; + for (i = 0; i < n_flagbits; i++) { + unsigned long my_obj_typs = pcb_object_flagbits[i].object_types; + if ((my_obj_typs & object_type) && (!pcb_object_flagbits[i].omit_list) && (pcb_object_flagbits[i].mask & bit)) + return &pcb_object_flagbits[i]; + } + return NULL; +} + void pcb_strflg_map(unsigned long fbits, int object_type, void *ctx, void (*cb)(void *ctx, unsigned long flg, const pcb_flag_bits_t *fb)) { int n, i, n_flagbits = PCB_ENTRIES(pcb_object_flagbits); Index: trunk/src/flag_str.h =================================================================== --- trunk/src/flag_str.h (revision 18123) +++ trunk/src/flag_str.h (revision 18124) @@ -82,7 +82,10 @@ /* Call cb for each flag bit for a given object type */ void pcb_strflg_map(unsigned long fbits, int object_type, void *ctx, void (*cb)(void *ctx, unsigned long flg, const pcb_flag_bits_t *fb)); +/* Return flag bit info for a single bit for an object type, or NULL is not available */ +const pcb_flag_bits_t *pcb_strflg_1bit(unsigned long bit, int object_type); + /* same as above, for pcb level flags */ char *pcb_strflg_board_f2s(pcb_flag_t flags); pcb_flag_t pcb_strflg_board_s2f(const char *flagstring, int (*error) (const char *msg));