Index: trunk/src/find_lookup.c =================================================================== --- trunk/src/find_lookup.c (revision 11016) +++ trunk/src/find_lookup.c (revision 11017) @@ -575,7 +575,7 @@ internal connection group number, they are connected */ PCB_PIN_LOOP(e); { - if ((from_ptr != pin) && (ic == PCB_FLAG_INTCONN_GET(pin))) { + if ((from_ptr != pin) && (ic == pin->intconn)) { if (!PCB_FLAG_TEST(TheFlag, pin)) ADD_PV_TO_LIST(pin, from_type, from_ptr, PCB_FCT_INTERNAL); } @@ -596,7 +596,7 @@ /* if (tlayer >= 0)*/ { PCB_PAD_LOOP(e); { - if ((from_ptr != pad) && (ic == PCB_FLAG_INTCONN_GET(pad))) { + if ((from_ptr != pad) && (ic == pad->intconn)) { int padlayer = PCB_FLAG_TEST(PCB_FLAG_ONSOLDER, pad) ? PCB_SOLDER_SIDE : PCB_COMPONENT_SIDE; if ((!PCB_FLAG_TEST(TheFlag, pad)) /* && (tlayer != padlayer)*/) { ADD_PAD_TO_LIST(padlayer, pad, from_type, from_ptr, PCB_FCT_INTERNAL); @@ -627,7 +627,7 @@ orig_pin = (PVLIST_ENTRY(PVList.Location)); info.pv = *orig_pin; - ic = PCB_FLAG_INTCONN_GET(orig_pin); + ic = orig_pin->intconn; if ((info.pv.Element != NULL) && (ic > 0)) LOC_int_conn_element(info.pv.Element, ic, PCB_TYPE_PIN, orig_pin); @@ -1324,7 +1324,7 @@ /* Internal connection: if pads in the same element have the same internal connection group number, they are connected */ - ic = PCB_FLAG_INTCONN_GET(Pad); + ic = Pad->intconn; if ((Pad->Element != NULL) && (ic > 0)) LOC_int_conn_element(Pad->Element, ic, PCB_TYPE_PAD, Pad); Index: trunk/src/flag.c =================================================================== --- trunk/src/flag.c (revision 11016) +++ trunk/src/flag.c (revision 11017) @@ -79,9 +79,6 @@ if (f1->q != f2->q) return 0; - if (f1->int_conn_grp != f2->int_conn_grp) - return 0; - /* WARNING: ignore unknowns for now: the only place where we use this function, undo.c, won't care */ Index: trunk/src/flag.h =================================================================== --- trunk/src/flag.h (revision 11016) +++ trunk/src/flag.h (revision 11017) @@ -42,7 +42,6 @@ unsigned long f; /* generic flags */ unsigned char t[(PCB_MAX_LAYER + 1) / 2]; /* thermals */ unsigned char q; /* square geometry flag */ - unsigned char int_conn_grp; pcb_unknown_flag_t *unknowns; } pcb_flag_t; @@ -232,9 +231,6 @@ #define PCB_FLAG_SQUARE_CLEAR(P) (P)->Flags.q = 0 #define PCB_FLAG_SQUARE_ASSIGN(V,P) (P)->Flags.q = V - -#define PCB_FLAG_INTCONN_GET(P) ((P)->Flags.int_conn_grp) - extern int pcb_mem_any_set(unsigned char *, int); #define PCB_FLAG_THERM_TEST_ANY(P) pcb_mem_any_set((P)->Flags.t, sizeof((P)->Flags.t)) Index: trunk/src/flag_str.c =================================================================== --- trunk/src/flag_str.c (revision 11016) +++ trunk/src/flag_str.c (revision 11017) @@ -319,7 +319,7 @@ static pcb_flag_t empty_flags; -pcb_flag_t pcb_strflg_common_s2f(const char *flagstring, int (*error) (const char *msg), pcb_flag_bits_t * flagbits, int n_flagbits) +pcb_flag_t pcb_strflg_common_s2f(const char *flagstring, int (*error) (const char *msg), pcb_flag_bits_t * flagbits, int n_flagbits, unsigned char *intconn) { const char *fp, *ep; int flen; @@ -326,6 +326,8 @@ FlagHolder rv; int i; + if (intconn != NULL) + *intconn = 0; rv.Flags = empty_flags; if (error == 0) @@ -355,8 +357,8 @@ else if (flen == 5 && memcmp(fp, "shape", 5) == 0) { rv.Flags.q = atoi(fp + 6); } - else if (flen == 7 && memcmp(fp, "intconn", 7) == 0) { - rv.Flags.int_conn_grp = atoi(fp + 8); + else if (intconn != NULL && flen == 7 && memcmp(fp, "intconn", 7) == 0) { + *intconn = atoi(fp + 8); } else { for (i = 0; i < n_flagbits; i++) @@ -404,9 +406,9 @@ return rv.Flags; } -pcb_flag_t pcb_strflg_s2f(const char *flagstring, int (*error) (const char *msg)) +pcb_flag_t pcb_strflg_s2f(const char *flagstring, int (*error) (const char *msg), unsigned char *intconn) { - return pcb_strflg_common_s2f(flagstring, error, pcb_object_flagbits, PCB_ENTRIES(pcb_object_flagbits)); + return pcb_strflg_common_s2f(flagstring, error, pcb_object_flagbits, PCB_ENTRIES(pcb_object_flagbits), intconn); } @@ -421,7 +423,7 @@ * forcibly set when vias are parsed. */ -char *pcb_strflg_common_f2s(pcb_flag_t flags, int object_type, pcb_flag_bits_t * flagbits, int n_flagbits) +char *pcb_strflg_common_f2s(pcb_flag_t flags, int object_type, pcb_flag_bits_t * flagbits, int n_flagbits, unsigned char *intconn) { int len; int i; @@ -471,11 +473,11 @@ len += 2; } - if (flags.int_conn_grp > 0) { + if ((intconn != NULL) && (*intconn > 0)) { len += sizeof("intconn(.)"); - if (flags.q > 9) + if (*intconn > 9) len++; - if (flags.q > 99) + if (*intconn > 99) len++; } @@ -515,10 +517,10 @@ bp += sprintf(bp, "shape(%d)", flags.q); } - if (flags.int_conn_grp > 0) { + if ((intconn != NULL) && (*intconn > 0)) { if (bp != buf + 1) *bp++ = ','; - bp += sprintf(bp, "intconn(%d)", flags.int_conn_grp); + bp += sprintf(bp, "intconn(%d)", *intconn); } for (u = flags.unknowns; u != NULL; u = u->next) { @@ -535,9 +537,9 @@ return buf; } -char *pcb_strflg_f2s(pcb_flag_t flags, int object_type) +char *pcb_strflg_f2s(pcb_flag_t flags, int object_type, unsigned char *intconn) { - return pcb_strflg_common_f2s(flags, object_type, pcb_object_flagbits, PCB_ENTRIES(pcb_object_flagbits)); + return pcb_strflg_common_f2s(flags, object_type, pcb_object_flagbits, PCB_ENTRIES(pcb_object_flagbits), intconn); } @@ -572,10 +574,10 @@ char *pcb_strflg_board_f2s(pcb_flag_t flags) { - return pcb_strflg_common_f2s(flags, PCB_TYPEMASK_ALL, pcb_flagbits, PCB_ENTRIES(pcb_flagbits)); + return pcb_strflg_common_f2s(flags, PCB_TYPEMASK_ALL, pcb_flagbits, PCB_ENTRIES(pcb_flagbits), NULL); } pcb_flag_t pcb_strflg_board_s2f(const char *flagstring, int (*error) (const char *msg)) { - return pcb_strflg_common_s2f(flagstring, error, pcb_flagbits, PCB_ENTRIES(pcb_flagbits)); + return pcb_strflg_common_s2f(flagstring, error, pcb_flagbits, PCB_ENTRIES(pcb_flagbits), NULL); } Index: trunk/src/flag_str.h =================================================================== --- trunk/src/flag_str.h (revision 11016) +++ trunk/src/flag_str.h (revision 11017) @@ -55,12 +55,12 @@ /* When passed a string, parse it and return an appropriate set of flags. Errors cause error() to be called with a suitable message; if error is NULL, errors are ignored. */ -pcb_flag_t pcb_strflg_s2f(const char *flagstring, int (*error) (const char *msg)); +pcb_flag_t pcb_strflg_s2f(const char *flagstring, int (*error) (const char *msg), unsigned char *intconn); /* Given a set of flags for a given object type, return a string which can be output to a file. The returned pointer must not be freed. */ -char *pcb_strflg_f2s(pcb_flag_t flags, int object_type); +char *pcb_strflg_f2s(pcb_flag_t flags, int object_type, unsigned char *intconn); /* same as above, for pcb level flags */ char *pcb_strflg_board_f2s(pcb_flag_t flags); @@ -70,7 +70,7 @@ void pcb_strflg_uninit_layerlist(void); /* low level */ -pcb_flag_t pcb_strflg_common_s2f(const char *flagstring, int (*error) (const char *msg), pcb_flag_bits_t * flagbits, int n_flagbits); -char *pcb_strflg_common_f2s(pcb_flag_t flags, int object_type, pcb_flag_bits_t * flagbits, int n_flagbits); +pcb_flag_t pcb_strflg_common_s2f(const char *flagstring, int (*error) (const char *msg), pcb_flag_bits_t * flagbits, int n_flagbits, unsigned char *intconn); +char *pcb_strflg_common_f2s(pcb_flag_t flags, int object_type, pcb_flag_bits_t * flagbits, int n_flagbits, unsigned char *intconn); #endif Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 11016) +++ trunk/src/obj_arc.c (revision 11017) @@ -775,7 +775,7 @@ pcb_bool_t vert; arc_label_pos(arc, &x0, &y0, &vert); - pcb_term_label_setup(&text, x0, y0, 100.0, vert, pcb_true, arc->term, PCB_FLAG_INTCONN_GET(arc)); + pcb_term_label_setup(&text, x0, y0, 100.0, vert, pcb_true, arc->term, arc->intconn); pcb_draw_invalidate(&text); } } @@ -787,7 +787,7 @@ pcb_bool_t vert; arc_label_pos(arc, &x0, &y0, &vert); - pcb_term_label_draw(x0, y0, 100.0, vert, pcb_true, arc->term, PCB_FLAG_INTCONN_GET(arc)); + pcb_term_label_draw(x0, y0, 100.0, vert, pcb_true, arc->term, arc->intconn); } } Index: trunk/src/obj_common.c =================================================================== --- trunk/src/obj_common.c (revision 11016) +++ trunk/src/obj_common.c (revision 11017) @@ -170,7 +170,7 @@ if (*end != '\0') cid = 0; } - obj->Flags.int_conn_grp = cid; + obj->intconn = cid; } } Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 11016) +++ trunk/src/obj_common.h (revision 11017) @@ -122,6 +122,7 @@ pcb_parent_t parent; \ const char *term; \ void *ratconn; \ + unsigned char intconn; \ pcb_attribute_list_t Attributes /* Lines, pads, and rats all use this so they can be cross-cast. */ Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 11016) +++ trunk/src/obj_line.c (revision 11017) @@ -910,7 +910,7 @@ if (line->term != NULL) { pcb_text_t text; pcb_term_label_setup(&text, (line->Point1.X + line->Point2.X)/2, (line->Point1.Y + line->Point2.Y)/2, - 100.0, is_line_term_vert(line), pcb_true, line->term, PCB_FLAG_INTCONN_GET(line)); + 100.0, is_line_term_vert(line), pcb_true, line->term, line->intconn); pcb_draw_invalidate(&text); } } @@ -919,7 +919,7 @@ { if (line->term != NULL) pcb_term_label_draw((line->Point1.X + line->Point2.X)/2, (line->Point1.Y + line->Point2.Y)/2, - 100.0, is_line_term_vert(line), pcb_true, line->term, PCB_FLAG_INTCONN_GET(line)); + 100.0, is_line_term_vert(line), pcb_true, line->term, line->intconn); } Index: trunk/src/obj_pad.c =================================================================== --- trunk/src/obj_pad.c (revision 11016) +++ trunk/src/obj_pad.c (revision 11017) @@ -428,8 +428,8 @@ pn = "n/a"; } - if (PCB_FLAG_INTCONN_GET(pad) > 0) - pcb_snprintf(buff, sizeof(buff), "%s[%d]", pn, PCB_FLAG_INTCONN_GET(pad)); + if (pad->intconn > 0) + pcb_snprintf(buff, sizeof(buff), "%s[%d]", pn, pad->intconn); else strcpy(buff, pn); text.TextString = buff; Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 11016) +++ trunk/src/obj_pinvia.c (revision 11017) @@ -1012,7 +1012,7 @@ /* Set font height to approx 56% of pin thickness */ scale = 56 * pv->Thickness / PCB_FONT_CAPHEIGHT; - pcb_term_label_draw(box.X1, box.Y1, scale, vert, pcb_false, pn, PCB_FLAG_INTCONN_GET(pv)); + pcb_term_label_draw(box.X1, box.Y1, scale, vert, pcb_false, pn, pv->intconn); } static void _draw_pv(pcb_pin_t *pv, pcb_bool draw_hole) Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 11016) +++ trunk/src/obj_poly.c (revision 11017) @@ -836,7 +836,7 @@ if (poly->term != NULL) { pcb_text_t text; pcb_term_label_setup(&text, (poly->BoundingBox.X1 + poly->BoundingBox.X2)/2, (poly->BoundingBox.Y1 + poly->BoundingBox.Y2)/2, - 100.0, is_poly_term_vert(poly), pcb_true, poly->term, PCB_FLAG_INTCONN_GET(poly)); + 100.0, is_poly_term_vert(poly), pcb_true, poly->term, poly->intconn); pcb_draw_invalidate(&text); } } @@ -845,7 +845,7 @@ { if (poly->term != NULL) pcb_term_label_draw((poly->BoundingBox.X1 + poly->BoundingBox.X2)/2, (poly->BoundingBox.Y1 + poly->BoundingBox.Y2)/2, - 100.0, is_poly_term_vert(poly), pcb_true, poly->term, PCB_FLAG_INTCONN_GET(poly)); + 100.0, is_poly_term_vert(poly), pcb_true, poly->term, poly->intconn); } void pcb_poly_draw_(pcb_polygon_t *polygon, const pcb_box_t *drawn_area, int allow_term_gfx) Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 11016) +++ trunk/src/obj_subc.c (revision 11017) @@ -955,7 +955,7 @@ pcb_gui->set_draw_xor(Output.fgGC, 0); if (subc->refdes != NULL) - pcb_term_label_draw(bb->X1, bb->Y1, 50.0, 0, 0, subc->refdes, PCB_FLAG_INTCONN_GET(subc)); + pcb_term_label_draw(bb->X1, bb->Y1, 50.0, 0, 0, subc->refdes, subc->intconn); return PCB_R_DIR_FOUND_CONTINUE; } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 11016) +++ trunk/src/obj_text.c (revision 11017) @@ -743,7 +743,7 @@ if (txt->term != NULL) { pcb_text_t text; pcb_term_label_setup(&text, (txt->BoundingBox.X1 + txt->BoundingBox.X2)/2, (txt->BoundingBox.Y1 + txt->BoundingBox.Y2)/2, - 100.0, is_text_term_vert(txt), pcb_true, txt->term, PCB_FLAG_INTCONN_GET(txt)); + 100.0, is_text_term_vert(txt), pcb_true, txt->term, txt->intconn); pcb_draw_invalidate(&text); } } @@ -752,7 +752,7 @@ { if (text->term != NULL) pcb_term_label_draw((text->BoundingBox.X1 + text->BoundingBox.X2)/2, (text->BoundingBox.Y1 + text->BoundingBox.Y2)/2, - 100.0, is_text_term_vert(text), pcb_true, text->term, PCB_FLAG_INTCONN_GET(text)); + 100.0, is_text_term_vert(text), pcb_true, text->term, text->intconn); } Index: trunk/src/undo_old.c =================================================================== --- trunk/src/undo_old.c (revision 11016) +++ trunk/src/undo_old.c (revision 11017) @@ -431,7 +431,7 @@ return (pcb_true); } pcb_message(PCB_MSG_ERROR, "hace Internal error: Can't find ID %d type %08x\n", Entry->ID, Entry->Kind); - pcb_message(PCB_MSG_ERROR, "for UndoFlag Operation. Previous flags: %s\n", pcb_strflg_f2s(Entry->Data.Flags, 0)); + pcb_message(PCB_MSG_ERROR, "for UndoFlag Operation. Previous flags: %s\n", pcb_strflg_f2s(Entry->Data.Flags, 0, NULL)); return (pcb_false); } Index: trunk/src_plugins/djopt/djopt.c =================================================================== --- trunk/src_plugins/djopt/djopt.c (revision 11016) +++ trunk/src_plugins/djopt/djopt.c (revision 11017) @@ -496,7 +496,7 @@ pcb_line_t *nl; dprintf ("New line \033[35m%#mD to %#mD from l%d t%#mS c%#mS f%s\033[0m\n", - s->x, s->y, e->x, e->y, layer, example->Thickness, example->Clearance, pcb_strflg_f2s(example->Flags, PCB_TYPE_LINE)); + s->x, s->y, e->x, e->y, layer, example->Thickness, example->Clearance, pcb_strflg_f2s(example->Flags, PCB_TYPE_LINE, NULL)); nl = create_pcb_line(layer, s->x, s->y, e->x, e->y, example->Thickness, example->Clearance, example->Flags); if (!nl) @@ -2177,7 +2177,7 @@ c[ci]->lines[li]->s->x, c[ci]->lines[li]->s->y, c[ci]->lines[li]->e->x, c[ci]->lines[li]->e->y, c[ci]->lines[li]->line->Thickness, - c[ci]->lines[li]->line->Clearance, pcb_strflg_f2s(c[ci]->lines[li]->line->Flags, PCB_TYPE_LINE)); + c[ci]->lines[li]->line->Clearance, pcb_strflg_f2s(c[ci]->lines[li]->line->Flags, PCB_TYPE_LINE, NULL)); /* Pads are disqualified, as we want to mimic a trace line. */ if (c[ci]->lines[li]->line == (pcb_line_t *) c[ci]->pad) { dprintf(" bad, pad\n"); Index: trunk/src_plugins/io_lihata/read.c =================================================================== --- trunk/src_plugins/io_lihata/read.c (revision 11016) +++ trunk/src_plugins/io_lihata/read.c (revision 11017) @@ -329,7 +329,7 @@ /* NOTE: in case of objects with thermal, f must point to the object's flags because termals will be filled in at the end, in a 2nd pass and we need to store the f pointer. */ -static int parse_flags(pcb_flag_t *f, lht_node_t *fn, int object_type) +static int parse_flags(pcb_flag_t *f, lht_node_t *fn, int object_type, unsigned char *intconn) { io_lihata_flag_holder fh; @@ -355,8 +355,9 @@ if (parse_int(&n, lht_dom_hash_get(fn, "shape")) == 0) fh.Flags.q = n; - if (parse_int(&n, lht_dom_hash_get(fn, "intconn")) == 0) - fh.Flags.int_conn_grp = n; + if ((intconn != NULL) && (rdver < 3)) + if (parse_int(&n, lht_dom_hash_get(fn, "intconn")) == 0) + *intconn = n; } *f = fh.Flags; @@ -379,7 +380,7 @@ line->ID = 0; else parse_id(&line->ID, obj, 5); - parse_flags(&line->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_LINE); + parse_flags(&line->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_LINE, &line->intconn); parse_attributes(&line->Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&line->Thickness, lht_dom_hash_get(obj, "thickness")); @@ -410,7 +411,7 @@ pcb_rat_t rat, *new_rat; parse_id(&rat.ID, obj, 4); - parse_flags(&rat.Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_LINE); + parse_flags(&rat.Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_LINE, &rat.intconn); parse_attributes(&rat.Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&rat.Point1.X, lht_dom_hash_get(obj, "x1")); @@ -444,7 +445,7 @@ return -1; parse_id(&arc->ID, obj, 4); - parse_flags(&arc->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ARC); + parse_flags(&arc->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ARC, &arc->intconn); parse_attributes(&arc->Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&arc->Thickness, lht_dom_hash_get(obj, "thickness")); @@ -473,7 +474,7 @@ pcb_cardinal_t n = 0, c; parse_id(&poly->ID, obj, 8); - parse_flags(&poly->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_POLYGON); + parse_flags(&poly->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_POLYGON, &poly->intconn); parse_attributes(&poly->Attributes, lht_dom_hash_get(obj, "attributes")); geo = lht_dom_hash_get(obj, "geometry"); @@ -543,7 +544,7 @@ parse_id(&text->ID, obj, 5); - parse_flags(&text->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_TEXT); + parse_flags(&text->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_TEXT, &text->intconn); parse_attributes(&text->Attributes, lht_dom_hash_get(obj, "attributes")); parse_int(&text->Scale, lht_dom_hash_get(obj, "scale")); parse_int(&tmp, lht_dom_hash_get(obj, "fid")); @@ -681,7 +682,7 @@ return -1; parse_id(&via->ID, obj, 4); - parse_flags(&via->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_VIA); + parse_flags(&via->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_VIA, &via->intconn); parse_attributes(&via->Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&via->Thickness, lht_dom_hash_get(obj, "thickness")); @@ -711,7 +712,7 @@ pad = pcb_pad_alloc(el); parse_id(&pad->ID, obj, 4); - parse_flags(&pad->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_PAD); + parse_flags(&pad->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_PAD, &pad->intconn); parse_attributes(&pad->Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&pad->Thickness, lht_dom_hash_get(obj, "thickness")); @@ -745,7 +746,7 @@ int onsld; parse_id(&elem->ID, obj, 8); - parse_flags(&elem->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ELEMENT); + parse_flags(&elem->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ELEMENT, NULL); parse_attributes(&elem->Attributes, lht_dom_hash_get(obj, "attributes")); parse_coord(&elem->MarkX, lht_dom_hash_get(obj, "x")); parse_coord(&elem->MarkY, lht_dom_hash_get(obj, "y")); @@ -788,7 +789,7 @@ pcb_subc_t *sc = pcb_subc_alloc(dt); parse_id(&sc->ID, obj, 5); - parse_flags(&sc->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ELEMENT); + parse_flags(&sc->Flags, lht_dom_hash_get(obj, "flags"), PCB_TYPE_ELEMENT, &sc->intconn); parse_attributes(&sc->Attributes, lht_dom_hash_get(obj, "attributes")); parse_minuid(sc->uid, lht_dom_hash_get(obj, "uid")); Index: trunk/src_plugins/io_lihata/write.c =================================================================== --- trunk/src_plugins/io_lihata/write.c (revision 11016) +++ trunk/src_plugins/io_lihata/write.c (revision 11017) @@ -166,7 +166,7 @@ return ln; } -static lht_node_t *build_flags(pcb_flag_t *f, int object_type) +static lht_node_t *build_flags(pcb_flag_t *f, int object_type, int intconn) { int n, layer, added = 0, thrm = 0; lht_node_t *hsh, *txt, *lst; @@ -217,8 +217,8 @@ added++; } - if (f->int_conn_grp > 0) { - lht_dom_hash_put(hsh, build_textf("intconn", "%d", f->int_conn_grp)); + if ((intconn > 0) && (wrver < 3)) { + lht_dom_hash_put(hsh, build_textf("intconn", "%d", intconn)); added++; } @@ -240,7 +240,7 @@ if (!simple) { lht_dom_hash_put(obj, build_attributes(&line->Attributes)); - lht_dom_hash_put(obj, build_flags(&line->Flags, PCB_TYPE_LINE)); + lht_dom_hash_put(obj, build_flags(&line->Flags, PCB_TYPE_LINE, line->intconn)); lht_dom_hash_put(obj, build_textf("clearance", CFMT, line->Clearance)); } @@ -297,7 +297,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&rat->Attributes)); - lht_dom_hash_put(obj, build_flags(&rat->Flags, PCB_TYPE_LINE)); + lht_dom_hash_put(obj, build_flags(&rat->Flags, PCB_TYPE_LINE, rat->intconn)); lht_dom_hash_put(obj, build_textf("x1", CFMT, rat->Point1.X)); lht_dom_hash_put(obj, build_textf("y1", CFMT, rat->Point1.Y)); lht_dom_hash_put(obj, build_textf("x2", CFMT, rat->Point2.X)); @@ -317,7 +317,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&arc->Attributes)); - lht_dom_hash_put(obj, build_flags(&arc->Flags, PCB_TYPE_ARC)); + lht_dom_hash_put(obj, build_flags(&arc->Flags, PCB_TYPE_ARC, arc->intconn)); lht_dom_hash_put(obj, build_textf("thickness", CFMT, arc->Thickness)); lht_dom_hash_put(obj, build_textf("clearance", CFMT, arc->Clearance)); lht_dom_hash_put(obj, build_textf("x", CFMT, arc->X+dx)); @@ -339,7 +339,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&pin->Attributes)); - lht_dom_hash_put(obj, build_flags(&pin->Flags, PCB_TYPE_VIA)); + lht_dom_hash_put(obj, build_flags(&pin->Flags, PCB_TYPE_VIA, pin->intconn)); lht_dom_hash_put(obj, build_textf("thickness", CFMT, pin->Thickness)); lht_dom_hash_put(obj, build_textf("clearance", CFMT, pin->Clearance)); lht_dom_hash_put(obj, build_textf("mask", CFMT, pin->Mask)); @@ -360,7 +360,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&pad->Attributes)); - lht_dom_hash_put(obj, build_flags(&pad->Flags, PCB_TYPE_PAD)); + lht_dom_hash_put(obj, build_flags(&pad->Flags, PCB_TYPE_PAD, pad->intconn)); lht_dom_hash_put(obj, build_textf("thickness", CFMT, pad->Thickness)); lht_dom_hash_put(obj, build_textf("clearance", CFMT, pad->Clearance)); lht_dom_hash_put(obj, build_textf("mask", CFMT, pad->Mask)); @@ -383,7 +383,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&poly->Attributes)); - lht_dom_hash_put(obj, build_flags(&poly->Flags, PCB_TYPE_POLYGON)); + lht_dom_hash_put(obj, build_flags(&poly->Flags, PCB_TYPE_POLYGON, poly->intconn)); geo = lht_dom_node_alloc(LHT_LIST, "geometry"); lht_dom_hash_put(obj, geo); @@ -419,7 +419,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&text->Attributes)); - lht_dom_hash_put(obj, build_flags(&text->Flags, PCB_TYPE_TEXT)); + lht_dom_hash_put(obj, build_flags(&text->Flags, PCB_TYPE_TEXT, text->intconn)); lht_dom_hash_put(obj, build_text("string", text->TextString)); lht_dom_hash_put(obj, build_textf("fid", "%ld", text->fid)); lht_dom_hash_put(obj, build_textf("scale", "%d", text->Scale)); @@ -446,7 +446,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&elem->Attributes)); - lht_dom_hash_put(obj, build_flags(&elem->Flags, PCB_TYPE_ELEMENT)); + lht_dom_hash_put(obj, build_flags(&elem->Flags, PCB_TYPE_ELEMENT, 0)); /* build drawing primitives */ @@ -494,7 +494,7 @@ obj = lht_dom_node_alloc(LHT_HASH, buff); lht_dom_hash_put(obj, build_attributes(&sc->Attributes)); - lht_dom_hash_put(obj, build_flags(&sc->Flags, PCB_TYPE_SUBC)); + lht_dom_hash_put(obj, build_flags(&sc->Flags, PCB_TYPE_SUBC, 0)); lht_dom_hash_put(obj, build_data(sc->data)); lht_dom_hash_put(obj, build_minuid("uid", sc->uid)); Index: trunk/src_plugins/io_pcb/file.c =================================================================== --- trunk/src_plugins/io_pcb/file.c (revision 11016) +++ trunk/src_plugins/io_pcb/file.c (revision 11017) @@ -77,7 +77,7 @@ * Flag helper functions */ -#define F2S(OBJ, TYPE) pcb_strflg_f2s((OBJ)->Flags, TYPE) +#define F2S(OBJ, TYPE) pcb_strflg_f2s((OBJ)->Flags, TYPE, &((OBJ)->intconn)) /* --------------------------------------------------------------------------- */ Index: trunk/src_plugins/io_pcb/parse_y.c =================================================================== --- trunk/src_plugins/io_pcb/parse_y.c (revision 11016) +++ trunk/src_plugins/io_pcb/parse_y.c (revision 11017) @@ -127,6 +127,7 @@ static pcb_lib_menu_t *Menu; static pcb_bool LayerFlag[PCB_MAX_LAYER + 2]; static int old_fmt; /* 1 if we are reading a PCB(), 0 if PCB[] */ +static unsigned char yy_intconn; extern char *yytext; /* defined by LEX */ extern pcb_board_t * yyPCB; @@ -168,7 +169,7 @@ #include "parse_y.h" -#line 172 "parse_y.c" /* yacc.c:339 */ +#line 173 "parse_y.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -259,7 +260,7 @@ typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 114 "parse_y.y" /* yacc.c:355 */ +#line 115 "parse_y.y" /* yacc.c:355 */ int integer; double number; @@ -267,7 +268,7 @@ pcb_flag_t flagtype; PLMeasure measure; -#line 271 "parse_y.c" /* yacc.c:355 */ +#line 272 "parse_y.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -282,7 +283,7 @@ /* Copy the second part of user declarations. */ -#line 286 "parse_y.c" /* yacc.c:358 */ +#line 287 "parse_y.c" /* yacc.c:358 */ #ifdef short # undef short @@ -584,28 +585,28 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 141, 141, 142, 143, 144, 168, 168, 234, 234, - 245, 245, 264, 265, 270, 270, 311, 313, 343, 350, - 357, 387, 388, 389, 392, 400, 415, 449, 455, 461, - 477, 479, 504, 506, 537, 539, 540, 541, 545, 555, - 566, 593, 597, 602, 630, 634, 678, 687, 696, 700, - 701, 705, 706, 710, 711, 711, 712, 713, 715, 715, - 722, 726, 727, 728, 729, 730, 766, 776, 787, 797, - 807, 843, 848, 880, 879, 908, 909, 913, 914, 918, - 919, 920, 921, 922, 923, 925, 930, 931, 932, 933, - 933, 934, 964, 973, 982, 1030, 1039, 1048, 1085, 1095, - 1113, 1163, 1162, 1201, 1203, 1208, 1207, 1214, 1216, 1221, - 1225, 1285, 1286, 1287, 1288, 1289, 1297, 1296, 1315, 1314, - 1333, 1332, 1353, 1351, 1375, 1373, 1459, 1460, 1464, 1465, - 1466, 1467, 1468, 1470, 1475, 1480, 1485, 1490, 1495, 1500, - 1500, 1504, 1505, 1509, 1510, 1511, 1512, 1514, 1520, 1527, - 1532, 1537, 1537, 1578, 1590, 1602, 1613, 1629, 1683, 1697, - 1710, 1721, 1732, 1733, 1737, 1738, 1760, 1762, 1778, 1797, - 1798, 1801, 1803, 1804, 1825, 1832, 1848, 1849, 1853, 1858, - 1859, 1863, 1864, 1888, 1887, 1897, 1898, 1902, 1903, 1922, - 1939, 1940, 1944, 1949, 1950, 1954, 1955, 1970, 1971, 1972, - 1999, 2012, 2013, 2017, 2018, 2023, 2024, 2025, 2026, 2027, - 2028, 2029, 2030, 2031, 2032 + 0, 142, 142, 143, 144, 145, 169, 169, 235, 235, + 246, 246, 265, 266, 271, 271, 312, 314, 344, 351, + 358, 388, 389, 390, 393, 401, 416, 450, 456, 462, + 478, 480, 505, 507, 538, 540, 541, 542, 546, 556, + 567, 594, 598, 603, 631, 635, 679, 688, 697, 701, + 702, 706, 707, 711, 712, 712, 713, 714, 716, 716, + 723, 727, 728, 729, 730, 731, 767, 777, 788, 798, + 808, 844, 849, 881, 880, 909, 910, 914, 915, 919, + 920, 921, 922, 923, 924, 926, 931, 932, 933, 934, + 934, 935, 965, 974, 983, 1031, 1040, 1049, 1086, 1096, + 1114, 1164, 1163, 1202, 1204, 1209, 1208, 1215, 1217, 1222, + 1226, 1286, 1287, 1288, 1289, 1290, 1298, 1297, 1316, 1315, + 1334, 1333, 1354, 1352, 1376, 1374, 1460, 1461, 1465, 1466, + 1467, 1468, 1469, 1471, 1476, 1481, 1486, 1491, 1496, 1501, + 1501, 1505, 1506, 1510, 1511, 1512, 1513, 1515, 1521, 1528, + 1533, 1538, 1538, 1579, 1592, 1604, 1615, 1631, 1685, 1700, + 1713, 1724, 1735, 1736, 1740, 1741, 1763, 1765, 1781, 1800, + 1801, 1804, 1806, 1807, 1828, 1835, 1851, 1852, 1856, 1861, + 1862, 1866, 1867, 1891, 1890, 1900, 1901, 1905, 1906, 1925, + 1942, 1943, 1947, 1952, 1953, 1957, 1958, 1973, 1974, 1975, + 2002, 2015, 2016, 2020, 2021, 2026, 2027, 2028, 2029, 2030, + 2031, 2032, 2033, 2034, 2035 }; #endif @@ -1782,13 +1783,13 @@ switch (yyn) { case 5: -#line 144 "parse_y.y" /* yacc.c:1646 */ +#line 145 "parse_y.y" /* yacc.c:1646 */ { YYABORT; } -#line 1788 "parse_y.c" /* yacc.c:1646 */ +#line 1789 "parse_y.c" /* yacc.c:1646 */ break; case 6: -#line 168 "parse_y.y" /* yacc.c:1646 */ +#line 169 "parse_y.y" /* yacc.c:1646 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1811,11 +1812,11 @@ layer_group_string = NULL; old_fmt = 0; } -#line 1815 "parse_y.c" /* yacc.c:1646 */ +#line 1816 "parse_y.c" /* yacc.c:1646 */ break; case 7: -#line 204 "parse_y.y" /* yacc.c:1646 */ +#line 205 "parse_y.y" /* yacc.c:1646 */ { pcb_board_t *pcb_save = PCB; if ((yy_settings_dest != CFR_invalid) && (layer_group_string != NULL)) @@ -1845,28 +1846,28 @@ PCB_ENDALL_LOOP; PCB = pcb_save; } -#line 1849 "parse_y.c" /* yacc.c:1646 */ +#line 1850 "parse_y.c" /* yacc.c:1646 */ break; case 8: -#line 234 "parse_y.y" /* yacc.c:1646 */ +#line 235 "parse_y.y" /* yacc.c:1646 */ { PreLoadElementPCB (); layer_group_string = NULL; } -#line 1856 "parse_y.c" /* yacc.c:1646 */ +#line 1857 "parse_y.c" /* yacc.c:1646 */ break; case 9: -#line 237 "parse_y.y" /* yacc.c:1646 */ +#line 238 "parse_y.y" /* yacc.c:1646 */ { LayerFlag[0] = pcb_true; LayerFlag[1] = pcb_true; yyData->LayerN = 2; PostLoadElementPCB (); } -#line 1866 "parse_y.c" /* yacc.c:1646 */ +#line 1867 "parse_y.c" /* yacc.c:1646 */ break; case 10: -#line 245 "parse_y.y" /* yacc.c:1646 */ +#line 246 "parse_y.y" /* yacc.c:1646 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1882,11 +1883,11 @@ LayerFlag[i] = pcb_false; yyData->LayerN = 0; } -#line 1886 "parse_y.c" /* yacc.c:1646 */ +#line 1887 "parse_y.c" /* yacc.c:1646 */ break; case 14: -#line 270 "parse_y.y" /* yacc.c:1646 */ +#line 271 "parse_y.y" /* yacc.c:1646 */ { /* mark all symbols invalid */ int i; @@ -1902,20 +1903,20 @@ } *yyFontkitValid = pcb_false; } -#line 1906 "parse_y.c" /* yacc.c:1646 */ +#line 1907 "parse_y.c" /* yacc.c:1646 */ break; case 15: -#line 286 "parse_y.y" /* yacc.c:1646 */ +#line 287 "parse_y.y" /* yacc.c:1646 */ { *yyFontkitValid = pcb_true; pcb_font_set_info(yyFont); } -#line 1915 "parse_y.c" /* yacc.c:1646 */ +#line 1916 "parse_y.c" /* yacc.c:1646 */ break; case 17: -#line 314 "parse_y.y" /* yacc.c:1646 */ +#line 315 "parse_y.y" /* yacc.c:1646 */ { if (check_file_version ((yyvsp[-1].integer)) != 0) { @@ -1922,11 +1923,11 @@ YYABORT; } } -#line 1926 "parse_y.c" /* yacc.c:1646 */ +#line 1927 "parse_y.c" /* yacc.c:1646 */ break; case 18: -#line 344 "parse_y.y" /* yacc.c:1646 */ +#line 345 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-1].string); yyPCB->MaxWidth = PCB_MAX_COORD; @@ -1933,11 +1934,11 @@ yyPCB->MaxHeight = PCB_MAX_COORD; old_fmt = 1; } -#line 1937 "parse_y.c" /* yacc.c:1646 */ +#line 1938 "parse_y.c" /* yacc.c:1646 */ break; case 19: -#line 351 "parse_y.y" /* yacc.c:1646 */ +#line 352 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = OU ((yyvsp[-2].measure)); @@ -1944,11 +1945,11 @@ yyPCB->MaxHeight = OU ((yyvsp[-1].measure)); old_fmt = 1; } -#line 1948 "parse_y.c" /* yacc.c:1646 */ +#line 1949 "parse_y.c" /* yacc.c:1646 */ break; case 20: -#line 358 "parse_y.y" /* yacc.c:1646 */ +#line 359 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = NU ((yyvsp[-2].measure)); @@ -1955,21 +1956,21 @@ yyPCB->MaxHeight = NU ((yyvsp[-1].measure)); old_fmt = 0; } -#line 1959 "parse_y.c" /* yacc.c:1646 */ +#line 1960 "parse_y.c" /* yacc.c:1646 */ break; case 24: -#line 393 "parse_y.y" /* yacc.c:1646 */ +#line 394 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = OU ((yyvsp[-3].measure)); yyPCB->GridOffsetX = OU ((yyvsp[-2].measure)); yyPCB->GridOffsetY = OU ((yyvsp[-1].measure)); } -#line 1969 "parse_y.c" /* yacc.c:1646 */ +#line 1970 "parse_y.c" /* yacc.c:1646 */ break; case 25: -#line 401 "parse_y.y" /* yacc.c:1646 */ +#line 402 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = OU ((yyvsp[-4].measure)); yyPCB->GridOffsetX = OU ((yyvsp[-3].measure)); @@ -1981,11 +1982,11 @@ conf_set(yy_settings_dest, "editor/draw_grid", -1, "false", POL_OVERWRITE); } } -#line 1985 "parse_y.c" /* yacc.c:1646 */ +#line 1986 "parse_y.c" /* yacc.c:1646 */ break; case 26: -#line 416 "parse_y.y" /* yacc.c:1646 */ +#line 417 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = NU ((yyvsp[-4].measure)); yyPCB->GridOffsetX = NU ((yyvsp[-3].measure)); @@ -1997,48 +1998,48 @@ conf_set(yy_settings_dest, "editor/draw_grid", -1, "false", POL_OVERWRITE); } } -#line 2001 "parse_y.c" /* yacc.c:1646 */ +#line 2002 "parse_y.c" /* yacc.c:1646 */ break; case 27: -#line 450 "parse_y.y" /* yacc.c:1646 */ +#line 451 "parse_y.y" /* yacc.c:1646 */ { yyPCB->CursorX = OU ((yyvsp[-3].measure)); yyPCB->CursorY = OU ((yyvsp[-2].measure)); yyPCB->Zoom = (yyvsp[-1].number)*2; } -#line 2011 "parse_y.c" /* yacc.c:1646 */ +#line 2012 "parse_y.c" /* yacc.c:1646 */ break; case 28: -#line 456 "parse_y.y" /* yacc.c:1646 */ +#line 457 "parse_y.y" /* yacc.c:1646 */ { yyPCB->CursorX = NU ((yyvsp[-3].measure)); yyPCB->CursorY = NU ((yyvsp[-2].measure)); yyPCB->Zoom = (yyvsp[-1].number); } -#line 2021 "parse_y.c" /* yacc.c:1646 */ +#line 2022 "parse_y.c" /* yacc.c:1646 */ break; case 31: -#line 480 "parse_y.y" /* yacc.c:1646 */ +#line 481 "parse_y.y" /* yacc.c:1646 */ { /* Read in cmil^2 for now; in future this should be a noop. */ yyPCB->IsleArea = PCB_MIL_TO_COORD (PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100.0) / 100.0; } -#line 2030 "parse_y.c" /* yacc.c:1646 */ +#line 2031 "parse_y.c" /* yacc.c:1646 */ break; case 33: -#line 507 "parse_y.y" /* yacc.c:1646 */ +#line 508 "parse_y.y" /* yacc.c:1646 */ { yyPCB->ThermScale = (yyvsp[-1].number); } -#line 2038 "parse_y.c" /* yacc.c:1646 */ +#line 2039 "parse_y.c" /* yacc.c:1646 */ break; case 38: -#line 546 "parse_y.y" /* yacc.c:1646 */ +#line 547 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-3].measure)); yyPCB->Shrink = NU ((yyvsp[-2].measure)); @@ -2045,11 +2046,11 @@ yyPCB->minWid = NU ((yyvsp[-1].measure)); yyPCB->minRing = NU ((yyvsp[-1].measure)); } -#line 2049 "parse_y.c" /* yacc.c:1646 */ +#line 2050 "parse_y.c" /* yacc.c:1646 */ break; case 39: -#line 556 "parse_y.y" /* yacc.c:1646 */ +#line 557 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-4].measure)); yyPCB->Shrink = NU ((yyvsp[-3].measure)); @@ -2057,11 +2058,11 @@ yyPCB->minSlk = NU ((yyvsp[-1].measure)); yyPCB->minRing = NU ((yyvsp[-2].measure)); } -#line 2061 "parse_y.c" /* yacc.c:1646 */ +#line 2062 "parse_y.c" /* yacc.c:1646 */ break; case 40: -#line 567 "parse_y.y" /* yacc.c:1646 */ +#line 568 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-6].measure)); yyPCB->Shrink = NU ((yyvsp[-5].measure)); @@ -2070,36 +2071,36 @@ yyPCB->minDrill = NU ((yyvsp[-2].measure)); yyPCB->minRing = NU ((yyvsp[-1].measure)); } -#line 2074 "parse_y.c" /* yacc.c:1646 */ +#line 2075 "parse_y.c" /* yacc.c:1646 */ break; case 41: -#line 594 "parse_y.y" /* yacc.c:1646 */ +#line 595 "parse_y.y" /* yacc.c:1646 */ { yy_pcb_flags = pcb_flag_make((yyvsp[-1].integer) & PCB_FLAGS); } -#line 2082 "parse_y.c" /* yacc.c:1646 */ +#line 2083 "parse_y.c" /* yacc.c:1646 */ break; case 42: -#line 598 "parse_y.y" /* yacc.c:1646 */ +#line 599 "parse_y.y" /* yacc.c:1646 */ { yy_pcb_flags = pcb_strflg_board_s2f((yyvsp[-1].string), yyerror); free((yyvsp[-1].string)); } -#line 2091 "parse_y.c" /* yacc.c:1646 */ +#line 2092 "parse_y.c" /* yacc.c:1646 */ break; case 44: -#line 631 "parse_y.y" /* yacc.c:1646 */ +#line 632 "parse_y.y" /* yacc.c:1646 */ { layer_group_string = (yyvsp[-1].string); } -#line 2099 "parse_y.c" /* yacc.c:1646 */ +#line 2100 "parse_y.c" /* yacc.c:1646 */ break; case 46: -#line 679 "parse_y.y" /* yacc.c:1646 */ +#line 680 "parse_y.y" /* yacc.c:1646 */ { if (pcb_route_string_parse((yyvsp[-1].string), &yyPCB->RouteStyle, "mil")) { @@ -2108,11 +2109,11 @@ } free((yyvsp[-1].string)); } -#line 2112 "parse_y.c" /* yacc.c:1646 */ +#line 2113 "parse_y.c" /* yacc.c:1646 */ break; case 47: -#line 688 "parse_y.y" /* yacc.c:1646 */ +#line 689 "parse_y.y" /* yacc.c:1646 */ { if (pcb_route_string_parse(((yyvsp[-1].string) == NULL ? "" : (yyvsp[-1].string)), &yyPCB->RouteStyle, "cmil")) { @@ -2121,17 +2122,17 @@ } free((yyvsp[-1].string)); } -#line 2125 "parse_y.c" /* yacc.c:1646 */ +#line 2126 "parse_y.c" /* yacc.c:1646 */ break; case 54: -#line 711 "parse_y.y" /* yacc.c:1646 */ +#line 712 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyPCB->Attributes; } -#line 2131 "parse_y.c" /* yacc.c:1646 */ +#line 2132 "parse_y.c" /* yacc.c:1646 */ break; case 58: -#line 715 "parse_y.y" /* yacc.c:1646 */ +#line 716 "parse_y.y" /* yacc.c:1646 */ { /* clear pointer to force memory allocation by * the appropriate subroutine @@ -2138,57 +2139,57 @@ */ yyElement = NULL; } -#line 2142 "parse_y.c" /* yacc.c:1646 */ +#line 2143 "parse_y.c" /* yacc.c:1646 */ break; case 60: -#line 722 "parse_y.y" /* yacc.c:1646 */ +#line 723 "parse_y.y" /* yacc.c:1646 */ { YYABORT; } -#line 2148 "parse_y.c" /* yacc.c:1646 */ +#line 2149 "parse_y.c" /* yacc.c:1646 */ break; case 66: -#line 767 "parse_y.y" /* yacc.c:1646 */ +#line 768 "parse_y.y" /* yacc.c:1646 */ { pcb_via_new(yyData, NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2158 "parse_y.c" /* yacc.c:1646 */ +#line 2159 "parse_y.c" /* yacc.c:1646 */ break; case 67: -#line 777 "parse_y.y" /* yacc.c:1646 */ +#line 778 "parse_y.y" /* yacc.c:1646 */ { pcb_via_new(yyData, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2168 "parse_y.c" /* yacc.c:1646 */ +#line 2169 "parse_y.c" /* yacc.c:1646 */ break; case 68: -#line 788 "parse_y.y" /* yacc.c:1646 */ +#line 789 "parse_y.y" /* yacc.c:1646 */ { pcb_via_new(yyData, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2178 "parse_y.c" /* yacc.c:1646 */ +#line 2179 "parse_y.c" /* yacc.c:1646 */ break; case 69: -#line 798 "parse_y.y" /* yacc.c:1646 */ +#line 799 "parse_y.y" /* yacc.c:1646 */ { pcb_via_new(yyData, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), 2*PCB_GROUNDPLANEFRAME, OU((yyvsp[-4].measure)) + 2*PCB_MASKFRAME, OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2188 "parse_y.c" /* yacc.c:1646 */ +#line 2189 "parse_y.c" /* yacc.c:1646 */ break; case 70: -#line 808 "parse_y.y" /* yacc.c:1646 */ +#line 809 "parse_y.y" /* yacc.c:1646 */ { pcb_coord_t hole = (OU((yyvsp[-3].measure)) * PCB_DEFAULT_DRILLINGHOLE); @@ -2201,29 +2202,29 @@ OU((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, hole, (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2205 "parse_y.c" /* yacc.c:1646 */ +#line 2206 "parse_y.c" /* yacc.c:1646 */ break; case 71: -#line 844 "parse_y.y" /* yacc.c:1646 */ +#line 845 "parse_y.y" /* yacc.c:1646 */ { pcb_rat_new(yyData, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), conf_core.appearance.rat_thickness, (yyvsp[-1].flagtype)); } -#line 2214 "parse_y.c" /* yacc.c:1646 */ +#line 2215 "parse_y.c" /* yacc.c:1646 */ break; case 72: -#line 849 "parse_y.y" /* yacc.c:1646 */ +#line 850 "parse_y.y" /* yacc.c:1646 */ { pcb_rat_new(yyData, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), conf_core.appearance.rat_thickness, pcb_flag_old((yyvsp[-1].integer))); } -#line 2223 "parse_y.c" /* yacc.c:1646 */ +#line 2224 "parse_y.c" /* yacc.c:1646 */ break; case 73: -#line 880 "parse_y.y" /* yacc.c:1646 */ +#line 881 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-4].integer) <= 0 || (yyvsp[-4].integer) > PCB_MAX_LAYER) { @@ -2248,44 +2249,44 @@ if ((yyvsp[-2].string) != NULL) free((yyvsp[-2].string)); } -#line 2252 "parse_y.c" /* yacc.c:1646 */ +#line 2253 "parse_y.c" /* yacc.c:1646 */ break; case 85: -#line 926 "parse_y.y" /* yacc.c:1646 */ +#line 927 "parse_y.y" /* yacc.c:1646 */ { pcb_poly_new_from_rectangle(Layer, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU ((yyvsp[-3].measure)), OU ((yyvsp[-4].measure)) + OU ((yyvsp[-2].measure)), pcb_flag_old((yyvsp[-1].integer))); } -#line 2261 "parse_y.c" /* yacc.c:1646 */ +#line 2262 "parse_y.c" /* yacc.c:1646 */ break; case 89: -#line 933 "parse_y.y" /* yacc.c:1646 */ +#line 934 "parse_y.y" /* yacc.c:1646 */ { attr_list = & Layer->meta.real.Attributes; } -#line 2267 "parse_y.c" /* yacc.c:1646 */ +#line 2268 "parse_y.c" /* yacc.c:1646 */ break; case 92: -#line 965 "parse_y.y" /* yacc.c:1646 */ +#line 966 "parse_y.y" /* yacc.c:1646 */ { pcb_line_new(Layer, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), (yyvsp[-1].flagtype)); } -#line 2276 "parse_y.c" /* yacc.c:1646 */ +#line 2277 "parse_y.c" /* yacc.c:1646 */ break; case 93: -#line 974 "parse_y.y" /* yacc.c:1646 */ +#line 975 "parse_y.y" /* yacc.c:1646 */ { pcb_line_new(Layer, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), pcb_flag_old((yyvsp[-1].integer))); } -#line 2285 "parse_y.c" /* yacc.c:1646 */ +#line 2286 "parse_y.c" /* yacc.c:1646 */ break; case 94: -#line 983 "parse_y.y" /* yacc.c:1646 */ +#line 984 "parse_y.y" /* yacc.c:1646 */ { /* eliminate old-style rat-lines */ if ((IV ((yyvsp[-1].measure)) & PCB_FLAG_RAT) == 0) @@ -2292,48 +2293,48 @@ pcb_line_new(Layer, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), 200*PCB_GROUNDPLANEFRAME, pcb_flag_old(IV ((yyvsp[-1].measure)))); } -#line 2296 "parse_y.c" /* yacc.c:1646 */ +#line 2297 "parse_y.c" /* yacc.c:1646 */ break; case 95: -#line 1031 "parse_y.y" /* yacc.c:1646 */ +#line 1032 "parse_y.y" /* yacc.c:1646 */ { pcb_arc_new(Layer, NU ((yyvsp[-9].measure)), NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-1].flagtype)); } -#line 2305 "parse_y.c" /* yacc.c:1646 */ +#line 2306 "parse_y.c" /* yacc.c:1646 */ break; case 96: -#line 1040 "parse_y.y" /* yacc.c:1646 */ +#line 1041 "parse_y.y" /* yacc.c:1646 */ { pcb_arc_new(Layer, OU ((yyvsp[-9].measure)), OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), pcb_flag_old((yyvsp[-1].integer))); } -#line 2314 "parse_y.c" /* yacc.c:1646 */ +#line 2315 "parse_y.c" /* yacc.c:1646 */ break; case 97: -#line 1049 "parse_y.y" /* yacc.c:1646 */ +#line 1050 "parse_y.y" /* yacc.c:1646 */ { pcb_arc_new(Layer, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-6].measure)), IV ((yyvsp[-3].measure)), (yyvsp[-2].number), OU ((yyvsp[-4].measure)), 200*PCB_GROUNDPLANEFRAME, pcb_flag_old((yyvsp[-1].integer))); } -#line 2323 "parse_y.c" /* yacc.c:1646 */ +#line 2324 "parse_y.c" /* yacc.c:1646 */ break; case 98: -#line 1086 "parse_y.y" /* yacc.c:1646 */ +#line 1087 "parse_y.y" /* yacc.c:1646 */ { /* use a default scale of 100% */ pcb_text_new(Layer,yyFont,OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), 100, (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2333 "parse_y.c" /* yacc.c:1646 */ +#line 2334 "parse_y.c" /* yacc.c:1646 */ break; case 99: -#line 1096 "parse_y.y" /* yacc.c:1646 */ +#line 1097 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-1].integer) & PCB_FLAG_ONSILK) { @@ -2348,11 +2349,11 @@ pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2352 "parse_y.c" /* yacc.c:1646 */ +#line 2353 "parse_y.c" /* yacc.c:1646 */ break; case 100: -#line 1114 "parse_y.y" /* yacc.c:1646 */ +#line 1115 "parse_y.y" /* yacc.c:1646 */ { /* FIXME: shouldn't know about .f */ /* I don't think this matters because anything with hi_format @@ -2372,19 +2373,19 @@ pcb_text_new(Layer, yyFont, NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), (yyvsp[-4].number), (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2376 "parse_y.c" /* yacc.c:1646 */ +#line 2377 "parse_y.c" /* yacc.c:1646 */ break; case 101: -#line 1163 "parse_y.y" /* yacc.c:1646 */ +#line 1164 "parse_y.y" /* yacc.c:1646 */ { Polygon = pcb_poly_new(Layer, (yyvsp[-2].flagtype)); } -#line 2384 "parse_y.c" /* yacc.c:1646 */ +#line 2385 "parse_y.c" /* yacc.c:1646 */ break; case 102: -#line 1168 "parse_y.y" /* yacc.c:1646 */ +#line 1169 "parse_y.y" /* yacc.c:1646 */ { pcb_cardinal_t contour, contour_start, contour_end; pcb_bool bad_contour_found = pcb_false; @@ -2416,35 +2417,35 @@ pcb_r_insert_entry(Layer->polygon_tree, (pcb_box_t *) Polygon, 0); } } -#line 2420 "parse_y.c" /* yacc.c:1646 */ +#line 2421 "parse_y.c" /* yacc.c:1646 */ break; case 105: -#line 1208 "parse_y.y" /* yacc.c:1646 */ +#line 1209 "parse_y.y" /* yacc.c:1646 */ { pcb_poly_hole_new(Polygon); } -#line 2428 "parse_y.c" /* yacc.c:1646 */ +#line 2429 "parse_y.c" /* yacc.c:1646 */ break; case 109: -#line 1222 "parse_y.y" /* yacc.c:1646 */ +#line 1223 "parse_y.y" /* yacc.c:1646 */ { pcb_poly_point_new(Polygon, OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2436 "parse_y.c" /* yacc.c:1646 */ +#line 2437 "parse_y.c" /* yacc.c:1646 */ break; case 110: -#line 1226 "parse_y.y" /* yacc.c:1646 */ +#line 1227 "parse_y.y" /* yacc.c:1646 */ { pcb_poly_point_new(Polygon, NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2444 "parse_y.c" /* yacc.c:1646 */ +#line 2445 "parse_y.c" /* yacc.c:1646 */ break; case 116: -#line 1297 "parse_y.y" /* yacc.c:1646 */ +#line 1298 "parse_y.y" /* yacc.c:1646 */ { yyElement = pcb_element_new(yyData, yyElement, yyFont, pcb_no_flags(), (yyvsp[-6].string), (yyvsp[-5].string), NULL, OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].integer), 100, pcb_no_flags(), pcb_false); @@ -2452,19 +2453,19 @@ free ((yyvsp[-5].string)); pin_num = 1; } -#line 2456 "parse_y.c" /* yacc.c:1646 */ +#line 2457 "parse_y.c" /* yacc.c:1646 */ break; case 117: -#line 1305 "parse_y.y" /* yacc.c:1646 */ +#line 1306 "parse_y.y" /* yacc.c:1646 */ { pcb_element_bbox(yyData, yyElement, yyFont); } -#line 2464 "parse_y.c" /* yacc.c:1646 */ +#line 2465 "parse_y.c" /* yacc.c:1646 */ break; case 118: -#line 1315 "parse_y.y" /* yacc.c:1646 */ +#line 1316 "parse_y.y" /* yacc.c:1646 */ { yyElement = pcb_element_new(yyData, yyElement, yyFont, pcb_flag_old((yyvsp[-9].integer)), (yyvsp[-8].string), (yyvsp[-7].string), NULL, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), pcb_flag_old((yyvsp[-2].integer)), pcb_false); @@ -2472,19 +2473,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2476 "parse_y.c" /* yacc.c:1646 */ +#line 2477 "parse_y.c" /* yacc.c:1646 */ break; case 119: -#line 1323 "parse_y.y" /* yacc.c:1646 */ +#line 1324 "parse_y.y" /* yacc.c:1646 */ { pcb_element_bbox(yyData, yyElement, yyFont); } -#line 2484 "parse_y.c" /* yacc.c:1646 */ +#line 2485 "parse_y.c" /* yacc.c:1646 */ break; case 120: -#line 1333 "parse_y.y" /* yacc.c:1646 */ +#line 1334 "parse_y.y" /* yacc.c:1646 */ { yyElement = pcb_element_new(yyData, yyElement, yyFont, pcb_flag_old((yyvsp[-10].integer)), (yyvsp[-9].string), (yyvsp[-8].string), (yyvsp[-7].string), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), pcb_flag_old((yyvsp[-2].integer)), pcb_false); @@ -2493,19 +2494,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2497 "parse_y.c" /* yacc.c:1646 */ +#line 2498 "parse_y.c" /* yacc.c:1646 */ break; case 121: -#line 1342 "parse_y.y" /* yacc.c:1646 */ +#line 1343 "parse_y.y" /* yacc.c:1646 */ { pcb_element_bbox(yyData, yyElement, yyFont); } -#line 2505 "parse_y.c" /* yacc.c:1646 */ +#line 2506 "parse_y.c" /* yacc.c:1646 */ break; case 122: -#line 1353 "parse_y.y" /* yacc.c:1646 */ +#line 1354 "parse_y.y" /* yacc.c:1646 */ { yyElement = pcb_element_new(yyData, yyElement, yyFont, pcb_flag_old((yyvsp[-12].integer)), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), OU ((yyvsp[-8].measure)) + OU ((yyvsp[-6].measure)), OU ((yyvsp[-7].measure)) + OU ((yyvsp[-5].measure)), @@ -2516,19 +2517,19 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2520 "parse_y.c" /* yacc.c:1646 */ +#line 2521 "parse_y.c" /* yacc.c:1646 */ break; case 123: -#line 1364 "parse_y.y" /* yacc.c:1646 */ +#line 1365 "parse_y.y" /* yacc.c:1646 */ { pcb_element_bbox(yyData, yyElement, yyFont); } -#line 2528 "parse_y.c" /* yacc.c:1646 */ +#line 2529 "parse_y.c" /* yacc.c:1646 */ break; case 124: -#line 1375 "parse_y.y" /* yacc.c:1646 */ +#line 1376 "parse_y.y" /* yacc.c:1646 */ { yyElement = pcb_element_new(yyData, yyElement, yyFont, (yyvsp[-12].flagtype), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), NU ((yyvsp[-8].measure)) + NU ((yyvsp[-6].measure)), NU ((yyvsp[-7].measure)) + NU ((yyvsp[-5].measure)), @@ -2539,11 +2540,11 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2543 "parse_y.c" /* yacc.c:1646 */ +#line 2544 "parse_y.c" /* yacc.c:1646 */ break; case 125: -#line 1386 "parse_y.y" /* yacc.c:1646 */ +#line 1387 "parse_y.y" /* yacc.c:1646 */ { if (pcb_element_is_empty(yyElement)) { pcb_element_free(yyElement); @@ -2552,123 +2553,124 @@ else pcb_element_bbox(yyData, yyElement, yyFont); } -#line 2556 "parse_y.c" /* yacc.c:1646 */ +#line 2557 "parse_y.c" /* yacc.c:1646 */ break; case 133: -#line 1471 "parse_y.y" /* yacc.c:1646 */ +#line 1472 "parse_y.y" /* yacc.c:1646 */ { pcb_element_line_new(yyElement, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2564 "parse_y.c" /* yacc.c:1646 */ +#line 2565 "parse_y.c" /* yacc.c:1646 */ break; case 134: -#line 1476 "parse_y.y" /* yacc.c:1646 */ +#line 1477 "parse_y.y" /* yacc.c:1646 */ { pcb_element_line_new(yyElement, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2572 "parse_y.c" /* yacc.c:1646 */ +#line 2573 "parse_y.c" /* yacc.c:1646 */ break; case 135: -#line 1481 "parse_y.y" /* yacc.c:1646 */ +#line 1482 "parse_y.y" /* yacc.c:1646 */ { pcb_element_arc_new(yyElement, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2580 "parse_y.c" /* yacc.c:1646 */ +#line 2581 "parse_y.c" /* yacc.c:1646 */ break; case 136: -#line 1486 "parse_y.y" /* yacc.c:1646 */ +#line 1487 "parse_y.y" /* yacc.c:1646 */ { pcb_element_arc_new(yyElement, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2588 "parse_y.c" /* yacc.c:1646 */ +#line 2589 "parse_y.c" /* yacc.c:1646 */ break; case 137: -#line 1491 "parse_y.y" /* yacc.c:1646 */ +#line 1492 "parse_y.y" /* yacc.c:1646 */ { yyElement->MarkX = NU ((yyvsp[-2].measure)); yyElement->MarkY = NU ((yyvsp[-1].measure)); } -#line 2597 "parse_y.c" /* yacc.c:1646 */ +#line 2598 "parse_y.c" /* yacc.c:1646 */ break; case 138: -#line 1496 "parse_y.y" /* yacc.c:1646 */ +#line 1497 "parse_y.y" /* yacc.c:1646 */ { yyElement->MarkX = OU ((yyvsp[-2].measure)); yyElement->MarkY = OU ((yyvsp[-1].measure)); } -#line 2606 "parse_y.c" /* yacc.c:1646 */ +#line 2607 "parse_y.c" /* yacc.c:1646 */ break; case 139: -#line 1500 "parse_y.y" /* yacc.c:1646 */ +#line 1501 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyElement->Attributes; } -#line 2612 "parse_y.c" /* yacc.c:1646 */ +#line 2613 "parse_y.c" /* yacc.c:1646 */ break; case 147: -#line 1515 "parse_y.y" /* yacc.c:1646 */ +#line 1516 "parse_y.y" /* yacc.c:1646 */ { pcb_element_line_new(yyElement, NU ((yyvsp[-5].measure)) + yyElement->MarkX, NU ((yyvsp[-4].measure)) + yyElement->MarkY, NU ((yyvsp[-3].measure)) + yyElement->MarkX, NU ((yyvsp[-2].measure)) + yyElement->MarkY, NU ((yyvsp[-1].measure))); } -#line 2622 "parse_y.c" /* yacc.c:1646 */ +#line 2623 "parse_y.c" /* yacc.c:1646 */ break; case 148: -#line 1521 "parse_y.y" /* yacc.c:1646 */ +#line 1522 "parse_y.y" /* yacc.c:1646 */ { pcb_element_line_new(yyElement, OU ((yyvsp[-5].measure)) + yyElement->MarkX, OU ((yyvsp[-4].measure)) + yyElement->MarkY, OU ((yyvsp[-3].measure)) + yyElement->MarkX, OU ((yyvsp[-2].measure)) + yyElement->MarkY, OU ((yyvsp[-1].measure))); } -#line 2632 "parse_y.c" /* yacc.c:1646 */ +#line 2633 "parse_y.c" /* yacc.c:1646 */ break; case 149: -#line 1528 "parse_y.y" /* yacc.c:1646 */ +#line 1529 "parse_y.y" /* yacc.c:1646 */ { pcb_element_arc_new(yyElement, NU ((yyvsp[-7].measure)) + yyElement->MarkX, NU ((yyvsp[-6].measure)) + yyElement->MarkY, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2641 "parse_y.c" /* yacc.c:1646 */ +#line 2642 "parse_y.c" /* yacc.c:1646 */ break; case 150: -#line 1533 "parse_y.y" /* yacc.c:1646 */ +#line 1534 "parse_y.y" /* yacc.c:1646 */ { pcb_element_arc_new(yyElement, OU ((yyvsp[-7].measure)) + yyElement->MarkX, OU ((yyvsp[-6].measure)) + yyElement->MarkY, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2650 "parse_y.c" /* yacc.c:1646 */ +#line 2651 "parse_y.c" /* yacc.c:1646 */ break; case 151: -#line 1537 "parse_y.y" /* yacc.c:1646 */ +#line 1538 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyElement->Attributes; } -#line 2656 "parse_y.c" /* yacc.c:1646 */ +#line 2657 "parse_y.c" /* yacc.c:1646 */ break; case 153: -#line 1579 "parse_y.y" /* yacc.c:1646 */ +#line 1580 "parse_y.y" /* yacc.c:1646 */ { - pcb_element_pin_new(yyElement, NU ((yyvsp[-9].measure)) + yyElement->MarkX, + pcb_pin_t *pin = pcb_element_pin_new(yyElement, NU ((yyvsp[-9].measure)) + yyElement->MarkX, NU ((yyvsp[-8].measure)) + yyElement->MarkY, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].flagtype)); + pin->intconn = yy_intconn; free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2668 "parse_y.c" /* yacc.c:1646 */ +#line 2670 "parse_y.c" /* yacc.c:1646 */ break; case 154: -#line 1591 "parse_y.y" /* yacc.c:1646 */ +#line 1593 "parse_y.y" /* yacc.c:1646 */ { pcb_element_pin_new(yyElement, OU ((yyvsp[-9].measure)) + yyElement->MarkX, OU ((yyvsp[-8].measure)) + yyElement->MarkY, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].string), @@ -2676,11 +2678,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2680 "parse_y.c" /* yacc.c:1646 */ +#line 2682 "parse_y.c" /* yacc.c:1646 */ break; case 155: -#line 1603 "parse_y.y" /* yacc.c:1646 */ +#line 1605 "parse_y.y" /* yacc.c:1646 */ { pcb_element_pin_new(yyElement, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), 2*PCB_GROUNDPLANEFRAME, OU ((yyvsp[-5].measure)) + 2*PCB_MASKFRAME, OU ((yyvsp[-4].measure)), (yyvsp[-3].string), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); @@ -2687,11 +2689,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2691 "parse_y.c" /* yacc.c:1646 */ +#line 2693 "parse_y.c" /* yacc.c:1646 */ break; case 156: -#line 1614 "parse_y.y" /* yacc.c:1646 */ +#line 1616 "parse_y.y" /* yacc.c:1646 */ { char p_number[8]; @@ -2701,11 +2703,11 @@ free ((yyvsp[-2].string)); } -#line 2705 "parse_y.c" /* yacc.c:1646 */ +#line 2707 "parse_y.c" /* yacc.c:1646 */ break; case 157: -#line 1630 "parse_y.y" /* yacc.c:1646 */ +#line 1632 "parse_y.y" /* yacc.c:1646 */ { pcb_coord_t hole = OU ((yyvsp[-3].measure)) * PCB_DEFAULT_DRILLINGHOLE; char p_number[8]; @@ -2720,25 +2722,26 @@ OU ((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, hole, (yyvsp[-2].string), p_number, pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2724 "parse_y.c" /* yacc.c:1646 */ +#line 2726 "parse_y.c" /* yacc.c:1646 */ break; case 158: -#line 1684 "parse_y.y" /* yacc.c:1646 */ +#line 1686 "parse_y.y" /* yacc.c:1646 */ { - pcb_element_pad_new(yyElement, NU ((yyvsp[-10].measure)) + yyElement->MarkX, + pcb_pad_t *pad = pcb_element_pad_new(yyElement, NU ((yyvsp[-10].measure)) + yyElement->MarkX, NU ((yyvsp[-9].measure)) + yyElement->MarkY, NU ((yyvsp[-8].measure)) + yyElement->MarkX, NU ((yyvsp[-7].measure)) + yyElement->MarkY, NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].flagtype)); + pad->intconn = yy_intconn; free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2738 "parse_y.c" /* yacc.c:1646 */ +#line 2741 "parse_y.c" /* yacc.c:1646 */ break; case 159: -#line 1698 "parse_y.y" /* yacc.c:1646 */ +#line 1701 "parse_y.y" /* yacc.c:1646 */ { pcb_element_pad_new(yyElement,OU ((yyvsp[-10].measure)) + yyElement->MarkX, OU ((yyvsp[-9].measure)) + yyElement->MarkY, OU ((yyvsp[-8].measure)) + yyElement->MarkX, @@ -2747,11 +2750,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2751 "parse_y.c" /* yacc.c:1646 */ +#line 2754 "parse_y.c" /* yacc.c:1646 */ break; case 160: -#line 1711 "parse_y.y" /* yacc.c:1646 */ +#line 1714 "parse_y.y" /* yacc.c:1646 */ { pcb_element_pad_new(yyElement,OU ((yyvsp[-8].measure)),OU ((yyvsp[-7].measure)),OU ((yyvsp[-6].measure)),OU ((yyvsp[-5].measure)),OU ((yyvsp[-4].measure)), 2*PCB_GROUNDPLANEFRAME, OU ((yyvsp[-4].measure)) + 2*PCB_MASKFRAME, (yyvsp[-3].string), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); @@ -2758,11 +2761,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2762 "parse_y.c" /* yacc.c:1646 */ +#line 2765 "parse_y.c" /* yacc.c:1646 */ break; case 161: -#line 1722 "parse_y.y" /* yacc.c:1646 */ +#line 1725 "parse_y.y" /* yacc.c:1646 */ { char p_number[8]; @@ -2771,23 +2774,23 @@ OU ((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, (yyvsp[-2].string),p_number, pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2775 "parse_y.c" /* yacc.c:1646 */ +#line 2778 "parse_y.c" /* yacc.c:1646 */ break; case 162: -#line 1732 "parse_y.y" /* yacc.c:1646 */ +#line 1735 "parse_y.y" /* yacc.c:1646 */ { (yyval.flagtype) = pcb_flag_old((yyvsp[0].integer)); } -#line 2781 "parse_y.c" /* yacc.c:1646 */ +#line 2784 "parse_y.c" /* yacc.c:1646 */ break; case 163: -#line 1733 "parse_y.y" /* yacc.c:1646 */ - { (yyval.flagtype) = pcb_strflg_s2f((yyvsp[0].string), yyerror); free((yyvsp[0].string)); } -#line 2787 "parse_y.c" /* yacc.c:1646 */ +#line 1736 "parse_y.y" /* yacc.c:1646 */ + { (yyval.flagtype) = pcb_strflg_s2f((yyvsp[0].string), yyerror, &yy_intconn); free((yyvsp[0].string)); } +#line 2790 "parse_y.c" /* yacc.c:1646 */ break; case 167: -#line 1763 "parse_y.y" /* yacc.c:1646 */ +#line 1766 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > PCB_MAX_FONTPOSITION) { @@ -2803,11 +2806,11 @@ Symbol->Valid = pcb_true; Symbol->Delta = NU ((yyvsp[-2].measure)); } -#line 2807 "parse_y.c" /* yacc.c:1646 */ +#line 2810 "parse_y.c" /* yacc.c:1646 */ break; case 168: -#line 1779 "parse_y.y" /* yacc.c:1646 */ +#line 1782 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > PCB_MAX_FONTPOSITION) { @@ -2823,64 +2826,64 @@ Symbol->Valid = pcb_true; Symbol->Delta = OU ((yyvsp[-2].measure)); } -#line 2827 "parse_y.c" /* yacc.c:1646 */ +#line 2830 "parse_y.c" /* yacc.c:1646 */ break; case 174: -#line 1826 "parse_y.y" /* yacc.c:1646 */ +#line 1829 "parse_y.y" /* yacc.c:1646 */ { pcb_font_new_line_in_sym(Symbol, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2835 "parse_y.c" /* yacc.c:1646 */ +#line 2838 "parse_y.c" /* yacc.c:1646 */ break; case 175: -#line 1833 "parse_y.y" /* yacc.c:1646 */ +#line 1836 "parse_y.y" /* yacc.c:1646 */ { pcb_font_new_line_in_sym(Symbol, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2843 "parse_y.c" /* yacc.c:1646 */ +#line 2846 "parse_y.c" /* yacc.c:1646 */ break; case 183: -#line 1888 "parse_y.y" /* yacc.c:1646 */ +#line 1891 "parse_y.y" /* yacc.c:1646 */ { Menu = pcb_lib_net_new((pcb_lib_t *)&yyPCB->NetlistLib, (yyvsp[-3].string), (yyvsp[-2].string)); free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2853 "parse_y.c" /* yacc.c:1646 */ +#line 2856 "parse_y.c" /* yacc.c:1646 */ break; case 189: -#line 1923 "parse_y.y" /* yacc.c:1646 */ +#line 1926 "parse_y.y" /* yacc.c:1646 */ { pcb_lib_conn_new(Menu, (yyvsp[-1].string)); free ((yyvsp[-1].string)); } -#line 2862 "parse_y.c" /* yacc.c:1646 */ +#line 2865 "parse_y.c" /* yacc.c:1646 */ break; case 197: -#line 1970 "parse_y.y" /* yacc.c:1646 */ +#line 1973 "parse_y.y" /* yacc.c:1646 */ { pcb_ratspatch_append(yyPCB, RATP_ADD_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2868 "parse_y.c" /* yacc.c:1646 */ +#line 2871 "parse_y.c" /* yacc.c:1646 */ break; case 198: -#line 1971 "parse_y.y" /* yacc.c:1646 */ +#line 1974 "parse_y.y" /* yacc.c:1646 */ { pcb_ratspatch_append(yyPCB, RATP_DEL_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2874 "parse_y.c" /* yacc.c:1646 */ +#line 2877 "parse_y.c" /* yacc.c:1646 */ break; case 199: -#line 1972 "parse_y.y" /* yacc.c:1646 */ +#line 1975 "parse_y.y" /* yacc.c:1646 */ { pcb_ratspatch_append(yyPCB, RATP_CHANGE_ATTRIB, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string)); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2880 "parse_y.c" /* yacc.c:1646 */ +#line 2883 "parse_y.c" /* yacc.c:1646 */ break; case 200: -#line 2000 "parse_y.y" /* yacc.c:1646 */ +#line 2003 "parse_y.y" /* yacc.c:1646 */ { char *old_val, *key = (yyvsp[-2].string), *val = (yyvsp[-1].string) ? (yyvsp[-1].string) : (char *)""; old_val = pcb_attribute_get(attr_list, key); @@ -2891,95 +2894,95 @@ free(key); free(val); } -#line 2895 "parse_y.c" /* yacc.c:1646 */ +#line 2898 "parse_y.c" /* yacc.c:1646 */ break; case 201: -#line 2012 "parse_y.y" /* yacc.c:1646 */ +#line 2015 "parse_y.y" /* yacc.c:1646 */ { (yyval.string) = (yyvsp[0].string); } -#line 2901 "parse_y.c" /* yacc.c:1646 */ +#line 2904 "parse_y.c" /* yacc.c:1646 */ break; case 202: -#line 2013 "parse_y.y" /* yacc.c:1646 */ +#line 2016 "parse_y.y" /* yacc.c:1646 */ { (yyval.string) = 0; } -#line 2907 "parse_y.c" /* yacc.c:1646 */ +#line 2910 "parse_y.c" /* yacc.c:1646 */ break; case 203: -#line 2017 "parse_y.y" /* yacc.c:1646 */ +#line 2020 "parse_y.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[0].number); } -#line 2913 "parse_y.c" /* yacc.c:1646 */ +#line 2916 "parse_y.c" /* yacc.c:1646 */ break; case 204: -#line 2018 "parse_y.y" /* yacc.c:1646 */ +#line 2021 "parse_y.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[0].integer); } -#line 2919 "parse_y.c" /* yacc.c:1646 */ +#line 2922 "parse_y.c" /* yacc.c:1646 */ break; case 205: -#line 2023 "parse_y.y" /* yacc.c:1646 */ +#line 2026 "parse_y.y" /* yacc.c:1646 */ { do_measure(&(yyval.measure), (yyvsp[0].number), PCB_MIL_TO_COORD ((yyvsp[0].number)) / 100.0, 0); } -#line 2925 "parse_y.c" /* yacc.c:1646 */ +#line 2928 "parse_y.c" /* yacc.c:1646 */ break; case 206: -#line 2024 "parse_y.y" /* yacc.c:1646 */ +#line 2027 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100000.0); } -#line 2931 "parse_y.c" /* yacc.c:1646 */ +#line 2934 "parse_y.c" /* yacc.c:1646 */ break; case 207: -#line 2025 "parse_y.y" /* yacc.c:1646 */ +#line 2028 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100.0); } -#line 2937 "parse_y.c" /* yacc.c:1646 */ +#line 2940 "parse_y.c" /* yacc.c:1646 */ break; case 208: -#line 2026 "parse_y.y" /* yacc.c:1646 */ +#line 2029 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number))); } -#line 2943 "parse_y.c" /* yacc.c:1646 */ +#line 2946 "parse_y.c" /* yacc.c:1646 */ break; case 209: -#line 2027 "parse_y.y" /* yacc.c:1646 */ +#line 2030 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_INCH_TO_COORD ((yyvsp[-1].number))); } -#line 2949 "parse_y.c" /* yacc.c:1646 */ +#line 2952 "parse_y.c" /* yacc.c:1646 */ break; case 210: -#line 2028 "parse_y.y" /* yacc.c:1646 */ +#line 2031 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) / 1000000.0); } -#line 2955 "parse_y.c" /* yacc.c:1646 */ +#line 2958 "parse_y.c" /* yacc.c:1646 */ break; case 211: -#line 2029 "parse_y.y" /* yacc.c:1646 */ +#line 2032 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) / 1000.0); } -#line 2961 "parse_y.c" /* yacc.c:1646 */ +#line 2964 "parse_y.c" /* yacc.c:1646 */ break; case 212: -#line 2030 "parse_y.y" /* yacc.c:1646 */ +#line 2033 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number))); } -#line 2967 "parse_y.c" /* yacc.c:1646 */ +#line 2970 "parse_y.c" /* yacc.c:1646 */ break; case 213: -#line 2031 "parse_y.y" /* yacc.c:1646 */ +#line 2034 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) * 1000.0); } -#line 2973 "parse_y.c" /* yacc.c:1646 */ +#line 2976 "parse_y.c" /* yacc.c:1646 */ break; case 214: -#line 2032 "parse_y.y" /* yacc.c:1646 */ +#line 2035 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) * 1000000.0); } -#line 2979 "parse_y.c" /* yacc.c:1646 */ +#line 2982 "parse_y.c" /* yacc.c:1646 */ break; -#line 2983 "parse_y.c" /* yacc.c:1646 */ +#line 2986 "parse_y.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3207,7 +3210,7 @@ #endif return yyresult; } -#line 2035 "parse_y.y" /* yacc.c:1906 */ +#line 2038 "parse_y.y" /* yacc.c:1906 */ /* --------------------------------------------------------------------------- Index: trunk/src_plugins/io_pcb/parse_y.h =================================================================== --- trunk/src_plugins/io_pcb/parse_y.h (revision 11016) +++ trunk/src_plugins/io_pcb/parse_y.h (revision 11017) @@ -101,7 +101,7 @@ typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 114 "parse_y.y" /* yacc.c:1909 */ +#line 115 "parse_y.y" /* yacc.c:1909 */ int integer; double number; Index: trunk/src_plugins/io_pcb/parse_y.y =================================================================== --- trunk/src_plugins/io_pcb/parse_y.y (revision 11016) +++ trunk/src_plugins/io_pcb/parse_y.y (revision 11017) @@ -64,6 +64,7 @@ static pcb_lib_menu_t *Menu; static pcb_bool LayerFlag[PCB_MAX_LAYER + 2]; static int old_fmt; /* 1 if we are reading a PCB(), 0 if PCB[] */ +static unsigned char yy_intconn; extern char *yytext; /* defined by LEX */ extern pcb_board_t * yyPCB; @@ -1577,9 +1578,10 @@ number, flags */ : T_PIN '[' measure measure measure measure measure measure STRING STRING flags ']' { - pcb_element_pin_new(yyElement, NU ($3) + yyElement->MarkX, + pcb_pin_t *pin = pcb_element_pin_new(yyElement, NU ($3) + yyElement->MarkX, NU ($4) + yyElement->MarkY, NU ($5), NU ($6), NU ($7), NU ($8), $9, $10, $11); + pin->intconn = yy_intconn; free ($9); free ($10); } @@ -1682,11 +1684,12 @@ /* x1, y1, x2, y2, thickness, clearance, mask, name , pad number, flags */ : T_PAD '[' measure measure measure measure measure measure measure STRING STRING flags ']' { - pcb_element_pad_new(yyElement, NU ($3) + yyElement->MarkX, + pcb_pad_t *pad = pcb_element_pad_new(yyElement, NU ($3) + yyElement->MarkX, NU ($4) + yyElement->MarkY, NU ($5) + yyElement->MarkX, NU ($6) + yyElement->MarkY, NU ($7), NU ($8), NU ($9), $10, $11, $12); + pad->intconn = yy_intconn; free ($10); free ($11); } @@ -1730,7 +1733,7 @@ ; flags : INTEGER { $$ = pcb_flag_old($1); } - | STRING { $$ = pcb_strflg_s2f($1, yyerror); free($1); } + | STRING { $$ = pcb_strflg_s2f($1, yyerror, &yy_intconn); free($1); } ; symbols Index: trunk/src_plugins/report/report.c =================================================================== --- trunk/src_plugins/report/report.c (revision 11016) +++ trunk/src_plugins/report/report.c (revision 11017) @@ -155,7 +155,7 @@ "It is a pure hole of diameter %$mS.\n" "Name = \"%s\"." "%s" - "%s%s%s", USER_UNITMASK, via->ID, pcb_strflg_f2s(via->Flags, PCB_TYPE_VIA), + "%s%s%s", USER_UNITMASK, via->ID, pcb_strflg_f2s(via->Flags, PCB_TYPE_VIA, NULL), via->X, via->Y, via->DrillingHole, PCB_EMPTY(via->Name), gen_locked(via), gen_term(via)); else report = pcb_strdup_printf("%m+VIA ID# %ld; Flags:%s\n" @@ -166,7 +166,7 @@ "Solder mask hole = %$mS (gap = %$mS).\n" "Name = \"%s\"." "%s" - "%s%s%s", USER_UNITMASK, via->ID, pcb_strflg_f2s(via->Flags, PCB_TYPE_VIA), + "%s%s%s", USER_UNITMASK, via->ID, pcb_strflg_f2s(via->Flags, PCB_TYPE_VIA, NULL), via->X, via->Y, via->Thickness, via->DrillingHole, @@ -200,7 +200,7 @@ "(X,Y) = %$mD.\n" "It is a mounting hole. Drill width = %$mS.\n" "It is owned by element %$mS.\n" - "%s", USER_UNITMASK, Pin->ID, pcb_strflg_f2s(Pin->Flags, PCB_TYPE_PIN), + "%s", USER_UNITMASK, Pin->ID, pcb_strflg_f2s(Pin->Flags, PCB_TYPE_PIN, NULL), Pin->X, Pin->Y, Pin->DrillingHole, PCB_EMPTY(element->Name[1].TextString), gen_locked(Pin)); else @@ -213,7 +213,7 @@ "Name = \"%s\".\n" "It is owned by element %s\n as pin number %s.\n" "%s", USER_UNITMASK, - Pin->ID, pcb_strflg_f2s(Pin->Flags, PCB_TYPE_PIN), + Pin->ID, pcb_strflg_f2s(Pin->Flags, PCB_TYPE_PIN, NULL), Pin->X, Pin->Y, Pin->Thickness, Pin->DrillingHole, Pin->Clearance / 2, @@ -243,7 +243,7 @@ "and has name \"%s\".\n" "%s" "%s%s%s", USER_UNITMASK, - line->ID, pcb_strflg_f2s(line->Flags, PCB_TYPE_LINE), + line->ID, pcb_strflg_f2s(line->Flags, PCB_TYPE_LINE, NULL), line->Point1.X, line->Point1.Y, line->Point1.ID, line->Point2.X, line->Point2.Y, line->Point2.ID, line->Thickness, line->Clearance / 2, @@ -266,7 +266,7 @@ "connects to layer group %d.\n" "SecondPoint(X,Y) = %$mD; ID = %ld; " "connects to layer group %d.\n", - USER_UNITMASK, line->ID, pcb_strflg_f2s(line->Flags, PCB_TYPE_LINE), + USER_UNITMASK, line->ID, pcb_strflg_f2s(line->Flags, PCB_TYPE_LINE, NULL), line->Point1.X, line->Point1.Y, line->Point1.ID, line->group1, line->Point2.X, line->Point2.Y, line->Point2.ID, line->group2); break; @@ -294,7 +294,7 @@ "That makes the end points at %$mD and %$mD.\n" "It is on layer %d.\n" "%s" - "%s%s%s", USER_UNITMASK, Arc->ID, pcb_strflg_f2s(Arc->Flags, PCB_TYPE_ARC), + "%s%s%s", USER_UNITMASK, Arc->ID, pcb_strflg_f2s(Arc->Flags, PCB_TYPE_ARC, NULL), Arc->X, Arc->Y, Arc->Thickness, Arc->Clearance / 2, Arc->Width, Arc->StartAngle, Arc->Delta, @@ -324,7 +324,7 @@ "It has %d holes and resides on layer %d.\n" "%s" "%s%s%s", USER_UNITMASK, Polygon->ID, - pcb_strflg_f2s(Polygon->Flags, PCB_TYPE_POLYGON), + pcb_strflg_f2s(Polygon->Flags, PCB_TYPE_POLYGON, NULL), Polygon->BoundingBox.X1, Polygon->BoundingBox.Y1, Polygon->BoundingBox.X2, Polygon->BoundingBox.Y2, Polygon->PointN, Polygon->PointMax - Polygon->PointN, @@ -366,7 +366,7 @@ " as pin number %s and is on the %s\n" "side of the board.\n" "%s", USER_UNITMASK, Pad->ID, - pcb_strflg_f2s(Pad->Flags, PCB_TYPE_PAD), + pcb_strflg_f2s(Pad->Flags, PCB_TYPE_PAD, NULL), Pad->Point1.X, Pad->Point1.Y, Pad->Point1.ID, Pad->Point2.X, Pad->Point2.Y, Pad->Point2.ID, Pad->Thickness, len + Pad->Thickness, @@ -399,7 +399,7 @@ "Mark located at point (X,Y) = %$mD.\n" "It is on the %s side of the board.\n" "%s", USER_UNITMASK, - element->ID, pcb_strflg_f2s(element->Flags, PCB_TYPE_ELEMENT), + element->ID, pcb_strflg_f2s(element->Flags, PCB_TYPE_ELEMENT, NULL), element->BoundingBox.X1, element->BoundingBox.Y1, element->BoundingBox.X2, element->BoundingBox.Y2, PCB_EMPTY(element->Name[0].TextString), @@ -443,7 +443,7 @@ "The bounding box is %$mD %$mD.\n" "%s\n" "%s" - "%s%s%s", USER_UNITMASK, text->ID, pcb_strflg_f2s(text->Flags, PCB_TYPE_TEXT), + "%s%s%s", USER_UNITMASK, text->ID, pcb_strflg_f2s(text->Flags, PCB_TYPE_TEXT, NULL), text->X, text->Y, PCB_SCALE_TEXT(PCB_FONT_CAPHEIGHT, text->Scale), text->TextString, text->Direction, text->BoundingBox.X1, text->BoundingBox.Y1,