https://github.com/daantimmer/yahsmg
Based on https://accu.org/journals/overload/12/64/heinzmann_252/
https://github.com/daantimmer/yahsmg
cpp hsm python
Last synced: about 2 months ago
JSON representation
Based on https://accu.org/journals/overload/12/64/heinzmann_252/
- Host: GitHub
- URL: https://github.com/daantimmer/yahsmg
- Owner: daantimmer
- License: mit
- Created: 2021-11-02T08:10:45.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-11-03T11:02:20.000Z (over 4 years ago)
- Last Synced: 2025-05-09T00:16:46.584Z (about 1 year ago)
- Topics: cpp, hsm, python
- Language: Python
- Homepage:
- Size: 14.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# YAHSMG
Yet Another Hierarchical State Machine Generator
YAHSMG is build around Stefan Heinzmann's HSM and plantuml to generate C++ code.
# How to use
This has only been tested on Windows, but should work on Linux and MacOs as well.
Execute the generator python module like: `python generator `
When a folder is given it'll traverse all subdirectories in search for *.puml files.
For any file found it'll create a directory Generated in that file's folder and create a `_HSM.hpp` and `_HSM.cpp` file.
Add the `resources` folder to your include search path.
# Stefan Heinzmann's HSM
The heart of the HSM is Stefan heinzmann's HSM. This HSM has been modernized and made 'more modern C++ like'. See https://accu.org/journals/overload/12/64/heinzmann_252/ for more information.
# Things to do
- Plantuml supports generating images from any file, not only plantuml-specific files. For example you can have your plantuml diagram written in a source's header file. The diagram finder logic will now only search for `.puml` files, but a near future improvement will give the user the possibility to specify what extensions to look for.
- Create example implementations
- Create C++ unit test
- Allow specifying which templates to use
- Allow custom template folder
# Limitations
YAHMSG currently does not support features like `History`/`Fork`/`Concurrent`/`<>`/`Stereotyes`/`Point`/`Pin`/`Expansion` features provided by plantuml. Any plantuml markup is also not supported. Some of these might be solved in later versions.