[Lldb-commits] [lldb] r215783 - Add functions to ClangASTContext to get integer types of a given byte size

Enrico Granata egranata at apple.com
Fri Aug 15 16:00:02 PDT 2014


Author: enrico
Date: Fri Aug 15 18:00:02 2014
New Revision: 215783

URL: http://llvm.org/viewvc/llvm-project?rev=215783&view=rev
Log:
Add functions to ClangASTContext to get integer types of a given byte size

Modified:
    lldb/trunk/include/lldb/Symbol/ClangASTContext.h
    lldb/trunk/source/Symbol/ClangASTContext.cpp

Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=215783&r1=215782&r2=215783&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Fri Aug 15 18:00:02 2014
@@ -393,6 +393,29 @@ public:
                            const ClangASTType &integer_qual_type);
     
     //------------------------------------------------------------------
+    // Integer type functions
+    //------------------------------------------------------------------
+    
+    ClangASTType
+    GetIntTypeFromBitSize (size_t bit_size, bool is_signed)
+    {
+        return GetIntTypeFromBitSize (getASTContext(), bit_size, is_signed);
+    }
+    
+    static ClangASTType
+    GetIntTypeFromBitSize (clang::ASTContext *ast,
+                           size_t bit_size, bool is_signed);
+    
+    ClangASTType
+    GetPointerSizedIntType (bool is_signed)
+    {
+        return GetPointerSizedIntType (getASTContext(), is_signed);
+    }
+    
+    static ClangASTType
+    GetPointerSizedIntType (clang::ASTContext *ast, bool is_signed);
+    
+    //------------------------------------------------------------------
     // Floating point functions
     //------------------------------------------------------------------
     

Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=215783&r1=215782&r2=215783&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Fri Aug 15 18:00:02 2014
@@ -1910,6 +1910,63 @@ ClangASTContext::CreateEnumerationType
 //  return false;
 //}
 
+ClangASTType
+ClangASTContext::GetIntTypeFromBitSize (clang::ASTContext *ast,
+                                        size_t bit_size, bool is_signed)
+{
+    if (ast)
+    {
+        if (is_signed)
+        {
+            if (bit_size == ast->getTypeSize(ast->SignedCharTy))
+                return ClangASTType(ast, ast->SignedCharTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->ShortTy))
+                return ClangASTType(ast, ast->ShortTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->IntTy))
+                return ClangASTType(ast, ast->IntTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->LongTy))
+                return ClangASTType(ast, ast->LongTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->LongLongTy))
+                return ClangASTType(ast, ast->LongLongTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->Int128Ty))
+                return ClangASTType(ast, ast->Int128Ty.getAsOpaquePtr());
+        }
+        else
+        {
+            if (bit_size == ast->getTypeSize(ast->UnsignedCharTy))
+                return ClangASTType(ast, ast->UnsignedCharTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->UnsignedShortTy))
+                return ClangASTType(ast, ast->UnsignedShortTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->UnsignedIntTy))
+                return ClangASTType(ast, ast->UnsignedIntTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->UnsignedLongTy))
+                return ClangASTType(ast, ast->UnsignedLongTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->UnsignedLongLongTy))
+                return ClangASTType(ast, ast->UnsignedLongLongTy.getAsOpaquePtr());
+            
+            if (bit_size == ast->getTypeSize(ast->UnsignedInt128Ty))
+                return ClangASTType(ast, ast->UnsignedInt128Ty.getAsOpaquePtr());
+        }
+    }
+    return ClangASTType();
+}
+
+ClangASTType
+ClangASTContext::GetPointerSizedIntType (clang::ASTContext *ast, bool is_signed)
+{
+    if (ast)
+        return GetIntTypeFromBitSize(ast, ast->getTypeSize(ast->VoidPtrTy), is_signed);
+    return ClangASTType();
+}
 
 ClangASTType
 ClangASTContext::GetFloatTypeFromBitSize (clang::ASTContext *ast,





More information about the lldb-commits mailing list