diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
commit | cf46733632c7279a9fd0fe6ce26f9185a4ae82a9 (patch) | |
tree | da27775a2161723ef342e91af41a8b51fedef405 /subversion/bindings/swig/include/proxy.py | |
parent | bb0ef45f7c46b0ae221b26265ef98a768c33f820 (diff) | |
download | subversion-tarball-master.tar.gz |
subversion-1.9.7HEADsubversion-1.9.7master
Diffstat (limited to 'subversion/bindings/swig/include/proxy.py')
-rw-r--r-- | subversion/bindings/swig/include/proxy.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/subversion/bindings/swig/include/proxy.py b/subversion/bindings/swig/include/proxy.py new file mode 100644 index 0000000..ca4a64d --- /dev/null +++ b/subversion/bindings/swig/include/proxy.py @@ -0,0 +1,41 @@ + def set_parent_pool(self, parent_pool=None): + """Create a new proxy object for TYPE""" + import libsvn.core, weakref + self.__dict__["_parent_pool"] = \ + parent_pool or libsvn.core.application_pool; + if self.__dict__["_parent_pool"]: + self.__dict__["_is_valid"] = weakref.ref( + self.__dict__["_parent_pool"]._is_valid) + + def assert_valid(self): + """Assert that this object is using valid pool memory""" + if "_is_valid" in self.__dict__: + assert self.__dict__["_is_valid"](), "Variable has already been deleted" + + def __getattr__(self, name): + """Get an attribute from this object""" + self.assert_valid() + + value = _swig_getattr(self, self.__class__, name) + + # If we got back a different object than we have, we need to copy all our + # metadata into it, so that it looks identical + members = self.__dict__.get("_members") + if members is not None: + _copy_metadata_deep(value, members.get(name)) + + # Verify that the new object is good + _assert_valid_deep(value) + + return value + + def __setattr__(self, name, value): + """Set an attribute on this object""" + self.assert_valid() + + # Save a copy of the object, so that the garbage + # collector won't kill the object while it's in + # SWIG-land + self.__dict__.setdefault("_members",{})[name] = value + + return _swig_setattr(self, self.__class__, name, value) |