@@ -375,26 +375,31 @@ class GamePlayerRep : public GameObject {
375375 template <class T > friend class MixedBehaviorProfile ;
376376 template <class T > friend class MixedStrategyProfile ;
377377
378+ public:
379+ using Infosets = ElementCollection<GamePlayer, GameInfosetRep>;
380+ using Strategies = ElementCollection<GamePlayer, GameStrategyRep>;
381+
382+ private:
378383 // / @name Building reduced form strategies
379384 // @{
380385 void MakeStrategy ();
381386 void MakeReducedStrats (class GameNodeRep *, class GameNodeRep *);
387+ void MakeNonReducedStrats ();
388+ void MakeNonReducedStratsRecursiveImpl (GameStrategyRep *, Infosets::iterator);
382389 // @}
383390
384391 GameRep *m_game;
385392 int m_number;
386393 std::string m_label;
387394 std::vector<GameInfosetRep *> m_infosets;
388395 std::vector<GameStrategyRep *> m_strategies;
396+ std::vector<GameStrategyRep *> m_nonReducedStrategies;
389397
390398 GamePlayerRep (GameRep *p_game, int p_id) : m_game(p_game), m_number(p_id) {}
391399 GamePlayerRep (GameRep *p_game, int p_id, int m_strats);
392400 ~GamePlayerRep () override ;
393401
394402public:
395- using Infosets = ElementCollection<GamePlayer, GameInfosetRep>;
396- using Strategies = ElementCollection<GamePlayer, GameStrategyRep>;
397-
398403 int GetNumber () const { return m_number; }
399404 Game GetGame () const ;
400405
@@ -416,6 +421,10 @@ class GamePlayerRep : public GameObject {
416421 GameStrategy GetStrategy (int st) const ;
417422 // / Returns the array of strategies available to the player
418423 Strategies GetStrategies () const ;
424+ // / Returns the st'th non-reduced strategy for the player
425+ GameStrategy GetNonReducedStrategy (int st) const ;
426+ // / Returns the array of non-reduced strategies available to the player
427+ Strategies GetNonReducedStrategies () const ;
419428 // @}
420429
421430 // / @name Sequences
@@ -792,6 +801,16 @@ inline GamePlayerRep::Strategies GamePlayerRep::GetStrategies() const
792801 m_game->BuildComputedValues ();
793802 return Strategies (this , &m_strategies);
794803}
804+ inline GameStrategy GamePlayerRep::GetNonReducedStrategy (int st) const
805+ {
806+ m_game->BuildComputedValues ();
807+ return m_nonReducedStrategies.at (st - 1 );
808+ }
809+ inline GamePlayerRep::Strategies GamePlayerRep::GetNonReducedStrategies () const
810+ {
811+ m_game->BuildComputedValues ();
812+ return Strategies (this , &m_nonReducedStrategies);
813+ }
795814
796815inline Game GameNodeRep::GetGame () const { return m_game; }
797816
0 commit comments