blob: 97af8d21336532ef978de2380c648ce11c6864f2 [file] [log] [blame]
//===-- SBType.h ------------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SBType_h_
#define LLDB_SBType_h_
#include "lldb/API/SBDefines.h"
namespace lldb {
class SBTypeMember;
class SBType
{
public:
SBType (void *ast = NULL, void *clang_type = NULL);
SBType (const SBType &rhs);
~SBType ();
#ifndef SWIG
const SBType &
operator =(const SBType &rhs);
#endif
bool
IsValid();
const char *
GetName();
uint64_t
GetByteSize();
lldb::Encoding
GetEncoding (uint32_t &count);
uint64_t
GetNumberChildren (bool omit_empty_base_classes);
bool
GetChildAtIndex (bool omit_empty_base_classes, uint32_t idx, SBTypeMember &member);
uint32_t
GetChildIndexForName (bool omit_empty_base_classes, const char *name);
bool
IsPointerType ();
SBType
GetPointeeType ();
static bool
IsPointerType (void *opaque_type);
bool
GetDescription (lldb::SBStream &description);
protected:
void *m_ast;
void *m_type;
};
class SBTypeMember
{
public:
SBTypeMember ();
SBTypeMember (const SBTypeMember &rhs);
#ifndef SWIG
const SBTypeMember&
operator =(const SBTypeMember &rhs);
#endif
~SBTypeMember ();
bool
IsBaseClass ();
bool
IsValid ();
void
Clear();
bool
IsBitfield ();
size_t
GetBitfieldWidth ();
size_t
GetBitfieldOffset ();
size_t
GetOffset ();
const char *
GetName ();
SBType
GetType();
SBType
GetParentType();
void
SetName (const char *name);
protected:
friend class SBType;
void *m_ast;
void *m_parent_type;
void *m_member_type;
char *m_member_name;
int32_t m_offset;
uint32_t m_bit_size;
uint32_t m_bit_offset;
bool m_is_base_class;
bool m_is_deref_of_paremt;
};
} // namespace lldb
#endif // LLDB_SBType_h_