UUID.h revision 24943d2ee8bfaa7cf5893e4709143924157a5c1e
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- UUID.h --------------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_UUID_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_UUID_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass UUID
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    typedef uint8_t ValueType[16];
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Constructors and Destructors
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    UUID ();
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    UUID (const UUID& rhs);
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    UUID (const void *uuid_bytes, uint32_t num_uuid_bytes);
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    UUID (const uuid_t *uuid);
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~UUID ();
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const UUID&
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator=(const UUID& rhs);
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Clear ();
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Dump (Stream *s) const;
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const void *
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetBytes() const;
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static size_t
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetByteSize();
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid () const;
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetBytes (const void *uuid_bytes);
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    char *
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetAsCString (char *dst, size_t dst_len) const;
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetfromCString (const char *c_str);
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Classes that inherit from UUID can see and modify these
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ValueType m_uuid;
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator == (const UUID &lhs, const UUID &rhs);
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator != (const UUID &lhs, const UUID &rhs);
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator <  (const UUID &lhs, const UUID &rhs);
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator <= (const UUID &lhs, const UUID &rhs);
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator >  (const UUID &lhs, const UUID &rhs);
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool operator >= (const UUID &lhs, const UUID &rhs);
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_UUID_h_
81