diff --git a/dcalc/GraphDelayCalc1.cc b/dcalc/GraphDelayCalc1.cc index 5926103e..1768abc2 100644 --- a/dcalc/GraphDelayCalc1.cc +++ b/dcalc/GraphDelayCalc1.cc @@ -357,7 +357,7 @@ public: bool own_arc_delay_calc); virtual ~FindVertexDelays(); virtual void visit(Vertex *vertex); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; protected: GraphDelayCalc1 *graph_delay_calc1_; @@ -382,7 +382,7 @@ FindVertexDelays::~FindVertexDelays() } VertexVisitor * -FindVertexDelays::copy() +FindVertexDelays::copy() const { // Copy StaState::arc_delay_calc_ because it needs separate state // for each thread. diff --git a/include/sta/Search.hh b/include/sta/Search.hh index 72d00664..75a18ca5 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -704,7 +704,7 @@ public: void init(bool always_to_endpoints, SearchPred *pred); virtual void visit(Vertex *vertex); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; // Return false to stop visiting. virtual bool visitFromToPath(const Pin *from_pin, Vertex *from_vertex, @@ -770,7 +770,7 @@ class RequiredVisitor : public PathVisitor public: explicit RequiredVisitor(const StaState *sta); virtual ~RequiredVisitor(); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *vertex); protected: diff --git a/include/sta/VertexVisitor.hh b/include/sta/VertexVisitor.hh index 5b705b01..631f5837 100644 --- a/include/sta/VertexVisitor.hh +++ b/include/sta/VertexVisitor.hh @@ -28,13 +28,10 @@ class VertexVisitor public: VertexVisitor() {} virtual ~VertexVisitor() {} - virtual VertexVisitor *copy() = 0; + virtual VertexVisitor *copy() const = 0; virtual void visit(Vertex *vertex) = 0; void operator()(Vertex *vertex) { visit(vertex); } virtual void levelFinished() {} - -private: - DISALLOW_COPY_AND_ASSIGN(VertexVisitor); }; // Collect visited pins into a PinSet. @@ -44,7 +41,7 @@ public: VertexPinCollector(PinSet *pins); PinSet *pins() const { return pins_; } void visit(Vertex *vertex); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; protected: PinSet *pins_; diff --git a/search/Genclks.cc b/search/Genclks.cc index e5302b4f..2d447c4e 100644 --- a/search/Genclks.cc +++ b/search/Genclks.cc @@ -809,7 +809,7 @@ public: BfsFwdIterator *insert_iter, GenclkInfo *genclk_info, const StaState *sta); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *vertex); protected: @@ -854,7 +854,7 @@ GenclkSrcArrivalVisitor::GenclkSrcArrivalVisitor(Clock *gclk, } VertexVisitor * -GenclkSrcArrivalVisitor::copy() +GenclkSrcArrivalVisitor::copy() const { return new GenclkSrcArrivalVisitor(gclk_, insert_iter_, genclk_info_, always_to_endpoints_, pred_, sta_); diff --git a/search/PathEnum.cc b/search/PathEnum.cc index 2afc91f3..5006d3cd 100644 --- a/search/PathEnum.cc +++ b/search/PathEnum.cc @@ -230,7 +230,7 @@ public: PathRef &before_div, bool unique_pins, PathEnum *path_enum); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *) {} // Not used. void visitFaninPathsThru(Vertex *vertex, Vertex *prev_vertex, @@ -307,7 +307,7 @@ PathEnumFaninVisitor::visitFaninPathsThru(Vertex *vertex, } VertexVisitor * -PathEnumFaninVisitor::copy() +PathEnumFaninVisitor::copy() const { return new PathEnumFaninVisitor(path_end_, before_div_, unique_pins_, path_enum_); diff --git a/search/PathGroup.cc b/search/PathGroup.cc index 99f8da5d..405f65cc 100644 --- a/search/PathGroup.cc +++ b/search/PathGroup.cc @@ -845,7 +845,7 @@ public: const MinMaxAll *min_max, const StaState *sta); ~MakeEndpointPathEnds(); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *vertex); private: @@ -877,7 +877,7 @@ MakeEndpointPathEnds::~MakeEndpointPathEnds() } VertexVisitor * -MakeEndpointPathEnds::copy() +MakeEndpointPathEnds::copy() const { return new MakeEndpointPathEnds(path_end_visitor_, corner_, min_max_, sta_); } diff --git a/search/PathVertex.cc b/search/PathVertex.cc index 4ea17eb3..8453720a 100644 --- a/search/PathVertex.cc +++ b/search/PathVertex.cc @@ -311,7 +311,7 @@ public: PrevPathVisitor(const Path *path, SearchPred *pred, const StaState *sta); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *) {} virtual bool visitFromToPath(const Pin *from_pin, Vertex *from_vertex, @@ -362,7 +362,7 @@ PrevPathVisitor::PrevPathVisitor(const Path *path, } VertexVisitor * -PrevPathVisitor::copy() +PrevPathVisitor::copy() const { return new PrevPathVisitor(path_, pred_, sta_); } diff --git a/search/Power.cc b/search/Power.cc index de3f6128..a402475c 100644 --- a/search/Power.cc +++ b/search/Power.cc @@ -269,7 +269,7 @@ public: PropActivityVisitor(Power *power, BfsFwdIterator *bfs); ~PropActivityVisitor(); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *vertex); void init(); bool foundRegWithoutActivity() const; @@ -297,7 +297,7 @@ PropActivityVisitor::~PropActivityVisitor() } VertexVisitor * -PropActivityVisitor::copy() +PropActivityVisitor::copy() const { return new PropActivityVisitor(power_, bfs_); } diff --git a/search/Search.cc b/search/Search.cc index 2db72045..2744505f 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -1041,7 +1041,7 @@ ArrivalVisitor::init(bool always_to_endpoints, VertexVisitor * -ArrivalVisitor::copy() +ArrivalVisitor::copy() const { return new ArrivalVisitor(always_to_endpoints_, pred_, sta_); } @@ -3398,7 +3398,7 @@ RequiredVisitor::~RequiredVisitor() } VertexVisitor * -RequiredVisitor::copy() +RequiredVisitor::copy() const { return new RequiredVisitor(sta_); } diff --git a/search/Sta.cc b/search/Sta.cc index 6e439af0..a55d9721 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2637,7 +2637,7 @@ public: EndpointCounter() : count_(0) {} virtual void visit(Vertex *) { count_++; } int count() const { return count_; } - virtual EndpointCounter *copy() { return new EndpointCounter; } + virtual EndpointCounter *copy() const { return new EndpointCounter; } protected: int count_; }; diff --git a/search/VertexVisitor.cc b/search/VertexVisitor.cc index cdac21f9..12e98371 100644 --- a/search/VertexVisitor.cc +++ b/search/VertexVisitor.cc @@ -27,7 +27,7 @@ VertexPinCollector::VertexPinCollector(PinSet *pins) : } VertexVisitor * -VertexPinCollector::copy() +VertexPinCollector::copy() const { criticalError(266, "VertexPinCollector::copy not supported."); return nullptr; diff --git a/search/VisitPathGroupVertices.cc b/search/VisitPathGroupVertices.cc index 36cea68b..e2179313 100644 --- a/search/VisitPathGroupVertices.cc +++ b/search/VisitPathGroupVertices.cc @@ -70,7 +70,7 @@ public: VertexPathSetMap *matching_path_map, const StaState *sta); virtual ~PathGroupPathVisitor(); - virtual VertexVisitor *copy(); + virtual VertexVisitor *copy() const; virtual void visit(Vertex *vertex); protected: @@ -232,7 +232,7 @@ PathGroupPathVisitor::~PathGroupPathVisitor() } VertexVisitor * -PathGroupPathVisitor::copy() +PathGroupPathVisitor::copy() const { return new PathGroupPathVisitor(visitor_, bkwd_iter_, matching_path_map_, sta_);