diff options
Diffstat (limited to 'examples/summaries/cocoa/attrib_fromdict.py')
-rw-r--r-- | examples/summaries/cocoa/attrib_fromdict.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/summaries/cocoa/attrib_fromdict.py b/examples/summaries/cocoa/attrib_fromdict.py new file mode 100644 index 000000000000..86964d602b5b --- /dev/null +++ b/examples/summaries/cocoa/attrib_fromdict.py @@ -0,0 +1,38 @@ +""" +Objective-C runtime wrapper for use by LLDB Python formatters + +part of The LLVM Compiler Infrastructure +This file is distributed under the University of Illinois Open Source +License. See LICENSE.TXT for details. +""" +class AttributesDictionary: + def __init__(self, allow_reset = True): + self.__dict__['_dictionary'] = {} # need to do it this way to prevent endless recursion + self.__dict__['_allow_reset'] = allow_reset + + def __getattr__(self,name): + if not self._check_exists(name): + return None + value = self._dictionary[name] + return value + + def _set_impl(self,name,value): + self._dictionary[name] = value + + def _check_exists(self,name): + return name in self._dictionary + + def __setattr__(self,name,value): + if self._allow_reset: + self._set_impl(name,value) + else: + self.set_if_necessary(name,value) + + def set_if_necessary(self,name,value): + if not self._check_exists(name): + self._set_impl(name,value) + return True + return False + + def __len__(self): + return len(self._dictionary)
\ No newline at end of file |