Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 10888) +++ trunk/src/obj_subc.c (revision 10889) @@ -954,3 +954,15 @@ return PCB_R_DIR_FOUND_CONTINUE; } + +pcb_subc_t *pcb_subc_by_name(pcb_data_t *base, const char *name) +{ +#warning subc TODO: hierarchy + PCB_SUBC_LOOP(base); + { + if ((subc->refdes != NULL) && (PCB_NSTRCMP(subc->refdes, name) == 0)) + return subc; + } + PCB_END_LOOP; + return NULL; +} Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 10888) +++ trunk/src/obj_subc.h (revision 10889) @@ -79,6 +79,10 @@ int pcb_subc_get_origin(pcb_subc_t *sc, pcb_coord_t *x, pcb_coord_t *y); int pcb_subc_get_rotation(pcb_subc_t *sc, double *rot); +/* Search for the named subc; name is relative path in hierarchy. Returns + NULL if not found */ +pcb_subc_t *pcb_subc_by_name(pcb_data_t *base, const char *name); + /*** loops ***/ #define PCB_SUBC_LOOP(top) do { \