File indexing completed on 2024-12-01 11:20:29
0001 /*************************************************************************** 0002 * Copyright (C) 2005 by David Saxton * 0003 * david@bluehaze.org * 0004 * * 0005 * This program is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 ***************************************************************************/ 0010 0011 #ifndef WIRE_H 0012 #define WIRE_H 0013 0014 #include <pin.h> 0015 0016 #include <QObject> 0017 #include <QPointer> 0018 0019 class Pin; 0020 0021 /** 0022 @author David Saxton 0023 */ 0024 class Wire : public QObject 0025 { 0026 public: 0027 Wire(Pin *startPin, Pin *endPin); 0028 ~Wire() override; 0029 0030 /** 0031 * Attempts to calculate the current that is flowing through 0032 * the connector. Returns true if successfuly, otherwise returns false 0033 */ 0034 bool calculateCurrent(); 0035 /** 0036 * Returns true if the current flowing through the connector is known 0037 */ 0038 bool currentIsKnown() const 0039 { 0040 return m_bCurrentIsKnown; 0041 } 0042 /** 0043 * Set whether the actual current flowing into this node is known (in some 0044 * cases - such as this node being ground - it is not known, and so the 0045 * value returned by current() cannot be relied on. 0046 */ 0047 void setCurrentKnown(bool known); 0048 /** 0049 * Returns the current flowing through the connector. 0050 * This only applies for electronic connectors 0051 */ 0052 double current() const 0053 { 0054 return m_current; 0055 } 0056 /** 0057 * Returns the voltage at the connector. This is an average of the 0058 * voltages at either end. 0059 */ 0060 double voltage() const; 0061 0062 Pin *startPin() const 0063 { 0064 return m_pStartPin; 0065 } 0066 Pin *endPin() const 0067 { 0068 return m_pEndPin; 0069 } 0070 0071 // protected: 0072 0073 private: 0074 double m_current; 0075 bool m_bCurrentIsKnown; 0076 QPointer<Pin> m_pStartPin; 0077 QPointer<Pin> m_pEndPin; 0078 }; 0079 0080 #endif