Skip to content

Commit aafc290

Browse files
committed
Correct wrapping of player infosets collection.
1 parent b68e372 commit aafc290

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

src/pygambit/gambit.pxd

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,17 @@ cdef extern from "games/game.h":
145145
bint Precedes(c_GameNode) except +
146146

147147
cdef cppclass c_GamePlayerRep "GamePlayerRep":
148+
cppclass Infosets:
149+
cppclass iterator:
150+
c_GameInfoset operator *()
151+
iterator operator++()
152+
bint operator ==(iterator)
153+
bint operator !=(iterator)
154+
155+
int size() except +
156+
iterator begin() except +
157+
iterator end() except +
158+
148159
c_Game GetGame() except +
149160
int GetNumber() except +
150161
int IsChance() except +
@@ -155,8 +166,8 @@ cdef extern from "games/game.h":
155166
int NumStrategies() except +
156167
c_GameStrategy GetStrategy(int) except +IndexError
157168

158-
int NumInfosets() except +
159169
c_GameInfoset GetInfoset(int) except +IndexError
170+
Infosets GetInfosets() except +
160171

161172
cdef cppclass c_GameOutcomeRep "GameOutcomeRep":
162173
c_Game GetGame() except +

src/pygambit/player.pxi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ class PlayerInfosets:
4242

4343
def __len__(self) -> int:
4444
"""The number of information sets at which the player has the decision."""
45-
return self.player.deref().NumInfosets()
45+
return self.player.deref().GetInfosets().size()
4646

4747
def __iter__(self) -> typing.Iterator[Infoset]:
48-
for i in range(self.player.deref().NumInfosets()):
49-
yield Infoset.wrap(self.player.deref().GetInfoset(i + 1))
48+
for infoset in self.player.deref().GetInfosets():
49+
yield Infoset.wrap(infoset)
5050

5151
def __getitem__(self, index: typing.Union[int, str]) -> Infoset:
5252
if isinstance(index, str):

0 commit comments

Comments
 (0)