From 5a442f123efb60f6b2dbd6094526798e9388830a Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Fri, 23 Dec 2022 18:48:05 +0100 Subject: [PATCH] Calculate diff between source files. --- server/TracyView.hpp | 2 ++ server/TracyView_Compare.cpp | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/server/TracyView.hpp b/server/TracyView.hpp index 6f57eb7d..3ae4d316 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -744,6 +744,7 @@ private: bool diffDone = false; std::vector thisUnique; std::vector secondUnique; + std::vector> diffs; void ResetSelection() { @@ -768,6 +769,7 @@ private: diffDone = false; thisUnique.clear(); secondUnique.clear(); + diffs.clear(); } } m_compare; diff --git a/server/TracyView_Compare.cpp b/server/TracyView_Compare.cpp index ac2f2bcd..1d2cad1c 100644 --- a/server/TracyView_Compare.cpp +++ b/server/TracyView_Compare.cpp @@ -1,4 +1,7 @@ #include +#include + +#include "../dtl/dtl.hpp" #include "TracyImGui.hpp" #include "TracyFileRead.hpp" @@ -299,6 +302,14 @@ void View::DrawCompare() } else if( tv.second.len != it->second.len || memcmp( tv.second.data, it->second.data, tv.second.len ) != 0 ) { + auto src0 = SplitLines( tv.second.data, tv.second.len ); + auto src1 = SplitLines( it->second.data, it->second.len ); + dtl::Diff> diff { src0, src1 }; + diff.compose(); + diff.composeUnifiedHunks(); + std::ostringstream stream; + diff.printUnifiedFormat( stream ); + m_compare.diffs.emplace_back( std::make_pair( tv.first, stream.str() ) ); } } for( auto& ov : ofc ) @@ -312,6 +323,7 @@ void View::DrawCompare() std::sort( m_compare.thisUnique.begin(), m_compare.thisUnique.end(), []( const auto& lhs, const auto& rhs ) { return strcmp( lhs, rhs ) < 0; } ); std::sort( m_compare.secondUnique.begin(), m_compare.secondUnique.end(), []( const auto& lhs, const auto& rhs ) { return strcmp( lhs, rhs ) < 0; } ); + std::sort( m_compare.diffs.begin(), m_compare.diffs.end(), []( const auto& lhs, const auto& rhs ) { return strcmp( lhs.first, rhs.first ) < 0; } ); } } }