-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnetlistclasses.hpp
101 lines (90 loc) · 2.04 KB
/
netlistclasses.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// netlistclass.hpp : This hpp file contains all the classes used to
// hold a netlist in the memory
// ERROR-RANGE 40-80
#include<string.h>
class prop
{
private:
char *property;
double value;
double multiplier;
public:
class prop *next;
prop(void) {next=NULL;}
void set(char *name,double val,char *unit);
};
class proplist
{
private:
class prop *head,*current,*loopvar;
public:
proplist(void) {head=current=loopvar=NULL;}
class prop *addprop(void);
void printall(void);
};
class basedevice
{
public:
virtual void set(char *d, char *g, char *s, char *b, char *mname)=0;
virtual void set(char *node1, char *node2, char *modelname)=0;
virtual void printall(void)=0;
class proplist *props;
};
class mos:public basedevice
{
private:
char *drain,*gate,*source,*bulk,*modelname;
class proplist *props;
public:
mos(void){props=new proplist;}
void set(char *d, char *g, char *s, char *b, char *mname);
void set(char *node1, char *node2, char *modelname){}; // Not used here
void printall(void);
};
class diode:public basedevice
{
private:
char *node1,*node2,*modelname;
class proplist *props;
public:
diode(void){props=new proplist;}
void set(char *d, char *g, char *s, char *b, char *mname){}// Not used here
void set(char *n1, char *n2, char *mname);
void printall(void);
};
class device
{
public:
class basedevice *dev;
class device *next;
device(void) {next=NULL;}
void printall(void){dev->printall();};
};
class devicelist
{
private:
class device *head,*current,*looptemp;
public:
devicelist(void){head=current=NULL;}
class device *adddevice(int d);
void printall(void);
};
class subckt
{
public:
class devicelist *devices;
class subckt *next;
//class portlist *ports;
char *subcktname;
subckt(char *name) {next=NULL; subcktname=(char *)malloc(strlen(name)+1); strcpy(subcktname,name);}
void printall(void);
};
class netlist
{
private:
class subckt *head,*current,*looptemp;
public:
netlist(void) {head=current=NULL;}
class subckt *addsubckt(char *name);
void printall(void);
};