#include "edbcreate.h" #include "edbsave.h" #include #ifdef WIN #pragma warning(disable:4996) #endif static void buildExample(Edb* edb) { EdbComponent* A10 = EdbNewComponent(edb, "A10", EdbComponentTECU); EdbComponent* B1 = EdbNewComponent(edb, "B1", EdbComponentTINLINER); EdbComponent* C1 = EdbNewComponent(edb, "C1", EdbComponentTINLINER); EdbComponent* D1 = EdbNewComponent(edb, "D1", EdbComponentTINLINER); EdbComponent* S1 = EdbNewComponent(edb, NULL, EdbComponentTSPLICE); EdbComponent* E1 = EdbNewComponent(edb, NULL, EdbComponentTEYELET); EdbComponent* A20 = EdbNewComponent(edb, "A20", EdbComponentTECU); EdbConnector* A10B = EdbNewConnector(edb, A10,"B1", EdbConnectorTUNDEF); EdbConnector* B1A = EdbNewConnector(edb, B1, "A", EdbConnectorTUNDEF); EdbConnector* B1B = EdbNewConnector(edb, B1, "B", EdbConnectorTUNDEF); EdbConnector* D1A = EdbNewConnector(edb, D1, "A", EdbConnectorTUNDEF); EdbConnector* D1B = EdbNewConnector(edb, D1, "B", EdbConnectorTUNDEF); EdbConnector* A20A = EdbNewConnector(edb, A20,"A1", EdbConnectorTUNDEF); EdbConnector* S1c = EdbNewConnector(edb, S1, NULL, EdbConnectorTUNDEF); EdbConnector* E1c = EdbNewConnector(edb, E1, NULL, EdbConnectorTUNDEF); int i; EdbPartnerConnector(edb, B1A, B1B); EdbPartnerConnector(edb, D1A, D1B); for (i=0; i<15; i++) { EdbCavity *a, *b; EdbWire *w; char buf[24], wbuf[24], ibuf[24]; sprintf(buf, "%d", i); sprintf(ibuf, "#%d", i); if (i == 5) { A10B = EdbNewConnector(edb, A10, "B2", EdbConnectorTUNDEF); B1A = EdbNewConnector(edb, C1, "A", EdbConnectorTUNDEF); B1B = EdbNewConnector(edb, C1, "B", EdbConnectorTANTI); A20A = EdbNewConnector(edb, A20, "A2", EdbConnectorTUNDEF); EdbPartnerConnector(edb, B1A, B1B); } else if (i == 11) { B1A = EdbNewConnector(edb, C1, "C", EdbConnectorTUNDEF); B1B = NULL; D1A = NULL; D1B = NULL; A20A = NULL; } if (i == 10) { b = EdbNewCavity(edb, A10B, buf); a = EdbNewCavity(edb, S1c, NULL); sprintf(wbuf, "WA%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); } if (i == 10 || i == 12) { b = EdbNewCavity(edb, S1c, NULL); a = EdbNewCavity(edb, B1A, buf); sprintf(wbuf, "WS%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); } else if (i % 3) { b = EdbNewCavity(edb, A10B, buf); a = EdbNewCavity(edb, B1A, buf); sprintf(wbuf, "WA%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); if (i == 2) { EdbNewAttr4Wire(edb, w, " color", "#d00000"); EdbNewAttr4Wire(edb, w, "Diameter", "1.5"); } } else { a = b = NULL; } if (i == 4 || i == 5) { b = EdbNewCavity(edb, B1B, buf); if (a) EdbPartnerCavity(edb, a, b); a = EdbNewCavity(edb, E1c, NULL); sprintf(wbuf, "WB%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); b = EdbNewCavity(edb, E1c, NULL); a = EdbNewCavity(edb, D1A, buf); sprintf(wbuf, "WE%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); } else if (B1B && D1A){ b = EdbNewCavity(edb, B1B, buf); if (a) EdbPartnerCavity(edb, a, b); a = EdbNewCavity(edb, D1A, buf); sprintf(wbuf, "WB%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); if (i == 2) { EdbNewAttr4Wire(edb, w, " color", "#d00000"); EdbNewAttr4Wire(edb, w, "Diameter", "1.9"); } } else { a = b = NULL; } if (i % 5 && D1B && A20A) { b = EdbNewCavity(edb, D1B, buf); if (a) EdbPartnerCavity(edb, a, b); a = EdbNewCavity(edb, A20A, buf); sprintf(wbuf, "WD%d", i); w = EdbNewWire(edb, wbuf); EdbJoin(edb, b, w); EdbJoin(edb, a, w); EdbNewAttr4Wire(edb, w, "id", ibuf); if (i == 2) { EdbNewAttr4Wire(edb, w, " color", "#d00000"); EdbNewAttr4Wire(edb, w, "Diameter", "2.4"); } } } EdbNewAttr4Component(edb, A10, " color", "#d09090"); EdbNewAttr4Component(edb, A20, " color", "#d0e0f0"); } int main (int argc, const char* argv[]) { Edb* edb; EdbBool ok; FILE* outf; if (argc != 2) { fprintf(stderr, "Usage: %s file.edb\n", argv[0]); return 1; } outf = fopen(argv[1], "wb"); if (!outf) { perror(argv[1]); return 1; } edb = EdbNew(); buildExample(edb); ok = EdbSave(edb, outf); if (!ok) { /* LCOV_EXCL_START */ fprintf(stderr, "EdbSave %s: %s\n", argv[1], EdbLastError(edb)); return 1; } /* LCOV_EXCL_STOP */ EdbDelete(edb); fclose(outf); return 0; }