base class destructors public virtual or protected non-virtual

This commit is contained in:
James Cherry 2019-06-30 22:30:53 -07:00
parent d76ee0ca62
commit f34fc4162d
5 changed files with 23 additions and 17 deletions

View File

@ -114,7 +114,7 @@ class LibertyLibrary : public ConcreteLibrary
public: public:
LibertyLibrary(const char *name, LibertyLibrary(const char *name,
const char *filename); const char *filename);
~LibertyLibrary(); virtual ~LibertyLibrary();
LibertyCell *findLibertyCell(const char *name) const; LibertyCell *findLibertyCell(const char *name) const;
void findLibertyCellsMatching(PatternMatch *pattern, void findLibertyCellsMatching(PatternMatch *pattern,
LibertyCellSeq *cells); LibertyCellSeq *cells);
@ -383,7 +383,7 @@ public:
LibertyCell(LibertyLibrary *library, LibertyCell(LibertyLibrary *library,
const char *name, const char *name,
const char *filename); const char *filename);
~LibertyCell(); virtual ~LibertyCell();
LibertyLibrary *libertyLibrary() const { return liberty_library_; } LibertyLibrary *libertyLibrary() const { return liberty_library_; }
LibertyLibrary *libertyLibrary() { return liberty_library_; } LibertyLibrary *libertyLibrary() { return liberty_library_; }
LibertyPort *findLibertyPort(const char *name) const; LibertyPort *findLibertyPort(const char *name) const;
@ -589,7 +589,7 @@ class LibertyCellPortBitIterator : public Iterator<LibertyPort*>
{ {
public: public:
explicit LibertyCellPortBitIterator(const LibertyCell *cell); explicit LibertyCellPortBitIterator(const LibertyCell *cell);
~LibertyCellPortBitIterator(); virtual ~LibertyCellPortBitIterator();
bool hasNext(); bool hasNext();
LibertyPort *next(); LibertyPort *next();
@ -750,7 +750,7 @@ protected:
int to_index, int to_index,
bool is_bundle, bool is_bundle,
ConcretePortSeq *members); ConcretePortSeq *members);
~LibertyPort(); virtual ~LibertyPort();
void setDirection(PortDirection *dir); void setDirection(PortDirection *dir);
void setMinPort(LibertyPort *min); void setMinPort(LibertyPort *min);
void addScaledPort(OperatingConditions *op_cond, void addScaledPort(OperatingConditions *op_cond,
@ -800,7 +800,7 @@ class LibertyPortMemberIterator : public Iterator<LibertyPort*>
{ {
public: public:
explicit LibertyPortMemberIterator(const LibertyPort *port); explicit LibertyPortMemberIterator(const LibertyPort *port);
~LibertyPortMemberIterator(); virtual ~LibertyPortMemberIterator();
virtual bool hasNext(); virtual bool hasNext();
virtual LibertyPort *next(); virtual LibertyPort *next();
@ -817,6 +817,7 @@ public:
Pvt(float process, Pvt(float process,
float voltage, float voltage,
float temperature); float temperature);
virtual ~Pvt() {}
float process() const { return process_; } float process() const { return process_; }
void setProcess(float process); void setProcess(float process);
float voltage() const { return voltage_; } float voltage() const { return voltage_; }
@ -842,7 +843,7 @@ public:
float voltage, float voltage,
float temperature, float temperature,
WireloadTree wire_load_tree); WireloadTree wire_load_tree);
~OperatingConditions(); virtual ~OperatingConditions();
const char *name() const { return name_; } const char *name() const { return name_; }
WireloadTree wireloadTree() const { return wire_load_tree_; } WireloadTree wireloadTree() const { return wire_load_tree_; }
void setWireloadTree(WireloadTree tree); void setWireloadTree(WireloadTree tree);

View File

@ -50,7 +50,7 @@ public:
explicit ConcreteLibrary(const char *name, explicit ConcreteLibrary(const char *name,
const char *filename, const char *filename,
bool is_liberty); bool is_liberty);
~ConcreteLibrary(); virtual ~ConcreteLibrary();
const char *name() const { return name_; } const char *name() const { return name_; }
void setName(const char *name); void setName(const char *name);
bool isLiberty() const { return is_liberty_; } bool isLiberty() const { return is_liberty_; }
@ -90,7 +90,7 @@ class ConcreteCell
{ {
public: public:
// Use ConcreteLibrary::deleteCell. // Use ConcreteLibrary::deleteCell.
~ConcreteCell(); virtual ~ConcreteCell();
ConcreteLibrary *library() const { return library_; } ConcreteLibrary *library() const { return library_; }
const char *name() const { return name_; } const char *name() const { return name_; }
const char *filename() const { return filename_; } const char *filename() const { return filename_; }
@ -164,7 +164,7 @@ private:
class ConcretePort class ConcretePort
{ {
public: public:
~ConcretePort(); virtual ~ConcretePort();
const char *name() const { return name_; } const char *name() const { return name_; }
const char *busName() const; const char *busName() const;
Cell *cell() const; Cell *cell() const;

View File

@ -321,12 +321,11 @@ public:
VertexIndex vertexIndex() const { return vertex_index_; } VertexIndex vertexIndex() const { return vertex_index_; }
void setVertexIndex(VertexIndex index); void setVertexIndex(VertexIndex index);
private: protected:
DISALLOW_COPY_AND_ASSIGN(ConcretePin); ~ConcretePin() {}
ConcretePin(ConcreteInstance *instance, ConcretePin(ConcreteInstance *instance,
ConcretePort *port, ConcretePort *port,
ConcreteNet *net); ConcreteNet *net);
~ConcretePin() {}
ConcreteInstance *instance_; ConcreteInstance *instance_;
ConcretePort *port_; ConcretePort *port_;
@ -337,6 +336,9 @@ private:
ConcretePin *net_prev_; ConcretePin *net_prev_;
VertexIndex vertex_index_; VertexIndex vertex_index_;
private:
DISALLOW_COPY_AND_ASSIGN(ConcretePin);
friend class ConcreteNetwork; friend class ConcreteNetwork;
friend class ConcreteNet; friend class ConcreteNet;
friend class ConcreteNetPinIterator; friend class ConcreteNetPinIterator;
@ -349,17 +351,19 @@ public:
ConcreteNet *net() const { return net_; } ConcreteNet *net() const { return net_; }
ConcretePin *pin() const { return pin_; } ConcretePin *pin() const { return pin_; }
private: protected:
DISALLOW_COPY_AND_ASSIGN(ConcreteTerm); ~ConcreteTerm() {}
ConcreteTerm(ConcretePin *pin, ConcreteTerm(ConcretePin *pin,
ConcreteNet *net); ConcreteNet *net);
~ConcreteTerm() {}
ConcretePin *pin_; ConcretePin *pin_;
ConcreteNet *net_; ConcreteNet *net_;
// Linked list of net terms. // Linked list of net terms.
ConcreteTerm *net_next_; ConcreteTerm *net_next_;
private:
DISALLOW_COPY_AND_ASSIGN(ConcreteTerm);
friend class ConcreteNetwork; friend class ConcreteNetwork;
friend class ConcreteNet; friend class ConcreteNet;
friend class ConcreteNetTermIterator; friend class ConcreteNetTermIterator;
@ -382,8 +386,6 @@ protected:
ConcreteNet(const char *name, ConcreteNet(const char *name,
ConcreteInstance *instance); ConcreteInstance *instance);
~ConcreteNet(); ~ConcreteNet();
private:
const char *name_; const char *name_;
ConcreteInstance *instance_; ConcreteInstance *instance_;
// Pointer to head of linked list of pins. // Pointer to head of linked list of pins.

View File

@ -14,6 +14,7 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
#include <functional>
#include "Machine.hh" #include "Machine.hh"
#include "StringUtil.hh" #include "StringUtil.hh"
#include "PatternMatch.hh" #include "PatternMatch.hh"

View File

@ -1017,6 +1017,7 @@ void
ReportPath::reportSummaryHeader(string &result) ReportPath::reportSummaryHeader(string &result)
{ {
reportDescription("Startpoint", result); reportDescription("Startpoint", result);
result += ' ';
reportDescription("Endpoint", result); reportDescription("Endpoint", result);
result += ' '; result += ' ';
reportField("Slack", field_total_, result); reportField("Slack", field_total_, result);
@ -1034,6 +1035,7 @@ ReportPath::reportSummaryLine(PathEnd *end,
const EarlyLate *early_late = end->pathEarlyLate(this); const EarlyLate *early_late = end->pathEarlyLate(this);
auto startpoint = pathStartpoint(end, expanded); auto startpoint = pathStartpoint(end, expanded);
reportDescription(startpoint.c_str(), result); reportDescription(startpoint.c_str(), result);
result += ' ';
auto endpoint = pathEndpoint(end); auto endpoint = pathEndpoint(end);
reportDescription(endpoint.c_str(), result); reportDescription(endpoint.c_str(), result);
if (end->isUnconstrained()) if (end->isUnconstrained())