| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- //===-- UserID.h ------------------------------------------------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLDB_UTILITY_USERID_H
- #define LLDB_UTILITY_USERID_H
- #include "lldb/lldb-defines.h"
- #include "lldb/lldb-types.h"
- namespace lldb_private {
- class Stream;
- /// \class UserID UserID.h "lldb/Core/UserID.h"
- /// A mix in class that contains a generic user ID.
- ///
- /// UserID is designed as a mix in class that can contain an integer based
- /// unique identifier for a variety of objects in lldb.
- ///
- /// The value for this identifier is chosen by each parser plug-in. A value
- /// should be chosen that makes sense for each kind of object and should allow
- /// quick access to further and more in depth parsing.
- ///
- /// Symbol table entries can use this to store the original symbol table
- /// index, functions can use it to store the symbol table index or the
- /// DWARF offset.
- struct UserID {
- /// Construct with optional user ID.
- UserID(lldb::user_id_t uid = LLDB_INVALID_UID) : m_uid(uid) {}
- /// Destructor.
- ~UserID() {}
- /// Clears the object state.
- ///
- /// Clears the object contents back to a default invalid state.
- void Clear() { m_uid = LLDB_INVALID_UID; }
- /// Get accessor for the user ID.
- ///
- /// \return
- /// The user ID.
- lldb::user_id_t GetID() const { return m_uid; }
- /// Set accessor for the user ID.
- ///
- /// \param[in] uid
- /// The new user ID.
- void SetID(lldb::user_id_t uid) { m_uid = uid; }
- /// Unary predicate function object that can search for a matching user ID.
- ///
- /// Function object that can be used on any class that inherits from UserID:
- /// \code
- /// iterator pos;
- /// pos = std::find_if (coll.begin(), coll.end(), UserID::IDMatches(blockID));
- /// \endcode
- class IDMatches {
- public:
- /// Construct with the user ID to look for.
- IDMatches(lldb::user_id_t uid) : m_uid(uid) {}
- /// Unary predicate function object callback.
- bool operator()(const UserID &rhs) const { return m_uid == rhs.GetID(); }
- private:
- // Member variables.
- const lldb::user_id_t m_uid; ///< The user ID we are looking for
- };
- protected:
- // Member variables.
- lldb::user_id_t m_uid; ///< The user ID that uniquely identifies an object.
- };
- inline bool operator==(const UserID &lhs, const UserID &rhs) {
- return lhs.GetID() == rhs.GetID();
- }
- inline bool operator!=(const UserID &lhs, const UserID &rhs) {
- return lhs.GetID() != rhs.GetID();
- }
- /// Stream the UserID object to a Stream.
- Stream &operator<<(Stream &strm, const UserID &uid);
- } // namespace lldb_private
- #endif // LLDB_UTILITY_USERID_H
|