/usr/lib/llvm-3.4/include/lldb/Target/PathMappingList.h is in liblldb-3.4-dev 1:3.4.2-13.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | //===-- PathMappingList.h ---------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_PathMappingList_h_
#define liblldb_PathMappingList_h_
// C Includes
// C++ Includes
#include <map>
#include <vector>
// Other libraries and framework includes
#include "lldb/Core/ConstString.h"
#include "lldb/Core/Error.h"
// Project includes
namespace lldb_private {
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 (off_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;
//------------------------------------------------------------------
/// 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.
};
} // namespace lldb_private
#endif // liblldb_PathMappingList_h_
|