Simple Nano Circuit 0.0.2
NetlistManagerClass.h
1#ifndef _NetlistManagerClass_H_
2#define _NetlistManagerClass_H_
3
4#include <list>
5#include <SDL.h>
6#include "NetlistClass.h"
7#include "MathMatrixClass.h"
8
9class AsgardClass;
10class WireObject;
11class FootPinNode;
12
14{
15 private:
16 void resortNetlistsIndex();
17 void releaseMemory();
18 void releaseMathQuestionMemory();
19 void createMathQuestionMemory();
20
21 MathMatrixClass::Matrix* mathQuestionA = nullptr;
22 MathMatrixClass::VectorDouble* mathQuestionB = nullptr;
23 MathMatrixClass::VectorDouble* mathQuestionSolution = nullptr;
24 MathMatrixClass::VectorIndex* mathQuestionSolutionBeloneNetlistIndex = nullptr;
25
26 AsgardClass* asgard = nullptr;
27
28 public:
29
30 enum class BindResult
31 {
32 Failed = 0,
33 NewLine,
34 NewFootPin,
35 CurrentNetlist,
36 Subline,
37 };
38
41
42 void Drawing();
43
44 NetlistManagerClass::BindResult addOrBindNetlist( WireObject* );
45 NetlistManagerClass::BindResult addOrBindNetlist( FootPinNode* );
46
48
49 void resetToBlank();
50
51 void BuildMatrixParams(std::list<NetlistClass*>&, std::list<NetlistClass*>&);
52 void PrintMatrixParams();
53 void CalculateVoltages(std::list<NetlistClass*>&);
54 void Reporting(std::list<NetlistClass*>&);
55 void Reporting();
56
57 private:
58 bool showingVoltageText = false;
59 public:
60 bool isShowingVoltageText() const { return this->showingVoltageText; };
61 void setShowingVoltageText(bool _val) { this->showingVoltageText = _val; };
62
63 private:
64 std::list<NetlistClass*> netlists;
65 public:
66 void removeNetlist(NetlistClass*);
67 size_t countNetlists() const { return this->netlists.size(); };
68
69 public:
70 NetlistClass* createNetlist(BaseElectronObject*);
71
72 void WriteBackVoltageToEachNetlists(std::list<NetlistClass*>&);
73 void WriteBackVoltageToEachFootPins(std::list<NetlistClass*>&);
74
75 public:
76 std::list< std::list<NetlistClass*> > netlistParts();
77
79 std::list<NetlistClass*> fetchGroundNetlists(const std::list<NetlistClass*>&);
80};
81
82#endif
Definition: AsgardClass.h:17
Definition: BaseElectronObject.h:13
Definition: FootPinNode.h:15
Definition: NetlistClass.h:19
Definition: NetlistManagerClass.h:14
void CalculateVoltages(std::list< NetlistClass * > &)
根据 2024.12.17 学习的节点电压法,完成各网络节点的电压求解
Definition: NetlistManagerClass.cpp:363
NetlistClass * merge(NetlistClass *, NetlistClass *)
对当前电气系统中的两个netlist进行合并操作,原则是“谁少移动谁、保留多成员网络”
Definition: NetlistManagerClass.cpp:34
void BuildMatrixParams(std::list< NetlistClass * > &, std::list< NetlistClass * > &)
Definition: NetlistManagerClass.cpp:280
NetlistManagerClass::BindResult addOrBindNetlist(WireObject *)
对 _wire 进行网络节点绑定或为其分配新的网络节点资源
Definition: NetlistManagerClass.cpp:66
std::list< NetlistClass * > fetchGroundNetlists(const std::list< NetlistClass * > &)
从当前待求网络中,找到(确定)地网络节点
Definition: NetlistManagerClass.cpp:393
Definition: WireObject.h:14