Home | History | Annotate | Download | only in cocoa
      1 """
      2 Objective-C runtime wrapper for use by LLDB Python formatters
      3 
      4 part of The LLVM Compiler Infrastructure
      5 This file is distributed under the University of Illinois Open Source
      6 License. See LICENSE.TXT for details.
      7 """
      8 class AttributesDictionary:
      9 	def __init__(self, allow_reset = True):
     10 		self.__dict__['_dictionary'] = {} # need to do it this way to prevent endless recursion
     11 		self.__dict__['_allow_reset'] = allow_reset
     12 
     13 	def __getattr__(self,name):
     14 		if not self._check_exists(name):
     15 			return None
     16 		value = self._dictionary[name]
     17 		return value
     18 
     19 	def _set_impl(self,name,value):
     20 		self._dictionary[name] = value
     21 
     22 	def _check_exists(self,name):
     23 		return name in self._dictionary
     24 
     25 	def __setattr__(self,name,value):
     26 		if self._allow_reset:
     27 			self._set_impl(name,value)
     28 		else:
     29 			self.set_if_necessary(name,value)
     30 
     31 	def set_if_necessary(self,name,value):
     32 		if not self._check_exists(name):
     33 			self._set_impl(name,value)
     34 			return True
     35 		return False
     36 
     37 	def __len__(self):
     38 		return len(self._dictionary)