Skip to content

Commit 8e6aa71

Browse files
Got rid of two getter methods in cpp class
1 parent 3ccb5b4 commit 8e6aa71

2 files changed

Lines changed: 20 additions & 24 deletions

File tree

src/pygambit/sequence_form.pxi

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from libcpp.map cimport map as cpp_map
22
from libcpp.memory cimport shared_ptr as cpp_shared_ptr
3+
from libcpp.vector cimport vector as cpp_vector
34

45
@cython.cfunc
56
def rat_to_py_new(r: c_Rational):
@@ -22,28 +23,33 @@ cdef extern from "../solvers/enumpoly/gameseq.h" namespace "Gambit":
2223
ctypedef cpp_shared_ptr[c_GameSequenceRep] c_GameSequence
2324

2425

26+
cdef extern from "../solvers/enumpoly/gameseq.h" namespace "Gambit":
27+
cdef cppclass c_PlayerSequences "GameSequenceForm::PlayerSequences":
28+
cpp_vector[c_GameSequence].const_iterator begin()
29+
30+
2531
cdef extern from "../solvers/enumpoly/gameseq.h" namespace "Gambit":
2632
cdef cppclass c_GameSequenceForm "GameSequenceForm":
2733
c_GameSequenceForm(const c_BehaviorSupportProfile&) except +
28-
c_Rational PayoffFromActions(cpp_map[c_GamePlayer, c_GameAction] action_profile,
29-
c_GamePlayer p_player)
30-
c_GameSequence GetEmptySequence(c_GamePlayer player)
34+
c_Rational PayoffFromActions(cpp_map[c_GamePlayer, c_GameAction] action_profile, c_GamePlayer p_player)
3135
c_GameSequence GetCorrespondingSequence(c_GameAction action)
32-
c_Rational GetPayoff(cpp_map[c_GamePlayer, c_GameSequence] p_profile, c_GamePlayer p_player)
36+
c_PlayerSequences GetSequences(const c_GamePlayer &p_player) const
37+
const c_Rational &GetPayoff(const cpp_map[c_GamePlayer, c_GameSequence] &p_profile, const c_GamePlayer &p_player) const
38+
3339

3440
cdef class GameSequenceForm:
35-
cdef c_GameSequenceForm* cpp_form
36-
cdef c_BehaviorSupportProfile* _bsp
41+
cdef c_GameSequenceForm* seq_form
42+
cdef c_BehaviorSupportProfile* support
3743

3844
def __cinit__(self, py_game):
3945
cdef Game game = cython.cast(Game, py_game)
4046
cdef c_Game cpp_game = game.game
41-
self._bsp = new c_BehaviorSupportProfile(cpp_game)
42-
self.cpp_form = new c_GameSequenceForm(deref(self._bsp))
47+
self.support = new c_BehaviorSupportProfile(cpp_game)
48+
self.seq_form = new c_GameSequenceForm(deref(self.support))
4349

4450
def __dealloc__(self):
45-
del self.cpp_form
46-
del self._bsp
51+
del self.seq_form
52+
del self.support
4753

4854
def get_payoff(self, action_dict, py_player):
4955
cdef Player player = cython.cast(Player, py_player)
@@ -57,12 +63,12 @@ cdef class GameSequenceForm:
5763
key = cython.cast(Player, py_key)
5864
temp_player = key.player
5965
if py_value is None:
60-
profile[temp_player] = self.cpp_form.GetEmptySequence(temp_player)
66+
profile[temp_player] = deref(self.seq_form.GetSequences(temp_player).begin())
6167
else:
6268
value = cython.cast(Action, py_value)
6369
temp_action = value.action
64-
profile[temp_player] = self.cpp_form.GetCorrespondingSequence(temp_action)
65-
cdef c_Rational payoff_obj = self.cpp_form.GetPayoff(profile, cpp_player)
66-
return rat_to_py_new(payoff_obj)
70+
profile[temp_player] = self.seq_form.GetCorrespondingSequence(temp_action)
71+
cdef c_Rational payoff = self.seq_form.GetPayoff(profile, cpp_player)
72+
return rat_to_py_new(payoff)
6773

6874

src/solvers/enumpoly/gameseq.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,21 +86,11 @@ class GameSequenceForm {
8686

8787
public:
8888

89-
GameSequence GetEmptySequence(GamePlayer player)
90-
{
91-
return m_sequences[player].front();
92-
}
93-
9489
GameSequence GetCorrespondingSequence(GameAction action)
9590
{
9691
return m_correspondence[action];
9792
}
9893

99-
Rational GetPayoff(std::map<GamePlayer, GameSequence> p_profile, GamePlayer p_player)
100-
{
101-
return GetPayoffEntry(p_profile, p_player);
102-
}
103-
10494
public:
10595
class Infosets {
10696
private:

0 commit comments

Comments
 (0)