124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBCompileUnit.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 LLDB_SBCompileUnit_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBCompileUnit_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 145f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBFileSpec.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBCompileUnit 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBCompileUnit (); 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBCompileUnit (const lldb::SBCompileUnit &rhs); 25538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBCompileUnit (); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const lldb::SBCompileUnit & 29538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const lldb::SBCompileUnit &rhs); 30538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid () const; 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBFileSpec 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetFileSpec () const; 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumLineEntries () const; 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBLineEntry 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetLineEntryAtIndex (uint32_t idx) const; 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindLineEntryIndex (uint32_t start_idx, 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t line, 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBFileSpec *inline_file_spec) const; 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham uint32_t 49d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham FindLineEntryIndex (uint32_t start_idx, 50d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham uint32_t line, 51d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham lldb::SBFileSpec *inline_file_spec, 52d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham bool exact) const; 53d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham 54b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen SBFileSpec 55b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen GetSupportFileAtIndex (uint32_t idx) const; 56b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen 57b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen uint32_t 58b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen GetNumSupportFiles () const; 59b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen 60b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen uint32_t 61b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full); 62a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 63a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton //------------------------------------------------------------------ 64a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// Get all types matching \a type_mask from debug info in this 65a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// compile unit. 66a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// 67a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// @param[in] type_mask 68a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// A bitfield that consists of one or more bits logically OR'ed 69a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// together from the lldb::TypeClass enumeration. This allows 70a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// you to request only structure types, or only class, struct 71a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// and union types. Passing in lldb::eTypeClassAny will return 72a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// all types found in the debug information for this compile 73a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// unit. 74a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// 75a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// @return 76a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// A list of types in this compile unit that match \a type_mask 77a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton //------------------------------------------------------------------ 78a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton lldb::SBTypeList 79a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton GetTypes (uint32_t type_mask = lldb::eTypeClassAny); 80b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator == (const lldb::SBCompileUnit &rhs) const; 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator != (const lldb::SBCompileUnit &rhs) const; 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice bool 8898f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice GetDescription (lldb::SBStream &description); 8998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 91c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton friend class SBAddress; 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBFrame; 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBSymbolContext; 94b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen friend class SBModule; 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBCompileUnit (lldb_private::CompileUnit *lldb_object_ptr); 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::CompileUnit * 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator->() const; 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const lldb_private::CompileUnit & 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator*() const; 10361ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice 10423b8abbe214c252028f6e09f79169529c846409dGreg Clayton lldb_private::CompileUnit * 10523b8abbe214c252028f6e09f79169529c846409dGreg Clayton get (); 10623b8abbe214c252028f6e09f79169529c846409dGreg Clayton 107dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton void 108dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton reset (lldb_private::CompileUnit *lldb_object_ptr); 109dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton 11063094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::CompileUnit *m_opaque_ptr; 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBCompileUnit_h_ 117