extflat: integrate cb_extflat_hiervisitdevs_t for EFHierVisitDevs()

This commit is contained in:
Darryl L. Miles 2025-07-20 12:52:23 +01:00
parent e1be3fe7d2
commit 6bbcd65c5f
4 changed files with 33 additions and 19 deletions

View File

@ -572,11 +572,14 @@ subcktHierVisit(
* ---------------------------------------------------------------------------- * ----------------------------------------------------------------------------
*/ */
/* ARGSUSED */
/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */
int int
spcdevHierVisit( spcdevHierVisit(
HierContext *hc, HierContext *hc,
Dev *dev, /* Dev being output */ Dev *dev, /* Dev being output */
float scale) /* Scale transform for output */ float scale, /* Scale transform for output */
ClientData cdata) /* unused */
{ {
DevParam *plist, *pptr; DevParam *plist, *pptr;
DevTerm *gate, *source, *drain; DevTerm *gate, *source, *drain;
@ -1150,11 +1153,14 @@ spcdevHierVisit(
* ---------------------------------------------------------------------------- * ----------------------------------------------------------------------------
*/ */
/* ARGSUSED */
/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */
int int
spcdevHierMergeVisit( spcdevHierMergeVisit(
HierContext *hc, HierContext *hc,
Dev *dev, /* Dev being output */ 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; DevTerm *gate, *source, *drain;
EFNode *subnode, *snode, *dnode, *gnode; EFNode *subnode, *snode, *dnode, *gnode;
@ -1272,12 +1278,15 @@ spcdevHierMergeVisit(
* ---------------------------------------------------------------------------- * ----------------------------------------------------------------------------
*/ */
/* ARGSUSED */
/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */
int int
spccapHierVisit( spccapHierVisit(
HierContext *hc, HierContext *hc,
HierName *hierName1, HierName *hierName1,
HierName *hierName2, HierName *hierName2,
double cap) double cap,
ClientData cdata) /* unused */
{ {
cap = cap / 1000; cap = cap / 1000;
if (fabs(cap) <= EFCapThreshold) if (fabs(cap) <= EFCapThreshold)
@ -1574,7 +1583,7 @@ devMergeHierVisit(
float m; float m;
if (esDistrJunct) if (esDistrJunct)
devDistJunctHierVisit(hc, dev, scale); devDistJunctHierVisit(hc, dev, scale, PTR2CD(NULL));
if (dev->dev_nterm < 2) if (dev->dev_nterm < 2)
{ {
@ -1720,11 +1729,14 @@ mergeThem:
* ---------------------------------------------------------------------------- * ----------------------------------------------------------------------------
*/ */
/* ARGSUSED */
/* @typedef cb_extflat_hiervisitdevs_t (UNUSED) */
int int
devDistJunctHierVisit( devDistJunctHierVisit(
HierContext *hc, HierContext *hc,
Dev *dev, /* Dev to examine */ Dev *dev, /* Dev to examine */
float scale) /* Scale tranform of output */ float scale, /* Scale tranform of output */
ClientData cdata) /* unused */
{ {
EFNode *n; EFNode *n;
int i, l, w; int i, l, w;
@ -2195,10 +2207,10 @@ esHierVisit(
devMergeList = NULL; devMergeList = NULL;
} }
else if (esDistrJunct) else if (esDistrJunct)
EFHierVisitDevs(hcf, devDistJunctHierVisit, (ClientData)NULL); EFHierVisitDevs(hcf, devDistJunctHierVisit, PTR2CD(NULL));
/* Output devices */ /* Output devices */
EFHierVisitDevs(hcf, spcdevHierVisit, (ClientData)NULL); EFHierVisitDevs(hcf, spcdevHierVisit, PTR2CD(NULL));
/* Output lumped parasitic resistors */ /* Output lumped parasitic resistors */
EFHierVisitResists(hcf, spcresistHierVisit, (ClientData)NULL); EFHierVisitResists(hcf, spcresistHierVisit, (ClientData)NULL);

View File

@ -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 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 parallelDevs(const devMerge *f1, const devMerge *f2);
extern int nodeHspiceName(char *s); 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 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 void mergeAttr(char **a1, char **a2);
extern int update_w(short resClass, int w, EFNode *n); extern int update_w(short resClass, int w, EFNode *n);

View File

@ -416,12 +416,13 @@ efHierDevKilled(hc, dev, prefix)
* Visit all the devs in the circuit. * Visit all the devs in the circuit.
* For each dev in the circuit, call the user-supplied procedure * For each dev in the circuit, call the user-supplied procedure
* (*devProc)(), which should be of the following form: * (*devProc)(), which should be of the following form:
* see also typedef cb_extflat_hiervisitdevs_t:
* *
* (*devProc)(hc, dev, scale, cdata) * int (*devProc)(
* HierContext *hc; * HierContext *hc,
* Dev *dev; * Dev *dev,
* float scale; * float scale,
* ClientData cdata; * ClientData cdata)
* { * {
* } * }
* *
@ -442,14 +443,14 @@ efHierDevKilled(hc, dev, prefix)
*/ */
int int
EFHierVisitDevs(hc, devProc, cdata) EFHierVisitDevs(
HierContext *hc; HierContext *hc,
int (*devProc)(); const cb_extflat_hiervisitdevs_t devProc,
ClientData cdata; ClientData cdata)
{ {
CallArg ca; CallArg ca;
ca.ca_proc = devProc; ca.ca_proc = (int (*)()) devProc;
ca.ca_cdata = cdata; ca.ca_cdata = cdata;
return efHierVisitDevs(hc, (ClientData) &ca); return efHierVisitDevs(hc, (ClientData) &ca);
} }

View File

@ -127,7 +127,8 @@ extern void EFHNOut();
extern int EFHierSrDefs(); extern int EFHierSrDefs();
extern int EFVisitSubcircuits(); extern int EFVisitSubcircuits();
extern int EFHierVisitSubcircuits(); 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 EFHierVisitResists();
extern int EFHierVisitCaps(); extern int EFHierVisitCaps();
extern int EFHierVisitNodes(); extern int EFHierVisitNodes();