Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 13148) +++ trunk/src/data.c (revision 13149) @@ -164,15 +164,27 @@ } } +void pcb_loop_pstk(pcb_board_t *pcb, void *ctx, pcb_pstk_cb_t pscb) +{ + if (pscb != NULL) { + PCB_PADSTACK_LOOP(pcb->Data); + { + pscb(ctx, pcb, padstack); + } + PCB_END_LOOP; + } +} + void pcb_loop_all(pcb_board_t *pcb, void *ctx, pcb_layer_cb_t lacb, pcb_line_cb_t lcb, pcb_arc_cb_t acb, pcb_text_cb_t tcb, pcb_poly_cb_t pocb, pcb_element_cb_t ecb, pcb_eline_cb_t elcb, pcb_earc_cb_t eacb, pcb_etext_cb_t etcb, pcb_epin_cb_t epicb, pcb_epad_cb_t epacb, - pcb_via_cb_t vcb + pcb_via_cb_t vcb, pcb_pstk_cb_t pscb ) { pcb_loop_layers(pcb, ctx, lacb, lcb, acb, tcb, pocb); pcb_loop_elements(pcb, ctx, ecb, elcb, eacb, etcb, epicb, epacb); pcb_loop_vias(pcb, ctx, vcb); + pcb_loop_pstk(pcb, ctx, pscb); } /* --------------------------------------------------------------------------- Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 13148) +++ trunk/src/data.h (revision 13149) @@ -102,8 +102,9 @@ typedef void (*pcb_epin_cb_t)(void *ctx, pcb_board_t *pcb, pcb_element_t *element, pcb_pin_t *pin); typedef void (*pcb_epad_cb_t)(void *ctx, pcb_board_t *pcb, pcb_element_t *element, pcb_pad_t *pad); -/* via callbacks */ +/* via and padstack callbacks */ typedef void (*pcb_via_cb_t)(void *ctx, pcb_board_t *pcb, pcb_pin_t *via); +typedef void (*pcb_pstk_cb_t)(void *ctx, pcb_board_t *pcb, pcb_pstk_t *ps); /* Loop over all layer objects on each layer. Layer is the outer loop. */ void pcb_loop_layers(pcb_board_t *pcb, void *ctx, pcb_layer_cb_t lacb, pcb_line_cb_t lcb, pcb_arc_cb_t acb, pcb_text_cb_t tcb, pcb_poly_cb_t pocb); @@ -118,7 +119,7 @@ void pcb_loop_all(pcb_board_t *pcb, void *ctx, pcb_layer_cb_t lacb, pcb_line_cb_t lcb, pcb_arc_cb_t acb, pcb_text_cb_t tcb, pcb_poly_cb_t pocb, pcb_element_cb_t ecb, pcb_eline_cb_t elcb, pcb_earc_cb_t eacb, pcb_etext_cb_t etcb, pcb_epin_cb_t epicb, pcb_epad_cb_t epacb, - pcb_via_cb_t vcb + pcb_via_cb_t vcb, pcb_pstk_cb_t pscb ); pcb_data_t *pcb_data_new(pcb_board_t *parent);