diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 7bae7413..f4540170 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -372,6 +372,37 @@ const SourceLocation& Worker::GetSourceLocation( int32_t srcloc ) const } } +std::vector Worker::GetMatchingSourceLocation( const char* query ) const +{ + std::vector match; + + const auto sz = m_data.sourceLocationExpand.size(); + for( size_t i=0; isecond; + const auto str = GetString( srcloc.name.active ? srcloc.name : srcloc.function ); + if( strstr( str, query ) != nullptr ) + { + match.push_back( (int32_t)i ); + } + } + + for( auto& srcloc : m_data.sourceLocationPayload ) + { + const auto str = GetString( srcloc->name.active ? srcloc->name : srcloc->function ); + if( strstr( str, query ) != nullptr ) + { + auto it = m_data.sourceLocationPayloadMap.find( srcloc ); + assert( it != m_data.sourceLocationPayloadMap.end() ); + match.push_back( it->second ); + } + } + + return match; +} + void Worker::Exec() { timeval tv; diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index ea17adf4..fcaf6ee5 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -101,6 +101,8 @@ public: const char* GetThreadString( uint64_t id ) const; const SourceLocation& GetSourceLocation( int32_t srcloc ) const; + std::vector GetMatchingSourceLocation( const char* query ) const; + NonRecursiveBenaphore& GetMbpsDataLock() { return m_mbpsData.lock; } const std::vector& GetMbpsData() const { return m_mbpsData.mbps; } float GetCompRatio() const { return m_mbpsData.compRatio; }