#pragma once #include #include #include #include #include "StringInterner.h" #include "VideoInfo.h" #include "HashtagInfo.h" #include "SoundInfo.h" #include "StringPtrUtils.h" // Needed for HashtagMapType/SoundMapType in function signatures bool parseQuotedStringValue(const std::string& str, size_t& pos, std::string& value); bool parseUnquotedValue(const std::string& str, size_t& pos, std::string& value); bool extractValue(const std::string& line, const std::string& key, std::string& value); bool extractSubObject(const std::string& line, const std::string& key, std::string& subObj); bool parseLongLong(const std::string& s, long& result); bool parseLineForHashtags(const std::string& line, int inputOrder, StringInterner& interner, VideoInfo& outVideo, std::string& outText); bool parseLineForSounds(const std::string& line, int inputOrder, StringInterner& interner, VideoInfo& outVideo, const std::string*& outMusicIdPtr, const std::string*& outMusicNamePtr, const std::string*& outMusicAuthorPtr); void extractHashtags(const std::string& text, std::unordered_map& hashtagData, StringInterner& interner, const VideoInfo& video); void extractSortAndPrintTop3Videos(std::ofstream& fout, TopKVideoHolder& topVideos);