#include "EigenBaseTrack.h" namespace ByteTrackEigen { // Initialize the static member variable _count to 0. int BaseTrack::_count = 0; // Default constructor: Initializes a new track with default values. BaseTrack::BaseTrack() : track_id(0), is_activated(false), state(TrackState::New), curr_feature(0), score(0), start_frame(0), frame_id(0), time_since_update(0), location(std::numeric_limits::infinity(), std::numeric_limits::infinity()) {} // Constructor with score: Initializes a new track with a specified score. BaseTrack::BaseTrack(float score) : track_id(0), is_activated(false), state(TrackState::New), curr_feature(0), score(score), start_frame(0), frame_id(0), time_since_update(0), location(std::numeric_limits::infinity(), std::numeric_limits::infinity()) {} // end_frame: Returns the current frame ID of the track. int BaseTrack::end_frame() const { return this->frame_id; } // next_id: Increments and returns the next unique track ID. int BaseTrack::next_id() { return ++_count; } // activate: Placeholder for activating the track. Throws a runtime error if not implemented. void BaseTrack::activate() { throw std::runtime_error("NotImplementedError"); } // predict: Placeholder for predicting the next state of the track. Throws a runtime error if not implemented. void BaseTrack::predict() { throw std::runtime_error("NotImplementedError"); } // update: Placeholder for updating the track. Throws a runtime error if not implemented. void BaseTrack::update() { throw std::runtime_error("NotImplementedError"); } // mark_lost: Marks the track as lost. void BaseTrack::mark_lost() { this->state = TrackState::Lost; } // mark_removed: Marks the track as removed. void BaseTrack::mark_removed() { this->state = TrackState::Removed; } // resetCount: Resets the static track ID counter to 0. void BaseTrack::reset_count() { _count = 0; } // Getter functions below provide safe access to the track's properties. bool BaseTrack::get_is_activated() const { return this->is_activated; } TrackState BaseTrack::get_state() const { return this->state; } float BaseTrack::get_score() const { return this->score; } int BaseTrack::get_start_frame() const { return this->start_frame; } int BaseTrack::get_frame_id() const { return this->frame_id; } int BaseTrack::get_track_id() const { return this->track_id; } }