From: <umg...@us...> - 2007-03-29 20:11:11
|
Revision: 375 http://svn.sourceforge.net/pybridge/?rev=375&view=rev Author: umgangee Date: 2007-03-29 13:11:12 -0700 (Thu, 29 Mar 2007) Log Message: ----------- Remove string conversions on serialize/unserialize, since enum values are now copyable over the network. Modified Paths: -------------- trunk/pybridge/pybridge/bridge/call.py trunk/pybridge/pybridge/bridge/card.py Modified: trunk/pybridge/pybridge/bridge/call.py =================================================================== --- trunk/pybridge/pybridge/bridge/call.py 2007-03-29 19:57:32 UTC (rev 374) +++ trunk/pybridge/pybridge/bridge/call.py 2007-03-29 20:11:12 UTC (rev 375) @@ -26,20 +26,32 @@ class Bid(Call): - """A Bid represents a statement of a level and a strain.""" + """A Bid represents a statement of a level and a strain. + + @param level: the level of the bid. + @type level: L{Level} + @param strain: the strain (denomination) of the bid. + @type strain: L{Strain} + """ + level = property(lambda self: self.__level) + strain = property(lambda self: self.__strain) + + def __init__(self, level, strain): - assert level in Level - assert strain in Strain - - self.level = level - self.strain = strain + if level not in Level: + raise TypeError, "Expected Level, got %s" % type(level) + if strain not in Strain: + raise TypeError, "Expected Strain, got %s" % type(strain) + self.__level = level + self.__strain = strain + def __cmp__(self, other): if not issubclass(other.__class__, Call): raise TypeError, "Expected Call, got %s" % type(other) - + if isinstance(other, Bid): # Compare two bids. selfIndex = self.level.index*len(Strain) + self.strain.index otherIndex = other.level.index*len(Strain) + other.strain.index @@ -53,17 +65,16 @@ def getStateToCopy(self): - state = {} - state['level'] = self.level.key - state['strain'] = self.strain.key - return state + return self.level, self.strain def setCopyableState(self, state): - self.level = getattr(Level, state['level']) - self.strain = getattr(Strain, state['strain']) + self.__level, self.__strain = state +pb.setUnjellyableForClass(Bid, Bid) + + class Pass(Call): """A Pass represents an abstention from the bidding.""" @@ -71,6 +82,9 @@ return "Pass" +pb.setUnjellyableForClass(Pass, Pass) + + class Double(Call): """A Double over an opponent's current bid.""" @@ -78,9 +92,15 @@ return "Double" +pb.setUnjellyableForClass(Double, Double) + + class Redouble(Call): """A Redouble over an opponent's double of partnership's current bid.""" def __str__(self): return "Redouble" + +pb.setUnjellyableForClass(Redouble, Redouble) + Modified: trunk/pybridge/pybridge/bridge/card.py =================================================================== --- trunk/pybridge/pybridge/bridge/card.py 2007-03-29 19:57:32 UTC (rev 374) +++ trunk/pybridge/pybridge/bridge/card.py 2007-03-29 20:11:12 UTC (rev 375) @@ -69,10 +69,12 @@ def getStateToCopy(self): - return {'rank' : self.rank.key, 'suit' : self.suit.key} + return self.rank, self.suit def setCopyableState(self, state): - self.__rank = getattr(Rank, state['rank']) - self.__suit = getattr(Suit, state['suit']) + self.__rank, self.__suit = state + +pb.setUnjellyableForClass(Card, Card) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |