#pragma once const std::set& getModuleSymbols(SgStatement* func); void getModulesAndFunctions(SgFile* file, std::vector& modulesAndFunctions); void findModulesInFile(SgFile* file, std::vector& modules); std::map> createMapOfModuleUses(SgFile* file); void fillModuleUse(SgFile* file, std::map>& moduleUses, std::map& moduleDecls); void filterModuleUse(std::map>& moduleUses, std::map& moduleDecls); SgSymbol* getNameInLocation(SgStatement* func, const std::string& varName, const std::string& locName); SgSymbol* getNameInLocation(SgSymbol* curr, SgStatement* location); void fillUsedModulesInFunction(SgStatement* st, std::vector& useStats); void fillUseStatement(SgStatement* st, std::set& useMod, std::map>>& modByUse, std::map>>& modByUseOnly); void fixUseOnlyStmt(SgFile* file, const std::vector& regs); std::map> moduleRefsByUseInFunction(SgStatement* stIn);