[Lldb-commits] [lldb] r244681 - Added missing files from checking regarding:
Greg Clayton via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 11 14:49:33 PDT 2015
Author: gclayton
Date: Tue Aug 11 16:49:32 2015
New Revision: 244681
URL: http://llvm.org/viewvc/llvm-project?rev=244681&view=rev
Log:
Added missing files from checking regarding:
http://reviews.llvm.org/D8712
Added:
lldb/trunk/include/lldb/Symbol/TypeSystem.h
lldb/trunk/source/Symbol/TypeSystem.cpp
Added: lldb/trunk/include/lldb/Symbol/TypeSystem.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=244681&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Symbol/TypeSystem.h (added)
+++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Tue Aug 11 16:49:32 2015
@@ -0,0 +1,331 @@
+//===-- TypeSystem.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_TypeSystem_h_
+#define liblldb_TypeSystem_h_
+
+#include <string>
+#include "lldb/lldb-private.h"
+#include "lldb/Core/ClangForward.h"
+#include "clang/AST/Type.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+// Interface for representing the Type Systems in different languages.
+//----------------------------------------------------------------------
+class TypeSystem
+{
+public:
+ //----------------------------------------------------------------------
+ // Constructors and Destructors
+ //----------------------------------------------------------------------
+ TypeSystem ();
+
+ virtual ~TypeSystem ();
+
+ virtual ClangASTContext *
+ AsClangASTContext() = 0;
+
+ //----------------------------------------------------------------------
+ // Tests
+ //----------------------------------------------------------------------
+
+ virtual bool
+ IsArrayType (void * type,
+ ClangASTType *element_type,
+ uint64_t *size,
+ bool *is_incomplete) = 0;
+
+ virtual bool
+ IsAggregateType (void * type) = 0;
+
+ virtual bool
+ IsCharType (void * type) = 0;
+
+ virtual bool
+ IsCompleteType (void * type) = 0;
+
+ virtual bool
+ IsDefined(void * type) = 0;
+
+ virtual bool
+ IsFloatingPointType (void * type, uint32_t &count, bool &is_complex) = 0;
+
+ virtual bool
+ IsFunctionType (void * type, bool *is_variadic_ptr) = 0;
+
+ virtual size_t
+ GetNumberOfFunctionArguments (void * type) = 0;
+
+ virtual ClangASTType
+ GetFunctionArgumentAtIndex (void * type, const size_t index) = 0;
+
+ virtual bool
+ IsFunctionPointerType (void * type) = 0;
+
+ virtual bool
+ IsIntegerType (void * type, bool &is_signed) = 0;
+
+ virtual bool
+ IsPossibleDynamicType (void * type,
+ ClangASTType *target_type, // Can pass NULL
+ bool check_cplusplus,
+ bool check_objc) = 0;
+
+ virtual bool
+ IsPointerType (void * type, ClangASTType *pointee_type) = 0;
+
+ virtual bool
+ IsScalarType (void * type) = 0;
+
+ virtual bool
+ IsVoidType (void * type) = 0;
+
+ //----------------------------------------------------------------------
+ // Type Completion
+ //----------------------------------------------------------------------
+
+ virtual bool
+ GetCompleteType (void * type) = 0;
+
+ //----------------------------------------------------------------------
+ // AST related queries
+ //----------------------------------------------------------------------
+
+ virtual uint32_t
+ GetPointerByteSize () = 0;
+
+ //----------------------------------------------------------------------
+ // Accessors
+ //----------------------------------------------------------------------
+
+ virtual ConstString
+ GetTypeName (void * type) = 0;
+
+ virtual uint32_t
+ GetTypeInfo (void * type, ClangASTType *pointee_or_element_clang_type) = 0;
+
+ virtual lldb::LanguageType
+ GetMinimumLanguage (void * type) = 0;
+
+ virtual lldb::TypeClass
+ GetTypeClass (void * type) = 0;
+
+ //----------------------------------------------------------------------
+ // Creating related types
+ //----------------------------------------------------------------------
+
+ virtual ClangASTType
+ GetArrayElementType (void * type, uint64_t *stride) = 0;
+
+ virtual ClangASTType
+ GetCanonicalType (void * type) = 0;
+
+ // Returns -1 if this isn't a function of if the function doesn't have a prototype
+ // Returns a value >= 0 if there is a prototype.
+ virtual int
+ GetFunctionArgumentCount (void * type) = 0;
+
+ virtual ClangASTType
+ GetFunctionArgumentTypeAtIndex (void * type, size_t idx) = 0;
+
+ virtual ClangASTType
+ GetFunctionReturnType (void * type) = 0;
+
+ virtual size_t
+ GetNumMemberFunctions (void * type) = 0;
+
+ virtual TypeMemberFunctionImpl
+ GetMemberFunctionAtIndex (void * type, size_t idx) = 0;
+
+ virtual ClangASTType
+ GetPointeeType (void * type) = 0;
+
+ virtual ClangASTType
+ GetPointerType (void * type) = 0;
+
+ //----------------------------------------------------------------------
+ // Exploring the type
+ //----------------------------------------------------------------------
+
+ virtual uint64_t
+ GetBitSize (void * type, ExecutionContextScope *exe_scope) = 0;
+
+ virtual lldb::Encoding
+ GetEncoding (void * type, uint64_t &count) = 0;
+
+ virtual lldb::Format
+ GetFormat (void * type) = 0;
+
+ virtual uint32_t
+ GetNumChildren (void * type, bool omit_empty_base_classes) = 0;
+
+ virtual lldb::BasicType
+ GetBasicTypeEnumeration (void * type) = 0;
+
+ virtual uint32_t
+ GetNumFields (void * type) = 0;
+
+ virtual ClangASTType
+ GetFieldAtIndex (void * type,
+ size_t idx,
+ std::string& name,
+ uint64_t *bit_offset_ptr,
+ uint32_t *bitfield_bit_size_ptr,
+ bool *is_bitfield_ptr) = 0;
+
+ virtual ClangASTType
+ GetChildClangTypeAtIndex (void * type,
+ ExecutionContext *exe_ctx,
+ size_t idx,
+ bool transparent_pointers,
+ bool omit_empty_base_classes,
+ bool ignore_array_bounds,
+ std::string& child_name,
+ uint32_t &child_byte_size,
+ int32_t &child_byte_offset,
+ uint32_t &child_bitfield_bit_size,
+ uint32_t &child_bitfield_bit_offset,
+ bool &child_is_base_class,
+ bool &child_is_deref_of_parent,
+ ValueObject *valobj) = 0;
+
+ // Lookup a child given a name. This function will match base class names
+ // and member member names in "clang_type" only, not descendants.
+ virtual uint32_t
+ GetIndexOfChildWithName (void * type,
+ const char *name,
+ bool omit_empty_base_classes) = 0;
+
+ // Lookup a child member given a name. This function will match member names
+ // only and will descend into "clang_type" children in search for the first
+ // member in this class, or any base class that matches "name".
+ // TODO: Return all matches for a given name by returning a vector<vector<uint32_t>>
+ // so we catch all names that match a given child name, not just the first.
+ virtual size_t
+ GetIndexOfChildMemberWithName (void * type,
+ const char *name,
+ bool omit_empty_base_classes,
+ std::vector<uint32_t>& child_indexes) = 0;
+
+ //----------------------------------------------------------------------
+ // Dumping types
+ //----------------------------------------------------------------------
+ virtual void
+ DumpValue (void * type,
+ ExecutionContext *exe_ctx,
+ Stream *s,
+ lldb::Format format,
+ const DataExtractor &data,
+ lldb::offset_t data_offset,
+ size_t data_byte_size,
+ uint32_t bitfield_bit_size,
+ uint32_t bitfield_bit_offset,
+ bool show_types,
+ bool show_summary,
+ bool verbose,
+ uint32_t depth) = 0;
+
+ virtual bool
+ DumpTypeValue (void * type,
+ Stream *s,
+ lldb::Format format,
+ const DataExtractor &data,
+ lldb::offset_t data_offset,
+ size_t data_byte_size,
+ uint32_t bitfield_bit_size,
+ uint32_t bitfield_bit_offset,
+ ExecutionContextScope *exe_scope) = 0;
+
+ virtual void
+ DumpTypeDescription (void * type) = 0; // Dump to stdout
+
+ virtual void
+ DumpTypeDescription (void * type, Stream *s) = 0;
+
+ //----------------------------------------------------------------------
+ // TODO: These methods appear unused. Should they be removed?
+ //----------------------------------------------------------------------
+
+ virtual bool
+ IsRuntimeGeneratedType (void * type) = 0;
+
+ virtual void
+ DumpSummary (void * type,
+ ExecutionContext *exe_ctx,
+ Stream *s,
+ const DataExtractor &data,
+ lldb::offset_t data_offset,
+ size_t data_byte_size) = 0;
+
+ // Converts "s" to a floating point value and place resulting floating
+ // point bytes in the "dst" buffer.
+ virtual size_t
+ ConvertStringToFloatValue (void * type,
+ const char *s,
+ uint8_t *dst,
+ size_t dst_size) = 0;
+
+ //----------------------------------------------------------------------
+ // TODO: Determine if these methods should move to ClangASTContext.
+ //----------------------------------------------------------------------
+
+ virtual bool
+ IsPointerOrReferenceType (void * type, ClangASTType *pointee_type) = 0;
+
+ virtual unsigned
+ GetTypeQualifiers(void * type) = 0;
+
+ virtual bool
+ IsCStringType (void * type, uint32_t &length) = 0;
+
+ virtual size_t
+ GetTypeBitAlign (void * type) = 0;
+
+ virtual ClangASTType
+ GetBasicTypeFromAST (void * type, lldb::BasicType basic_type) = 0;
+
+ virtual bool
+ IsBeingDefined (void * type) = 0;
+
+ virtual bool
+ IsConst(void * type) = 0;
+
+ virtual uint32_t
+ IsHomogeneousAggregate (void * type, ClangASTType* base_type_ptr) = 0;
+
+ virtual bool
+ IsPolymorphicClass (void * type) = 0;
+
+ virtual bool
+ IsTypedefType (void * type) = 0;
+
+ // If the current object represents a typedef type, get the underlying type
+ virtual ClangASTType
+ GetTypedefedType (void * type) = 0;
+
+ virtual bool
+ IsVectorType (void * type,
+ ClangASTType *element_type,
+ uint64_t *size) = 0;
+
+ virtual ClangASTType
+ GetFullyUnqualifiedType (void * type) = 0;
+
+ virtual ClangASTType
+ GetNonReferenceType (void * type) = 0;
+
+ virtual bool
+ IsReferenceType (void * type, ClangASTType *pointee_type, bool* is_rvalue) = 0;
+};
+
+} // namespace lldb_private
+
+#endif // #ifndef liblldb_TypeSystem_h_
Added: lldb/trunk/source/Symbol/TypeSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/TypeSystem.cpp?rev=244681&view=auto
==============================================================================
--- lldb/trunk/source/Symbol/TypeSystem.cpp (added)
+++ lldb/trunk/source/Symbol/TypeSystem.cpp Tue Aug 11 16:49:32 2015
@@ -0,0 +1,20 @@
+//
+// TypeSystem.cpp
+// lldb
+//
+// Created by Ryan Brown on 3/29/15.
+//
+//
+
+#include "lldb/Symbol/TypeSystem.h"
+
+using namespace lldb_private;
+
+TypeSystem::TypeSystem()
+{
+}
+
+TypeSystem::~TypeSystem()
+{
+
+}
More information about the lldb-commits
mailing list