Mercurial > pub > Impl
comparison Lib/IMPL/Object/Disposable.pm @ 328:63709a4e6da0
Security framework refactoring
| author | cin |
|---|---|
| date | Mon, 03 Jun 2013 03:28:01 +0400 |
| parents | ad93c9f4dd93 |
| children |
comparison
equal
deleted
inserted
replaced
| 327:6cb0d4d325d7 | 328:63709a4e6da0 |
|---|---|
| 1 package IMPL::Object::Disposable; | 1 package IMPL::Object::Disposable; |
| 2 use strict; | 2 use strict; |
| 3 require IMPL::Object::AutoDispose; | |
| 3 | 4 |
| 4 our $Strict = 1; | 5 our $Strict = 1; |
| 5 | 6 |
| 6 sub Dispose { | 7 sub Dispose { |
| 7 my ($this) = @_; | 8 my ($this) = @_; |
| 13 my ($this) = @_; | 14 my ($this) = @_; |
| 14 | 15 |
| 15 warn sprintf('The object %s were marked as disposable but isn\'t disposed properly', $this->can('ToString') ? $this->ToString() : (ref $this || $this) ); | 16 warn sprintf('The object %s were marked as disposable but isn\'t disposed properly', $this->can('ToString') ? $this->ToString() : (ref $this || $this) ); |
| 16 } | 17 } |
| 17 | 18 |
| 18 sub superDispose { | 19 sub AutoPtr { |
| 19 my ($this) = @_; | 20 IMPL::Object::AutoDispose->new(shift); |
| 20 | |
| 21 my $package = caller; | |
| 22 | |
| 23 no strict 'refs'; | |
| 24 | |
| 25 ($_.'::Dispose')->($this) foreach @{$package.'::ISA'}; | |
| 26 } | 21 } |
| 27 | 22 |
| 28 package IMPL::Object::Disposed; | 23 package IMPL::Object::Disposed; |
| 29 our $AUTOLOAD; | 24 our $AUTOLOAD; |
| 30 sub AUTOLOAD { | 25 sub AUTOLOAD { |
