Forráskód Böngészése

Improved State class

- replaced "primitive" types with state machine types
- connectedStates now has StateConnection value type
pcmattulat 3 éve
szülő
commit
a85c15a861
2 módosított fájl, 13 hozzáadás és 12 törlés
  1. 5 5
      source/logic/State.cpp
  2. 8 7
      source/logic/State.hpp

+ 5 - 5
source/logic/State.cpp

@@ -9,28 +9,28 @@
 
 #include "State.hpp"
 
-ls_std::State::State(std::string  _id) : Class("State"),
+ls_std::State::State(ls_std::StateId _id) : Class("State"),
 id(std::move(_id))
 {}
 
-bool ls_std::State::addStateConnection(const std::string& _connectionId, const std::shared_ptr<State>& _connectedState)
+bool ls_std::State::addStateConnection(const StateConnectionId& _connectionId, const std::shared_ptr<State>& _connectedState)
 {
   bool added {};
 
   if(_connectedState != nullptr && !this->_stateIsConnected(_connectionId)) {
-    this->connectedStates.insert({_connectionId, _connectedState});
+    this->connectedStates.insert({_connectionId, ls_std::StateConnection {_connectionId, _connectedState->getId()}});
     added = true;
   }
 
   return added;
 }
 
-std::unordered_map<ls_std::StateConnectionId, std::shared_ptr<ls_std::State>> ls_std::State::getConnectedStates()
+std::unordered_map<ls_std::StateConnectionId, ls_std::StateConnection> ls_std::State::getConnectedStates()
 {
   return this->connectedStates;
 }
 
-std::string ls_std::State::getId()
+ls_std::StateId ls_std::State::getId()
 {
   return this->id;
 }

+ 8 - 7
source/logic/State.hpp

@@ -14,24 +14,25 @@
 #include <unordered_map>
 #include "../base/Class.hpp"
 #include "StateMachineTypes.hpp"
+#include "StateConnection.hpp"
 
 namespace ls_std {
   class State : public Class {
     public:
 
-      explicit State(std::string _id);
+      explicit State(StateId _id);
       ~State() = default;
 
-      bool addStateConnection(const std::string& _connectionId, const std::shared_ptr<State>& _connectedState);
-      std::unordered_map<StateConnectionId, std::shared_ptr<State>> getConnectedStates();
-      std::string getId();
+      bool addStateConnection(const StateConnectionId& _connectionId, const std::shared_ptr<State>& _connectedState);
+      std::unordered_map<StateConnectionId, StateConnection> getConnectedStates();
+      StateId getId();
 
     private:
 
-      std::unordered_map<std::string, std::shared_ptr<State>> connectedStates {};
-      std::string id {};
+      std::unordered_map<StateConnectionId, StateConnection> connectedStates {};
+      StateId id {};
 
-      bool _stateIsConnected(const std::string& _id);
+      bool _stateIsConnected(const StateId& _id);
   };
 }