Devirtualize NameAndLocation query on trackers

This commit is contained in:
Martin Hořeňovský 2020-06-13 19:26:17 +02:00
parent de53773e46
commit b74996a29c
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
2 changed files with 17 additions and 11 deletions

View File

@ -64,15 +64,12 @@ namespace TestCaseTracking {
} }
TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ) TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ):
: m_nameAndLocation( nameAndLocation ), ITracker(nameAndLocation),
m_ctx( ctx ), m_ctx( ctx ),
m_parent( parent ) m_parent( parent )
{} {}
NameAndLocation const& TrackerBase::nameAndLocation() const {
return m_nameAndLocation;
}
bool TrackerBase::isComplete() const { bool TrackerBase::isComplete() const {
return m_runState == CompletedSuccessfully || m_runState == Failed; return m_runState == CompletedSuccessfully || m_runState == Failed;
} }

View File

@ -29,15 +29,26 @@ namespace TestCaseTracking {
} }
}; };
struct ITracker; class ITracker;
using ITrackerPtr = std::shared_ptr<ITracker>; using ITrackerPtr = std::shared_ptr<ITracker>;
struct ITracker { class ITracker {
virtual ~ITracker(); NameAndLocation m_nameAndLocation;
public:
ITracker(NameAndLocation const& nameAndLoc) :
m_nameAndLocation(nameAndLoc)
{}
// static queries // static queries
virtual NameAndLocation const& nameAndLocation() const = 0; NameAndLocation const& nameAndLocation() const {
return m_nameAndLocation;
}
virtual ~ITracker();
// dynamic queries // dynamic queries
virtual bool isComplete() const = 0; // Successfully completed or failed virtual bool isComplete() const = 0; // Successfully completed or failed
@ -98,7 +109,6 @@ namespace TestCaseTracking {
}; };
using Children = std::vector<ITrackerPtr>; using Children = std::vector<ITrackerPtr>;
NameAndLocation m_nameAndLocation;
TrackerContext& m_ctx; TrackerContext& m_ctx;
ITracker* m_parent; ITracker* m_parent;
Children m_children; Children m_children;
@ -107,7 +117,6 @@ namespace TestCaseTracking {
public: public:
TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ); TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent );
NameAndLocation const& nameAndLocation() const override;
bool isComplete() const override; bool isComplete() const override;
bool isSuccessfullyCompleted() const override; bool isSuccessfullyCompleted() const override;
bool isOpen() const override; bool isOpen() const override;