Logging for data formatters.
llvm-svn: 153878
This commit is contained in:
@@ -10,20 +10,25 @@ import lldb
|
||||
import ctypes
|
||||
import objc_runtime
|
||||
import metrics
|
||||
import Logger
|
||||
|
||||
# first define some utility functions
|
||||
def byte_index(abs_pos):
|
||||
logger = Logger.Logger()
|
||||
return abs_pos/8
|
||||
|
||||
def bit_index(abs_pos):
|
||||
logger = Logger.Logger()
|
||||
return abs_pos & 7
|
||||
|
||||
def get_bit(byte,index):
|
||||
logger = Logger.Logger()
|
||||
if index < 0 or index > 7:
|
||||
return None
|
||||
return (byte >> (7-index)) & 1
|
||||
|
||||
def grab_array_item_data(pointer,index):
|
||||
logger = Logger.Logger()
|
||||
return pointer.GetPointeeData(index,1)
|
||||
|
||||
statistics = metrics.Metrics()
|
||||
@@ -37,10 +42,12 @@ statistics.add_metric('code_notrun')
|
||||
# obey the interface specification for synthetic children providers
|
||||
class CFBitVectorKnown_SummaryProvider:
|
||||
def adjust_for_architecture(self):
|
||||
logger = Logger.Logger()
|
||||
self.uiint_size = self.sys_params.types_cache.NSUInteger.GetByteSize()
|
||||
pass
|
||||
|
||||
def __init__(self, valobj, params):
|
||||
logger = Logger.Logger()
|
||||
self.valobj = valobj;
|
||||
self.sys_params = params
|
||||
if not(self.sys_params.types_cache.NSUInteger):
|
||||
@@ -53,6 +60,7 @@ class CFBitVectorKnown_SummaryProvider:
|
||||
self.update();
|
||||
|
||||
def update(self):
|
||||
logger = Logger.Logger()
|
||||
self.adjust_for_architecture();
|
||||
|
||||
# we skip the CFRuntimeBase
|
||||
@@ -61,6 +69,7 @@ class CFBitVectorKnown_SummaryProvider:
|
||||
# that wraps the individual bits
|
||||
|
||||
def contents(self):
|
||||
logger = Logger.Logger()
|
||||
count_vo = self.valobj.CreateChildAtOffset("count",self.sys_params.cfruntime_size,
|
||||
self.sys_params.types_cache.NSUInteger)
|
||||
count = count_vo.GetValueAsUnsigned(0)
|
||||
@@ -100,18 +109,22 @@ class CFBitVectorUnknown_SummaryProvider:
|
||||
pass
|
||||
|
||||
def __init__(self, valobj, params):
|
||||
logger = Logger.Logger()
|
||||
self.valobj = valobj;
|
||||
self.sys_params = params
|
||||
self.update();
|
||||
|
||||
def update(self):
|
||||
logger = Logger.Logger()
|
||||
self.adjust_for_architecture();
|
||||
|
||||
def contents(self):
|
||||
logger = Logger.Logger()
|
||||
return '<unable to summarize this CFBitVector>'
|
||||
|
||||
|
||||
def GetSummary_Impl(valobj):
|
||||
logger = Logger.Logger()
|
||||
global statistics
|
||||
class_data,wrapper = objc_runtime.Utilities.prepare_class_detection(valobj,statistics)
|
||||
if wrapper:
|
||||
@@ -119,6 +132,9 @@ def GetSummary_Impl(valobj):
|
||||
|
||||
name_string = class_data.class_name()
|
||||
actual_name = name_string
|
||||
|
||||
logger >> "name string got was " + str(name_string) + " but actual name is " + str(actual_name)
|
||||
|
||||
if class_data.is_cftype():
|
||||
# CFBitVectorRef does not expose an actual NSWrapper type, so we have to check that this is
|
||||
# an NSCFType and then check we are a pointer-to CFBitVectorRef
|
||||
@@ -140,6 +156,7 @@ def GetSummary_Impl(valobj):
|
||||
return wrapper;
|
||||
|
||||
def CFBitVector_SummaryProvider (valobj,dict):
|
||||
logger = Logger.Logger()
|
||||
provider = GetSummary_Impl(valobj);
|
||||
if provider != None:
|
||||
if isinstance(provider,objc_runtime.SpecialSituation_Description):
|
||||
@@ -148,6 +165,7 @@ def CFBitVector_SummaryProvider (valobj,dict):
|
||||
summary = provider.contents();
|
||||
except:
|
||||
summary = None
|
||||
logger >> "summary got from provider: " + str(summary)
|
||||
if summary == None or summary == '':
|
||||
summary = '<variable is not CFBitVector>'
|
||||
return summary
|
||||
|
||||
Reference in New Issue
Block a user