Skip to content

Commit

Permalink
Implement members collection for infosets.
Browse files Browse the repository at this point in the history
  • Loading branch information
tturocy committed Jul 29, 2011
1 parent c3808d3 commit 36dbc7d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
9 changes: 8 additions & 1 deletion src/python/gambit/lib/infoset.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,11 @@ cdef class Infoset:
cdef Actions a
a = Actions()
a.infoset = self.infoset
return a
return a

property members:
def __get__(self):
cdef Members m
m = Members()
m.infoset = self.infoset
return m
4 changes: 3 additions & 1 deletion src/python/gambit/lib/libgambit.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ cdef extern from "libgambit/game.h":

int NumActions()
c_GameAction GetAction(int) except +IndexError
int NumMembers()
c_GameNode GetMember(int) except +IndexError

ctypedef struct c_GamePlayerRep "GamePlayerRep":
c_Game GetGame()
Expand Down Expand Up @@ -168,7 +170,7 @@ include "strategies.pxi"

include "action.pxi"
include "actions.pxi"

include "members.pxi"
include "infoset.pxi"
include "infosets.pxi"

Expand Down
16 changes: 16 additions & 0 deletions src/python/gambit/lib/members.pxi
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
cdef class Members:
cdef c_GameInfoset infoset

def __repr__(self):
return str(list(self))

def __len__(self):
return self.infoset.deref().NumMembers()

def __getitem__(self, i):
cdef Node n
if i < 0 or i >= len(self):
raise IndexError("no member with index '%s'" % i)
n = Node()
n.node = self.infoset.deref().GetMember(i+1)
return n

0 comments on commit 36dbc7d

Please sign in to comment.