From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 33A57138202 for ; Tue, 3 Sep 2013 12:21:16 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EAC38E0F4D; Tue, 3 Sep 2013 12:21:12 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 49A06E0F4A for ; Tue, 3 Sep 2013 12:21:11 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id C109333D977 for ; Tue, 3 Sep 2013 12:21:10 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 7276AE468F for ; Tue, 3 Sep 2013 12:21:09 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1378198517.88529b2797d66d4e04d7338d23dee1b5251d0e50.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/util/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/util/counter.py X-VCS-Directories: roverlay/util/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 88529b2797d66d4e04d7338d23dee1b5251d0e50 X-VCS-Branch: master Date: Tue, 3 Sep 2013 12:21:09 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: f9fca66c-394d-4241-92e8-6cc6dd4db537 X-Archives-Hash: a2f86c2780b9720b3806fb123e13ff07 commit: 88529b2797d66d4e04d7338d23dee1b5251d0e50 Author: André Erdmann mailerd de> AuthorDate: Tue Sep 3 08:55:17 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Tue Sep 3 08:55:17 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=88529b27 clean up roverlay/util/counter --- roverlay/util/counter.py | 74 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/roverlay/util/counter.py b/roverlay/util/counter.py index 53fe631..6c0e699 100644 --- a/roverlay/util/counter.py +++ b/roverlay/util/counter.py @@ -4,6 +4,8 @@ # Distributed under the terms of the GNU General Public License; # either version 2 of the License, or (at your option) any later version. +import roverlay.util.objects + try: _LONG = long except NameError: @@ -19,50 +21,72 @@ class CounterUnderflow ( CounterException ): # --- end of CounterUnderflow --- -class IDGenerator ( object ): +class AbstractCounter ( object ): def __init__ ( self, first_value=0, use_long=False ): - super ( IDGenerator, self ).__init__() + super ( AbstractCounter, self ).__init__() self._initial_value = ( _LONG if use_long else int ) ( first_value - 1 ) self._current_value = self._initial_value # --- end of __init__ (...) --- + @roverlay.util.objects.abstractmethod + def set_value ( self, value ): + pass + # --- end of set_value (...) --- + + @roverlay.util.objects.abstractmethod def reset ( self ): - self._current_value = self._initial_value + pass # --- end of reset (...) --- - def inc ( self, step=1 ): - self._current_value += step + def change_value ( self, delta ): + return self.set_value ( self._current_value + delta ) + # --- end of change_value (...) --- + + def get_value ( self, value ): + return self._current_value + # --- end of get_value (...) --- + + def get_value_unsafe ( self, value ): return self._current_value + # --- end of get_value_unsafe (...) --- + + def inc ( self, step=1 ): + return self.change_value ( step ) # --- end of inc (...) --- - __next__ = inc + def dec ( self, step=1 ): + return self.change_value ( (-1) * step ) + # --- end of dec (...) --- - def peek ( self ): - val = self._current_value - if val == self._initial_value: - raise CounterException ( "no number generated so far!" ) - elif val < self._initial_value: - raise CounterUnderflow() - else: - return val - # --- end of peek (...) --- + def __next__ ( self ): + return self.inc() + # --- end of __next__ (...) --- def __iter__ ( self ): return self # --- end of __iter__ (...) --- -# --- end of IDGenerator --- +# --- end of AbstractCounter --- -class Counter ( IDGenerator ): - def dec ( self, step=1 ): - if self._current_value > self._initial_value: - self._current_value -= step - return self._current_value +class UnsafeCounter ( AbstractCounter ): + + def reset ( self ): + self.current_value = self._initial_value + # --- end of reset (...) --- + + def set_value ( self, value ): + if value <= self._initial_value: + raise CounterUnderflow ( value ) else: - self._current_value = self._initial_value - raise CounterUnderflow() - # --- end of dec (...) --- + self._current_value = value + return value + # --- end of set_value (...) --- + +# --- end of UnsafeCounter --- + -# --- end of Counter --- +class IDGenerator ( UnsafeCounter ): + pass +# --- end of IDGenerator ---