Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 8647) +++ trunk/src/layer_grp.c (revision 8648) @@ -54,6 +54,13 @@ inhibit_notify--; } +pcb_layergrp_id_t pcb_layergrp_id(pcb_board_t *pcb, pcb_layer_group_t *grp) +{ + if ((grp >= &pcb->LayerGroups.grp[0]) && (grp < &pcb->LayerGroups.grp[pcb->LayerGroups.len])) + return grp - &pcb->LayerGroups.grp[0]; + return -1; +} + pcb_layergrp_id_t pcb_layer_get_group_(pcb_layer_t *Layer) { return Layer->grp; Index: trunk/src/layer_grp.h =================================================================== --- trunk/src/layer_grp.h (revision 8647) +++ trunk/src/layer_grp.h (revision 8648) @@ -61,6 +61,10 @@ /* Return the layer group for an id, or NULL on error (range check) */ pcb_layer_group_t *pcb_get_layergrp(pcb_board_t *pcb, pcb_layergrp_id_t gid); +/* Return the gid if grp is in the stackup of pcb (else return -1) */ +pcb_layergrp_id_t pcb_layergrp_id(pcb_board_t *pcb, pcb_layer_group_t *grp); + + /* lookup the group to which a layer belongs to returns -1 if no group is found */ pcb_layergrp_id_t pcb_layer_get_group(pcb_board_t *pcb, pcb_layer_id_t Layer); pcb_layergrp_id_t pcb_layer_get_group_(pcb_layer_t *Layer);