diff --git a/ext2spice/ext2hier.c b/ext2spice/ext2hier.c index 0e352990..e2204ae8 100644 --- a/ext2spice/ext2hier.c +++ b/ext2spice/ext2hier.c @@ -572,11 +572,14 @@ subcktHierVisit( * ---------------------------------------------------------------------------- */ +/* ARGSUSED */ +/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */ int spcdevHierVisit( HierContext *hc, Dev *dev, /* Dev being output */ - float scale) /* Scale transform for output */ + float scale, /* Scale transform for output */ + ClientData cdata) /* unused */ { DevParam *plist, *pptr; DevTerm *gate, *source, *drain; @@ -1150,11 +1153,14 @@ spcdevHierVisit( * ---------------------------------------------------------------------------- */ +/* ARGSUSED */ +/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */ int spcdevHierMergeVisit( HierContext *hc, Dev *dev, /* Dev being output */ - float scale) /* Scale of transform (may be non-integer) */ + float scale, /* Scale of transform (may be non-integer) */ + ClientData cdata) /* unused */ { DevTerm *gate, *source, *drain; EFNode *subnode, *snode, *dnode, *gnode; @@ -1272,12 +1278,15 @@ spcdevHierMergeVisit( * ---------------------------------------------------------------------------- */ +/* ARGSUSED */ +/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */ int spccapHierVisit( HierContext *hc, HierName *hierName1, HierName *hierName2, - double cap) + double cap, + ClientData cdata) /* unused */ { cap = cap / 1000; if (fabs(cap) <= EFCapThreshold) @@ -1574,7 +1583,7 @@ devMergeHierVisit( float m; if (esDistrJunct) - devDistJunctHierVisit(hc, dev, scale); + devDistJunctHierVisit(hc, dev, scale, PTR2CD(NULL)); if (dev->dev_nterm < 2) { @@ -1720,11 +1729,14 @@ mergeThem: * ---------------------------------------------------------------------------- */ +/* ARGSUSED */ +/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */ int devDistJunctHierVisit( HierContext *hc, Dev *dev, /* Dev to examine */ - float scale) /* Scale tranform of output */ + float scale, /* Scale tranform of output */ + ClientData cdata) /* unused */ { EFNode *n; int i, l, w; @@ -2195,10 +2207,10 @@ esHierVisit( devMergeList = NULL; } else if (esDistrJunct) - EFHierVisitDevs(hcf, devDistJunctHierVisit, (ClientData)NULL); + EFHierVisitDevs(hcf, devDistJunctHierVisit, PTR2CD(NULL)); /* Output devices */ - EFHierVisitDevs(hcf, spcdevHierVisit, (ClientData)NULL); + EFHierVisitDevs(hcf, spcdevHierVisit, PTR2CD(NULL)); /* Output lumped parasitic resistors */ EFHierVisitResists(hcf, spcresistHierVisit, (ClientData)NULL); diff --git a/ext2spice/ext2spice.h b/ext2spice/ext2spice.h index c41c86f3..547b2b67 100644 --- a/ext2spice/ext2spice.h +++ b/ext2spice/ext2spice.h @@ -52,7 +52,7 @@ extern int spcdevOutNode(const HierName *prefix, const HierName *suffix, const c extern int spcnAP(DevTerm *dterm, EFNode *node, int resClass, float scale, char *asterm, char *psterm, float m, FILE *outf, int w); extern int parallelDevs(const devMerge *f1, const devMerge *f2); extern int nodeHspiceName(char *s); -extern int devDistJunctHierVisit(HierContext *hc, Dev *dev, float scale); +extern int devDistJunctHierVisit(HierContext *hc, Dev *dev, float scale, ClientData cdata); /* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */ extern int spcnAPHier(DevTerm *dterm, HierName *hierName, int resClass, float scale, char *asterm, char *psterm, float m, FILE *outf); extern void mergeAttr(char **a1, char **a2); extern int update_w(short resClass, int w, EFNode *n); diff --git a/extflat/EFhier.c b/extflat/EFhier.c index efc6cc38..55b26d8d 100644 --- a/extflat/EFhier.c +++ b/extflat/EFhier.c @@ -416,12 +416,13 @@ efHierDevKilled(hc, dev, prefix) * Visit all the devs in the circuit. * For each dev in the circuit, call the user-supplied procedure * (*devProc)(), which should be of the following form: + * see also typedef cb_extflat_hiervisitdevs_t: * - * (*devProc)(hc, dev, scale, cdata) - * HierContext *hc; - * Dev *dev; - * float scale; - * ClientData cdata; + * int (*devProc)( + * HierContext *hc, + * Dev *dev, + * float scale, + * ClientData cdata) * { * } * @@ -442,14 +443,14 @@ efHierDevKilled(hc, dev, prefix) */ int -EFHierVisitDevs(hc, devProc, cdata) - HierContext *hc; - int (*devProc)(); - ClientData cdata; +EFHierVisitDevs( + HierContext *hc, + const cb_extflat_hiervisitdevs_t devProc, + ClientData cdata) { CallArg ca; - ca.ca_proc = devProc; + ca.ca_proc = (int (*)()) devProc; ca.ca_cdata = cdata; return efHierVisitDevs(hc, (ClientData) &ca); } diff --git a/extflat/extflat.h b/extflat/extflat.h index 9282b4ea..52270cc7 100644 --- a/extflat/extflat.h +++ b/extflat/extflat.h @@ -127,7 +127,8 @@ extern void EFHNOut(); extern int EFHierSrDefs(); extern int EFVisitSubcircuits(); extern int EFHierVisitSubcircuits(); -extern int EFHierVisitDevs(); +typedef int (*cb_extflat_hiervisitdevs_t)(HierContext *hc, Dev *dev, float scale, ClientData cdata); +extern int EFHierVisitDevs(HierContext *hc, const cb_extflat_hiervisitdevs_t devProc, ClientData cdata); extern int EFHierVisitResists(); extern int EFHierVisitCaps(); extern int EFHierVisitNodes();