Branch data Line data Source code
1 : : /*
2 : : * net.h - net class definitions
3 : : *
4 : : * Copyright (C) 2003, 2004, 2005, 2006, 2007 Stefan Jahn <stefan@lkcc.org>
5 : : *
6 : : * This is free software; you can redistribute it and/or modify
7 : : * it under the terms of the GNU General Public License as published by
8 : : * the Free Software Foundation; either version 2, or (at your option)
9 : : * any later version.
10 : : *
11 : : * This software is distributed in the hope that it will be useful,
12 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : : * GNU General Public License for more details.
15 : : *
16 : : * You should have received a copy of the GNU General Public License
17 : : * along with this package; see the file COPYING. If not, write to
18 : : * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
19 : : * Boston, MA 02110-1301, USA.
20 : : *
21 : : * $Id$
22 : : *
23 : : */
24 : :
25 : : #ifndef __NET_H__
26 : : #define __NET_H__
27 : :
28 : : #include "ptrlist.h"
29 : :
30 : : namespace qucs {
31 : :
32 : : class circuit;
33 : : class node;
34 : : class nodelist;
35 : : class nodeset;
36 : : class analysis;
37 : : class dataset;
38 : : class environment;
39 : :
40 : :
41 : : class net : public object
42 : : {
43 : : public:
44 : : net ();
45 : : net (const char *);
46 : : net (net &);
47 : : ~net ();
48 : 22129225 : circuit * getRoot (void) { return root; }
49 : : void setRoot (circuit * c) { root = c; }
50 : : void insertCircuit (circuit *);
51 : : void removeCircuit (circuit *, int dropping = 1);
52 : : int containsCircuit (circuit *);
53 : : int checkCircuitChain (void);
54 : : void list (void);
55 : : void reducedCircuit (circuit *);
56 : : node * findConnectedNode (node *);
57 : : node * findConnectedCircuitNode (node *);
58 : : void insertedCircuit (circuit *);
59 : : void insertedNode (node *);
60 : : void insertAnalysis (analysis *);
61 : : void removeAnalysis (analysis *);
62 : : dataset * runAnalysis (int &);
63 : : void getDroppedCircuits (nodelist * nodes = NULL);
64 : : void deleteUnusedCircuits (nodelist * nodes = NULL);
65 : 130458 : int getPorts (void) { return nPorts; }
66 : : int getReduced (void) { return reduced; }
67 : 5783 : void setReduced (int r) { reduced = r; }
68 : 4509149 : int getVoltageSources (void) { return nSources; }
69 : 22664 : void setVoltageSources (int n) { nSources = n; }
70 : : analysis * findAnalysis (const char * const) const;
71 : : analysis * findAnalysis (int);
72 : : analysis * findSecondOrder (void);
73 : : analysis * getChildAnalysis (analysis *);
74 : : const char * getChild (analysis *) const;
75 : : void orderAnalysis (void);
76 : : analysis * findLastOrder (analysis *);
77 : : ptrlist<analysis> * findLastOrderChildren (analysis *);
78 : : void sortChildAnalyses (analysis *);
79 : : int containsAnalysis (analysis *, int);
80 : : environment * getEnv (void) { return env; }
81 : 103 : void setEnv (environment * e) { env = e; }
82 : : int countPorts (void);
83 : : int countNodes (void);
84 : : int isNonLinear (void);
85 : : void addNodeset (nodeset *);
86 : : void delNodeset (void);
87 : 20880 : nodeset * getNodeset (void) { return nset; }
88 : 0 : void setSrcFactor (nr_double_t f) { srcFactor = f; }
89 : 728707 : nr_double_t getSrcFactor (void) { return srcFactor; }
90 : : void setActionNetAll(net *);
91 : :
92 : : private:
93 : : nodeset * nset;
94 : : circuit * drop;
95 : : circuit * root;
96 : : ptrlist<analysis> * actions;
97 : : ptrlist<analysis> * orgacts;
98 : : environment * env;
99 : : int nPorts;
100 : : int nSources;
101 : : int nCircuits;
102 : : int reduced;
103 : : int inserted;
104 : : int insertedNodes;
105 : : nr_double_t srcFactor;
106 : : };
107 : :
108 : : } // namespace qucs
109 : :
110 : : #endif /* __NET_H__ */
|