diff options
Diffstat (limited to 'include/lldb/Target/PathMappingList.h')
-rw-r--r-- | include/lldb/Target/PathMappingList.h | 252 |
1 files changed, 109 insertions, 143 deletions
diff --git a/include/lldb/Target/PathMappingList.h b/include/lldb/Target/PathMappingList.h index 1a486c4642dc..4e5a5693235a 100644 --- a/include/lldb/Target/PathMappingList.h +++ b/include/lldb/Target/PathMappingList.h @@ -21,153 +21,119 @@ namespace lldb_private { -class PathMappingList -{ +class PathMappingList { public: + typedef void (*ChangedCallback)(const PathMappingList &path_list, + void *baton); + + //------------------------------------------------------------------ + // Constructors and Destructors + //------------------------------------------------------------------ + PathMappingList(); + + PathMappingList(ChangedCallback callback, void *callback_baton); + + PathMappingList(const PathMappingList &rhs); + + ~PathMappingList(); + + const PathMappingList &operator=(const PathMappingList &rhs); + + void Append(const ConstString &path, const ConstString &replacement, + bool notify); + + void Append(const PathMappingList &rhs, bool notify); + + void Clear(bool notify); + + // By default, dump all pairs. + void Dump(Stream *s, int pair_index = -1); + + bool IsEmpty() const { return m_pairs.empty(); } + + size_t GetSize() const { return m_pairs.size(); } + + bool GetPathsAtIndex(uint32_t idx, ConstString &path, + ConstString &new_path) const; + + void Insert(const ConstString &path, const ConstString &replacement, + uint32_t insert_idx, bool notify); + + bool Remove(size_t index, bool notify); + + bool Remove(const ConstString &path, bool notify); + + bool Replace(const ConstString &path, const ConstString &replacement, + bool notify); + + bool Replace(const ConstString &path, const ConstString &replacement, + uint32_t index, bool notify); + bool RemapPath(const ConstString &path, ConstString &new_path) const; + + //------------------------------------------------------------------ + /// Remaps a source file given \a path into \a new_path. + /// + /// Remaps \a path if any source remappings match. This function + /// does NOT stat the file system so it can be used in tight loops + /// where debug info is being parsed. + /// + /// @param[in] path + /// The original source file path to try and remap. + /// + /// @param[out] new_path + /// The newly remapped filespec that is may or may not exist. + /// + /// @return + /// /b true if \a path was successfully located and \a new_path + /// is filled in with a new source path, \b false otherwise. + //------------------------------------------------------------------ + bool RemapPath(llvm::StringRef path, std::string &new_path) const; + bool RemapPath(const char *, std::string &) const = delete; + + bool ReverseRemapPath(const ConstString &path, ConstString &new_path) const; + + //------------------------------------------------------------------ + /// Finds a source file given a file spec using the path remappings. + /// + /// Tries to resolve \a orig_spec by checking the path remappings. + /// It makes sure the file exists by checking with the file system, + /// so this call can be expensive if the remappings are on a network + /// or are even on the local file system, so use this function + /// sparingly (not in a tight debug info parsing loop). + /// + /// @param[in] orig_spec + /// The original source file path to try and remap. + /// + /// @param[out] new_spec + /// The newly remapped filespec that is guaranteed to exist. + /// + /// @return + /// /b true if \a orig_spec was successfully located and + /// \a new_spec is filled in with an existing file spec, + /// \b false otherwise. + //------------------------------------------------------------------ + bool FindFile(const FileSpec &orig_spec, FileSpec &new_spec) const; + + uint32_t FindIndexForPath(const ConstString &path) const; + + uint32_t GetModificationID() const { return m_mod_id; } - typedef void (*ChangedCallback) (const PathMappingList &path_list, - void *baton); - - //------------------------------------------------------------------ - // Constructors and Destructors - //------------------------------------------------------------------ - PathMappingList (); - - PathMappingList (ChangedCallback callback, - void *callback_baton); - - PathMappingList (const PathMappingList &rhs); - - ~PathMappingList (); - - const PathMappingList & - operator =(const PathMappingList &rhs); - - void - Append (const ConstString &path, const ConstString &replacement, bool notify); - - void - Append (const PathMappingList &rhs, bool notify); - - void - Clear (bool notify); - - // By default, dump all pairs. - void - Dump (Stream *s, int pair_index=-1); - - bool - IsEmpty() const - { - return m_pairs.empty(); - } - - size_t - GetSize () const - { - return m_pairs.size(); - } - - bool - GetPathsAtIndex (uint32_t idx, ConstString &path, ConstString &new_path) const; - - void - Insert (const ConstString &path, - const ConstString &replacement, - uint32_t insert_idx, - bool notify); - - bool - Remove (size_t index, bool notify); - - bool - Remove (const ConstString &path, bool notify); - - bool - Replace (const ConstString &path, - const ConstString &replacement, - bool notify); - - bool - Replace (const ConstString &path, - const ConstString &replacement, - uint32_t index, - bool notify); - bool - RemapPath (const ConstString &path, ConstString &new_path) const; - - //------------------------------------------------------------------ - /// Remaps a source file given \a path into \a new_path. - /// - /// Remaps \a path if any source remappings match. This function - /// does NOT stat the file system so it can be used in tight loops - /// where debug info is being parsed. - /// - /// @param[in] path - /// The original source file path to try and remap. - /// - /// @param[out] new_path - /// The newly remapped filespec that is may or may not exist. - /// - /// @return - /// /b true if \a path was successfully located and \a new_path - /// is filled in with a new source path, \b false otherwise. - //------------------------------------------------------------------ - bool - RemapPath (const char *path, std::string &new_path) const; - - bool - ReverseRemapPath (const ConstString &path, ConstString &new_path) const; - - //------------------------------------------------------------------ - /// Finds a source file given a file spec using the path remappings. - /// - /// Tries to resolve \a orig_spec by checking the path remappings. - /// It makes sure the file exists by checking with the file system, - /// so this call can be expensive if the remappings are on a network - /// or are even on the local file system, so use this function - /// sparingly (not in a tight debug info parsing loop). - /// - /// @param[in] orig_spec - /// The original source file path to try and remap. - /// - /// @param[out] new_spec - /// The newly remapped filespec that is guaranteed to exist. - /// - /// @return - /// /b true if \a orig_spec was successfully located and - /// \a new_spec is filled in with an existing file spec, - /// \b false otherwise. - //------------------------------------------------------------------ - bool - FindFile (const FileSpec &orig_spec, FileSpec &new_spec) const; - - uint32_t - FindIndexForPath (const ConstString &path) const; - - uint32_t - GetModificationID() const - { - return m_mod_id; - } protected: - typedef std::pair <ConstString, ConstString> pair; - typedef std::vector <pair> collection; - typedef collection::iterator iterator; - typedef collection::const_iterator const_iterator; - - iterator - FindIteratorForPath (const ConstString &path); - - const_iterator - FindIteratorForPath (const ConstString &path) const; - - collection m_pairs; - ChangedCallback m_callback; - void * m_callback_baton; - uint32_t m_mod_id; // Incremented anytime anything is added or removed. + typedef std::pair<ConstString, ConstString> pair; + typedef std::vector<pair> collection; + typedef collection::iterator iterator; + typedef collection::const_iterator const_iterator; + + iterator FindIteratorForPath(const ConstString &path); + + const_iterator FindIteratorForPath(const ConstString &path) const; + + collection m_pairs; + ChangedCallback m_callback; + void *m_callback_baton; + uint32_t m_mod_id; // Incremented anytime anything is added or removed. }; } // namespace lldb_private -#endif // liblldb_PathMappingList_h_ +#endif // liblldb_PathMappingList_h_ |