Comments (6)
Hi Kjeld,
Do you mean multiple independent instances?
FSM::Instance machine1;
FSM::Instance machine2;
should work, or are you having any specific issues with multiple copies?
Regards,
Andrew
from hfsm2.
My challenge was that would like to "hide" the definition of context and structure of the state machine inside a class. I was not able to scope the definition right, to do so.
from hfsm2.
So for now I left it outside, and the created instances of the context and machine inside
from hfsm2.
My colleague suggested to make a namespace, and wrap the definition inside that.
I found a link that mention that I can make a nameless namespace.
from hfsm2.
Right, instead of:
#define S(s) struct s
using FSM = M::PeerRoot<
S(Off), // initial top-level state
M::Composite<S(On), // sub-machine region with a head state (On) and and 3 sub-states
S(Red), // initial sub-state of the region
S(Yellow),
S(Green)
>,
S(Done)
>;
#undef S
try forward declaring the states without a macro, e.g.:
struct Off;
struct On;
struct Red;
struct Yellow;
struct Green;
struct Done;
using FSM = M::PeerRoot<
Off, // initial top-level state
M::Composite<On, // sub-machine region with a head state (On) and and 3 sub-states
Red, // initial sub-state of the region
Yellow,
Green
>,
Done
>;
from hfsm2.
Nice that works. Thanks
class TestingHFSM
{
struct Context
{
int value;
};
using M = hfsm2::MachineT<hfsm2::Config::ContextT<Context>>;
struct Begin;
struct Running;
struct Stopped;
using HFSM = M::PeerRoot<
Begin,
Running,
Stopped
>;
struct Begin : HFSM::State
{
using HFSM::State::react;
};
struct Running : HFSM::State
{
using HFSM::State::react;
};
struct Stopped : HFSM::State
{
using HFSM::State::react;
};
};
from hfsm2.
Related Issues (20)
- "Fully static, no dynamic allocations" but "new" used several times HOT 2
- Compile error in B_<TFirst>::stateId() HOT 3
- The logger can freeze due to unknown methods HOT 5
- Only one headless region is allowed in an FSM instance HOT 1
- Trouble with HFSM2 master version in MSVC2019 16.6.5 HOT 9
- Can't get Context from Control in Utility function HOT 2
- Tracking use in Godot Engine HOT 14
- Usage within ecs systems like entt HOT 2
- Using in embedded systems HOT 3
- Port travis to Github Actions HOT 3
- Looped plan HOT 2
- State machine stuck in update method HOT 3
- Macro conflict between sys/ioctl.h and hfsm2/machine.hpp HOT 4
- thread-safe?
- How get machine state id? HOT 4
- Fetching payload contents HOT 2
- Broken links in doc HOT 1
- Does it support writing the states in different files? HOT 1
- State members? HOT 2
- Any example about "Hierarchical" ? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hfsm2.