erikzenker-hsm/2.3.0

The hana state machine (hsm) is a finite state machine library based on the boost hana meta programming library. It follows the principles of the boost msm and boost sml libraries, but tries to reduce own complex meta programming code to a minimum.
Recipe info
2023-01-06

Available packages
Header Only

Install
Add the following line to your conanfile.txt:
[requires]
erikzenker-hsm/2.3.0

Using erikzenker-hsm

Note

If you are a new Conan user, we recommend reading the how to consume packages tutorial.

If you need additional assistance, please ask a question in the Conan Center Index repository.

Simplest use case consuming this recipe and assuming CMake as your local build tool:

[requires]
erikzenker-hsm/2.3.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
from conan import ConanFile
from conan.tools.cmake import cmake_layout


class ExampleRecipe(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "CMakeDeps", "CMakeToolchain"

    def requirements(self):
        self.requires("erikzenker-hsm/2.3.0")

    def layout(self):
        cmake_layout(self)

Now, you can run this Conan command to locally install (and build if necessary) this recipe and its dependencies (if any):

$ conan install conanfile.txt --build=missing

Useful information to take into account to consume this library:


These are the main declared targets:

  • CMake package name(s): hsm
  • CMake target name(s): hsm::hsm
  • pkg-config file name(s): erikzenker-hsm.pc

A simple use case using the CMake file name and the global target:

# ...
find_package(hsm REQUIRED)
# ...
target_link_libraries(YOUR_TARGET hsm::hsm)

These are all the available headers. Some of these ones might be non-public; make sure of it by visiting the erikzenker-hsm homepage listed above:

#include "hsm/details/chain_actions.h"
#include "hsm/details/collect_actions.h"
#include "hsm/details/collect_events.h"
#include "hsm/details/collect_guards.h"
#include "hsm/details/collect_initial_states.h"
#include "hsm/details/collect_parent_states.h"
#include "hsm/details/collect_states.h"
#include "hsm/details/create_state.h"
#include "hsm/details/dispatch_table.h"
#include "hsm/details/event.h"
#include "hsm/details/fill_dispatch_table.h"
#include "hsm/details/fill_unexpected_event_handler_tables.h"
#include "hsm/details/flatten_internal_transition_table.h"
#include "hsm/details/flatten_transition_table.h"
#include "hsm/details/for_each.h"
#include "hsm/details/for_each_idx.h"
#include "hsm/details/forwards.h"
#include "hsm/details/has_action.h"
#include "hsm/details/idx.h"
#include "hsm/details/index_map.h"
#include "hsm/details/log.h"
#include "hsm/details/make_dispatch_tables.h"
#include "hsm/details/make_states_map.h"
#include "hsm/details/make_unexpected_event_handler_tables.h"
#include "hsm/details/pseudo_states.h"
#include "hsm/details/remove_duplicates.h"
#include "hsm/details/resolve_state.h"
#include "hsm/details/reuse_state.h"
#include "hsm/details/sm.h"
#include "hsm/details/state.h"
#include "hsm/details/switch.h"
#include "hsm/details/to_map.h"
#include "hsm/details/to_pairs.h"
#include "hsm/details/traits.h"
#include "hsm/details/transition.h"
#include "hsm/details/transition_table.h"
#include "hsm/details/transition_table_traits.h"
#include "hsm/details/utils/dunique_ptr.h"
#include "hsm/details/utils/toTypeid.h"
#include "hsm/details/variant_queue.h"
#include "hsm/front/transition_dsl.h"
#include "hsm/front/transition_tuple.h"
#include "hsm/gen/.clang-format"
#include "hsm/gen/hsm.h"
#include "hsm/hsm.h"