Index: trunk/src/obj_common.c =================================================================== --- trunk/src/obj_common.c (revision 26551) +++ trunk/src/obj_common.c (revision 26552) @@ -348,3 +348,27 @@ { pcb_xform_mx_scale(mx, 0, -1); } + +void pcb_obj_pre(pcb_any_obj_t *o) +{ + switch(o->type) { + case PCB_OBJ_LINE: pcb_line_pre((pcb_line_t *)o); break; + case PCB_OBJ_TEXT: pcb_text_pre((pcb_text_t *)o); break; + case PCB_OBJ_POLY: pcb_poly_pre((pcb_poly_t *)o); break; + case PCB_OBJ_ARC: pcb_arc_pre((pcb_arc_t *)o); break; + case PCB_OBJ_PSTK: pcb_pstk_pre((pcb_pstk_t *)o); break; + default: break; + } +} + +void pcb_obj_post(pcb_any_obj_t *o) +{ + switch(o->type) { + case PCB_OBJ_LINE: pcb_line_post((pcb_line_t *)o); break; + case PCB_OBJ_TEXT: pcb_text_post((pcb_text_t *)o); break; + case PCB_OBJ_POLY: pcb_poly_post((pcb_poly_t *)o); break; + case PCB_OBJ_ARC: pcb_arc_post((pcb_arc_t *)o); break; + case PCB_OBJ_PSTK: pcb_pstk_post((pcb_pstk_t *)o); break; + default: break; + } +} Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 26551) +++ trunk/src/obj_common.h (revision 26552) @@ -230,6 +230,11 @@ /* Fix an ID in place (replace anything invalid with '_'); returns id */ char *pcb_obj_id_fix(char *id); +/* switch() on o->type and call the right implementation */ +void pcb_obj_pre(pcb_any_obj_t *o); +void pcb_obj_post(pcb_any_obj_t *o); + + #define pcb_obj_id_reg(data, obj) \ do { \ pcb_any_obj_t *__obj__ = (pcb_any_obj_t *)(obj); \