[Zope-Checkins] CVS: Zope3/lib/python/Zope/Server - Counter.py:1.1.2.1

Stephan Richter srichter@cbu.edu
Wed, 3 Apr 2002 06:30:22 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/Server
In directory cvs.zope.org:/tmp/cvs-serv1265/lib/python/Zope/Server

Added Files:
      Tag: Zope3-Server-Branch
	Counter.py 
Log Message:
The counter is used to keep track of statistics.


=== Added File Zope3/lib/python/Zope/Server/Counter.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
# 
##############################################################################
"""

$Id: Counter.py,v 1.1.2.1 2002/04/03 11:30:21 srichter Exp $
"""

class Counter(object):
    "general-purpose counter"
    
    def __init__ (self, initial_value=0):
        self.value = initial_value
        
    def increment (self, delta=1):
        result = self.value
        try:
            self.value = self.value + delta
        except OverflowError:
            self.value = long(self.value) + delta
        return result
        
    def decrement (self, delta=1):
        result = self.value
        try:
            self.value = self.value - delta
        except OverflowError:
            self.value = long(self.value) - delta
        return result
        
    def as_long (self):
        return long(self.value)
        
    def __nonzero__ (self):
        return self.value != 0
        
    def __repr__ (self):
        return '<counter value=%s at %x>' % (self.value, id(self))
        
    def __str__ (self):
        return str(long(self.value))[:-1]