23 lines
3.9 KiB
HTML
23 lines
3.9 KiB
HTML
<html><head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
<title>Generated state ids</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM)"><link rel="up" href="ch06.html" title="Chapter 6. Internals"><link rel="prev" href="ch06s02.html" title="Frontend / Backend interface"><link rel="next" href="ch06s04.html" title="Metaprogramming tools"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"> Generated state ids </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch06s02.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Internals</th><td width="20%" align="right"> <a accesskey="n" href="ch06s04.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Generated state ids"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e3257"></a><span class="command"><strong><a name="internals-state-id"></a></strong></span> Generated state ids </h2></div></div></div><p>Normally, one does not need to know the ids are generated for all the states
|
|
of a state machine, unless for debugging purposes, like the pstate function does
|
|
in the tutorials in order to display the name of the current state. This section
|
|
will show how to automatically display typeid-generated names, but these are not
|
|
very readable on all platforms, so it can help to know how the ids are
|
|
generated. The ids are generated using the transition table, from the “Start”
|
|
column up to down, then from the “Next” column, up to down, as shown in the next
|
|
image: </p><p><span class="inlinemediaobject"><img src="../images/AnnexA.jpg" width="90%"></span></p><p>Stopped will get id 0, Open id 1, ErrorMode id 6 and SleepMode (seen only in
|
|
the “Next” column) id 7. If you have some implicitly created states, like
|
|
transition-less initial states or states created using the explicit_creation
|
|
typedef, these will be added as a source at the end of the transition table. If
|
|
you have submachine states, a row will be added for them at the end of the
|
|
table, after the automatically or explicitly created states, which can change
|
|
their id. The next help you will need for debugging would be to call the
|
|
current_state method of the state_machine class, then the display_type helper to
|
|
generate a readable name from the id. If you do not want to go through the
|
|
transition table to fill an array of names, the library provides another helper,
|
|
fill_state_names, which, given an array of sufficient size (please see next
|
|
section to know how many states are defined in the state machine), will fill it
|
|
with typeid-generated names. </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch06s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch06.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch06s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Frontend / Backend
|
|
interface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Metaprogramming tools</td></tr></table></div></body></html> |