Генерация классов на основе буст-машин - PullRequest
0 голосов
/ 23 марта 2010

Я занимаюсь разработкой сетевого сервера, который потенциально может иметь сотни состояний и действий / событий. До сих пор я справлялся с простыми инструкциями switch, но теперь чувствую необходимость в конечном компьютере, который я могу настроить внешне с помощью файла text / xml.

Что вы предлагаете для существующего конечного автомата C ++, который позволяет мне настраивать состояния / события извне из файла?

Я посмотрел на конечный автомат наддува, но, похоже, ему не хватает возможности генерировать классы из файла конечного автомата, и я не хочу создавать сотни классов вручную?

Какие есть другие варианты?

Ответы [ 2 ]

1 голос
/ 23 октября 2012

QP (http://www.state -machine.com) - это еще один вариант, который, на мой взгляд, вполне ориентирован на развитие моделей.Недавно я прочитал тезис семестра, который подтверждает мое мнение: http://security.hsr.ch/mse/projects/2011_Code_Generator_for_UML_State_Machines.pdf

Теоретически вы также можете использовать интерфейс EUML boost :: msm, который имеет очень очень свободный от шума синтаксис.Вот тривиальный пример от boost:

BOOST_MSM_EUML_TRANSITION_TABLE(( 
Playing  == Stopped + play [some_guard] / (some_action , start_playback) ,
Open     == Stopped + open_close/ open_drawer                            ,
Stopped  == Stopped + stop                                               ,
Empty    == Open    + open_close / close_drawer                          ,
Open     == Empty   + open_close / open_drawer                           ,
Stopped  == Empty   + cd_detected [good_disk_format] / store_cd_info
),transition_table)  

Я не знаю, насколько серьезно воспринимать «экспериментальный» статус eUML, у меня до сих пор не было проблем с ним.

1 голос
/ 17 августа 2010

Если вы хотите быть гибким, вы должны искать Qt State Machine http://doc.qt.nokia.com/4.6/statemachine-api.html

...