From 9941412d434a70837ad9ed0f130b21ecfb06ab72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu>
Date: Mon, 27 May 2019 11:35:16 +0200
Subject: [PATCH] track_matrix assuming emplaced features (remove capture
 pointer) and new add function

---
 include/core/processor/track_matrix.h |  5 +++--
 src/processor/track_matrix.cpp        | 21 ++++++++++++---------
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/include/core/processor/track_matrix.h b/include/core/processor/track_matrix.h
index 8a976ea84..ca7e71d1a 100644
--- a/include/core/processor/track_matrix.h
+++ b/include/core/processor/track_matrix.h
@@ -78,8 +78,9 @@ class TrackMatrix
         TrackMatrix();
         virtual ~TrackMatrix();
 
-        void            newTrack    (CaptureBasePtr _cap, FeatureBasePtr _ftr);
-        void            add         (size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr);
+        void            newTrack    (FeatureBasePtr _ftr);
+        void            add         (const SizeStd& _track_id, const FeatureBasePtr& _ftr);
+        void            add         (const FeatureBasePtr& _ftr_existing, const FeatureBasePtr&  _ftr_new);
         void            remove      (FeatureBasePtr _ftr);
         void            remove      (const SizeStd&  _track_id);
         void            remove      (CaptureBasePtr _cap);
diff --git a/src/processor/track_matrix.cpp b/src/processor/track_matrix.cpp
index e9fdc9bf3..9b5a4fa25 100644
--- a/src/processor/track_matrix.cpp
+++ b/src/processor/track_matrix.cpp
@@ -38,21 +38,24 @@ Snapshot TrackMatrix::snapshot(CaptureBasePtr _capture)
         return Snapshot();
 }
 
-void TrackMatrix::newTrack(CaptureBasePtr _cap, FeatureBasePtr _ftr)
+void TrackMatrix::newTrack(FeatureBasePtr _ftr)
 {
     track_id_count_ ++;
-    add(track_id_count_, _cap, _ftr);
+    add(track_id_count_, _ftr);
 }
 
-void TrackMatrix::add(size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr)
+void TrackMatrix::add(const SizeStd& _track_id, const FeatureBasePtr& _ftr)
 {
-    assert( (_track_id > 0) && (_track_id <= track_id_count_) && "Provided track ID does not exist. Use newTrack() instead.");
+    assert( tracks_.count(_track_id) != 0 &&  "Provided track ID does not exist. Use newTrack() instead.");
+    assert( _ftr->getCapture() != nullptr && "adding a feature not linked to any capture");
 
-    _ftr->setTrackId(_track_id);
-    if (_cap != _ftr->getCapture())
-        _ftr->setCapture(_cap);
-    tracks_[_track_id].emplace(_cap->getTimeStamp(), _ftr);
-    snapshots_[_cap->id()].emplace(_track_id, _ftr);        // will create new snapshot if _cap_id   is not present
+    tracks_[_track_id].emplace(_ftr->getCapture()->getTimeStamp(), _ftr);
+    snapshots_[_ftr->getCapture()->id()].emplace(_track_id, _ftr);        // will create new snapshot if _cap_id   is not present
+}
+
+void TrackMatrix::add(const FeatureBasePtr& _ftr_existing,const FeatureBasePtr& _ftr_new)
+{
+    add(_ftr_existing->trackId(), _ftr_new);
 }
 
 void TrackMatrix::remove(const SizeStd& _track_id)
-- 
GitLab