From: Marcelo M. <mar...@us...> - 2004-09-26 00:49:57
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13654 Modified Files: python.cxx Log Message: Change attribute cplus:exceptionclass to feature:exceptionclass. Add python:nondynamic feature. Fix -modern + exceptions Index: python.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/python.cxx,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** python.cxx 1 Sep 2004 22:25:56 -0000 1.50 --- python.cxx 26 Sep 2004 00:49:41 -0000 1.51 *************** *** 262,269 **** Printf(f_shadow,"\nimport %s\n\n", module); ! if (! modern) { // Python-2.2 object hack Printv(f_shadow, ! "def _swig_setattr(self,class_type,name,value):\n", tab4, "if (name == \"this\"):\n", tab4, tab4, "if isinstance(value, class_type):\n", --- 262,271 ---- Printf(f_shadow,"\nimport %s\n\n", module); ! /* if (!modern) */ ! /* always needed, a class can be forced to be no-modern, such as an exception */ ! { // Python-2.2 object hack Printv(f_shadow, ! "def _swig_setattr_nondynamic(self,class_type,name,value,static=1):\n", tab4, "if (name == \"this\"):\n", tab4, tab4, "if isinstance(value, class_type):\n", *************** *** 272,279 **** tab4, tab8, "del value.thisown\n", tab4, tab8, "return\n", - // tab8, "if (name == \"this\") or (name == \"thisown\"): self.__dict__[name] = value; return\n", tab4, "method = class_type.__swig_setmethods__.get(name,None)\n", tab4, "if method: return method(self,value)\n", ! tab4, "self.__dict__[name] = value\n\n", NIL); --- 274,285 ---- tab4, tab8, "del value.thisown\n", tab4, tab8, "return\n", tab4, "method = class_type.__swig_setmethods__.get(name,None)\n", tab4, "if method: return method(self,value)\n", ! tab4, "if (not static) or hasattr(self,name) or (name == \"thisown\"):\n", ! tab4, tab4, "self.__dict__[name] = value\n", ! tab4, "else:\n", ! tab4, tab4, "raise AttributeError(\"You cannot add attributes to %s\" % self)\n\n", ! "def _swig_setattr(self,class_type,name,value):\n", ! tab4, "return _swig_setattr_nondynamic(self,class_type,name,value,0)\n\n", NIL); *************** *** 299,303 **** } } ! if (directorsEnabled()) { // Try loading weakref.proxy, which is only available in Python 2.1 and higher --- 305,320 ---- } } ! if (modern) { ! Printv(f_shadow, ! "def _swig_setattr_nondynamic_method(set):\n", ! tab4, "def set_attr(self,name,value):\n", ! tab4, tab4, "if hasattr(self,name) or (name in (\"this\", \"thisown\")):\n", ! tab4, tab4, tab4, "set(self,name,value)\n", ! tab4, tab4, "else:\n", ! tab4, tab4, tab4, "raise AttributeError(\"You cannot add attributes to %s\" % self)\n", ! tab4, "return set_attr\n\n\n", ! NIL); ! } ! if (directorsEnabled()) { // Try loading weakref.proxy, which is only available in Python 2.1 and higher *************** *** 1713,1717 **** have_repr = 0; ! if (Getattr(n,"cplus:exceptionclass")) { classic = 1; modern = 0; --- 1730,1734 ---- have_repr = 0; ! if (Getattr(n,"feature:exceptionclass")) { classic = 1; modern = 0; *************** *** 1768,1775 **** Printf(f_shadow,"%sfor _s in [%s]: __swig_setmethods__.update(_s.__swig_setmethods__)\n",tab4,base_class); } ! ! Printv(f_shadow, ! tab4, "__setattr__ = lambda self, name, value: _swig_setattr(self, ", class_name, ", name, value)\n", ! NIL); Printv(f_shadow,tab4,"__swig_getmethods__ = {}\n",NIL); --- 1785,1798 ---- Printf(f_shadow,"%sfor _s in [%s]: __swig_setmethods__.update(_s.__swig_setmethods__)\n",tab4,base_class); } ! ! if (!checkAttribute(n,"feature:python:nondynamic","1")) { ! Printv(f_shadow, ! tab4, "__setattr__ = lambda self, name, value: _swig_setattr(self, ", class_name, ", name, value)\n", ! NIL); ! } else { ! Printv(f_shadow, ! tab4, "__setattr__ = lambda self, name, value: _swig_setattr_nondynamic(self, ", class_name, ", name, value)\n", ! NIL); ! } Printv(f_shadow,tab4,"__swig_getmethods__ = {}\n",NIL); *************** *** 1781,1784 **** --- 1804,1816 ---- tab4, "__getattr__ = lambda self, name: _swig_getattr(self, ", class_name, ", name)\n", NIL); + } else { + /* Add static attribute */ + if (checkAttribute(n,"feature:python:nondynamic","1")) { + Printv(f_shadow_file, + tab4, "__setattr__ = _swig_setattr_nondynamic_method(object.__setattr__)\n", + tab4, "class __metaclass__(type):\n", + tab4, tab4, "__setattr__ = _swig_setattr_nondynamic_method(type.__setattr__)\n", + NIL); + } } } *************** *** 1843,1847 **** } } ! /* Now emit methods */ Printv(f_shadow_file, f_shadow, NIL); --- 1875,1880 ---- } } ! ! /* Now emit methods */ Printv(f_shadow_file, f_shadow, NIL); |