From 0b599e645cc315deb8a584d4962fab576d4d85d7 Mon Sep 17 00:00:00 2001
From: quantum-leaps
Date: Fri, 28 Jul 2023 15:20:44 -0400
Subject: [PATCH] 5.3.0
---
README.md | 2 +-
doxygen/Doxyfile | 258 ---
doxygen/Doxyfile-CHM | 15 -
doxygen/Doxyfile-LATEX | 7 -
doxygen/bm.dox | 1026 ----------
doxygen/ce.dox | 1265 ------------
doxygen/cpt.dox | 52 -
doxygen/favicon.ico | Bin 1406 -> 0 bytes
doxygen/gs.dox | 707 -------
doxygen/history.dox | 1476 --------------
.../AN_Crash_Course_in_UML_State_Machines.gif | Bin 27832 -> 0 bytes
doxygen/images/AN_OOP_in_C.gif | Bin 28019 -> 0 bytes
doxygen/images/AN_OOP_in_C.png | Bin 115547 -> 0 bytes
doxygen/images/EK-LM3S811.jpg | Bin 30334 -> 0 bytes
doxygen/images/EK-LM4F120XL.jpg | Bin 51952 -> 0 bytes
doxygen/images/EK-TM4C123GXL.jpg | Bin 55105 -> 0 bytes
doxygen/images/about.png | Bin 90957 -> 0 bytes
doxygen/images/about_qm.png | Bin 115715 -> 0 bytes
doxygen/images/about_qt.png | Bin 103037 -> 0 bytes
doxygen/images/add_class.png | Bin 11525 -> 0 bytes
doxygen/images/add_package.png | Bin 9729 -> 0 bytes
doxygen/images/arrow_curved.gif | Bin 60 -> 0 bytes
doxygen/images/arrow_down.gif | Bin 53 -> 0 bytes
doxygen/images/arrow_up.gif | Bin 61 -> 0 bytes
doxygen/images/birds_eye.png | Bin 10942 -> 0 bytes
doxygen/images/birdseye_styles.jpg | Bin 23918 -> 0 bytes
doxygen/images/blinky_a1.png | Bin 29114 -> 0 bytes
doxygen/images/blinky_a1l.png | Bin 11102 -> 0 bytes
doxygen/images/blinky_a2.png | Bin 22637 -> 0 bytes
doxygen/images/blinky_add_tran.gif | Bin 98809 -> 0 bytes
doxygen/images/blinky_c1.png | Bin 24695 -> 0 bytes
doxygen/images/blinky_c2.png | Bin 28724 -> 0 bytes
doxygen/images/blinky_c3.png | Bin 7889 -> 0 bytes
doxygen/images/blinky_class.png | Bin 14636 -> 0 bytes
doxygen/images/blinky_code_gen.gif | Bin 127126 -> 0 bytes
doxygen/images/blinky_dir_add.gif | Bin 86681 -> 0 bytes
doxygen/images/blinky_ek-tm4c123gxl.gif | Bin 41735 -> 0 bytes
doxygen/images/blinky_file.png | Bin 6081 -> 0 bytes
doxygen/images/blinky_file_add.gif | Bin 90392 -> 0 bytes
doxygen/images/blinky_file_edit.gif | Bin 113562 -> 0 bytes
doxygen/images/blinky_i1.png | Bin 10392 -> 0 bytes
doxygen/images/blinky_i2.png | Bin 16831 -> 0 bytes
doxygen/images/blinky_init_add.gif | Bin 92412 -> 0 bytes
doxygen/images/blinky_init_prop.png | Bin 15545 -> 0 bytes
doxygen/images/blinky_linux.gif | Bin 519592 -> 0 bytes
doxygen/images/blinky_linux.png | Bin 13026 -> 0 bytes
doxygen/images/blinky_o1.png | Bin 10275 -> 0 bytes
doxygen/images/blinky_o2.png | Bin 8574 -> 0 bytes
doxygen/images/blinky_package.png | Bin 9002 -> 0 bytes
doxygen/images/blinky_s1.png | Bin 9954 -> 0 bytes
doxygen/images/blinky_s2.png | Bin 7997 -> 0 bytes
doxygen/images/blinky_s3.png | Bin 21988 -> 0 bytes
doxygen/images/blinky_sm.png | Bin 21932 -> 0 bytes
doxygen/images/blinky_sm_add.gif | Bin 41082 -> 0 bytes
doxygen/images/blinky_sm_add.png | Bin 27480 -> 0 bytes
doxygen/images/blinky_sm_show.gif | Bin 30824 -> 0 bytes
doxygen/images/blinky_sm_show.png | Bin 31432 -> 0 bytes
doxygen/images/blinky_state_add.gif | Bin 60505 -> 0 bytes
doxygen/images/blinky_state_off.png | Bin 20767 -> 0 bytes
doxygen/images/blinky_state_on.png | Bin 19772 -> 0 bytes
doxygen/images/blinky_t1.png | Bin 10434 -> 0 bytes
doxygen/images/blinky_t2.png | Bin 3945 -> 0 bytes
doxygen/images/blinky_t3.png | Bin 6216 -> 0 bytes
doxygen/images/blinky_tran_add.gif | Bin 73365 -> 0 bytes
doxygen/images/blinky_win.gif | Bin 507379 -> 0 bytes
doxygen/images/blinky_win32.png | Bin 5031 -> 0 bytes
doxygen/images/bm_attr-class-add.png | Bin 17573 -> 0 bytes
doxygen/images/bm_attr-class-prop.png | Bin 4676 -> 0 bytes
doxygen/images/bm_attr-free-add.png | Bin 25030 -> 0 bytes
doxygen/images/bm_attr-free-prop.png | Bin 11354 -> 0 bytes
doxygen/images/bm_class-add.png | Bin 14138 -> 0 bytes
doxygen/images/bm_class-ctor_c.png | Bin 16340 -> 0 bytes
doxygen/images/bm_class-ctor_cpp.png | Bin 20069 -> 0 bytes
doxygen/images/bm_class-oper_c.png | Bin 26938 -> 0 bytes
doxygen/images/bm_class-oper_cpp.png | Bin 21141 -> 0 bytes
doxygen/images/bm_class-oper_prop.png | Bin 11080 -> 0 bytes
doxygen/images/bm_class-super.png | Bin 7485 -> 0 bytes
doxygen/images/bm_class.png | Bin 15952 -> 0 bytes
doxygen/images/bm_class_prop.png | Bin 3864 -> 0 bytes
doxygen/images/bm_diagram-canvas.gif | Bin 92424 -> 0 bytes
doxygen/images/bm_diagram-lasso.gif | Bin 153167 -> 0 bytes
doxygen/images/bm_diagram-move.gif | Bin 267940 -> 0 bytes
doxygen/images/bm_diagram-pan.gif | Bin 382718 -> 0 bytes
doxygen/images/bm_diagram-select.gif | Bin 141227 -> 0 bytes
doxygen/images/bm_edit.png | Bin 19088 -> 0 bytes
doxygen/images/bm_evt-sig.png | Bin 36004 -> 0 bytes
doxygen/images/bm_evt-use.png | Bin 22555 -> 0 bytes
doxygen/images/bm_evt_c.png | Bin 7846 -> 0 bytes
doxygen/images/bm_evt_decl-pkg.png | Bin 10427 -> 0 bytes
doxygen/images/bm_evt_decl.png | Bin 10388 -> 0 bytes
doxygen/images/bm_fq-names.png | Bin 16689 -> 0 bytes
doxygen/images/bm_free-oper_c.png | Bin 12982 -> 0 bytes
doxygen/images/bm_model-diff.png | Bin 181977 -> 0 bytes
doxygen/images/bm_model-file.png | Bin 24776 -> 0 bytes
doxygen/images/bm_model-xml.png | Bin 45570 -> 0 bytes
doxygen/images/bm_model.png | Bin 31723 -> 0 bytes
doxygen/images/bm_model_fq-names.png | Bin 16801 -> 0 bytes
doxygen/images/bm_model_prop.png | Bin 9004 -> 0 bytes
doxygen/images/bm_package-add.png | Bin 19997 -> 0 bytes
doxygen/images/bm_package-extern.png | Bin 12040 -> 0 bytes
doxygen/images/bm_package-imp.png | Bin 18820 -> 0 bytes
doxygen/images/bm_package-imp1.png | Bin 60832 -> 0 bytes
doxygen/images/bm_package-namespace.png | Bin 16104 -> 0 bytes
doxygen/images/bm_package-stereo.png | Bin 14344 -> 0 bytes
doxygen/images/bm_package_prop.png | Bin 3637 -> 0 bytes
doxygen/images/bm_qp5.png | Bin 27352 -> 0 bytes
doxygen/images/bm_search.png | Bin 32627 -> 0 bytes
doxygen/images/bm_session-file.png | Bin 7445 -> 0 bytes
doxygen/images/btn_more.gif | Bin 683 -> 0 bytes
doxygen/images/bug.png | Bin 637 -> 0 bytes
doxygen/images/canvas.png | Bin 7802 -> 0 bytes
doxygen/images/ce_code-class.png | Bin 22195 -> 0 bytes
doxygen/images/ce_comment-doc.png | Bin 11859 -> 0 bytes
doxygen/images/ce_cond_catch.png | Bin 7897 -> 0 bytes
doxygen/images/ce_cond_hist.png | Bin 9306 -> 0 bytes
doxygen/images/ce_cond_multi.png | Bin 6738 -> 0 bytes
doxygen/images/ce_cond_nest.png | Bin 9404 -> 0 bytes
doxygen/images/ce_cond_state.png | Bin 9287 -> 0 bytes
doxygen/images/ce_cond_state_prop.png | Bin 3089 -> 0 bytes
doxygen/images/ce_cond_tran.png | Bin 9471 -> 0 bytes
doxygen/images/ce_cond_tran_prop.png | Bin 3808 -> 0 bytes
doxygen/images/ce_declare1.png | Bin 24177 -> 0 bytes
doxygen/images/ce_def_attr-static.png | Bin 19572 -> 0 bytes
doxygen/images/ce_def_attr.png | Bin 14045 -> 0 bytes
doxygen/images/ce_def_free-oper-c.png | Bin 37988 -> 0 bytes
doxygen/images/ce_def_free-oper-cpp.png | Bin 38739 -> 0 bytes
doxygen/images/ce_dir.png | Bin 32067 -> 0 bytes
doxygen/images/ce_dir_add.png | Bin 32067 -> 0 bytes
doxygen/images/ce_dir_name.png | Bin 24081 -> 0 bytes
doxygen/images/ce_dir_nest.png | Bin 36842 -> 0 bytes
doxygen/images/ce_disk.png | Bin 40101 -> 0 bytes
doxygen/images/ce_file_add.png | Bin 28460 -> 0 bytes
doxygen/images/ce_file_gen.png | Bin 111020 -> 0 bytes
doxygen/images/ce_file_name.png | Bin 19323 -> 0 bytes
doxygen/images/ce_file_prop.gif | Bin 8423 -> 0 bytes
doxygen/images/ce_gen-attr.png | Bin 14022 -> 0 bytes
doxygen/images/ce_gen-exa.png | Bin 48089 -> 0 bytes
doxygen/images/ce_gen-oper.png | Bin 13740 -> 0 bytes
doxygen/images/ce_gen-pkg.png | Bin 15455 -> 0 bytes
doxygen/images/ce_phys.png | Bin 26491 -> 0 bytes
doxygen/images/ce_qmc.png | Bin 16826 -> 0 bytes
doxygen/images/ce_qp5.png | Bin 27352 -> 0 bytes
doxygen/images/ce_sm.png | Bin 36119 -> 0 bytes
doxygen/images/checkboxoff.png | Bin 250 -> 0 bytes
doxygen/images/checkboxon.png | Bin 165 -> 0 bytes
doxygen/images/clear_log.png | Bin 615 -> 0 bytes
doxygen/images/code_styles.jpg | Bin 42555 -> 0 bytes
doxygen/images/code_styles2.jpg | Bin 20581 -> 0 bytes
doxygen/images/curr_item.jpg | Bin 61965 -> 0 bytes
doxygen/images/diagram_close.png | Bin 3823 -> 0 bytes
doxygen/images/diagram_export.png | Bin 176591 -> 0 bytes
doxygen/images/diagram_lasso.png | Bin 18725 -> 0 bytes
doxygen/images/diagram_open.png | Bin 30384 -> 0 bytes
doxygen/images/diagram_select.png | Bin 17489 -> 0 bytes
doxygen/images/diagram_styles.jpg | Bin 33243 -> 0 bytes
doxygen/images/doc_styles.jpg | Bin 22342 -> 0 bytes
doxygen/images/dock_windows.png | Bin 166833 -> 0 bytes
doxygen/images/docking_windows.jpg | Bin 39635 -> 0 bytes
doxygen/images/download.png | Bin 148729 -> 0 bytes
doxygen/images/dpp_win-con.gif | Bin 105298 -> 0 bytes
doxygen/images/dpp_win-gui.gif | Bin 127321 -> 0 bytes
doxygen/images/drag_explorer.png | Bin 35085 -> 0 bytes
doxygen/images/drag_file.png | Bin 35746 -> 0 bytes
doxygen/images/env_windows.png | Bin 25523 -> 0 bytes
doxygen/images/error_l001.png | Bin 19373 -> 0 bytes
doxygen/images/ex_dpp.jpg | Bin 345471 -> 0 bytes
doxygen/images/ex_dpp_linux.jpg | Bin 136971 -> 0 bytes
doxygen/images/ex_dpp_win32.png | Bin 18609 -> 0 bytes
doxygen/images/ex_game-gui_win32.png | Bin 56445 -> 0 bytes
doxygen/images/ex_game.jpg | Bin 386914 -> 0 bytes
doxygen/images/ex_game.png | Bin 163136 -> 0 bytes
doxygen/images/ex_pelican.png | Bin 38874 -> 0 bytes
doxygen/images/ex_pelican_win32.png | Bin 6764 -> 0 bytes
doxygen/images/examples.png | Bin 23267 -> 0 bytes
doxygen/images/explorer.png | Bin 34500 -> 0 bytes
doxygen/images/explorer_popup.png | Bin 41084 -> 0 bytes
doxygen/images/explorer_styles.jpg | Bin 15866 -> 0 bytes
doxygen/images/extra_info_bottom.gif | Bin 778 -> 0 bytes
doxygen/images/extra_info_left.gif | Bin 63 -> 0 bytes
doxygen/images/favicon.ico | Bin 1406 -> 0 bytes
doxygen/images/footer_bgd.jpg | Bin 330 -> 0 bytes
doxygen/images/framework_item.png | Bin 58733 -> 0 bytes
doxygen/images/game_win-gui.gif | Bin 215797 -> 0 bytes
doxygen/images/gen_diagram-tools.png | Bin 5047 -> 0 bytes
doxygen/images/github-star.jpg | Bin 25587 -> 0 bytes
doxygen/images/github_download.jpg | Bin 48438 -> 0 bytes
doxygen/images/grid_drop.png | Bin 3118 -> 0 bytes
doxygen/images/header_bgd.jpg | Bin 479 -> 0 bytes
doxygen/images/header_bgd.png | Bin 570 -> 0 bytes
doxygen/images/header_logo.gif | Bin 3840 -> 0 bytes
doxygen/images/header_logo.png | Bin 2051 -> 0 bytes
doxygen/images/header_logo_ql.png | Bin 16482 -> 0 bytes
doxygen/images/help.png | Bin 71153 -> 0 bytes
doxygen/images/initial1.png | Bin 675 -> 0 bytes
doxygen/images/install_big.png | Bin 99513 -> 0 bytes
doxygen/images/item_locked.png | Bin 36488 -> 0 bytes
doxygen/images/item_unlocked.png | Bin 36146 -> 0 bytes
doxygen/images/keyboard.jpg | Bin 1602 -> 0 bytes
doxygen/images/keyboard.png | Bin 4638 -> 0 bytes
doxygen/images/license_com-dlg.png | Bin 11789 -> 0 bytes
doxygen/images/license_gpl-btn.png | Bin 2174 -> 0 bytes
doxygen/images/license_gpl-dlg.png | Bin 31853 -> 0 bytes
doxygen/images/list-step.png | Bin 658 -> 0 bytes
doxygen/images/list-step1.png | Bin 892 -> 0 bytes
doxygen/images/locked.png | Bin 48305 -> 0 bytes
doxygen/images/locked0.png | Bin 742 -> 0 bytes
doxygen/images/locked1.png | Bin 918 -> 0 bytes
doxygen/images/locked_diag.png | Bin 5495 -> 0 bytes
doxygen/images/locked_unlocked.png | Bin 4437 -> 0 bytes
doxygen/images/log.png | Bin 7542 -> 0 bytes
doxygen/images/log_error.png | Bin 18414 -> 0 bytes
doxygen/images/log_menu.png | Bin 10680 -> 0 bytes
doxygen/images/log_signals.png | Bin 15531 -> 0 bytes
doxygen/images/log_styles1.jpg | Bin 46056 -> 0 bytes
doxygen/images/log_styles2.jpg | Bin 40417 -> 0 bytes
doxygen/images/log_tool.png | Bin 48642 -> 0 bytes
doxygen/images/logo_linux.jpg | Bin 3758 -> 0 bytes
doxygen/images/logo_mac_osx.jpg | Bin 3585 -> 0 bytes
doxygen/images/logo_ql-comp.png | Bin 13174 -> 0 bytes
doxygen/images/logo_ql.jpg | Bin 9661 -> 0 bytes
doxygen/images/logo_ql.png | Bin 19676 -> 0 bytes
doxygen/images/logo_ql_TM.jpg | Bin 6070 -> 0 bytes
doxygen/images/logo_qm_70x55.png | Bin 6401 -> 0 bytes
doxygen/images/logo_windows.jpg | Bin 3652 -> 0 bytes
doxygen/images/mainwindow_styles.jpg | Bin 93689 -> 0 bytes
doxygen/images/manage_tools.png | Bin 16443 -> 0 bytes
doxygen/images/menu_edit.png | Bin 28379 -> 0 bytes
doxygen/images/menu_file-recent.png | Bin 26235 -> 0 bytes
doxygen/images/menu_file.png | Bin 19482 -> 0 bytes
doxygen/images/menu_help.png | Bin 17699 -> 0 bytes
doxygen/images/menu_search.png | Bin 29574 -> 0 bytes
doxygen/images/menu_tools.png | Bin 22655 -> 0 bytes
doxygen/images/menu_view.png | Bin 16646 -> 0 bytes
doxygen/images/menu_view_docks.png | Bin 11583 -> 0 bytes
doxygen/images/menu_window.png | Bin 25612 -> 0 bytes
doxygen/images/model.png | Bin 36578 -> 0 bytes
doxygen/images/mouse_wheel.jpg | Bin 1183 -> 0 bytes
doxygen/images/mouse_wheel.png | Bin 3733 -> 0 bytes
doxygen/images/mvc.png | Bin 27037 -> 0 bytes
doxygen/images/navlist.gif | Bin 2882 -> 0 bytes
doxygen/images/new_blinky.png | Bin 36461 -> 0 bytes
doxygen/images/new_model.png | Bin 41131 -> 0 bytes
doxygen/images/note.gif | Bin 957 -> 0 bytes
doxygen/images/opening.png | Bin 13213 -> 0 bytes
doxygen/images/panning.png | Bin 8490 -> 0 bytes
doxygen/images/pdf_tiny.gif | Bin 282 -> 0 bytes
doxygen/images/property_styles.jpg | Bin 29657 -> 0 bytes
doxygen/images/qm-dark-linux.png | Bin 151485 -> 0 bytes
doxygen/images/qm-dark.png | Bin 160875 -> 0 bytes
doxygen/images/qm-light.png | Bin 172666 -> 0 bytes
doxygen/images/qm-screens.jpg | Bin 128619 -> 0 bytes
doxygen/images/qm-screens0.jpg | Bin 149101 -> 0 bytes
doxygen/images/qm-tut_makefile.png | Bin 23436 -> 0 bytes
doxygen/images/qm1.png | Bin 84379 -> 0 bytes
doxygen/images/qm2.png | Bin 159241 -> 0 bytes
doxygen/images/qm3.png | Bin 103881 -> 0 bytes
doxygen/images/qm4.png | Bin 101938 -> 0 bytes
doxygen/images/qm_3monitors.jpg | Bin 115858 -> 0 bytes
doxygen/images/qm_backups.png | Bin 21393 -> 0 bytes
doxygen/images/qm_banner.jpg | Bin 181261 -> 0 bytes
doxygen/images/qm_download.png | Bin 149070 -> 0 bytes
doxygen/images/qm_gh.jpg | Bin 137518 -> 0 bytes
doxygen/images/qm_gh.png | Bin 53525 -> 0 bytes
doxygen/images/qm_icon.png | Bin 2961 -> 0 bytes
doxygen/images/qm_panels.png | Bin 40757 -> 0 bytes
doxygen/images/qm_qss.png | Bin 5894 -> 0 bytes
doxygen/images/qm_sf.jpg | Bin 218882 -> 0 bytes
doxygen/images/qm_sf.png | Bin 148413 -> 0 bytes
doxygen/images/qm_shortcut.png | Bin 2235 -> 0 bytes
doxygen/images/qm_tut_video.jpg | Bin 88284 -> 0 bytes
doxygen/images/qp-bundle.png | Bin 16144 -> 0 bytes
doxygen/images/qp-smile_280.jpg | Bin 18090 -> 0 bytes
doxygen/images/qp_classes.gif | Bin 41664 -> 0 bytes
doxygen/images/qp_components.jpg | Bin 33417 -> 0 bytes
doxygen/images/qp_sm.png | Bin 15730 -> 0 bytes
doxygen/images/qt_installer.gif | Bin 17632 -> 0 bytes
doxygen/images/radiooff.png | Bin 250 -> 0 bytes
doxygen/images/radioon.png | Bin 243 -> 0 bytes
doxygen/images/scrolling.png | Bin 8255 -> 0 bytes
doxygen/images/sd_toolbox.png | Bin 6786 -> 0 bytes
doxygen/images/search_styles.jpg | Bin 37691 -> 0 bytes
doxygen/images/sel_lasso.png | Bin 12933 -> 0 bytes
doxygen/images/separator.gif | Bin 624 -> 0 bytes
doxygen/images/setup_linux.jpg | Bin 30790 -> 0 bytes
doxygen/images/setup_linux.png | Bin 104629 -> 0 bytes
doxygen/images/setup_linux_cmd.jpg | Bin 55571 -> 0 bytes
doxygen/images/setup_linux_cmd.png | Bin 127094 -> 0 bytes
doxygen/images/setup_linux_file.png | Bin 63440 -> 0 bytes
doxygen/images/setup_linux_icon.png | Bin 102481 -> 0 bytes
doxygen/images/setup_linux_perm.png | Bin 109284 -> 0 bytes
doxygen/images/setup_linux_shortcut.png | Bin 128882 -> 0 bytes
doxygen/images/setup_mac.jpg | Bin 42578 -> 0 bytes
doxygen/images/setup_mac.png | Bin 108820 -> 0 bytes
doxygen/images/setup_mac_run.png | Bin 74854 -> 0 bytes
doxygen/images/setup_run_linux.png | Bin 33204 -> 0 bytes
doxygen/images/setup_run_mac.png | Bin 60369 -> 0 bytes
doxygen/images/setup_win.jpg | Bin 17960 -> 0 bytes
doxygen/images/setup_win.png | Bin 111913 -> 0 bytes
doxygen/images/shot0_sml.jpg | Bin 24045 -> 0 bytes
doxygen/images/show_diagram.png | Bin 11171 -> 0 bytes
doxygen/images/sm_choice-prop.png | Bin 9349 -> 0 bytes
doxygen/images/sm_choice-tran_ani.gif | Bin 22681 -> 0 bytes
doxygen/images/sm_choice.gif | Bin 10317 -> 0 bytes
doxygen/images/sm_choice.png | Bin 7984 -> 0 bytes
doxygen/images/sm_choice_actions.png | Bin 12649 -> 0 bytes
doxygen/images/sm_choice_att-ani.gif | Bin 60283 -> 0 bytes
doxygen/images/sm_choice_else.png | Bin 18394 -> 0 bytes
doxygen/images/sm_choice_empty.png | Bin 22575 -> 0 bytes
doxygen/images/sm_choice_graph.png | Bin 25253 -> 0 bytes
doxygen/images/sm_choice_int-ani.gif | Bin 46010 -> 0 bytes
doxygen/images/sm_choice_move-ani.gif | Bin 96583 -> 0 bytes
doxygen/images/sm_choice_nest-ani.gif | Bin 42017 -> 0 bytes
doxygen/images/sm_choice_nest.png | Bin 8434 -> 0 bytes
doxygen/images/sm_choice_order.png | Bin 13200 -> 0 bytes
doxygen/images/sm_choice_prop.png | Bin 17177 -> 0 bytes
doxygen/images/sm_choice_tran-ani.gif | Bin 47557 -> 0 bytes
doxygen/images/sm_draw.png | Bin 8508 -> 0 bytes
doxygen/images/sm_epseg.png | Bin 9890 -> 0 bytes
doxygen/images/sm_epseg_prop.png | Bin 26892 -> 0 bytes
doxygen/images/sm_guard.gif | Bin 7937 -> 0 bytes
doxygen/images/sm_guard.png | Bin 8874 -> 0 bytes
doxygen/images/sm_hist-add.gif | Bin 53200 -> 0 bytes
doxygen/images/sm_hist-attach.gif | Bin 30815 -> 0 bytes
doxygen/images/sm_hist-subm.png | Bin 14182 -> 0 bytes
doxygen/images/sm_hist.png | Bin 38266 -> 0 bytes
doxygen/images/sm_hist_prop.png | Bin 38266 -> 0 bytes
doxygen/images/sm_init-add.gif | Bin 105272 -> 0 bytes
doxygen/images/sm_init-invalid.gif | Bin 52971 -> 0 bytes
doxygen/images/sm_init-text.gif | Bin 132646 -> 0 bytes
doxygen/images/sm_init-types.png | Bin 13739 -> 0 bytes
doxygen/images/sm_init_prop.png | Bin 8652 -> 0 bytes
doxygen/images/sm_init_types.png | Bin 9753 -> 0 bytes
doxygen/images/sm_intern.png | Bin 8685 -> 0 bytes
doxygen/images/sm_qfsm-style.png | Bin 9940 -> 0 bytes
doxygen/images/sm_qhsm-based.png | Bin 9946 -> 0 bytes
doxygen/images/sm_qhsm-ctor.png | Bin 11165 -> 0 bytes
doxygen/images/sm_qmactive.png | Bin 16620 -> 0 bytes
doxygen/images/sm_qmsm-based.png | Bin 26087 -> 0 bytes
doxygen/images/sm_qmsm-ctor.png | Bin 10692 -> 0 bytes
doxygen/images/sm_qmsm.png | Bin 13788 -> 0 bytes
doxygen/images/sm_route-anim.gif | Bin 102119 -> 0 bytes
doxygen/images/sm_smstate.png | Bin 51651 -> 0 bytes
doxygen/images/sm_state-add.gif | Bin 65413 -> 0 bytes
doxygen/images/sm_state-del.gif | Bin 85390 -> 0 bytes
doxygen/images/sm_state-entry.gif | Bin 89843 -> 0 bytes
doxygen/images/sm_state-exit.gif | Bin 103383 -> 0 bytes
doxygen/images/sm_state-move.gif | Bin 67919 -> 0 bytes
doxygen/images/sm_state-resize.gif | Bin 132423 -> 0 bytes
doxygen/images/sm_state_entry.png | Bin 5503 -> 0 bytes
doxygen/images/sm_state_exit.png | Bin 5481 -> 0 bytes
doxygen/images/sm_state_nest.png | Bin 10011 -> 0 bytes
doxygen/images/sm_state_prop.png | Bin 11439 -> 0 bytes
doxygen/images/sm_statechart_prop.png | Bin 42697 -> 0 bytes
doxygen/images/sm_subm.png | Bin 18904 -> 0 bytes
doxygen/images/sm_subm_add.png | Bin 20207 -> 0 bytes
doxygen/images/sm_subm_from_state.png | Bin 20630 -> 0 bytes
doxygen/images/sm_subm_prop.png | Bin 24880 -> 0 bytes
doxygen/images/sm_subm_resize.png | Bin 19203 -> 0 bytes
doxygen/images/sm_super - Copy.png | Bin 16653 -> 0 bytes
doxygen/images/sm_super.png | Bin 17217 -> 0 bytes
doxygen/images/sm_toolbox.png | Bin 5638 -> 0 bytes
doxygen/images/sm_tran-anim.gif | Bin 222043 -> 0 bytes
doxygen/images/sm_tran-move.gif | Bin 186190 -> 0 bytes
doxygen/images/sm_tran-text.gif | Bin 81918 -> 0 bytes
doxygen/images/sm_tran.gif | Bin 5114 -> 0 bytes
doxygen/images/sm_tran_CATCH_ALL.png | Bin 20709 -> 0 bytes
doxygen/images/sm_tran_internal-add.gif | Bin 54227 -> 0 bytes
doxygen/images/sm_tran_list.png | Bin 15406 -> 0 bytes
doxygen/images/sm_tran_prop.png | Bin 11385 -> 0 bytes
doxygen/images/sm_tran_self.png | Bin 14476 -> 0 bytes
doxygen/images/sm_tran_source.png | Bin 12633 -> 0 bytes
doxygen/images/sm_tran_state-add.gif | Bin 62086 -> 0 bytes
doxygen/images/sm_tran_text.png | Bin 10216 -> 0 bytes
doxygen/images/sm_use-me.png | Bin 29595 -> 0 bytes
doxygen/images/sm_xp_prop.png | Bin 23931 -> 0 bytes
doxygen/images/sm_xpseg.png | Bin 6554 -> 0 bytes
doxygen/images/sm_xpseg_choice.png | Bin 4925 -> 0 bytes
doxygen/images/sm_xpseg_err.png | Bin 25037 -> 0 bytes
doxygen/images/sm_xpseg_prop.png | Bin 15392 -> 0 bytes
doxygen/images/sourceforge.png | Bin 21150 -> 0 bytes
doxygen/images/state1.png | Bin 1058 -> 0 bytes
doxygen/images/state_del.png | Bin 15879 -> 0 bytes
doxygen/images/state_move.png | Bin 10466 -> 0 bytes
doxygen/images/state_resize.png | Bin 14149 -> 0 bytes
doxygen/images/state_text.png | Bin 27071 -> 0 bytes
doxygen/images/status.jpg | Bin 11066 -> 0 bytes
doxygen/images/status_file.jpg | Bin 6290 -> 0 bytes
doxygen/images/subm_hist.gif | Bin 30302 -> 0 bytes
doxygen/images/subm_state_prop.png | Bin 11665 -> 0 bytes
doxygen/images/subwindows.jpg | Bin 34054 -> 0 bytes
doxygen/images/svg.jpg | Bin 49289 -> 0 bytes
doxygen/images/tabs.jpg | Bin 30730 -> 0 bytes
doxygen/images/tb_edit.png | Bin 3056 -> 0 bytes
doxygen/images/tb_file.png | Bin 1950 -> 0 bytes
doxygen/images/tb_tools.png | Bin 2812 -> 0 bytes
doxygen/images/tb_view-grid.png | Bin 2700 -> 0 bytes
doxygen/images/tb_view.png | Bin 2639 -> 0 bytes
doxygen/images/th_gradient.png | Bin 222 -> 0 bytes
doxygen/images/title_clean.png | Bin 2828 -> 0 bytes
doxygen/images/title_dirty.png | Bin 6056 -> 0 bytes
doxygen/images/tool10.png | Bin 608 -> 0 bytes
doxygen/images/tran1.png | Bin 716 -> 0 bytes
doxygen/images/txt_tiny.gif | Bin 644 -> 0 bytes
doxygen/images/ui_dock.gif | Bin 766894 -> 0 bytes
doxygen/images/ui_explorer_drag-item.gif | Bin 81787 -> 0 bytes
doxygen/images/ui_explorer_drag-link.gif | Bin 32650 -> 0 bytes
doxygen/images/ui_log-tool.png | Bin 48642 -> 0 bytes
doxygen/images/ui_prop.png | Bin 140942 -> 0 bytes
doxygen/images/ui_prop_state.png | Bin 26495 -> 0 bytes
doxygen/images/ui_search.png | Bin 32627 -> 0 bytes
doxygen/images/ui_tool_blinky-build.png | Bin 21662 -> 0 bytes
doxygen/images/ui_tool_blinky-run.png | Bin 35712 -> 0 bytes
doxygen/images/ui_tool_iar-log.png | Bin 29582 -> 0 bytes
doxygen/images/ui_tool_iar.png | Bin 19274 -> 0 bytes
doxygen/images/ui_toolbox.png | Bin 9827 -> 0 bytes
doxygen/images/ui_view-styles.jpg | Bin 69828 -> 0 bytes
doxygen/images/ui_view-styles.png | Bin 36477 -> 0 bytes
doxygen/images/undo_stack.png | Bin 8009 -> 0 bytes
doxygen/images/unlocked.png | Bin 3069 -> 0 bytes
doxygen/images/video.png | Bin 435 -> 0 bytes
doxygen/images/view_bird.png | Bin 2724 -> 0 bytes
doxygen/images/view_explorer.png | Bin 2738 -> 0 bytes
doxygen/images/view_log.png | Bin 2725 -> 0 bytes
doxygen/images/view_prop.png | Bin 2749 -> 0 bytes
doxygen/images/view_search.png | Bin 2756 -> 0 bytes
doxygen/images/view_toolbox.png | Bin 2728 -> 0 bytes
doxygen/images/web_tiny.gif | Bin 609 -> 0 bytes
doxygen/images/windows.png | Bin 527 -> 0 bytes
doxygen/images/zip_tiny.gif | Bin 607 -> 0 bytes
doxygen/images/zoom.png | Bin 11166 -> 0 bytes
doxygen/images/zoom_slider.png | Bin 1116 -> 0 bytes
doxygen/img/add.png | Bin 1370 -> 0 bytes
doxygen/img/anchor.png | Bin 298 -> 0 bytes
doxygen/img/arrow_right.png | Bin 960 -> 0 bytes
doxygen/img/attr.png | Bin 1625 -> 0 bytes
doxygen/img/attr_file.png | Bin 1492 -> 0 bytes
doxygen/img/attr_glob.png | Bin 1848 -> 0 bytes
doxygen/img/attr_pkg.png | Bin 1465 -> 0 bytes
doxygen/img/attr_priv.png | Bin 1576 -> 0 bytes
doxygen/img/attr_private.png | Bin 515 -> 0 bytes
doxygen/img/attr_prot.png | Bin 1831 -> 0 bytes
doxygen/img/attr_sta.png | Bin 1703 -> 0 bytes
doxygen/img/attr_sta_priv.png | Bin 1785 -> 0 bytes
doxygen/img/attr_sta_prot.png | Bin 1915 -> 0 bytes
doxygen/img/birdseye_view.png | Bin 1784 -> 0 bytes
doxygen/img/btn_close.png | Bin 597 -> 0 bytes
doxygen/img/bug.png | Bin 1676 -> 0 bytes
doxygen/img/build.png | Bin 720 -> 0 bytes
doxygen/img/cascade.png | Bin 409 -> 0 bytes
doxygen/img/checkboxoff.png | Bin 250 -> 0 bytes
doxygen/img/checkboxon.png | Bin 165 -> 0 bytes
doxygen/img/choice.png | Bin 1179 -> 0 bytes
doxygen/img/class.png | Bin 421 -> 0 bytes
doxygen/img/class_active.png | Bin 647 -> 0 bytes
doxygen/img/class_attributes.png | Bin 528 -> 0 bytes
doxygen/img/class_evt.png | Bin 1098 -> 0 bytes
doxygen/img/class_operations.png | Bin 521 -> 0 bytes
doxygen/img/class_sm.png | Bin 590 -> 0 bytes
doxygen/img/class_thread.png | Bin 493 -> 0 bytes
doxygen/img/class_timeevt.png | Bin 712 -> 0 bytes
doxygen/img/clear_log.png | Bin 905 -> 0 bytes
doxygen/img/close_all.png | Bin 505 -> 0 bytes
doxygen/img/close_model.png | Bin 735 -> 0 bytes
doxygen/img/close_one.png | Bin 457 -> 0 bytes
doxygen/img/codegen.png | Bin 729 -> 0 bytes
doxygen/img/collapse.png | Bin 476 -> 0 bytes
doxygen/img/constant.png | Bin 502 -> 0 bytes
doxygen/img/copy.png | Bin 656 -> 0 bytes
doxygen/img/copy_diagram.png | Bin 968 -> 0 bytes
doxygen/img/copy_link.png | Bin 749 -> 0 bytes
doxygen/img/cur_end.png | Bin 262 -> 0 bytes
doxygen/img/cur_enda.png | Bin 405 -> 0 bytes
doxygen/img/cur_endx.png | Bin 1025 -> 0 bytes
doxygen/img/cur_grab.png | Bin 262 -> 0 bytes
doxygen/img/cur_hor.png | Bin 315 -> 0 bytes
doxygen/img/cur_initial1.png | Bin 367 -> 0 bytes
doxygen/img/cur_initial1a.png | Bin 491 -> 0 bytes
doxygen/img/cur_initial1x.png | Bin 1040 -> 0 bytes
doxygen/img/cur_normal.png | Bin 417 -> 0 bytes
doxygen/img/cur_pan.png | Bin 307 -> 0 bytes
doxygen/img/cur_select.png | Bin 722 -> 0 bytes
doxygen/img/cur_select0.png | Bin 686 -> 0 bytes
doxygen/img/cur_select1.png | Bin 671 -> 0 bytes
doxygen/img/cur_state1.png | Bin 692 -> 0 bytes
doxygen/img/cur_text_move.png | Bin 294 -> 0 bytes
doxygen/img/cur_tran1.png | Bin 395 -> 0 bytes
doxygen/img/cur_tran1a.png | Bin 518 -> 0 bytes
doxygen/img/cur_tran1x.png | Bin 1026 -> 0 bytes
doxygen/img/cur_ver.png | Bin 290 -> 0 bytes
doxygen/img/cut.png | Bin 1456 -> 0 bytes
doxygen/img/delete.png | Bin 591 -> 0 bytes
doxygen/img/diagrams.png | Bin 701 -> 0 bytes
doxygen/img/directory.png | Bin 677 -> 0 bytes
doxygen/img/div_hor.png | Bin 335 -> 0 bytes
doxygen/img/document.png | Bin 405 -> 0 bytes
doxygen/img/edit.png | Bin 1131 -> 0 bytes
doxygen/img/empty.png | Bin 399 -> 0 bytes
doxygen/img/enumeration.png | Bin 215 -> 0 bytes
doxygen/img/env_var.png | Bin 753 -> 0 bytes
doxygen/img/ep_seg.png | Bin 1194 -> 0 bytes
doxygen/img/expand.png | Bin 487 -> 0 bytes
doxygen/img/explorer.png | Bin 1667 -> 0 bytes
doxygen/img/explorer_delete.png | Bin 445 -> 0 bytes
doxygen/img/explorer_toolbar.png | Bin 1270 -> 0 bytes
doxygen/img/explorer_up-down.png | Bin 902 -> 0 bytes
doxygen/img/export_diagram.png | Bin 1047 -> 0 bytes
doxygen/img/export_svg.png | Bin 701 -> 0 bytes
doxygen/img/extern.png | Bin 143 -> 0 bytes
doxygen/img/file-download-lock.svg | 17 -
doxygen/img/file.png | Bin 411 -> 0 bytes
doxygen/img/file_c.png | Bin 624 -> 0 bytes
doxygen/img/file_cpp.png | Bin 807 -> 0 bytes
doxygen/img/file_doc.png | Bin 374 -> 0 bytes
doxygen/img/file_h.png | Bin 604 -> 0 bytes
doxygen/img/file_header.png | Bin 1900 -> 0 bytes
doxygen/img/file_ino.png | Bin 475 -> 0 bytes
doxygen/img/file_mak.png | Bin 719 -> 0 bytes
doxygen/img/file_make.png | Bin 1564 -> 0 bytes
doxygen/img/file_pdf.png | Bin 641 -> 0 bytes
doxygen/img/file_py.png | Bin 594 -> 0 bytes
doxygen/img/file_qm.png | Bin 1030 -> 0 bytes
doxygen/img/file_qmp.png | Bin 975 -> 0 bytes
doxygen/img/file_source_c.png | Bin 1935 -> 0 bytes
doxygen/img/file_source_cpp.png | Bin 1953 -> 0 bytes
doxygen/img/file_source_ino.png | Bin 1985 -> 0 bytes
doxygen/img/file_source_make.png | Bin 1564 -> 0 bytes
doxygen/img/file_source_py.png | Bin 2054 -> 0 bytes
doxygen/img/file_source_tcl.png | Bin 1827 -> 0 bytes
doxygen/img/file_tcl.png | Bin 194 -> 0 bytes
doxygen/img/file_wish.png | Bin 185 -> 0 bytes
doxygen/img/filesystem.png | Bin 263 -> 0 bytes
doxygen/img/final.png | Bin 580 -> 0 bytes
doxygen/img/find.png | Bin 1255 -> 0 bytes
doxygen/img/folder.png | Bin 677 -> 0 bytes
doxygen/img/forbidden.png | Bin 859 -> 0 bytes
doxygen/img/forum.png | Bin 1598 -> 0 bytes
doxygen/img/github-corner.png | Bin 1808 -> 0 bytes
doxygen/img/github-qm.png | Bin 9975 -> 0 bytes
doxygen/img/grid.png | Bin 250 -> 0 bytes
doxygen/img/grid0.png | Bin 253 -> 0 bytes
doxygen/img/grid1.png | Bin 253 -> 0 bytes
doxygen/img/grid2.png | Bin 262 -> 0 bytes
doxygen/img/grid3.png | Bin 259 -> 0 bytes
doxygen/img/header_bg.png | Bin 506 -> 0 bytes
doxygen/img/header_logo_ql.png | Bin 12767 -> 0 bytes
doxygen/img/help.png | Bin 1658 -> 0 bytes
doxygen/img/help_contents.png | Bin 1277 -> 0 bytes
doxygen/img/help_context.png | Bin 1135 -> 0 bytes
doxygen/img/help_dark.png | Bin 774 -> 0 bytes
doxygen/img/help_light.png | Bin 705 -> 0 bytes
doxygen/img/history.png | Bin 1116 -> 0 bytes
doxygen/img/home.png | Bin 841 -> 0 bytes
doxygen/img/idea.png | Bin 1151 -> 0 bytes
doxygen/img/img.htm | 240 ---
doxygen/img/import_package.png | Bin 873 -> 0 bytes
doxygen/img/initial.png | Bin 970 -> 0 bytes
doxygen/img/key_down.png | Bin 692 -> 0 bytes
doxygen/img/key_left.png | Bin 645 -> 0 bytes
doxygen/img/key_right.png | Bin 699 -> 0 bytes
doxygen/img/key_up.png | Bin 692 -> 0 bytes
doxygen/img/keyboard.png | Bin 4638 -> 0 bytes
doxygen/img/license.png | Bin 793 -> 0 bytes
doxygen/img/license_gpl.png | Bin 1251 -> 0 bytes
doxygen/img/license_osi.png | Bin 1909 -> 0 bytes
doxygen/img/lock.png | Bin 638 -> 0 bytes
doxygen/img/lock16.png | Bin 404 -> 0 bytes
doxygen/img/log.png | Bin 280 -> 0 bytes
doxygen/img/logo_github.png | Bin 3002 -> 0 bytes
doxygen/img/logo_linux48.png | Bin 2173 -> 0 bytes
doxygen/img/logo_macos48.png | Bin 1907 -> 0 bytes
doxygen/img/logo_ql-compact.png | Bin 20241 -> 0 bytes
doxygen/img/logo_win.png | Bin 1402 -> 0 bytes
doxygen/img/logo_win48.png | Bin 1882 -> 0 bytes
doxygen/img/macro.png | Bin 320 -> 0 bytes
doxygen/img/macro_const.png | Bin 1025 -> 0 bytes
doxygen/img/macro_fun.png | Bin 884 -> 0 bytes
doxygen/img/minus.png | Bin 289 -> 0 bytes
doxygen/img/model.png | Bin 948 -> 0 bytes
doxygen/img/move_down.png | Bin 1021 -> 0 bytes
doxygen/img/move_up.png | Bin 777 -> 0 bytes
doxygen/img/movie.png | Bin 486 -> 0 bytes
doxygen/img/my_icon.svg | 0
doxygen/img/my_icon0.svg | 17 -
doxygen/img/my_icon1.svg | 6 -
doxygen/img/new_model.png | Bin 801 -> 0 bytes
doxygen/img/newmodel_dialog.png | Bin 755 -> 0 bytes
doxygen/img/next_window.png | Bin 823 -> 0 bytes
doxygen/img/note.png | Bin 690 -> 0 bytes
doxygen/img/open.png | Bin 856 -> 0 bytes
doxygen/img/open_model.png | Bin 903 -> 0 bytes
doxygen/img/oper.png | Bin 1937 -> 0 bytes
doxygen/img/oper_file.png | Bin 1411 -> 0 bytes
doxygen/img/oper_glob.png | Bin 1886 -> 0 bytes
doxygen/img/oper_pkg.png | Bin 1337 -> 0 bytes
doxygen/img/oper_priv.png | Bin 1478 -> 0 bytes
doxygen/img/oper_prot.png | Bin 1811 -> 0 bytes
doxygen/img/oper_sta.png | Bin 1714 -> 0 bytes
doxygen/img/oper_sta_priv.png | Bin 1649 -> 0 bytes
doxygen/img/oper_sta_prot.png | Bin 1921 -> 0 bytes
doxygen/img/options.png | Bin 332 -> 0 bytes
doxygen/img/package.png | Bin 300 -> 0 bytes
doxygen/img/package_comp.png | Bin 640 -> 0 bytes
doxygen/img/package_comp_imp.png | Bin 1081 -> 0 bytes
doxygen/img/package_diag.png | Bin 840 -> 0 bytes
doxygen/img/package_diag_imp.png | Bin 1271 -> 0 bytes
doxygen/img/package_evts.png | Bin 657 -> 0 bytes
doxygen/img/package_evts_imp.png | Bin 1097 -> 0 bytes
doxygen/img/package_frame.png | Bin 1227 -> 0 bytes
doxygen/img/package_frame_imp.png | Bin 1667 -> 0 bytes
doxygen/img/package_imp.png | Bin 838 -> 0 bytes
doxygen/img/package_module.png | Bin 526 -> 0 bytes
doxygen/img/package_module_imp.png | Bin 958 -> 0 bytes
doxygen/img/page_setup.png | Bin 528 -> 0 bytes
doxygen/img/pan.png | Bin 957 -> 0 bytes
doxygen/img/parameter.png | Bin 1052 -> 0 bytes
doxygen/img/paste.png | Bin 726 -> 0 bytes
doxygen/img/paste_link.png | Bin 775 -> 0 bytes
doxygen/img/pdf.gif | Bin 282 -> 0 bytes
doxygen/img/plus.png | Bin 325 -> 0 bytes
doxygen/img/point.png | Bin 1321 -> 0 bytes
doxygen/img/prev_window.png | Bin 801 -> 0 bytes
doxygen/img/print.png | Bin 365 -> 0 bytes
doxygen/img/private_attribute.png | Bin 402 -> 0 bytes
doxygen/img/private_operation.png | Bin 596 -> 0 bytes
doxygen/img/properties.png | Bin 650 -> 0 bytes
doxygen/img/property.png | Bin 705 -> 0 bytes
doxygen/img/protected_attributed.png | Bin 415 -> 0 bytes
doxygen/img/protected_operation.png | Bin 656 -> 0 bytes
doxygen/img/qm.ico | Bin 11502 -> 0 bytes
doxygen/img/qm.png | Bin 2105 -> 0 bytes
doxygen/img/qm5_hi-dpi.png | Bin 344989 -> 0 bytes
doxygen/img/qm_icon128.png | Bin 19312 -> 0 bytes
doxygen/img/qm_icon16.png | Bin 961 -> 0 bytes
doxygen/img/qm_icon32.png | Bin 2105 -> 0 bytes
doxygen/img/qm_icon48.png | Bin 5159 -> 0 bytes
doxygen/img/qm_icon512.png | Bin 130680 -> 0 bytes
doxygen/img/qm_icon64.png | Bin 7588 -> 0 bytes
doxygen/img/qm_model.ico | Bin 11502 -> 0 bytes
doxygen/img/qm_package.ico | Bin 11502 -> 0 bytes
doxygen/img/qm_package.png | Bin 4025 -> 0 bytes
doxygen/img/qm_setup.ico | Bin 11502 -> 0 bytes
doxygen/img/qp-bundle.png | Bin 16144 -> 0 bytes
doxygen/img/qp.ico | Bin 894 -> 0 bytes
doxygen/img/qp.png | Bin 2114 -> 0 bytes
doxygen/img/qp_framework.png | Bin 2114 -> 0 bytes
doxygen/img/qp_icon32.png | Bin 2114 -> 0 bytes
doxygen/img/qt.png | Bin 1410 -> 0 bytes
doxygen/img/radiooff.png | Bin 250 -> 0 bytes
doxygen/img/radioon.png | Bin 243 -> 0 bytes
doxygen/img/read-only.png | Bin 289 -> 0 bytes
doxygen/img/realize.png | Bin 288 -> 0 bytes
doxygen/img/redo.png | Bin 1227 -> 0 bytes
doxygen/img/reload.png | Bin 762 -> 0 bytes
doxygen/img/rename.png | Bin 803 -> 0 bytes
doxygen/img/replace_mode.png | Bin 573 -> 0 bytes
doxygen/img/save.png | Bin 435 -> 0 bytes
doxygen/img/search.png | Bin 1226 -> 0 bytes
doxygen/img/search_computer.png | Bin 1226 -> 0 bytes
doxygen/img/search_folder.png | Bin 860 -> 0 bytes
doxygen/img/search_next.png | Bin 1380 -> 0 bytes
doxygen/img/search_opt.png | Bin 1286 -> 0 bytes
doxygen/img/search_prev.png | Bin 1361 -> 0 bytes
doxygen/img/search_repl.png | Bin 803 -> 0 bytes
doxygen/img/search_repl_all.png | Bin 976 -> 0 bytes
doxygen/img/select.png | Bin 1388 -> 0 bytes
doxygen/img/signal.png | Bin 1318 -> 0 bytes
doxygen/img/signal_event.png | Bin 310 -> 0 bytes
doxygen/img/sm_state.png | Bin 754 -> 0 bytes
doxygen/img/splitbar.png | Bin 962 -> 0 bytes
doxygen/img/state.png | Bin 519 -> 0 bytes
doxygen/img/state_initial.png | Bin 404 -> 0 bytes
doxygen/img/state_triggers.png | Bin 665 -> 0 bytes
doxygen/img/statechart.png | Bin 583 -> 0 bytes
doxygen/img/statechart_class.png | Bin 390 -> 0 bytes
doxygen/img/static_attribute.png | Bin 374 -> 0 bytes
doxygen/img/static_operation.png | Bin 673 -> 0 bytes
doxygen/img/static_private_attribute.png | Bin 486 -> 0 bytes
doxygen/img/static_private_operation.png | Bin 491 -> 0 bytes
doxygen/img/static_protected_attribute.png | Bin 486 -> 0 bytes
doxygen/img/static_protected_operation.png | Bin 494 -> 0 bytes
doxygen/img/submachine.png | Bin 710 -> 0 bytes
doxygen/img/superclass.png | Bin 415 -> 0 bytes
doxygen/img/swfobject.js | 4 -
doxygen/img/tile.png | Bin 278 -> 0 bytes
doxygen/img/time_evt.png | Bin 1157 -> 0 bytes
doxygen/img/tmp.png | Bin 1397 -> 0 bytes
doxygen/img/tmp1.png | Bin 1476 -> 0 bytes
doxygen/img/tool0.png | Bin 1719 -> 0 bytes
doxygen/img/tool1.png | Bin 712 -> 0 bytes
doxygen/img/tool2.png | Bin 785 -> 0 bytes
doxygen/img/tool3.png | Bin 2054 -> 0 bytes
doxygen/img/tool4.png | Bin 1645 -> 0 bytes
doxygen/img/tool5.png | Bin 1122 -> 0 bytes
doxygen/img/tool6.png | Bin 1016 -> 0 bytes
doxygen/img/tool7.png | Bin 873 -> 0 bytes
doxygen/img/tool8.png | Bin 1400 -> 0 bytes
doxygen/img/tool9.png | Bin 1335 -> 0 bytes
doxygen/img/tool_kill.png | Bin 1381 -> 0 bytes
doxygen/img/tool_manager.png | Bin 1976 -> 0 bytes
doxygen/img/toolbox.png | Bin 1242 -> 0 bytes
doxygen/img/tools.png | Bin 1359 -> 0 bytes
doxygen/img/tran.png | Bin 605 -> 0 bytes
doxygen/img/tran_choice.gif | Bin 87 -> 0 bytes
doxygen/img/tran_internal.gif | Bin 84 -> 0 bytes
doxygen/img/tran_state.gif | Bin 99 -> 0 bytes
doxygen/img/tree-view_linked.png | Bin 858 -> 0 bytes
doxygen/img/tree-view_unlinked.png | Bin 874 -> 0 bytes
doxygen/img/undo.png | Bin 1138 -> 0 bytes
doxygen/img/unlock.png | Bin 647 -> 0 bytes
doxygen/img/unlock16.png | Bin 406 -> 0 bytes
doxygen/img/view.png | Bin 1456 -> 0 bytes
doxygen/img/wheel.png | Bin 3733 -> 0 bytes
doxygen/img/windows.png | Bin 527 -> 0 bytes
doxygen/img/xp.png | Bin 1341 -> 0 bytes
doxygen/img/xp_seg.png | Bin 1360 -> 0 bytes
doxygen/img/zoom_100.png | Bin 455 -> 0 bytes
doxygen/img/zoom_in.png | Bin 626 -> 0 bytes
doxygen/img/zoom_out.png | Bin 591 -> 0 bytes
doxygen/license.dox | 154 --
doxygen/links.dox | 106 --
doxygen/log.txt | 601 ------
doxygen/main.dox | 125 --
doxygen/make.bat | 95 -
doxygen/qm.css | 115 --
doxygen/qt_lgpl/LICENSE | 1385 --------------
doxygen/qt_lgpl/LICENSE.FDL | 450 -----
.../qt_lgpl/ThirdPartySoftware_Listing.txt | 896 ---------
doxygen/sm.dox | 1067 -----------
doxygen/snippets/QPC-SP-221115A.qlc | 8 -
doxygen/snippets/blinky.c | 59 -
doxygen/snippets/egizmo.c | 21 -
doxygen/snippets/egizmo.qm | 452 -----
doxygen/snippets/file_external.cpp | 65 -
doxygen/ui.dox | 1694 -----------------
doxygen/lgpl-2.1.txt => lgpl-2.1.txt | 0
doxygen/lgpl-3.txt => lgpl-3.txt | 2 +-
linux64/Resources/qpc/blinky_console.qm | 2 +-
linux64/Resources/qpc/dpp_console.qm | 2 +-
linux64/Resources/qpc/dpp_nucleo-l152re.qm | 2 +-
linux64/Resources/qpcpp/blinky_console.qm | 2 +-
linux64/Resources/qpcpp/dpp_console.qm | 2 +-
linux64/Resources/qpcpp/dpp_nucleo-l152re.qm | 2 +-
macos/Resources/qpc/blinky_console.qm | 2 +-
macos/Resources/qpc/dpp_console.qm | 2 +-
macos/Resources/qpc/dpp_nucleo-l152re.qm | 2 +-
macos/Resources/qpcpp/blinky_console.qm | 2 +-
macos/Resources/qpcpp/dpp_console.qm | 2 +-
macos/Resources/qpcpp/dpp_nucleo-l152re.qm | 2 +-
version-5.2.5 | 2 -
version-5.3.0 | 2 +
windows/Resources/qpc/blinky_console.qm | 2 +-
windows/Resources/qpc/dpp_console.qm | 2 +-
windows/Resources/qpc/dpp_nucleo-l152re.qm | 2 +-
windows/Resources/qpcpp/blinky_console.qm | 2 +-
windows/Resources/qpcpp/dpp_console.qm | 2 +-
windows/Resources/qpcpp/dpp_nucleo-l152re.qm | 2 +-
756 files changed, 22 insertions(+), 12405 deletions(-)
delete mode 100644 doxygen/Doxyfile
delete mode 100644 doxygen/Doxyfile-CHM
delete mode 100644 doxygen/Doxyfile-LATEX
delete mode 100644 doxygen/bm.dox
delete mode 100644 doxygen/ce.dox
delete mode 100644 doxygen/cpt.dox
delete mode 100644 doxygen/favicon.ico
delete mode 100644 doxygen/gs.dox
delete mode 100644 doxygen/history.dox
delete mode 100644 doxygen/images/AN_Crash_Course_in_UML_State_Machines.gif
delete mode 100644 doxygen/images/AN_OOP_in_C.gif
delete mode 100644 doxygen/images/AN_OOP_in_C.png
delete mode 100644 doxygen/images/EK-LM3S811.jpg
delete mode 100644 doxygen/images/EK-LM4F120XL.jpg
delete mode 100644 doxygen/images/EK-TM4C123GXL.jpg
delete mode 100644 doxygen/images/about.png
delete mode 100644 doxygen/images/about_qm.png
delete mode 100644 doxygen/images/about_qt.png
delete mode 100644 doxygen/images/add_class.png
delete mode 100644 doxygen/images/add_package.png
delete mode 100644 doxygen/images/arrow_curved.gif
delete mode 100644 doxygen/images/arrow_down.gif
delete mode 100644 doxygen/images/arrow_up.gif
delete mode 100644 doxygen/images/birds_eye.png
delete mode 100644 doxygen/images/birdseye_styles.jpg
delete mode 100644 doxygen/images/blinky_a1.png
delete mode 100644 doxygen/images/blinky_a1l.png
delete mode 100644 doxygen/images/blinky_a2.png
delete mode 100644 doxygen/images/blinky_add_tran.gif
delete mode 100644 doxygen/images/blinky_c1.png
delete mode 100644 doxygen/images/blinky_c2.png
delete mode 100644 doxygen/images/blinky_c3.png
delete mode 100644 doxygen/images/blinky_class.png
delete mode 100644 doxygen/images/blinky_code_gen.gif
delete mode 100644 doxygen/images/blinky_dir_add.gif
delete mode 100644 doxygen/images/blinky_ek-tm4c123gxl.gif
delete mode 100644 doxygen/images/blinky_file.png
delete mode 100644 doxygen/images/blinky_file_add.gif
delete mode 100644 doxygen/images/blinky_file_edit.gif
delete mode 100644 doxygen/images/blinky_i1.png
delete mode 100644 doxygen/images/blinky_i2.png
delete mode 100644 doxygen/images/blinky_init_add.gif
delete mode 100644 doxygen/images/blinky_init_prop.png
delete mode 100644 doxygen/images/blinky_linux.gif
delete mode 100644 doxygen/images/blinky_linux.png
delete mode 100644 doxygen/images/blinky_o1.png
delete mode 100644 doxygen/images/blinky_o2.png
delete mode 100644 doxygen/images/blinky_package.png
delete mode 100644 doxygen/images/blinky_s1.png
delete mode 100644 doxygen/images/blinky_s2.png
delete mode 100644 doxygen/images/blinky_s3.png
delete mode 100644 doxygen/images/blinky_sm.png
delete mode 100644 doxygen/images/blinky_sm_add.gif
delete mode 100644 doxygen/images/blinky_sm_add.png
delete mode 100644 doxygen/images/blinky_sm_show.gif
delete mode 100644 doxygen/images/blinky_sm_show.png
delete mode 100644 doxygen/images/blinky_state_add.gif
delete mode 100644 doxygen/images/blinky_state_off.png
delete mode 100644 doxygen/images/blinky_state_on.png
delete mode 100644 doxygen/images/blinky_t1.png
delete mode 100644 doxygen/images/blinky_t2.png
delete mode 100644 doxygen/images/blinky_t3.png
delete mode 100644 doxygen/images/blinky_tran_add.gif
delete mode 100644 doxygen/images/blinky_win.gif
delete mode 100644 doxygen/images/blinky_win32.png
delete mode 100644 doxygen/images/bm_attr-class-add.png
delete mode 100644 doxygen/images/bm_attr-class-prop.png
delete mode 100644 doxygen/images/bm_attr-free-add.png
delete mode 100644 doxygen/images/bm_attr-free-prop.png
delete mode 100644 doxygen/images/bm_class-add.png
delete mode 100644 doxygen/images/bm_class-ctor_c.png
delete mode 100644 doxygen/images/bm_class-ctor_cpp.png
delete mode 100644 doxygen/images/bm_class-oper_c.png
delete mode 100644 doxygen/images/bm_class-oper_cpp.png
delete mode 100644 doxygen/images/bm_class-oper_prop.png
delete mode 100644 doxygen/images/bm_class-super.png
delete mode 100644 doxygen/images/bm_class.png
delete mode 100644 doxygen/images/bm_class_prop.png
delete mode 100644 doxygen/images/bm_diagram-canvas.gif
delete mode 100644 doxygen/images/bm_diagram-lasso.gif
delete mode 100644 doxygen/images/bm_diagram-move.gif
delete mode 100644 doxygen/images/bm_diagram-pan.gif
delete mode 100644 doxygen/images/bm_diagram-select.gif
delete mode 100644 doxygen/images/bm_edit.png
delete mode 100644 doxygen/images/bm_evt-sig.png
delete mode 100644 doxygen/images/bm_evt-use.png
delete mode 100644 doxygen/images/bm_evt_c.png
delete mode 100644 doxygen/images/bm_evt_decl-pkg.png
delete mode 100644 doxygen/images/bm_evt_decl.png
delete mode 100644 doxygen/images/bm_fq-names.png
delete mode 100644 doxygen/images/bm_free-oper_c.png
delete mode 100644 doxygen/images/bm_model-diff.png
delete mode 100644 doxygen/images/bm_model-file.png
delete mode 100644 doxygen/images/bm_model-xml.png
delete mode 100644 doxygen/images/bm_model.png
delete mode 100644 doxygen/images/bm_model_fq-names.png
delete mode 100644 doxygen/images/bm_model_prop.png
delete mode 100644 doxygen/images/bm_package-add.png
delete mode 100644 doxygen/images/bm_package-extern.png
delete mode 100644 doxygen/images/bm_package-imp.png
delete mode 100644 doxygen/images/bm_package-imp1.png
delete mode 100644 doxygen/images/bm_package-namespace.png
delete mode 100644 doxygen/images/bm_package-stereo.png
delete mode 100644 doxygen/images/bm_package_prop.png
delete mode 100644 doxygen/images/bm_qp5.png
delete mode 100644 doxygen/images/bm_search.png
delete mode 100644 doxygen/images/bm_session-file.png
delete mode 100644 doxygen/images/btn_more.gif
delete mode 100644 doxygen/images/bug.png
delete mode 100644 doxygen/images/canvas.png
delete mode 100644 doxygen/images/ce_code-class.png
delete mode 100644 doxygen/images/ce_comment-doc.png
delete mode 100644 doxygen/images/ce_cond_catch.png
delete mode 100644 doxygen/images/ce_cond_hist.png
delete mode 100644 doxygen/images/ce_cond_multi.png
delete mode 100644 doxygen/images/ce_cond_nest.png
delete mode 100644 doxygen/images/ce_cond_state.png
delete mode 100644 doxygen/images/ce_cond_state_prop.png
delete mode 100644 doxygen/images/ce_cond_tran.png
delete mode 100644 doxygen/images/ce_cond_tran_prop.png
delete mode 100644 doxygen/images/ce_declare1.png
delete mode 100644 doxygen/images/ce_def_attr-static.png
delete mode 100644 doxygen/images/ce_def_attr.png
delete mode 100644 doxygen/images/ce_def_free-oper-c.png
delete mode 100644 doxygen/images/ce_def_free-oper-cpp.png
delete mode 100644 doxygen/images/ce_dir.png
delete mode 100644 doxygen/images/ce_dir_add.png
delete mode 100644 doxygen/images/ce_dir_name.png
delete mode 100644 doxygen/images/ce_dir_nest.png
delete mode 100644 doxygen/images/ce_disk.png
delete mode 100644 doxygen/images/ce_file_add.png
delete mode 100644 doxygen/images/ce_file_gen.png
delete mode 100644 doxygen/images/ce_file_name.png
delete mode 100644 doxygen/images/ce_file_prop.gif
delete mode 100644 doxygen/images/ce_gen-attr.png
delete mode 100644 doxygen/images/ce_gen-exa.png
delete mode 100644 doxygen/images/ce_gen-oper.png
delete mode 100644 doxygen/images/ce_gen-pkg.png
delete mode 100644 doxygen/images/ce_phys.png
delete mode 100644 doxygen/images/ce_qmc.png
delete mode 100644 doxygen/images/ce_qp5.png
delete mode 100644 doxygen/images/ce_sm.png
delete mode 100644 doxygen/images/checkboxoff.png
delete mode 100644 doxygen/images/checkboxon.png
delete mode 100644 doxygen/images/clear_log.png
delete mode 100644 doxygen/images/code_styles.jpg
delete mode 100644 doxygen/images/code_styles2.jpg
delete mode 100644 doxygen/images/curr_item.jpg
delete mode 100644 doxygen/images/diagram_close.png
delete mode 100644 doxygen/images/diagram_export.png
delete mode 100644 doxygen/images/diagram_lasso.png
delete mode 100644 doxygen/images/diagram_open.png
delete mode 100644 doxygen/images/diagram_select.png
delete mode 100644 doxygen/images/diagram_styles.jpg
delete mode 100644 doxygen/images/doc_styles.jpg
delete mode 100644 doxygen/images/dock_windows.png
delete mode 100644 doxygen/images/docking_windows.jpg
delete mode 100644 doxygen/images/download.png
delete mode 100644 doxygen/images/dpp_win-con.gif
delete mode 100644 doxygen/images/dpp_win-gui.gif
delete mode 100644 doxygen/images/drag_explorer.png
delete mode 100644 doxygen/images/drag_file.png
delete mode 100644 doxygen/images/env_windows.png
delete mode 100644 doxygen/images/error_l001.png
delete mode 100644 doxygen/images/ex_dpp.jpg
delete mode 100644 doxygen/images/ex_dpp_linux.jpg
delete mode 100644 doxygen/images/ex_dpp_win32.png
delete mode 100644 doxygen/images/ex_game-gui_win32.png
delete mode 100644 doxygen/images/ex_game.jpg
delete mode 100644 doxygen/images/ex_game.png
delete mode 100644 doxygen/images/ex_pelican.png
delete mode 100644 doxygen/images/ex_pelican_win32.png
delete mode 100644 doxygen/images/examples.png
delete mode 100644 doxygen/images/explorer.png
delete mode 100644 doxygen/images/explorer_popup.png
delete mode 100644 doxygen/images/explorer_styles.jpg
delete mode 100644 doxygen/images/extra_info_bottom.gif
delete mode 100644 doxygen/images/extra_info_left.gif
delete mode 100644 doxygen/images/favicon.ico
delete mode 100644 doxygen/images/footer_bgd.jpg
delete mode 100644 doxygen/images/framework_item.png
delete mode 100644 doxygen/images/game_win-gui.gif
delete mode 100644 doxygen/images/gen_diagram-tools.png
delete mode 100644 doxygen/images/github-star.jpg
delete mode 100644 doxygen/images/github_download.jpg
delete mode 100644 doxygen/images/grid_drop.png
delete mode 100644 doxygen/images/header_bgd.jpg
delete mode 100644 doxygen/images/header_bgd.png
delete mode 100644 doxygen/images/header_logo.gif
delete mode 100644 doxygen/images/header_logo.png
delete mode 100644 doxygen/images/header_logo_ql.png
delete mode 100644 doxygen/images/help.png
delete mode 100644 doxygen/images/initial1.png
delete mode 100644 doxygen/images/install_big.png
delete mode 100644 doxygen/images/item_locked.png
delete mode 100644 doxygen/images/item_unlocked.png
delete mode 100644 doxygen/images/keyboard.jpg
delete mode 100644 doxygen/images/keyboard.png
delete mode 100644 doxygen/images/license_com-dlg.png
delete mode 100644 doxygen/images/license_gpl-btn.png
delete mode 100644 doxygen/images/license_gpl-dlg.png
delete mode 100644 doxygen/images/list-step.png
delete mode 100644 doxygen/images/list-step1.png
delete mode 100644 doxygen/images/locked.png
delete mode 100644 doxygen/images/locked0.png
delete mode 100644 doxygen/images/locked1.png
delete mode 100644 doxygen/images/locked_diag.png
delete mode 100644 doxygen/images/locked_unlocked.png
delete mode 100644 doxygen/images/log.png
delete mode 100644 doxygen/images/log_error.png
delete mode 100644 doxygen/images/log_menu.png
delete mode 100644 doxygen/images/log_signals.png
delete mode 100644 doxygen/images/log_styles1.jpg
delete mode 100644 doxygen/images/log_styles2.jpg
delete mode 100644 doxygen/images/log_tool.png
delete mode 100644 doxygen/images/logo_linux.jpg
delete mode 100644 doxygen/images/logo_mac_osx.jpg
delete mode 100644 doxygen/images/logo_ql-comp.png
delete mode 100644 doxygen/images/logo_ql.jpg
delete mode 100644 doxygen/images/logo_ql.png
delete mode 100644 doxygen/images/logo_ql_TM.jpg
delete mode 100644 doxygen/images/logo_qm_70x55.png
delete mode 100644 doxygen/images/logo_windows.jpg
delete mode 100644 doxygen/images/mainwindow_styles.jpg
delete mode 100644 doxygen/images/manage_tools.png
delete mode 100644 doxygen/images/menu_edit.png
delete mode 100644 doxygen/images/menu_file-recent.png
delete mode 100644 doxygen/images/menu_file.png
delete mode 100644 doxygen/images/menu_help.png
delete mode 100644 doxygen/images/menu_search.png
delete mode 100644 doxygen/images/menu_tools.png
delete mode 100644 doxygen/images/menu_view.png
delete mode 100644 doxygen/images/menu_view_docks.png
delete mode 100644 doxygen/images/menu_window.png
delete mode 100644 doxygen/images/model.png
delete mode 100644 doxygen/images/mouse_wheel.jpg
delete mode 100644 doxygen/images/mouse_wheel.png
delete mode 100644 doxygen/images/mvc.png
delete mode 100644 doxygen/images/navlist.gif
delete mode 100644 doxygen/images/new_blinky.png
delete mode 100644 doxygen/images/new_model.png
delete mode 100644 doxygen/images/note.gif
delete mode 100644 doxygen/images/opening.png
delete mode 100644 doxygen/images/panning.png
delete mode 100644 doxygen/images/pdf_tiny.gif
delete mode 100644 doxygen/images/property_styles.jpg
delete mode 100644 doxygen/images/qm-dark-linux.png
delete mode 100644 doxygen/images/qm-dark.png
delete mode 100644 doxygen/images/qm-light.png
delete mode 100644 doxygen/images/qm-screens.jpg
delete mode 100644 doxygen/images/qm-screens0.jpg
delete mode 100644 doxygen/images/qm-tut_makefile.png
delete mode 100644 doxygen/images/qm1.png
delete mode 100644 doxygen/images/qm2.png
delete mode 100644 doxygen/images/qm3.png
delete mode 100644 doxygen/images/qm4.png
delete mode 100644 doxygen/images/qm_3monitors.jpg
delete mode 100644 doxygen/images/qm_backups.png
delete mode 100644 doxygen/images/qm_banner.jpg
delete mode 100644 doxygen/images/qm_download.png
delete mode 100644 doxygen/images/qm_gh.jpg
delete mode 100644 doxygen/images/qm_gh.png
delete mode 100644 doxygen/images/qm_icon.png
delete mode 100644 doxygen/images/qm_panels.png
delete mode 100644 doxygen/images/qm_qss.png
delete mode 100644 doxygen/images/qm_sf.jpg
delete mode 100644 doxygen/images/qm_sf.png
delete mode 100644 doxygen/images/qm_shortcut.png
delete mode 100644 doxygen/images/qm_tut_video.jpg
delete mode 100644 doxygen/images/qp-bundle.png
delete mode 100644 doxygen/images/qp-smile_280.jpg
delete mode 100644 doxygen/images/qp_classes.gif
delete mode 100644 doxygen/images/qp_components.jpg
delete mode 100644 doxygen/images/qp_sm.png
delete mode 100644 doxygen/images/qt_installer.gif
delete mode 100644 doxygen/images/radiooff.png
delete mode 100644 doxygen/images/radioon.png
delete mode 100644 doxygen/images/scrolling.png
delete mode 100644 doxygen/images/sd_toolbox.png
delete mode 100644 doxygen/images/search_styles.jpg
delete mode 100644 doxygen/images/sel_lasso.png
delete mode 100644 doxygen/images/separator.gif
delete mode 100644 doxygen/images/setup_linux.jpg
delete mode 100644 doxygen/images/setup_linux.png
delete mode 100644 doxygen/images/setup_linux_cmd.jpg
delete mode 100644 doxygen/images/setup_linux_cmd.png
delete mode 100644 doxygen/images/setup_linux_file.png
delete mode 100644 doxygen/images/setup_linux_icon.png
delete mode 100644 doxygen/images/setup_linux_perm.png
delete mode 100644 doxygen/images/setup_linux_shortcut.png
delete mode 100644 doxygen/images/setup_mac.jpg
delete mode 100644 doxygen/images/setup_mac.png
delete mode 100644 doxygen/images/setup_mac_run.png
delete mode 100644 doxygen/images/setup_run_linux.png
delete mode 100644 doxygen/images/setup_run_mac.png
delete mode 100644 doxygen/images/setup_win.jpg
delete mode 100644 doxygen/images/setup_win.png
delete mode 100644 doxygen/images/shot0_sml.jpg
delete mode 100644 doxygen/images/show_diagram.png
delete mode 100644 doxygen/images/sm_choice-prop.png
delete mode 100644 doxygen/images/sm_choice-tran_ani.gif
delete mode 100644 doxygen/images/sm_choice.gif
delete mode 100644 doxygen/images/sm_choice.png
delete mode 100644 doxygen/images/sm_choice_actions.png
delete mode 100644 doxygen/images/sm_choice_att-ani.gif
delete mode 100644 doxygen/images/sm_choice_else.png
delete mode 100644 doxygen/images/sm_choice_empty.png
delete mode 100644 doxygen/images/sm_choice_graph.png
delete mode 100644 doxygen/images/sm_choice_int-ani.gif
delete mode 100644 doxygen/images/sm_choice_move-ani.gif
delete mode 100644 doxygen/images/sm_choice_nest-ani.gif
delete mode 100644 doxygen/images/sm_choice_nest.png
delete mode 100644 doxygen/images/sm_choice_order.png
delete mode 100644 doxygen/images/sm_choice_prop.png
delete mode 100644 doxygen/images/sm_choice_tran-ani.gif
delete mode 100644 doxygen/images/sm_draw.png
delete mode 100644 doxygen/images/sm_epseg.png
delete mode 100644 doxygen/images/sm_epseg_prop.png
delete mode 100644 doxygen/images/sm_guard.gif
delete mode 100644 doxygen/images/sm_guard.png
delete mode 100644 doxygen/images/sm_hist-add.gif
delete mode 100644 doxygen/images/sm_hist-attach.gif
delete mode 100644 doxygen/images/sm_hist-subm.png
delete mode 100644 doxygen/images/sm_hist.png
delete mode 100644 doxygen/images/sm_hist_prop.png
delete mode 100644 doxygen/images/sm_init-add.gif
delete mode 100644 doxygen/images/sm_init-invalid.gif
delete mode 100644 doxygen/images/sm_init-text.gif
delete mode 100644 doxygen/images/sm_init-types.png
delete mode 100644 doxygen/images/sm_init_prop.png
delete mode 100644 doxygen/images/sm_init_types.png
delete mode 100644 doxygen/images/sm_intern.png
delete mode 100644 doxygen/images/sm_qfsm-style.png
delete mode 100644 doxygen/images/sm_qhsm-based.png
delete mode 100644 doxygen/images/sm_qhsm-ctor.png
delete mode 100644 doxygen/images/sm_qmactive.png
delete mode 100644 doxygen/images/sm_qmsm-based.png
delete mode 100644 doxygen/images/sm_qmsm-ctor.png
delete mode 100644 doxygen/images/sm_qmsm.png
delete mode 100644 doxygen/images/sm_route-anim.gif
delete mode 100644 doxygen/images/sm_smstate.png
delete mode 100644 doxygen/images/sm_state-add.gif
delete mode 100644 doxygen/images/sm_state-del.gif
delete mode 100644 doxygen/images/sm_state-entry.gif
delete mode 100644 doxygen/images/sm_state-exit.gif
delete mode 100644 doxygen/images/sm_state-move.gif
delete mode 100644 doxygen/images/sm_state-resize.gif
delete mode 100644 doxygen/images/sm_state_entry.png
delete mode 100644 doxygen/images/sm_state_exit.png
delete mode 100644 doxygen/images/sm_state_nest.png
delete mode 100644 doxygen/images/sm_state_prop.png
delete mode 100644 doxygen/images/sm_statechart_prop.png
delete mode 100644 doxygen/images/sm_subm.png
delete mode 100644 doxygen/images/sm_subm_add.png
delete mode 100644 doxygen/images/sm_subm_from_state.png
delete mode 100644 doxygen/images/sm_subm_prop.png
delete mode 100644 doxygen/images/sm_subm_resize.png
delete mode 100644 doxygen/images/sm_super - Copy.png
delete mode 100644 doxygen/images/sm_super.png
delete mode 100644 doxygen/images/sm_toolbox.png
delete mode 100644 doxygen/images/sm_tran-anim.gif
delete mode 100644 doxygen/images/sm_tran-move.gif
delete mode 100644 doxygen/images/sm_tran-text.gif
delete mode 100644 doxygen/images/sm_tran.gif
delete mode 100644 doxygen/images/sm_tran_CATCH_ALL.png
delete mode 100644 doxygen/images/sm_tran_internal-add.gif
delete mode 100644 doxygen/images/sm_tran_list.png
delete mode 100644 doxygen/images/sm_tran_prop.png
delete mode 100644 doxygen/images/sm_tran_self.png
delete mode 100644 doxygen/images/sm_tran_source.png
delete mode 100644 doxygen/images/sm_tran_state-add.gif
delete mode 100644 doxygen/images/sm_tran_text.png
delete mode 100644 doxygen/images/sm_use-me.png
delete mode 100644 doxygen/images/sm_xp_prop.png
delete mode 100644 doxygen/images/sm_xpseg.png
delete mode 100644 doxygen/images/sm_xpseg_choice.png
delete mode 100644 doxygen/images/sm_xpseg_err.png
delete mode 100644 doxygen/images/sm_xpseg_prop.png
delete mode 100644 doxygen/images/sourceforge.png
delete mode 100644 doxygen/images/state1.png
delete mode 100644 doxygen/images/state_del.png
delete mode 100644 doxygen/images/state_move.png
delete mode 100644 doxygen/images/state_resize.png
delete mode 100644 doxygen/images/state_text.png
delete mode 100644 doxygen/images/status.jpg
delete mode 100644 doxygen/images/status_file.jpg
delete mode 100644 doxygen/images/subm_hist.gif
delete mode 100644 doxygen/images/subm_state_prop.png
delete mode 100644 doxygen/images/subwindows.jpg
delete mode 100644 doxygen/images/svg.jpg
delete mode 100644 doxygen/images/tabs.jpg
delete mode 100644 doxygen/images/tb_edit.png
delete mode 100644 doxygen/images/tb_file.png
delete mode 100644 doxygen/images/tb_tools.png
delete mode 100644 doxygen/images/tb_view-grid.png
delete mode 100644 doxygen/images/tb_view.png
delete mode 100644 doxygen/images/th_gradient.png
delete mode 100644 doxygen/images/title_clean.png
delete mode 100644 doxygen/images/title_dirty.png
delete mode 100644 doxygen/images/tool10.png
delete mode 100644 doxygen/images/tran1.png
delete mode 100644 doxygen/images/txt_tiny.gif
delete mode 100644 doxygen/images/ui_dock.gif
delete mode 100644 doxygen/images/ui_explorer_drag-item.gif
delete mode 100644 doxygen/images/ui_explorer_drag-link.gif
delete mode 100644 doxygen/images/ui_log-tool.png
delete mode 100644 doxygen/images/ui_prop.png
delete mode 100644 doxygen/images/ui_prop_state.png
delete mode 100644 doxygen/images/ui_search.png
delete mode 100644 doxygen/images/ui_tool_blinky-build.png
delete mode 100644 doxygen/images/ui_tool_blinky-run.png
delete mode 100644 doxygen/images/ui_tool_iar-log.png
delete mode 100644 doxygen/images/ui_tool_iar.png
delete mode 100644 doxygen/images/ui_toolbox.png
delete mode 100644 doxygen/images/ui_view-styles.jpg
delete mode 100644 doxygen/images/ui_view-styles.png
delete mode 100644 doxygen/images/undo_stack.png
delete mode 100644 doxygen/images/unlocked.png
delete mode 100644 doxygen/images/video.png
delete mode 100644 doxygen/images/view_bird.png
delete mode 100644 doxygen/images/view_explorer.png
delete mode 100644 doxygen/images/view_log.png
delete mode 100644 doxygen/images/view_prop.png
delete mode 100644 doxygen/images/view_search.png
delete mode 100644 doxygen/images/view_toolbox.png
delete mode 100644 doxygen/images/web_tiny.gif
delete mode 100644 doxygen/images/windows.png
delete mode 100644 doxygen/images/zip_tiny.gif
delete mode 100644 doxygen/images/zoom.png
delete mode 100644 doxygen/images/zoom_slider.png
delete mode 100644 doxygen/img/add.png
delete mode 100644 doxygen/img/anchor.png
delete mode 100644 doxygen/img/arrow_right.png
delete mode 100644 doxygen/img/attr.png
delete mode 100644 doxygen/img/attr_file.png
delete mode 100644 doxygen/img/attr_glob.png
delete mode 100644 doxygen/img/attr_pkg.png
delete mode 100644 doxygen/img/attr_priv.png
delete mode 100644 doxygen/img/attr_private.png
delete mode 100644 doxygen/img/attr_prot.png
delete mode 100644 doxygen/img/attr_sta.png
delete mode 100644 doxygen/img/attr_sta_priv.png
delete mode 100644 doxygen/img/attr_sta_prot.png
delete mode 100644 doxygen/img/birdseye_view.png
delete mode 100644 doxygen/img/btn_close.png
delete mode 100644 doxygen/img/bug.png
delete mode 100644 doxygen/img/build.png
delete mode 100644 doxygen/img/cascade.png
delete mode 100644 doxygen/img/checkboxoff.png
delete mode 100644 doxygen/img/checkboxon.png
delete mode 100644 doxygen/img/choice.png
delete mode 100644 doxygen/img/class.png
delete mode 100644 doxygen/img/class_active.png
delete mode 100644 doxygen/img/class_attributes.png
delete mode 100644 doxygen/img/class_evt.png
delete mode 100644 doxygen/img/class_operations.png
delete mode 100644 doxygen/img/class_sm.png
delete mode 100644 doxygen/img/class_thread.png
delete mode 100644 doxygen/img/class_timeevt.png
delete mode 100644 doxygen/img/clear_log.png
delete mode 100644 doxygen/img/close_all.png
delete mode 100644 doxygen/img/close_model.png
delete mode 100644 doxygen/img/close_one.png
delete mode 100644 doxygen/img/codegen.png
delete mode 100644 doxygen/img/collapse.png
delete mode 100644 doxygen/img/constant.png
delete mode 100644 doxygen/img/copy.png
delete mode 100644 doxygen/img/copy_diagram.png
delete mode 100644 doxygen/img/copy_link.png
delete mode 100644 doxygen/img/cur_end.png
delete mode 100644 doxygen/img/cur_enda.png
delete mode 100644 doxygen/img/cur_endx.png
delete mode 100644 doxygen/img/cur_grab.png
delete mode 100644 doxygen/img/cur_hor.png
delete mode 100644 doxygen/img/cur_initial1.png
delete mode 100644 doxygen/img/cur_initial1a.png
delete mode 100644 doxygen/img/cur_initial1x.png
delete mode 100644 doxygen/img/cur_normal.png
delete mode 100644 doxygen/img/cur_pan.png
delete mode 100644 doxygen/img/cur_select.png
delete mode 100644 doxygen/img/cur_select0.png
delete mode 100644 doxygen/img/cur_select1.png
delete mode 100644 doxygen/img/cur_state1.png
delete mode 100644 doxygen/img/cur_text_move.png
delete mode 100644 doxygen/img/cur_tran1.png
delete mode 100644 doxygen/img/cur_tran1a.png
delete mode 100644 doxygen/img/cur_tran1x.png
delete mode 100644 doxygen/img/cur_ver.png
delete mode 100644 doxygen/img/cut.png
delete mode 100644 doxygen/img/delete.png
delete mode 100644 doxygen/img/diagrams.png
delete mode 100644 doxygen/img/directory.png
delete mode 100644 doxygen/img/div_hor.png
delete mode 100644 doxygen/img/document.png
delete mode 100644 doxygen/img/edit.png
delete mode 100644 doxygen/img/empty.png
delete mode 100644 doxygen/img/enumeration.png
delete mode 100644 doxygen/img/env_var.png
delete mode 100644 doxygen/img/ep_seg.png
delete mode 100644 doxygen/img/expand.png
delete mode 100644 doxygen/img/explorer.png
delete mode 100644 doxygen/img/explorer_delete.png
delete mode 100644 doxygen/img/explorer_toolbar.png
delete mode 100644 doxygen/img/explorer_up-down.png
delete mode 100644 doxygen/img/export_diagram.png
delete mode 100644 doxygen/img/export_svg.png
delete mode 100644 doxygen/img/extern.png
delete mode 100644 doxygen/img/file-download-lock.svg
delete mode 100644 doxygen/img/file.png
delete mode 100644 doxygen/img/file_c.png
delete mode 100644 doxygen/img/file_cpp.png
delete mode 100644 doxygen/img/file_doc.png
delete mode 100644 doxygen/img/file_h.png
delete mode 100644 doxygen/img/file_header.png
delete mode 100644 doxygen/img/file_ino.png
delete mode 100644 doxygen/img/file_mak.png
delete mode 100644 doxygen/img/file_make.png
delete mode 100644 doxygen/img/file_pdf.png
delete mode 100644 doxygen/img/file_py.png
delete mode 100644 doxygen/img/file_qm.png
delete mode 100644 doxygen/img/file_qmp.png
delete mode 100644 doxygen/img/file_source_c.png
delete mode 100644 doxygen/img/file_source_cpp.png
delete mode 100644 doxygen/img/file_source_ino.png
delete mode 100644 doxygen/img/file_source_make.png
delete mode 100644 doxygen/img/file_source_py.png
delete mode 100644 doxygen/img/file_source_tcl.png
delete mode 100644 doxygen/img/file_tcl.png
delete mode 100644 doxygen/img/file_wish.png
delete mode 100644 doxygen/img/filesystem.png
delete mode 100644 doxygen/img/final.png
delete mode 100644 doxygen/img/find.png
delete mode 100644 doxygen/img/folder.png
delete mode 100644 doxygen/img/forbidden.png
delete mode 100644 doxygen/img/forum.png
delete mode 100644 doxygen/img/github-corner.png
delete mode 100644 doxygen/img/github-qm.png
delete mode 100644 doxygen/img/grid.png
delete mode 100644 doxygen/img/grid0.png
delete mode 100644 doxygen/img/grid1.png
delete mode 100644 doxygen/img/grid2.png
delete mode 100644 doxygen/img/grid3.png
delete mode 100644 doxygen/img/header_bg.png
delete mode 100644 doxygen/img/header_logo_ql.png
delete mode 100644 doxygen/img/help.png
delete mode 100644 doxygen/img/help_contents.png
delete mode 100644 doxygen/img/help_context.png
delete mode 100644 doxygen/img/help_dark.png
delete mode 100644 doxygen/img/help_light.png
delete mode 100644 doxygen/img/history.png
delete mode 100644 doxygen/img/home.png
delete mode 100644 doxygen/img/idea.png
delete mode 100644 doxygen/img/img.htm
delete mode 100644 doxygen/img/import_package.png
delete mode 100644 doxygen/img/initial.png
delete mode 100644 doxygen/img/key_down.png
delete mode 100644 doxygen/img/key_left.png
delete mode 100644 doxygen/img/key_right.png
delete mode 100644 doxygen/img/key_up.png
delete mode 100644 doxygen/img/keyboard.png
delete mode 100644 doxygen/img/license.png
delete mode 100644 doxygen/img/license_gpl.png
delete mode 100644 doxygen/img/license_osi.png
delete mode 100644 doxygen/img/lock.png
delete mode 100644 doxygen/img/lock16.png
delete mode 100644 doxygen/img/log.png
delete mode 100644 doxygen/img/logo_github.png
delete mode 100644 doxygen/img/logo_linux48.png
delete mode 100644 doxygen/img/logo_macos48.png
delete mode 100644 doxygen/img/logo_ql-compact.png
delete mode 100644 doxygen/img/logo_win.png
delete mode 100644 doxygen/img/logo_win48.png
delete mode 100644 doxygen/img/macro.png
delete mode 100644 doxygen/img/macro_const.png
delete mode 100644 doxygen/img/macro_fun.png
delete mode 100644 doxygen/img/minus.png
delete mode 100644 doxygen/img/model.png
delete mode 100644 doxygen/img/move_down.png
delete mode 100644 doxygen/img/move_up.png
delete mode 100644 doxygen/img/movie.png
delete mode 100644 doxygen/img/my_icon.svg
delete mode 100644 doxygen/img/my_icon0.svg
delete mode 100644 doxygen/img/my_icon1.svg
delete mode 100644 doxygen/img/new_model.png
delete mode 100644 doxygen/img/newmodel_dialog.png
delete mode 100644 doxygen/img/next_window.png
delete mode 100644 doxygen/img/note.png
delete mode 100644 doxygen/img/open.png
delete mode 100644 doxygen/img/open_model.png
delete mode 100644 doxygen/img/oper.png
delete mode 100644 doxygen/img/oper_file.png
delete mode 100644 doxygen/img/oper_glob.png
delete mode 100644 doxygen/img/oper_pkg.png
delete mode 100644 doxygen/img/oper_priv.png
delete mode 100644 doxygen/img/oper_prot.png
delete mode 100644 doxygen/img/oper_sta.png
delete mode 100644 doxygen/img/oper_sta_priv.png
delete mode 100644 doxygen/img/oper_sta_prot.png
delete mode 100644 doxygen/img/options.png
delete mode 100644 doxygen/img/package.png
delete mode 100644 doxygen/img/package_comp.png
delete mode 100644 doxygen/img/package_comp_imp.png
delete mode 100644 doxygen/img/package_diag.png
delete mode 100644 doxygen/img/package_diag_imp.png
delete mode 100644 doxygen/img/package_evts.png
delete mode 100644 doxygen/img/package_evts_imp.png
delete mode 100644 doxygen/img/package_frame.png
delete mode 100644 doxygen/img/package_frame_imp.png
delete mode 100644 doxygen/img/package_imp.png
delete mode 100644 doxygen/img/package_module.png
delete mode 100644 doxygen/img/package_module_imp.png
delete mode 100644 doxygen/img/page_setup.png
delete mode 100644 doxygen/img/pan.png
delete mode 100644 doxygen/img/parameter.png
delete mode 100644 doxygen/img/paste.png
delete mode 100644 doxygen/img/paste_link.png
delete mode 100644 doxygen/img/pdf.gif
delete mode 100644 doxygen/img/plus.png
delete mode 100644 doxygen/img/point.png
delete mode 100644 doxygen/img/prev_window.png
delete mode 100644 doxygen/img/print.png
delete mode 100644 doxygen/img/private_attribute.png
delete mode 100644 doxygen/img/private_operation.png
delete mode 100644 doxygen/img/properties.png
delete mode 100644 doxygen/img/property.png
delete mode 100644 doxygen/img/protected_attributed.png
delete mode 100644 doxygen/img/protected_operation.png
delete mode 100644 doxygen/img/qm.ico
delete mode 100644 doxygen/img/qm.png
delete mode 100644 doxygen/img/qm5_hi-dpi.png
delete mode 100644 doxygen/img/qm_icon128.png
delete mode 100644 doxygen/img/qm_icon16.png
delete mode 100644 doxygen/img/qm_icon32.png
delete mode 100644 doxygen/img/qm_icon48.png
delete mode 100644 doxygen/img/qm_icon512.png
delete mode 100644 doxygen/img/qm_icon64.png
delete mode 100644 doxygen/img/qm_model.ico
delete mode 100644 doxygen/img/qm_package.ico
delete mode 100644 doxygen/img/qm_package.png
delete mode 100644 doxygen/img/qm_setup.ico
delete mode 100644 doxygen/img/qp-bundle.png
delete mode 100644 doxygen/img/qp.ico
delete mode 100644 doxygen/img/qp.png
delete mode 100644 doxygen/img/qp_framework.png
delete mode 100644 doxygen/img/qp_icon32.png
delete mode 100644 doxygen/img/qt.png
delete mode 100644 doxygen/img/radiooff.png
delete mode 100644 doxygen/img/radioon.png
delete mode 100644 doxygen/img/read-only.png
delete mode 100644 doxygen/img/realize.png
delete mode 100644 doxygen/img/redo.png
delete mode 100644 doxygen/img/reload.png
delete mode 100644 doxygen/img/rename.png
delete mode 100644 doxygen/img/replace_mode.png
delete mode 100644 doxygen/img/save.png
delete mode 100644 doxygen/img/search.png
delete mode 100644 doxygen/img/search_computer.png
delete mode 100644 doxygen/img/search_folder.png
delete mode 100644 doxygen/img/search_next.png
delete mode 100644 doxygen/img/search_opt.png
delete mode 100644 doxygen/img/search_prev.png
delete mode 100644 doxygen/img/search_repl.png
delete mode 100644 doxygen/img/search_repl_all.png
delete mode 100644 doxygen/img/select.png
delete mode 100644 doxygen/img/signal.png
delete mode 100644 doxygen/img/signal_event.png
delete mode 100644 doxygen/img/sm_state.png
delete mode 100644 doxygen/img/splitbar.png
delete mode 100644 doxygen/img/state.png
delete mode 100644 doxygen/img/state_initial.png
delete mode 100644 doxygen/img/state_triggers.png
delete mode 100644 doxygen/img/statechart.png
delete mode 100644 doxygen/img/statechart_class.png
delete mode 100644 doxygen/img/static_attribute.png
delete mode 100644 doxygen/img/static_operation.png
delete mode 100644 doxygen/img/static_private_attribute.png
delete mode 100644 doxygen/img/static_private_operation.png
delete mode 100644 doxygen/img/static_protected_attribute.png
delete mode 100644 doxygen/img/static_protected_operation.png
delete mode 100644 doxygen/img/submachine.png
delete mode 100644 doxygen/img/superclass.png
delete mode 100644 doxygen/img/swfobject.js
delete mode 100644 doxygen/img/tile.png
delete mode 100644 doxygen/img/time_evt.png
delete mode 100644 doxygen/img/tmp.png
delete mode 100644 doxygen/img/tmp1.png
delete mode 100644 doxygen/img/tool0.png
delete mode 100644 doxygen/img/tool1.png
delete mode 100644 doxygen/img/tool2.png
delete mode 100644 doxygen/img/tool3.png
delete mode 100644 doxygen/img/tool4.png
delete mode 100644 doxygen/img/tool5.png
delete mode 100644 doxygen/img/tool6.png
delete mode 100644 doxygen/img/tool7.png
delete mode 100644 doxygen/img/tool8.png
delete mode 100644 doxygen/img/tool9.png
delete mode 100644 doxygen/img/tool_kill.png
delete mode 100644 doxygen/img/tool_manager.png
delete mode 100644 doxygen/img/toolbox.png
delete mode 100644 doxygen/img/tools.png
delete mode 100644 doxygen/img/tran.png
delete mode 100644 doxygen/img/tran_choice.gif
delete mode 100644 doxygen/img/tran_internal.gif
delete mode 100644 doxygen/img/tran_state.gif
delete mode 100644 doxygen/img/tree-view_linked.png
delete mode 100644 doxygen/img/tree-view_unlinked.png
delete mode 100644 doxygen/img/undo.png
delete mode 100644 doxygen/img/unlock.png
delete mode 100644 doxygen/img/unlock16.png
delete mode 100644 doxygen/img/view.png
delete mode 100644 doxygen/img/wheel.png
delete mode 100644 doxygen/img/windows.png
delete mode 100644 doxygen/img/xp.png
delete mode 100644 doxygen/img/xp_seg.png
delete mode 100644 doxygen/img/zoom_100.png
delete mode 100644 doxygen/img/zoom_in.png
delete mode 100644 doxygen/img/zoom_out.png
delete mode 100644 doxygen/license.dox
delete mode 100644 doxygen/links.dox
delete mode 100644 doxygen/log.txt
delete mode 100644 doxygen/main.dox
delete mode 100644 doxygen/make.bat
delete mode 100644 doxygen/qm.css
delete mode 100644 doxygen/qt_lgpl/LICENSE
delete mode 100644 doxygen/qt_lgpl/LICENSE.FDL
delete mode 100644 doxygen/qt_lgpl/ThirdPartySoftware_Listing.txt
delete mode 100644 doxygen/sm.dox
delete mode 100644 doxygen/snippets/QPC-SP-221115A.qlc
delete mode 100644 doxygen/snippets/blinky.c
delete mode 100644 doxygen/snippets/egizmo.c
delete mode 100644 doxygen/snippets/egizmo.qm
delete mode 100644 doxygen/snippets/file_external.cpp
delete mode 100644 doxygen/ui.dox
rename doxygen/lgpl-2.1.txt => lgpl-2.1.txt (100%)
rename doxygen/lgpl-3.txt => lgpl-3.txt (99%)
delete mode 100644 version-5.2.5
create mode 100644 version-5.3.0
diff --git a/README.md b/README.md
index 07d6c13..420feeb 100644
--- a/README.md
+++ b/README.md
@@ -170,5 +170,5 @@ a suggestion how to improve this functionality to the "Feature Tracker" at:
If you like this project, please give it a star (in the upper-right corner
of your browser window):
-![GitHub star](doxygen/images/github-star.jpg)
+![GitHub star](https://www.state-machine.com/img/github-star.jpg)
diff --git a/doxygen/Doxyfile b/doxygen/Doxyfile
deleted file mode 100644
index 6c8f7b1..0000000
--- a/doxygen/Doxyfile
+++ /dev/null
@@ -1,258 +0,0 @@
-# Doxyfile 1.9.5
-
-@INCLUDE = ../../ql-doxygen/ql-doxyfile
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING = UTF-8
-PROJECT_NAME = QM
-PROJECT_NUMBER = 5.2.5
-PROJECT_BRIEF = "Model-Based Design Tool"
-PROJECT_LOGO = ../../ql-doxygen/images/logo_ql.png
-OUTPUT_DIRECTORY =
-CREATE_SUBDIRS = NO
-CREATE_SUBDIRS_LEVEL = 6
-ALLOW_UNICODE_NAMES = NO
-OUTPUT_LANGUAGE = English
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = NO
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = YES
-JAVADOC_BANNER = NO
-QT_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-PYTHON_DOCSTRING = YES
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 4
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-OPTIMIZE_FOR_FORTRAN = NO
-OPTIMIZE_OUTPUT_VHDL = NO
-OPTIMIZE_OUTPUT_SLICE = NO
-EXTENSION_MAPPING = lnt=Objective-C
-MARKDOWN_SUPPORT = YES
-TOC_INCLUDE_HEADINGS = 4
-AUTOLINK_SUPPORT = YES
-BUILTIN_STL_SUPPORT = NO
-CPP_CLI_SUPPORT = NO
-SIP_SUPPORT = NO
-IDL_PROPERTY_SUPPORT = YES
-DISTRIBUTE_GROUP_DOC = NO
-GROUP_NESTED_COMPOUNDS = NO
-SUBGROUPING = YES
-INLINE_GROUPED_CLASSES = YES
-INLINE_SIMPLE_STRUCTS = YES
-TYPEDEF_HIDES_STRUCT = YES
-LOOKUP_CACHE_SIZE = 0
-NUM_PROC_THREADS = 1
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_PRIV_VIRTUAL = NO
-EXTRACT_PACKAGE = YES
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-EXTRACT_ANON_NSPACES = NO
-RESOLVE_UNNAMED_PARAMS = YES
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = NO
-HIDE_SCOPE_NAMES = YES
-HIDE_COMPOUND_REFERENCE= NO
-SHOW_HEADERFILE = YES
-SHOW_INCLUDE_FILES = YES
-SHOW_GROUPED_MEMB_INC = NO
-FORCE_LOCAL_INCLUDES = NO
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = NO
-SORT_BRIEF_DOCS = NO
-SORT_MEMBERS_CTORS_1ST = NO
-SORT_GROUP_NAMES = NO
-SORT_BY_SCOPE_NAME = NO
-STRICT_PROTO_MATCHING = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS = QM
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_FILES = YES
-SHOW_NAMESPACES = YES
-FILE_VERSION_FILTER =
-LAYOUT_FILE =
-CITE_BIB_FILES =
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_IF_INCOMPLETE_DOC = YES
-WARN_NO_PARAMDOC = NO
-WARN_AS_ERROR = NO
-WARN_FORMAT = "$file:$line: $text"
-WARN_LINE_FORMAT = "at line $line of file $file"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = ./main.dox \
- ./gs.dox \
- ./ui.dox \
- ./bm.dox \
- ./sm.dox \
- ./ce.dox \
- ./history.dox \
- ./license.dox \
- ../../ql-doxygen/help.dox \
- ./links.dox
-INPUT_ENCODING = UTF-8
-INPUT_FILE_ENCODING =
-FILE_PATTERNS = *.dox
-RECURSIVE = YES
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXCLUDE_SYMBOLS =
-EXAMPLE_PATH = snippets
-EXAMPLE_PATTERNS = *
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH = images \
- ../../ql-doxygen/images
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-FILTER_SOURCE_PATTERNS =
-USE_MDFILE_AS_MAINPAGE =
-FORTRAN_COMMENT_AFTER = 72
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = YES
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = NO
-REFERENCED_BY_RELATION = NO
-REFERENCES_RELATION = NO
-REFERENCES_LINK_SOURCE = YES
-SOURCE_TOOLTIPS = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-CLANG_ASSISTED_PARSING = NO
-CLANG_ADD_INC_PATHS = YES
-CLANG_OPTIONS =
-CLANG_DATABASE_PATH =
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = YES
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = ../html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER = ../../ql-doxygen/ql-header-awesome.html
-HTML_FOOTER = ../../ql-doxygen/ql-footer-awesome.html
-HTML_STYLESHEET =
-HTML_EXTRA_STYLESHEET = ../../ql-doxygen/doxygen-awesome.css \
- ../../ql-doxygen/doxygen-awesome-sidebar-only.css \
- ../../ql-doxygen/doxygen-awesome-sidebar-only-darkmode-toggle.css \
- ../../ql-doxygen/ql-awesome.css \
- qm.css
-HTML_EXTRA_FILES = ../../ql-doxygen/doxygen-awesome-darkmode-toggle.js \
- ../../ql-doxygen/doxygen-awesome-fragment-copy-button.js \
- ../../ql-doxygen/doxygen-awesome-paragraph-link.js \
- ../../ql-doxygen/ql-preview.js
-HTML_COLORSTYLE = AUTO_LIGHT
-HTML_COLORSTYLE_HUE = 209
-HTML_COLORSTYLE_SAT = 255
-HTML_COLORSTYLE_GAMMA = 113
-HTML_TIMESTAMP = NO
-HTML_DYNAMIC_MENUS = YES
-HTML_DYNAMIC_SECTIONS = NO
-HTML_INDEX_NUM_ENTRIES = 100
-GENERATE_DOCSET = NO
-DOCSET_FEEDNAME = "Doxygen generated docs"
-DOCSET_FEEDURL =
-DOCSET_BUNDLE_ID = com.state-machine.doc
-DOCSET_PUBLISHER_ID = com.state-machine.doc
-DOCSET_PUBLISHER_NAME = QuantumLeaps
-GENERATE_HTMLHELP = NO
-CHM_FILE = ../qm.chm
-HHC_LOCATION =
-GENERATE_CHI = NO
-CHM_INDEX_ENCODING =
-BINARY_TOC = YES
-TOC_EXPAND = NO
-GENERATE_QHP = NO
-QCH_FILE =
-QHP_NAMESPACE = com.state-machine.qp
-QHP_VIRTUAL_FOLDER = doc
-QHP_CUST_FILTER_NAME =
-QHP_CUST_FILTER_ATTRS =
-QHP_SECT_FILTER_ATTRS =
-QHG_LOCATION =
-GENERATE_ECLIPSEHELP = NO
-ECLIPSE_DOC_ID = com.state-machine.qp
-DISABLE_INDEX = NO
-GENERATE_TREEVIEW = YES
-FULL_SIDEBAR = NO
-ENUM_VALUES_PER_LINE = 4
-TREEVIEW_WIDTH = 335
-EXT_LINKS_IN_WINDOW = NO
-OBFUSCATE_EMAILS = NO
-HTML_FORMULA_FORMAT = png
-FORMULA_FONTSIZE = 10
-FORMULA_MACROFILE =
-USE_MATHJAX = NO
-MATHJAX_VERSION = MathJax_2
-MATHJAX_FORMAT = HTML-CSS
-MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2
-MATHJAX_EXTENSIONS =
-MATHJAX_CODEFILE =
-SEARCHENGINE = YES
-SERVER_BASED_SEARCH = NO
-EXTERNAL_SEARCH = NO
-SEARCHENGINE_URL =
-SEARCHDATA_FILE = searchdata.xml
-EXTERNAL_SEARCH_ID = QM
-EXTRA_SEARCH_MAPPINGS =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
diff --git a/doxygen/Doxyfile-CHM b/doxygen/Doxyfile-CHM
deleted file mode 100644
index 3755a35..0000000
--- a/doxygen/Doxyfile-CHM
+++ /dev/null
@@ -1,15 +0,0 @@
-# Doxyfile 1.9.4
-
-@INCLUDE = Doxyfile
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-PROJECT_LOGO = images/logo_ql-comp.png
-
-HTML_OUTPUT = tmp
-HTML_HEADER = ../../ql-doxygen/ql-header.html
-HTML_FOOTER = ../../ql-doxygen/ql-footer.html
-HTML_EXTRA_STYLESHEET = ../../ql-doxygen/ql.css
-HTML_EXTRA_FILES = ../../ql-doxygen/ql-preview.js
-GENERATE_HTMLHELP = YES
diff --git a/doxygen/Doxyfile-LATEX b/doxygen/Doxyfile-LATEX
deleted file mode 100644
index 483336c..0000000
--- a/doxygen/Doxyfile-LATEX
+++ /dev/null
@@ -1,7 +0,0 @@
-# Doxyfile 1.9.5
-
-@INCLUDE = Doxyfile
-
-GENERATE_HTML = NO
-GENERATE_LATEX = YES
-ENABLED_SECTIONS += LATEX
diff --git a/doxygen/bm.dox b/doxygen/bm.dox
deleted file mode 100644
index 0cb43c2..0000000
--- a/doxygen/bm.dox
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*! @page bm Basic Modeling
-@nav{ui_custom,bm_model}
-
-The following sections describe how to perform basic modeling tasks in QM™:
-
-- @subpage bm_model explains the hierarchical structure of the QM™ model
-- @subpage bm_fq-name explains how to unambiguously reference QM™ model items
-- @subpage bm_package explains QM™ packages for grouping other elements
-- @subpage bm_class explains QM™ classes
-- @subpage bm_attr explains class attributes and free attributes
-- @subpage bm_oper-class explains class operations
-- @subpage bm_oper-free explains free operations
-- @subpage bm_evt explains the event classes and event signals
-- @subpage bm_diagram explains the common operations on diagrams, such as: panning, zooming, selecting shapes, the grid, resizing and exporting diagrams
-- @subpage bm_edit explains how various editors work in QM™
-- @subpage bm_search explains how you can search and replace text in QM™
-- @subpage bm_cut-paste explains how to copy/cut and paste model items (even between different instances of QM™)
-- @subpage bm_undo-redo explains how the feature works as implemented in QM™
-- @subpage bm_lock explains the concepts of protecting QM™ model items from inadvertent changes (locking)
-
-@nav{ui_custom,bm_model}
-*/
-/*##########################################################################*/
-/*! @page bm_model QM Model
-@nav{bm,bm_fq-name}
-
-The abstract **model** of your software is the centerpiece of the QM™ modeling tool. In fact, QM™ can be viewed as a multifaceted *model editor*, which allows you to create, view, and modify the abstract model and eventually to @ref ce "generate code" based on this model.
-
-@note
-The abstract **QM model** is kept entirely in memory during a QM session. This section describes the *logical structure* of this model. Between editing sessions, the abstract QM model is preserved on disk in an XML-based @ref ui_model_file "QM Model File".
-
-A QM™ model is structured as a hierarchical tree, similar in concept to the hierarchical file system consisting of directories and files. The nodes of this tree are comprised of **model items**, many of which can contain other model items, similar to directories that can contain other directories and files.
-
-
-
-@image html bm_model.png "Anatomy of a QM Model"
-
-A typical QM™ model has a hierarchical structure consisting of:
-
-- the Model Item sits at the root of the hierarchy and contains all other model items;
-
-- the @ref bm_qp_item "QP framework" (`qpc` or `qpcpp`) that provides you with foundation classes for derivation of your own classes, such as active objects, state machines, time events, etc. (NOTE: The QM™ Model is always based on one of the QP™ frameworks).
-
-- one or more @ref bm_package "packages" that contain @ref bm_class "classes" and possibly other model items, including packages.
-
-- one or more @ref ce_dir "directories" that contain @ref ce_file "files", which provide "templates" for the code to be generated from the model.
-
-
-@section bm_model_prop Model Property Sheet
-The Model Item can be configured by the Model-Specific @ref ui_prop "Property Sheet".
-
-@image html bm_model_prop.png "Model Property Sheet"
-
-The Model Properties are as follows:
-
-- The **encoding** drop-box property of the Model item allows you to select one of the few dozens of available character encodings for the @ref ui_model_file "Model File" in XML. The default encoding is UTF-8, which can accommodate a wide range of languages, including special characters of many non-English languages. However, in case you wish to use a very specific encoding, you can select one of the dozens supported by QM™.
-
-- The **save links** check-box property allows you to save @ref ui_model_links "Model-Link Comments" in the @ref ui_model_file "QM Model File". The presence of the links increases the size of the model file, but can be very useful in merging different versions of the model files.
-
-- The **documentation** box allows you to provide a description of the model. For the Model Item this property is not used during code generation.
-
-@anchor bm_unicode
-@note
-Internally, all textual information that you enter into a QM™ model is represented in Unicode, which means that QM™ can accommodate most of the world's writing systems.
-
-
-@section bm_qp_item QP Framework Item
-The first item of every QM™ model is the QP framework item, which is the main enabler for automatic @ref ce "code generation" and also provides the foundation classes for derivation of your own @ref bm_class "classes", such as state machines, active objects, time events, etc.
-
-
-@image html framework_item.png "Framework Item (qpc)"
-
-@attention
-The QP framework item is **not editable** (it is permanently @ref bm_lock "locked").
-
-The QP framework names inside QM™ are abbreviated compared to their names in the PSiCC2 book and other QP documentation. The following table provides the mapping:
-
-
-QM Framework Item Name| QP framework type
-:---------------------|--------------------
-qpc | QP/C
-qpcpp| QP/C++
-
-
-The qpc, qpcpp model item contains a quite detailed and documented model of the selected QP™ framework, which you can use as a quick reference. For instance, you can check the signatures of various functions, macros, etc. You can also copy-and-paste the provided code examples into your own code anywhere in the editable parts of the model (see also @ref bm_edit).
-
-As most software frameworks, the QP™ frameworks use the basic concepts of encapsulation (@ref bm_class "classes") and **inheritance** as primary mechanisms for customizing, specializing, and extending the framework to a particular application.
-
-@nav{bm,bm_fq-name}
-*/
-/*##########################################################################*/
-/*! @page bm_fq-name Fully-Qualified Names
-@nav{bm_model,bm_package}
-
-In a hierarchical tree-like structure, like the @ref bm_model "QM™ model", it is often useful to refer to items by means of fully-qualified names. A name is *fully-qualified* when it "is complete in the sense that it includes (a) all names in the hierarchic sequence above the given element and (b) the name of the given element itself". The following picture shows examples of the fully-qualified names of various items in a QM model:
-
-
-
-@image html bm_fq-names.png "Examples of Fully-Qualified Item Names"
-
-As you can see from the picture above, QM™ uses two colons (`::`) to separate the list of parent-items of the given item.
-
-To avoid ambiguities, the QM™ modeling tool requires providing the **fully-qualified names** of items in several circumstances, such as specifying the @ref bm_class-super "Superclass" of a given class, inside the @ref ce_gen "Code-Generation Directives", and in the @ref ce_comment-link "item references" embedded into comments in the generated code.
-
-@note
-Just like most high-level language compilers, QM™ recognizes only a limited number of characters in each name level as unique, and abbreviates the rest of the name. Currently, this limit is set to 16 unique leading characters at each level of the name, with the total length of the fully-qualified name not exceeding 99 characters.
-
-@nav{bm_model,bm_package}
-*/
-/*##########################################################################*/
-/*! @page bm_package Working with Packages
-@nav{bm_fq-name,bm_class}
-
-A **package** in the Unified Modeling Language is used to "group elements, and to provide a namespace for the grouped elements". Pretty much all UML elements can be grouped into packages. A package may even contain other packages, thus allowing **hierarchical nesting** of packages.
-
-
-QM™ supports packages and allows a package to contain:
-
-- other packages
-- @ref bm_class "classes"
-- free attributes
-- free operations
-- @ref ce_dir "directories"
-
-
-
-
-@section bm_package-add Adding a Package
-In the @ref ui_explorer **right-click** on the @ref bm_model "Model" or a **Package** item to which you want to add a new package and select Add Package from the popup menu.
-
-@image html bm_package-add.png "Adding a Package to the Model"
-
-
-@note
-Alternatively, you can also add an @ref bm_package-extern "External Package" by @ref bm_package-import "importing it".
-
-
-@section bm_package_prop Package Property Sheet
-A QM™ package item can be configured by the Package-Specific @ref ui_prop "Property Sheet".
-
-@image html bm_package_prop.png "Package Property Sheet"
-
-The package-item property sheet allows you to set the following properties:
-
-- package **name**
-- package @ref bm_package-stero "stereotype"
-- package **file** (see @ref bm_package-extern)
-- package @ref bm_package-namespace "namespace"
-
-
-@subsection bm_package-stero Package Stereotype
-A QM™ package can have a configurable "stereotype", which you set through the @ref ui_prop for the package. The purpose of the package stereotype is to provide concise information about the contents of the package and currently has no other function or implications for code generation.
-
-@image html bm_package-stereo.png "Setting Stereotype for a Package"
-
-QM™ currently supports the following package stereotypes:
-
-
-Package Stereotype | Explorer Icon
-:------------------|:--------------:
-undefined |
-events |
-components |
-diagrams |
-framework |
-
-
-
-@subsection bm_package-namespace Package Namespace
-As mentioned at the top of this section, one of the main jobs of a package is to provide a namespace for the grouped elements. QM™ supports this feature through the **namespace** field in the @ref ui_prop for the package.
-
-@note
-By using a namespace (or possibly multiple namespaces) you can avoid name conflicts with other code, such as any 3rd party libraries, in which you cannot easily change names.
-
-@image html bm_package-namespace.png "Setting Namespace for a Package (C++ case)"
-
-If you choose to set a non-empty namespace in the package's property sheet, your choice will be reflected in the @ref ui_explorer by showing the namespace in parentheses in front of the package name. For example, in the screen shot above the namespace `DPP::` is shown as the string `(DPP::)` pre-pended to the package name `AOs` (active objects). In contrast to the package stereotype, the package namespace has important implications for @ref ce "code generation".
-
-@attention
-In C++ (see below), a package namespace can be specified either with or without the trailing double-colon '::'.
-
-
-@subsection bm_package-namespace-cpp Namespaces in C++
-If you use a package with a namespace in C++ (i.e., your model is based on the @ref bm_qp_item "qpcpp" framework), the QM @ref ce "code generator" will surround all the appropriate code sections with the C++ `namespace` as follows:
-
-@code{.c}
-namespace FOO {
- . . .
-} // namespace FOO
-@endcode
-
-Moreover, QM™ will also handle correctly the case of **nesting** packages with namespaces. For example, if a package with namespace `BAR` nests inside a package with namespace `FOO`, any element from the nested package will be surrounded by the correctly nested namespaces as well:
-
-@code{.c}
-namespace FOO {
-namespace BAR {
- . . .
-} // namespace BAR
-} // namespace FOO
-@endcode
-
-
-@subsection bm_package-namespace-c Namespaces in C
-QM™ also supports namespaces in C (i.e., in models based on the @ref bm_qp_item "qpc" framework). In C, the QM @ref ce "code generator" will pre-pend the namespace to the names of elements included in the package, such as classes, class operations, free attributes, and free operations.
-
-@note
-For improved code readability in C, it is recommended to use the underscore '_' as the last character in the namespace string. QM™ will not insert any characters between the namespace and the name of the element. (This is in contrast to C++, where QM will make sure that the namespace is separated with the double-colon '::').
-
-For example, if your package defines a namespace string as "FOO_", the code generated for any elements inside this package will look as follows:
-
-@code{.c}
-typedef struct {
- . . .
-} FOO_Test_QMsm;
-
-static QState FOO_Test_QMsm_initial(FOO_Test_QMsm * const me,
- QEvt const * const e);
-. . .
-@endcode
-
-
-Again, also in C, the QM @ref ce "code generator" supports the case of **nesting** packages with namespaces. For example, if a package with a namespace "BAR_" nests inside a package with a namespace "FOO_", the generated code will correctly nest namespaces as follows:
-
-@verbatim
-typedef struct {
- . . .
-} FOO_BAR_Test_QMsm;
-
-static QState FOO_BAR_Test_QMsm_initial(FOO_BAR_Test_QMsm * const me,
- QEvt const * const e);
-. . .
-@endverbatim
-
-
-@section bm_package-extern External Packages
-QM™ supports **external packages**, which are are saved to the specified files instead of being saved as part of the main @ref ui_model_file "Model File". In other words, the use of external packages allows you to split the @ref bm_model "Abstract Model" into **multiple** model files, which then can be owned by different team members and tracked separately in a Version Control System (VCS).
-
-Also, an external package can be @ref bm_package-import "imported" into many QM™ models, thus such an external package can be **shared** and **reused** among all these models. In fact, the intent for reuse should be the main consideration for deciding whether or not a package should be made external.
-
-
-@subsection bm_package-export Exporting a Package
-To export a package (thus making it an external package), you simply provide an non-empty **file_property** in the Package Property Sheet:
-
-@image html bm_package-extern.png "External Package with a Non-Empty File Name"
-
-The package file_property can contain the whole **path** to the package file, which is always relative to the @ref ui_model_file "Model File". For example, in the screen shot above, the package `"tcp_ip"` will be saved to the package file `"tcp_ip.qmp"` in the parent directory (`..`) relative to the model file.
-
-The default **extension** of the package file name is `.qmp` (QM Package). If you don't provide this extension, QM™ will append it for you.
-
-@note
-To give you quick visual feedback that a package is external, the @ref ui_explorer "Model Explorer" adorns the package icon with a red arrow, like so: package
-
-@attention
-If an external package contains any @ref ce_dir "directories" and @ref ce_file "files" (for @ref ce "code generation"), the generated code is **relative to the package file**, as opposed to be directly relative to the @ref ui_model_file "model file".
-
-
-@subsection bm_package-import Importing a Package
-To import an external package into your QM™ model, go to the @ref ui_explorer "Model Explorer" view and **right-click** the mouse over the model item or a package item into which you wish to import the external package. This will open a popup-menu, from which you need to select the option "Import package".
-
-@image html bm_package-imp.png "Importing a Package"
-
-This action will launch the standard file-open dialog box, through which you can select the package-file you wish to import. Select the desired package file and click "Open". Note that by default, the dialog box shows only the files with extension `.qmp`.
-
-@image html bm_package-imp1.png "Selecting the Package File to Import"
-
-QM™ allows you to import an exported package into any number of models. All these models will then be able to use the package and to change it as well.
-
-@note
-If you want to avoid inadvertent modification of the imported package you can @ref bm_lock "lock" it from editing.
-
-@nav{bm_fq-name,bm_class}
-*/
-/*##########################################################################*/
-/*! @page bm_class Working with Classes
-@nav{bm_package,bm_attr}
-
-A class groups together @ref bm_attr-class "attributes" and @ref bm_oper-class "operations" available to all instances of the class (*objects*). A class can also inherit from another class (called the *superclass*).
-
-
-Classes are the main entities from which you build your @ref bm_model "models" in QM™. Also, in QM™, only a class can have a @ref sm_class "State Machine".
-
-@attention
-QM™ supports *classes* and *inheritance* regardless of the target programming language, which currently can be either **C** or C++. The Application Note "Simple Object-Oriented Programming in C" describes how QP frameworks and the QM code generator implement *classes* and *inheritance* in portable **ANSI C**.
-
-
-
-@image
- html bm_class.png "A Class in Model Explorer"
-
-
-@section bm_class-add Adding a Class
-A Class can only be added to a @ref bm_package "Package". To add a Class, in the @ref ui_explorer **right-click** on the @ref bm_package "Package" to which you want to add a new Class and select Add Class from the popup menu.
-
-@image html bm_class-add.png "Adding a Class"
-
-
-@section bm_class_prop Class Property Sheet
-A Class item can be configured by the Class-Specific @ref ui_prop "Property Sheet".
-
-@image html bm_class_prop.png "Class Property Sheet"
-
-The class-item property sheet allows you to set the following properties:
-
-- @ref bm_class-name
-- @ref bm_class-super
-- @ref bm_class-doc
-
-
-@subsection bm_class-name Class Name
-The class **name** should be a valid name of a C++ `class` or a C `struct`. Typically, you should strive for a short and punchy name, typically a noun that captures the nature of the objects of this class. For example, a class that encapsulates a motor controller could be named `Motor`. (For more ideas about naming classes, see the discussion of the StackOverflow question "What's the best approach to naming classes?").
-
-
-@subsection bm_class-super Superclass of a Class
-A class can *optionally* inherit a **superclass**. A superclass can be any of the already defined classes, which specifically include classes provided in the @ref bm_qp_item "QP Framework Item". The following screen shot shows an expanded drop-down box of existing classes, from which you can choose the superclass. Please note that the classes listed in the drop-box use the @ref bm_fq-name "Fully-Qualified Names", that is, names that are prefixed with the package name(s), such as `qpc::QActive`.
-
-@image html bm_class-super.png "Selecting a Superclass"
-
-
-@subsection bm_class-doc Class Documentation
-The **documentation** box in the Class Property Sheet allows you to provide documentation to the class. The QM code generator parses the documentation box and can @ref ce_comment-doc "generate comments" from it in the auto-generated code.
-
-
-@nav{bm_package,bm_attr}
-*/
-/*##########################################################################*/
-/*! @page bm_attr Working with Attributes
-@nav{bm_class,bm_oper-class}
-
-An *attribute* defines a variable that can be attached to the instances of a @ref bm_class "class" (see @ref bm_attr-class) or to a @ref bm_package "package" (see @ref bm_attr-free).
-
-
-@section bm_attr-class Class Attributes
-Attributes attached to a @ref bm_class "class" are present in each instance of the class, except for a `static` class attribute, which exists in one copy only, regardless of the number of class instances. In C/C++, non-static class attributes correspond to data members of a `struct`/`class`.
-
-@subsection bm_attr-class-add Adding a Class Attribute
-A *class attribute* can only be added to a Class. To add a *class attribute*, in the Model Explorer right-click on the Class to which you want to add a new *class attribute* and select `Add Attribute` from the popup menu.
-
-@image html bm_attr-class-add.png
-@caption{Adding a Class Attribute}
-
-@subsection bm_attr-class-prop Class Attribute Property Sheet
-A Class Attribute item can be configured by the Class-Attribute-Specific @ref ui_prop "Property Sheet".
-
-![Class Attribute Property Sheet](bm_attr-class-prop.png)
-
-The class-attribute-item property sheet allows you to set the following properties:
-- **attribute name** (NOTE: name can be followed by the array dimension for arrays of attributes)
-- **attribute type** drop-down box (NOTE: accepts also user-supplied types)
-- **attribute visibility** drop-down box with options: `public`, `protected`, `private`
-- **static checkbox** (for designating a class attribute as a *static class attribute*)
-- **attribute documentation** for documenting the attribute (see also @ref ce_comment-doc "generate comments")
-
-@section bm_attr-free Free Attributes
-Attributes attached to a @ref bm_package "package" (as opposed to a @ref bm_class "class") are called **free attributes**. In C/C++, such free attributes correspond to variables defined directly at file scope (either `static` variables or a global variables).
-
-@subsection bm_attr-free-add Adding a Free Attribute
-A *free attribute* can only be added to a Package. To add a *free attribute*, in the Model Explorer right-click on the Package to which you want to add a new *free attribute* and select `Add Attribute` from the popup menu.
-
-![Adding a Class Attribute](bm_attr-free-add.png)
-
-
-@subsection bm_attr-free-prop Free Attribute Property Sheet
-A Free Attribute item can be configured by the Free-Attribute-Specific @ref ui_prop "Property Sheet".
-
-![Free Attribute Property Sheets (simple initializer--left, and array initializer--right)](bm_attr-free-prop.png)
-
-The free-attribute-item property sheet allows you to set the following properties:
-
-- **attribute name** (NOTE: name can be followed by the array dimension for arrays of attributes)
-- **attribute type** drop-down box (NOTE: accepts also user-supplied types)
-- **attribute documentation** for documenting the attribute (see also @ref ce_comment-doc "generate comments")
-- **attribute initializer** for optional initialization of the free attribute (see also @ref ce_def_free-attr "free attribute definition")
-
-@nav{bm_class,bm_oper-class}
-*/
-/*##########################################################################*/
-/*! @page bm_oper-class Working with Class Operations
-@nav{bm_attr,bm_oper-free}
-
-Operations attached to a @ref bm_class "class" can access individual instances of the class, except for a @ref bm_class-oper-static "static class operation", which cannot access any particular instance.
-
-@section bm_oper-class-c Class Operations in C
-In C, a non-static class operation corresponds to a function that (by a coding convention) takes the `me`-pointer to the `struct` with class attribute. The `me`-pointer is generated **automatically** by QM and should NOT be provided explicitly.
-
-@image html bm_class-oper_c.png
-@caption{Example of a class operation in C}
-
-For example, operation `eval` in class `Calc` shown in the screen shot above will be generated as:
-`bool Calc_eval(Calc const * const me, double op, uint8_t oper)`
-
-@note
-The `me` pointer parameter is of type `Calc const *...` because the *specifier* `const` is provided.
-Such `const` operation promises not to change the class instance.
-
-
-@subsection bm_class-ctor-c Class Constructors in C
-In C, a constructor is just like any other class operation in that QM will generate the `me`-pointer as the first parameter. By convention, a constructor should be named `ctor`, or `ctor1`, `ctor2`, etc. if you have more constructors with different signatures (different parameters). The `ctor` function should have return type `void`. It can have any number of parameters.
-
-@image html bm_class-ctor_c.png
-@caption{Class constructor in C}
-
-This piece of the model generates the following code:
-
-@code{c}
-void Philo_ctor(Philo * const me) {
- QActive_ctor(&me->super, Q_STATE_CAST(&Philo_initial));
- QTimeEvt_ctorX(&me->timeEvt, &me->super, TIMEOUT_SIG, 0U);
-}
-@endcode
-
-@note
-The C constructor must always call the superclass' as well as members' constructors explicitly. For example, the `Philo_ctor()` in the listing above calls the superclass' constructor `QActive_ctor()` as well as member constructor `QTimeEvt_ctorX()`.
-
-@subsection bm_class-ctor_call Invoking Constructors in C
-In C, all constructors must be called **explicitly**. This often poses a problem with *encapsulation*. For example, you might not want to expose the whole Active Object class declaration (to get to the constructor). In these cases, the example models in QP/C use an idiom, in which the special @ref bm_oper-free "free operation" `_ctor_caller()` (or just `_ctor()`) is provided just to call the constructor on an implicit instance.
-
-For example, the model in the screen shot above contains the free operation `Philo_ctor_call()`, which is defined as follows
-
-@code{c}
-void Philo_ctor_call(void) {
- for (uint8_t n = 0U; n < N_PHILO; ++n) {
- Philo_ctor(&Philo_inst[n]); /* <== ctor */
- }
-}
-@endcode
-
-This particular "ctor call" invokes constructors of all `Philo` instances in the system. Later, in the `main()` function, only the free `Philo_ctor_call()` operation is called, without exposing the declaration of the `Philo` class (and its constructor):
-
-@code{c}
-void main(void) {
- . . .
- /* start the active objects... */
- Philo_ctor_call(); /* <== call all Philosopher ctors */
- for (n = 0U; n < N_PHILO; ++n) {
- QACTIVE_START(AO_Philo[n], /* AO to start */
- . . .
- }
- . . .
-}
-@endcode
-
-@subsection bm_class-xtor-c Class Destructors in C
-In C, a destructor should be named `xtor`. The `xtor` class operation should have return type @c void and should not take any parameters (except of the implicit `me` pointer).
-
-@section bm_oper-class-cpp Class Operations in C++
-In C++, a non-static class operation corresponds to a class member function, that is a function with the `this`-calling convention.
-
-@image html bm_class-oper_cpp.png
-@caption{Example of a class operation in C++}
-
-For example, operation `eval` in class `Calc` shown in the screen shot above will be generated as:
-`bool Calc::eval(double op, std::uint8_t oper)`
-
-@subsection bm_class-ctor_Cpp Class Constructors in C++
-In C++, a constructor has the same name as the class and no return value. A constructor can have any number of parameters and a class may have any number of overloaded constructors. Constructors may have any accessibility: public, protected or private.
-
-@subsection bm_class-ctor_initializer C++ Constructor Initializer List
-To provide the **constructor initializer list**, you put the list in the _code_ panel starting with the colon (':') optionally preceded by any number of spaces. You can continue the list for as many lines as you wish.
-
-The **constructor initializer list** might be followed by the body of the constructor. To start the body, you simply leave one (or more) empty lines after the initializer. QM will interpret all lines of code after such an empty line as the body of the constructor.
-
-Finally, you might skip the **constructor initializer list** altogether by simply not placing the colon (':') at the beginning.
-
-The following screen shot shows a C++ constructor with a **constructor initializer list** and a body.
-
-@image html bm_class-ctor_cpp.png
-@caption{Class constructor in C++}
-
-This piece of the model generates the following code:
-
-@code{cpp}
-Table::Table() noexcept
- : QActive(&initial)
-{
- for (uint8_t n = 0U; n < N_PHILO; ++n) {
- m_fork[n] = FREE;
- m_isHungry[n] = false;
- }
-}
-@endcode
-
-@subsubsection bm_class-ctor_explicit Explicit Constructor in C++
-You can make a C++ constructor __explicit__ by providing the keyword `explict` in the __return type__ filed in the Property Sheet. An example of an explicit constructor is provided in the `Table` constructor shown in the screen shot above.
-
-@subsection bm_class-xtor-cpp Class Destructors in C++
-In C++, a destructor should be named ` ~`. The destructor class operation should have no return type and should not take any parameters (except of the implicit `this`-pointer).
-
-
-@section bm_class-oper-static Static (Class-Wide) Operations
-Static class operation does not have access to any specific instance of a class, but has permissions to access any attributes of any instance of the class. In C, a static class operation does __not__ take the `me`-pointer. Similarly, in C++, a static class operation does __not__ take the implicit `this`-pointer. You make a given class operation `static` by checking the __static__ checkbox in the @ref bm_class-oper-prop "Class Operation Property Sheet".
-
-
-@section bm_class-oper-prop Class Operation Property Sheet
-
-@image html bm_class-oper_prop.png "Class operation Property Sheet"
-
-The class operation property sheet allows you to set the following properties:
-
-- **operation name**
-- **operation return type** drop-down box (NOTE: accepts also user-supplied types)
-- **operation specifier** allows you to provide such specifiers as: `const` (for C/C++),
-and `override`, `noexcept`, `=delete`, `=0` (for C++ only)
-- **operation virtual** checkbox (supported for C++ only)
-- **operation inline** checkbox
-- **operation documentation** for documenting the operation (see also @ref ce_comment-doc "generate comments")
-- **operation code/pseudocode** for specifying code of the operation (NOTE: currently not used)
-
-@nav{bm_attr,bm_oper-free}
-*/
-/*##########################################################################*/
-/*! @page bm_oper-free Working with Free Operations
-@nav{bm_oper-class,bm_evt}
-
-Free operations are defined at a @ref bm_package "package" scope, _not_ attached to any class.
-
-
-In C/C++, a free operation corresponds to a function (e.g., `int foo(int x, float y)`).
-
-@image html bm_free-oper_c.png "Free operation"
-
-This piece of the model generates the following code:
-
-@code{c}
-void Philo_ctor_call(void) {
- uint8_t n;
- for (n = 0U; n < N_PHILO; ++n) {
- Philo_ctor(&Philo_inst[n]);
- }
-}
-@endcode
-
-
-@section bm_free-oper-prop Free Operation Property Sheet
-
-The free operation property sheet allows you to set the following properties:
-
-- **operation name**
-- **operation return type** drop-down box (NOTE: accepts also user-supplied types)
-- **operation specifier** (C++ only) allows you to provide such specifiers as: `noexcept`, etc.
-- **operation inline** checkbox
-- **operation documentation** for documenting the operation (see also @ref ce_comment-doc "generate comments")
-- **operation code/pseudocode** for specifying code of the operation (NOTE: the pseudocode box is currently not used)
-
-@nav{bm_oper-class,bm_evt}
-*/
-/*##########################################################################*/
-/*! @page bm_evt Working with Events
-@nav{bm_oper-free,bm_diagram}
-
-Events are objects specifically designed for communication. They consist of event-signals and event-parameters. In the QP frameworks underlying QM, events are subclasses of the `QEvt` base class. QM incorporates such events by recognizing that a given class is a (direct or indirect) subclass of `QEvt` and by providing the event stereotype for those classes. Additionally, event classes can be placed in @ref bm_package-stero "packages" with the event stereotype
-
-
-
-@section bm_evt-sig Event Signals
-The event-signal provides information about the occurrence conveyed by the event. In QM, event-signals are used as @ref sm_tran-trig "transition triggers". Event-signals are typically enumerated in a @ref ce_file "header file", as illustrated in the following screen shot:
-
-@image html bm_evt-sig.png "Event-signals enumerated in a header file"
-
-
-@attention
-By the __QM convention__, the event signals must have the `_SIG` suffix. To avoid clutter, the `_SIG` suffix is omitted in the state diagrams. For example, the `MISSILE_FIRE_SIG` enumerated in the `game.hpp` header file appears as the `MISSILE_FIRE` trigger in a state diagram, but the QM code generator will add the `_SIG` suffix in the generating code. See also: @ref sm_tran-trig "transition trigger".
-
-@note
-The event-signals cannot start at zero, but must start with the `Q_USER_SIG` offset.
-
-
-Currently, QM does not provide any more support for handling event-signals. In the future, QM will add support for partitioning the signal space and for associating event-signals with custom event classes.
-
-
-@section bm_evt-param Event Parameters
-The purpose of subclassing `QEvt` is to create events with __parameters__. These parameters are added in subclasses of `QEvt` as @ref bm_attr "attributes" of the event classes.
-
-@image html bm_evt_c.png "Event classes (subclasses of QEvt) in an events package"
-
-For example, the event class `ObjectImageEvt` in the screen shot above specifies the following event parameters:
-
-@code{}
-x : uint8_t
-y : int8_t
-bmp : uint8_t
-@endcode
-
-@note
-When adding event parameters you should keep in mind the __size__ of the event class. The instances of event classes are stored in the QP event pools, which then must be sized accordingly. Also, you typically should keep event classes simple PODs (Plain Old Datatypes), meaning that you should not provide constructors, destructors, virtual functions (in C++), etc.
-
-
-@section bm_evt-decl Declaring Event Classes
-Once the event classes are specified in the QM model, you typically need to provide the __declaration__ of these classes in a header file. A header file is the right place, because events are _shared_ among components, so they typically need to be included in multiple modules (`.c` or `.cpp` files).
-
-You can @ref ce_declare "declare" event classes in a @ref ce_file "header file" either one at a time:
-
-@image html bm_evt_decl.png "Declaring individual event classes"
-
-Alternatively, if you placed all your events in a dedicated package, you can simply generate @ref ce_declare "declaration of the whole package":
-
-@image html bm_evt_decl-pkg.png "Declaring the whole event package"
-
-The latter declaration (the whole event package) results in the following generated code:
-
-@code{c}
-/*.$file${.::game.h} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
-. . .
-/*.$declare${Events} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
-/*.${Events::ObjectPosEvt} .................................................*/
-typedef struct {
-/* protected: */
- QEvt super;
-
-/* public: */
- uint8_t x;
- uint8_t y;
-} ObjectPosEvt;
-/*.${Events::ObjectImageEvt} ...............................................*/
-typedef struct {
-/* protected: */
- QEvt super;
-
-/* public: */
- uint8_t x;
- int8_t y;
- uint8_t bmp;
-} ObjectImageEvt;
-/*.${Events::MineEvt} ......................................................*/
-typedef struct {
-/* protected: */
- QEvt super;
-
-/* public: */
- uint8_t id;
-} MineEvt;
-/*.${Events::ScoreEvt} .....................................................*/
-typedef
- struct {
-/* protected: */
- QEvt super;
-
-/* public: */
- uint16_t score;
-} ScoreEvt;
-/*.$enddecl${Events} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-. . .
-@endcode
-
-
-@section bm_evt-using Using Event Classes in the Code
-As mentioned before, the purpose of custom event classes is to represent events with parameters. So now, in the code you need to access the event parameters. The QP/C and QP/C++ frameworks provide a special macro `Q_EVT_CAST()` to encapsulate __down-casting__ the current event `e` to the specific subclass of `QEvt` and then to conveniently access the event parameters. This is illustrated in the screen shot below:
-
-@image html bm_evt-use.png "Using custom event in a transition action"
-
-@note
-The macro `Q_EVT_CAST()` encapsulates the deviation from MISRA-C/C++ rules of casting pointers.
-
-@nav{bm_oper-free,bm_diagram}
-*/
-/*##########################################################################*/
-/*! @page bm_diagram Working with Diagrams
-@nav{bm_evt,bm_edit}
-
-In order to work with a diagram, you must first create it. For example, to create a State Machine diagram (Statechart), please refer to Section @ref sm_add.
-
-@note
-Currently QM™ supports only State Diagrams, but it might support other diagram types in the future. This section describes generic operations applicable to any diagram type.
-
-
-@section bm_diagram_open Opening a Diagram
-Once a diagram exists, you can open it in the following ways:
-
-- in the @ref ui_explorer, you can **double**-click on the class item with the diagram
-- in the @ref ui_explorer, you can **double**-click on the diagram item (nested in the class)
-- in the @ref ui_explorer, you can **right**-click on the class item or the diagram item to open up the popup menu, and then choose the first action from this menu, which is Show Diagram.
-
-@image html diagram_open.png "Opening a Diagram"
-
-
-@section bm_diagram_close Closing a Diagram
-
-To close a diagram, click on the X button in the top-right corner of the diagram window, or in the @ref ui_mdi "MDI" tab (if you use the @ref ui_mdi_tabs mode), as shown in the picture below.
-
-![Closing a Diagram](diagram_close.png)
-
-Alternatively, the current active @ref ui_mdi "MDI" window can be closed by means of the keyboard shortcut: **Ctrl**-W.
-
-
-@note
-Closing a diagram does not delete the diagram, it merely hides the diagram window from view.
-
-
-@section bm_diagram_canvas The Drawing Canvas
-Every diagram in QM™ is drawn on the canvas, which is a rectangular background area behind the various shapes. Even though you can actually draw outside the canvas, QM™ will export to a graphic format (see @ref bm_diagram_export) only the part of the diagram enclosed by the canvas.
-
-As shown in the screen shot below, you can easily resize the Drawing Canvas by dragging its right or bottom edges, or by dragging the resize handle in the bottom-right corner of the canvas. In each case the mouse cursor indicates the possible direction of resizing.
-
-@image html bm_diagram-canvas.gif "Resizing the Drawing Canvas"
-
-
-@section bm_diagram_grid The Grid
-All elements of any QM™ diagram are aligned with the grid. You can position the diagram nodes and route the connectors __only__ along the grid nodes, and in fact, the geometry of any shape is stored in the grid coordinates, so you cannot achieve any finer positioning granularity than the grid size, which is currently 8 pixels horizontally and 8 pixels vertically.
-
-@image html tb_view-grid.png "Grid viewing options"
-
-However, even though you cannot remove the alignment of all shapes to the grid, you can _show_ or _hide_ the grid lines in the diagram. You can select various presentations of the grid by means of the "Grid Options" selection in the @ref ui_menu_view, or by means of the grid drop-box (grid) in the @ref ui_toolbar_view.
-
-
-@section bm_diagram_shape_select Selecting Diagram Shapes
-
-Typically, when you simply click on a shape in a diagram you **select** that shape and clear any previous selection, so that only one shape is selected at a time. The model item corresponding to the selected shape becomes @ref ui_curr_item.
-
-However, QM™ also offers you the convenience of selecting and manipulating **multiple shapes** simultaneously. QM™ provides a special **select & lasso tool** on the @ref gen_diagram_tools "Diagram Toolbox":
-
-@anchor gen_diagram_tools
-@image html gen_diagram-tools.png "Diagram Toolbox/Generic Tools"
-
-The two options of selecting multiple diagram shapes are the **lasso** tool and mouse **selection-toggle**. These two methods can be combined to fine-tune the selection.
-
-
-@subsection bm_diagram_shape_select-mouse Selecting Shapes with the Mouse-Toggle
-Click the **select & lasso tool** in the @ref ui_toolbox .
-
- When you hover the mouse over the diagram (hover means just moving the mouse cursor without depressing any mouse buttons), the cursor changes to "select shapes".
-
- Whenever you hover over an active part of a shape, the mouse cursor changes to a hand-pointer with "+". You can then click the left mouse button to __select__ the shape, if it is not selected, or __deselect__ it, if it was already selected.
-
-@image html bm_diagram-select.gif "Selecting/deselecting shapes with mouse toggle"
-
-
-@subsection bm_diagram_shape_select-lasso Selecting Shapes with the Lasso
-Click the **select & lasso tool** in the @ref gen_diagram_tools "Diagram Toolbox".
-
- When you hover the mouse over the diagram (hover means just moving the mouse cursor without depressing any mouse buttons), the cursor changes to "select shapes".
-
- When you press the left mouse button, the cursor changes to a hand-pointer with a lasso and you can start __dragging__ the lasso from that point.
-
-@image html bm_diagram-lasso.gif "Selecting multiple shapes with a lasso"
-
-
-@subsection bm_diagram_shape_move Moving the Selected Shapes
-To move and re-position the selected shapes, choose the __default pointing tool__ in the @ref gen_diagram_tools "Diagram Toolbox".
-
- When you hover the mouse over the diagram (hover means just moving the mouse cursor without depressing any mouse buttons), the cursor has the normal arrow shape.
-
- Whenever you hover over a movable part of a shape, the mouse cursor changes to "move shape". You can start __dragging__ all the selected shapes from that point.
-
-@image html bm_diagram-move.gif "Moving selected shapes"
-
-
-@section bm_diagram_pan Panning Diagrams
-Click the **panning tool** in the @ref gen_diagram_tools "Diagram Toolbox".
-
- To pan the diagram with the mouse, press the Shift key. At this point the mouse cursor changes to the open hand:
-
- When you press the **left** mouse button, you "grab" the diagram and the cursor changes to closed hand:
-
-Hold down the left mouse button and drag the whole diagram under the viewing window.
-
-@image html bm_diagram-pan.gif "Panning a Diagram"
-
-@sa @ref ui_birds-eye
-
-
-@section bm_diagram_scroll Scrolling Diagrams
-When the diagram window is smaller than the diagram canvas, QM™ displays scroll bars, which allow you to scroll the diagram horizontally and vertically.
-
-@image html scrolling.png "Scrolling a Diagram"
-
-
-@subsection bm_diagram_scroll_with_keyboard Scrolling with the Keyboard
-
-You can scroll the diagram using the keyboard. As expected, the "up" key (key-up) scrolls the diagram up, the "down" key (key-down) scrolls the diagram down, the "left" key (key-left) scrolls the diagram left, and the "right" key (key-right) scrolls the diagram right.
-
-
-@subsection bm_diagram_scroll_with_wheel Scrolling with the Mouse Wheel
-
-You can also scroll the diagram using the mouse wheel. As expected, rotating the wheel forward scrolls the diagram down and rotating the wheel backward scrolls the diagram up. By pressing the Ctrl key, you can also scroll the diagram horizontally. When the Ctrl is pressed, rotating the wheel forward scrolls the diagram right and rotating the wheel backward scrolls the diagram left.
-
-
-@section bm_diagram_zoom Zooming Diagrams
-
-You can zoom a diagram in and out using several methods.
-
-@image html zoom.png "Zooming a Diagram"
-
-
-@subsection bm_diagram_zoom_with_status Zooming with the Status Bar
-You can zoom a diagram by clicking on the zoom buttons (zoom-in, zoom-out, and zoom to 100%) in the @ref ui_status. The zoom-1 button (zoom to 100%)restores the zoom of 100%.
-
-@image html zoom_slider.png "Zoom Slider in the Status Bar"
-
-Alternatively, you can use the zoom slider in the @ref ui_status. Shifting the slider left towards zoom-out zooms out, towards zoom-in zooms in the diagram.
-
-
-@subsection bm_diagram_zoom_with_menu Zooming with the View Menu
-You can zoom the active diagram with the @ref ui_menu_view actions zoom-in, zoom-out, and zoom to 100%.
-
-
-@subsection bm_diagram_zoom_with_keyboard Zooming with the Keyboard
-
-You can zoom a diagram in and out with the keyboard shortcuts, which are the same as those used in web browsers for zooming websites. The shortcut Ctrl - (Ctrl-minus) zooms out, Ctrl + (Ctrl-plus) zooms in, and Ctr 0 (Ctrl-zero) zooms the diagram to 100%.
-
-
-@subsection bm_diagram_zoom_with_wheel Zooming with the Mouse Wheel
-
-Finally, you can zoom the active diagram with the mouse wheel, in the same way as you zoom in or out on Google maps. To activate zoom by the mouse wheel, press the Shift key on your keyboard. Now, rotating the mouse wheel forward zooms out and rotating the wheel backward zooms the diagram in, which is the same convention used in mapping applications.
-
-
-@section bm_diagram_export Exporting Diagrams
-
-QM™ provides a very useful feature of exporting the active diagram to a graphic format, such as Scalable Vector Graphics and Portable Network Graphics (PNG) raster format. The SVG format is particularly interesting, because this vector format is supported by most web browsers and Microsoft Office/Open Office.
-
-
-
-![SVG in Open Office. Note that the vector format looks good at any zoom level.](svg.jpg)
-@n
-
-@attention
-If any shapes are selected in the active diagram, QM™ renders only the **selected shapes** to the graphic format and clips the image size to the smallest bounding rectangle that encompasses all selected shapes. If no shapes are selected, QM™ exports the entire diagram to the graphic format and uses the @ref bm_diagram_canvas "drawing canvas" as the bounding rectangle.
-
-
-@subsection bm_diagram_export-file Exporting Active Diagram to a Graphic File
-You can export the selected items or the whole active diagram to a graphic file by means of the menu. This menu opens up the File Save dialog box to choose the graphic file name and format (currently SVG or PNG) to save.
-
-
-![Export diagram to SVG vector formats or PNG raster format](diagram_export.png)
-@n
-
-
-@subsection bm_diagram_export-Clipboard Copying active diagram to the Clipboard in SVG
-You can also copy the selected items or the whole diagram to the Clipboard in SVG by means of the (export to SVG) button in the @ref ui_toolbar_edit. Once the SVG image is stored in the Clipboard, you can conveniently paste it directly to Microsoft Office, Open Office, or any other application that accepts SVG.
-
-
-
-@nav{bm_evt,bm_edit}
-*/
-/*##########################################################################*/
-/*! @page bm_edit Working with Code Editors
-@nav{bm_diagram,bm_search}
-
-QM provides an advanced text editor for working with @ref ce_file "files", as well as text-based properties in the @ref ui_prop "Property Editor". Besides the usual features expected of a state-of-the-art editor, the QM text editor provides the following features:
-
-
-- Full integration with QM (@ref bm_cut-paste "Cut/Copy/Paste", @ref bm_undo-redo "Undo/Redo", @ref bm_search "Search/Replace", etc.)
-- Extended syntax highlighting for C, C++, Make, Tcl, Arduino (C++)
-- Powerful keyboard shortcuts (e.g., block-indent/unindent, brace-kiss, etc.)
-
-@note
-The appearance of the QM text editor, such as fonts and colors, can be customized by means of the @ref ui_custom_qss "QM Style Sheet".
-
-
-@section bm_edit-syntax Syntax Highlighting
-The Syntax Highlighter supplied with the QM text editor has been customized to highlight the QM-specific constructs, such as:
-
-- the @ref ce_gen "Code-Generation Directives" ($declare${}, $define${}, $define1${})
-- the me->... and e->... constructs for accessing the state-machine members and event-parameters, respectively
-- the standard fixed-width integer types from `` header file (uint8_t, uint16_t...)
-
-@image html bm_edit.png "Text editors in QM (File item, Property Sheet)"
-
-
-@section bm_edit-keys Key Bindings
-The QM text editor provides the following key bindings (the highlighted key-bindings are arguably the most useful):
-
-Keypress | Action
-:------------|:---------------------------
-Backspace | Deletes the character to the left of the cursor.
-Delete | Deletes the character to the right of the cursor.
-Tab | Indent a block of text.
-Shift+Tab | Un-indent a block of text.
-Ctrl+Delete| Deletes to the end of the line.
-Ctrl+K | Find matching brace/parenthesis ("brace kiss").
-Ctrl+C | Copy the selected text to the clipboard.
-Ctrl+Insert | Copy the selected text to the clipboard.
-Ctrl+V | Pastes the clipboard text into text edit.
-Shift+Insert | Pastes the clipboard text into text edit.
-Ctrl+X | Deletes the selected text and copies it to the clipboard.
-Shift+Delete | Deletes the selected text and copies it to the clipboard.
-Ctrl+Z | Undoes the last operation.
-Ctrl+Y | Redoes the last operation.
-LeftArrow | Moves the cursor one character to the left.
-Ctrl+LeftArrow | Moves the cursor one word to the left.
-RightArrow | Moves the cursor one character to the right.
-Ctrl+RightArrow | Moves the cursor one word to the right.
-UpArrow | Moves the cursor one line up.
-Ctrl+UpArrow | Moves the cursor one word up.
-DownArrow | Moves the cursor one line down.
-Ctrl+Down Arrow | Moves the cursor one word down.
-PageUp | Moves the cursor one page up.
-PageDown | Moves the cursor one page down.
-Home | Moves the cursor to the beginning of the line.
-Ctrl+Home | Moves the cursor to the beginning of the text.
-End | Moves the cursor to the end of the line.
-Ctrl+End | Moves the cursor to the end of the text.
-Wheel | Scrolls the page vertically (the Wheel is the mouse wheel).
-Alt+Wheel | Scrolls the page horizontally (the Wheel is the mouse wheel).
-
-
-@nav{bm_diagram,bm_search}
-*/
-/*##########################################################################*/
-/*! @page bm_search Search/Replace
-@nav{bm_edit,bm_cut-paste}
-
-@image html under_construction.jpg "under construction"
-
-@nav{bm_edit,bm_cut-paste}
-*/
-/*##########################################################################*/
-/*! @page bm_cut-paste Cut/Copy/Paste
-@nav{bm_search,bm_undo-redo}
-
-QM™ supports Cut, Copy, and Paste commands for all model items.
-
-@note
-Before applying cut or paste, make sure that the QM™ model element is __unlocked__ to allow editing the model. The model element is unlocked when the unlock button ( ) in the @ref ui_status or the @ref ui_toolbar_edit is depressed:
-@n
-@image html unlocked.png ""
-
-
-Cut, copy, and paste feature in QM uses the same XML format for placing model elements in the Clipboard that is used to store the whole model on disk. This means that cut, copy, and past work not just within a single QM instance, but also across different QM instances. In other words, you can open copy-and-paste elements from one model, open in one QM instance, to another QM model, open in another QM instance.
-
-@nav{bm_search,bm_undo-redo}
-*/
-/*##########################################################################*/
-/*! @page bm_undo-redo Undo/Redo
-@nav{bm_cut-paste,bm_lock}
-
-QM™ supports undoing and redoing of all actions that change the model in any way, such as:
-
-- creating or deleting a model item
-- changing any property of a model item
-- changing any graphical element in a diagram
-- changing canvas size of a diagram
-- reordering the items in the model
-- editing a file
-
-@note
-For the purposes of undo/redo QM™ keeps track only of the editing actions listed above and does not keep track of other actions, such as browsing the model, zooming/scrolling of diagrams, etc., which do not change the underlying model.
-
-
-@section undo_clean Clean and Edited Model Indicator
-After a model is created, opened, or saved to disk, the model is marked as “clean”.
-
-@image html title_clean.png "Toolbar File"
-
-Any editing action changes the model status to “edited”, which shows as a star after the model name in the QM's title bar.
-
-@image html title_dirty.png "Toolbar File"
-
-The model can become "clean" again after the undo actions bring it back to the original state.
-
-
-@section bm_undo_stack The Undo/Redo Stack
-QM™ keeps track of all model editing actions in the undo/redo stack, which operates as follows.
-
-@image html undo_stack.png "Undo stack"
-
-Every model edit action is pushed on top of the undo/redo stack. If there are any undoable actions above the current top of stack, all these actions get discarded, so that the most recent action sits at the top of stack.
-
-The Undo command reverses the effect of the action pointed to by the "top of stack" and moves the top of the stack one level toward the older actions. As long as any editing actions are available for undoing, the undo command is enabled both in the @ref ui_menu_edit as well as in the @ref ui_toolbar_edit. The Undo command is also available under the standard keyboard shortcut Ctrl+Z.
-
-The Redo command moves the top of the stack one level toward the newer actions and re-applies the action pointed to by the new "top of stack". As long as any actions are available above the current "top of stack", the redo command is enabled both in the @ref ui_menu_edit as well as in the @ref ui_toolbar_edit. The Redo command is also available under the standard keyboard shortcut Ctrl+Y.
-
-@note
-Unlike most programs with the @ref ui_mdi (such as IDEs), which use a separate undo/redo stack for each document, QM™ uses just one undo/redo stack for all editing actions. However, when recording actions on the undo stack, QM™ keeps track of the various editors/diagrams associated with the actions, so that when you undo the actions QM™ can open up the appropriate editor/diagram for each action you undo or redo.
-
-
-@section bm_undo_limit Undo/Redo Stack Depth Limit
-The value of undo/redo is high for recent editing actions, but diminishes quickly for older actions that are pushed down the undo/redo stack. Because the value of the old actions is very low, there is not much use to keep all the undo actions forever. Therefore the depth of the QM™ undo stack is limited, currently to 16 levels of undo.
-
-
-@section bm_undo_text Undo/Redo and Editing Text
-QM™ uses text editors extensively to edit action code associated with state machines, to edit files for code generation, and to edit the documentation. The undo/redo feature works for editing text as expected, whereas you can undo each individual edit. However, as soon as you apply an editing action outside of the current text editor, the QM™ undo stack collapses all these editing actions into just one edit.
-
-@nav{bm_cut-paste,bm_lock}
-*/
-/*##########################################################################*/
-/*! @page bm_lock Locking Model Items
-@nav{bm_cut-paste,sm}
-
-High-level model items, such as the whole @ref bm_model, @ref bm_package "Package Items", @ref ce_dir "Directory Items", and @ref ce_file "File Items" can be individually **locked for editing**, which is very useful for exploring or reviewing the model without the risk of inadvertently modifying the locked items.
-
-The lock status of a given model item is visible in the @ref ui_explorer (through the `[locked]` annotation), as well as in @ref ui_status and the @ref ui_toolbar_edit, as shown below:
-
-
-
-@image html locked_unlocked.png ""
-
-@note
-QM™ remembers the status of the Locked items in the @ref ui_session_file. In other words, when you open a @ref ui_model_file "Model File", QM™ restores the most-recent locked status of items from the @ref ui_session_file associated with the model.
-
-
-@section ui_lock Locking an Item
-You can lock the @ref ui_curr_item with the popup-menu in @ref ui_explorer (see the screen shot below), as well as the menu or by pressing the Lock button () in @ref ui_toolbar_edit while the item is selected as the Current Item.
-
-@image html item_unlocked.png "Locing a package item"
-
-@note
-To lock the whole model, just lock the top-level model item.
-
-
-@section ui_unlock Unlocking an Item
-You can unlock the @ref ui_curr_item with the popup-menu in @ref ui_explorer (see the screen shot below), as well as by pressing the button in @ref ui_toolbar_edit.
-
-@image html item_locked.png "Locked package item (note the [locked] annotation)"
-
-
-@section ui_lock-mode The Locked Mode Capabilities and Limitations
-The Locked Mode allows you to conveniently explore and review the model without the risk of inadvertently changing the model. However, you can still change @ref ui_curr_item displayed by QM™ by clicking on any item in the diagram as well as in @ref ui_explorer. You can also @ref bm_diagram_export "export" @ref bm_diagram_shape_select "selected shapes" in the diagram in a graphic format (EMF or PNG). To remind you that you are in the @ref bm_lock "locked mode", the diagram shows a mouse cursor with the padlock.
-
-@image html locked0.png "Cursor when you hover over a diagram background"
-
-@image html locked1.png "Cursor when you hover over a selectable part of a shape"
-
-
-@note
-In the Locked Mode you don't get mouse cursors for moving or resizing shapes.
-
-
-@n
-@image html locked_diag.png ""
-
-Also, as long as @ref ui_curr_item is locked, you can inspect the @ref ui_prop of the @ref ui_curr_item.
-
-Finally, you can view the files in the File System, but they are all switched to the read-only mode to prevent any edits.
-
-@nav{bm_cut-paste,sm}
-*/
-
diff --git a/doxygen/ce.dox b/doxygen/ce.dox
deleted file mode 100644
index ac02e64..0000000
--- a/doxygen/ce.dox
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*! @page ce Code Engineering
-@nav{sm_xpseg,ce_dir}
-
-This Code Engineering section covers the following subjects:
-- @ref ce_phys
-- @ref ce_misra
-- @subpage ce_dir
-- @subpage ce_file
-- @subpage ce_gen
-- @subpage ce_sm
-- @subpage ce_comment
-- @subpage ce_cond
-- @subpage ce_qmc
-
-@anchor idx_ce
-**Code engineering** is the process of designing, implementing, and maintaining source code. This section describes how QM™ can assist you in this process by providing a unique approach to modeling the structure and content of the **generated source code**, also known as the "physical design" as defined below:
-
-@note **Physical design** is the decomposition of the source code into directories and files, such as header files (`.h` files) and implementation files (`.c` or `.cpp` files), as well as "makefiles", build scripts, etc. The critical aspect of physical design is managing the inter-dependencies among the source code modules, as well as an information hiding policy to expose only the desired interfaces in the header files. Additionally, physical design of automatically generated source code must also afford a sufficiently flexible way of interfacing with hand-crafted code or any existing 3rd-party code.
-
-@section ce_phys Physical Design
-In QM™, directories and files are first-class model elements, so the **physical design** is an integral part of the model, just as the logical design is. This approach makes QM™ a unique tool on the market that allows you to **explicitly** perform physical design of the generated code as an integral part of the modeling process (as opposed to tweaking the code generator or adjusting hundreds of parameters of a "model compiler").
-
-@remark
-If you have used other modeling tools, the QM™ approach might feel like @webref{/turning-automatic-code-generation-upside-down,turning automatic code generation upside down} because QM™ does not impose any code structure by itself, but rather gives **you** the complete control of what is being generated. In contrast, most other modeling tools on the market use an implicit and inflexible physical design, in which, for example, each @ref bm_class "class" generates a `.h` header file and `.c/.cpp` implementation file.
-
-@anchor ce_temp
-The main enabler of the explicit physical design is representing directories and files as *model items* that can be added to the model and edited as any other parts of the model. But, it is critical to understand that the @ref ce_dir "directories" and @ref ce_file "files" in the model are **not** the actual directories and files on disk. Rather, you should think of these model items as "templates" that the QM™ code generator uses to create the actual directories and files on your disk. (The word "template" here should not be confused with the "C++ templates"!)
-
-@note
-QM™ supports also @ref ce_file_extern "External Files", which combine the user-provided code with sections of generated-code. This merging of a file-template with generated-code is achieved by clearly delimiting the generated-sections with special comments. Such *External Files* can be edited inside any editor/IDE of choice and are **not** editable inside QM.
-
-
-The following picture shows an example of a directory-"template" and some file-"templates" in QM™. The file-"template" is shown both in the @ref ui_explorer and in the @ref ui_mdi "MDI" window:
-
-@image html ce_phys.png
-@caption{Directory and file templates in a QM model}
-
-The following picture shows how the directory-"template" and file-"templates" in the model generate the physical directory and files on disk. The code generation process is depicted as arrows from the model items to the files on disk.
-
-@image html ce_disk.png
-@caption{Code generation uses the directory and file templates to create directories and files on disk}
-
-@note
-The model items for modeling directories and files were called in this section directory-"template" and file-"template", respectively, so that you can get used to distinguishing the model items from the physical directories and files on your disk. In the following sections, however, the model items will be simply referred to @ref ce_dir "directories" and @ref ce_file "files", with the understanding that a model can hold only the "templates" for directories and files.
-
-
-@section ce_misra Compliance with MISRA-C/AUTOSAR-C++
-The parts of code generated by QM™ are compliant with the industry safe coding standards for C and C++. Specifically, the QM code generator for the C language emits code compliant with the MISRA-C:2012 and the QM code generator for the C++ language emits code compliant with the AUTOSAR-C++:2014.
-
-@note
-Of course, the compliance with any coding standard, such as MISRA, can be guaranteed only for parts of code actually created by the tool. The other parts of the code, such as code copied from the @ref ce_file "file-templates" or action code attached to @ref sm "state machines", is provided externally to the tool. Such code might not be compliant with the MISRA rules.
-
-@nav{sm_xpseg,ce_dir}
-*/
-/*##########################################################################*/
-/*! @page ce_dir Working with Directories
-@nav{ce,ce_file}
-
-QM™ provides special directory items to represent directories on the disk. These directory items can be added to the @ref bm_model "model item", to any @ref bm_package "package item", as well as to other directory item in which case you can create nested directories.
-
-
-
-
-@section ce_dir_add Adding a New Directory
-To add a new directory item, in the @ref ui_explorer **right**-click on the model item, a package item, or directory item and select the "Add Directory" in the popup menu, as shown below:
-
-
-@image html ce_dir_add.png "Adding directory item to the model item"
-
-
-@section ce_dir_prop Directory Property Sheet
-The only editable attribute in the Directory Property Sheet is the **path** relative to the @ref ui_model_file.
-
-@image html ce_dir_name.png "Directory Item Property Sheet"
-
-
-@section ce_dir_path Setting the Directory Path
-
-
-@subsection ce_dir_package Directories Inside the Model or a Package
-The path of a directory nested directly inside the model item is **relative** to the location of the @ref ui_model_file "model file" on your disk. The path of a directory nested inside a package item is:
-- **relative** to the location of the @ref ui_model_file "model file" for directories nested inside @ref bm_package "regular packages"
-- **relative** to the location of the @ref bm_package-extern "package file" for directories nested inside @ref bm_package-extern "external packages"
-
-
-In any case, the directory path is always **relative**. This relative path can contain the usual relative path symbols, such as the current model directory, denoted as `.` (dot), parent directory of the model as `..` (dot-dot), etc. The following table shows some examples of the relative paths for the model-level or package-level directory items:
-
-
-Directory Path Example | Path (Windows) | Path (Unix)
-:-----------------------------------------------|:----------------|:-----------
-the model directory | `.` | `.`
-subdirectory `code` of the model directory | `code` | `code`
-parent directory of the model directory | `..` | `..`
-sibling directory `proj` of the model directory | `..\proj` | `../proj`
-
-
-@note
-The directory path can use the native directory separator on the platform where QM™ runs, such as `\` (backslash) on Windows and `/` (forward slash) on Linux. Alternatively, on **any platform** the directory path can use the `/` (forward slash) directory separator.
-
-
-@subsection ce_dir_nest Nested Directories
-The path of a directory nested inside another directory item is simply the name of that directory, while the natural nesting of the directory items in the model determines the nesting of the directories created on the disk.
-
-@note
-The path of a directory nested inside a directory cannot contain directory separators or any relative path symbols, like `.` or `..`.
-
-For example, the following screen shot shows directories `subproj1` and `subproj2` nested inside the directory `..\proj`. Please note that the path of the package-scope directory `..\proj` is relative to the model file on the disk, while the paths of `subproj1` and `subproj2` are simply the names of these directories.
-
-
-@image html ce_dir_nest.png "Nested directories inside a project-scope directory"
-
-
-@section ce_dir_drag Drag-and-Drop
-Once you have some directory items added to your model, you can use the drag-and-drop support in the @ref ui_explorer to move the directory items from one allowed location to another in the Model Explorer tree view.
-
-@nav{ce,ce_file}
-*/
-/*##########################################################################*/
-/*! @page ce_file Working with Files
-@nav{ce_dir,ce_gen}
-
-As described in the section about the @ref ce_phys "physical design", QM™ provides special file items that represent files to be generated on disk. The file items can only exist inside a @ref ce_dir "directory item", which determines the location of the file relative to the @ref ui_model_file "QM Model File" or the @ref bm_package-extern "External Package File", for files nested inside External Packages.
-
-
-
-@section ce_file_intern Internal Files
-Normally, the file items are just "templates" for the files to be created on disk. Such file-templates are called **internal files** and can be edited in the @ref ui_mdi "MDI windows" at the center of the @ref ui "QM user interface", which work exactly like any other modern @ref bm_edit "code editor".
-
-You can insert any code (or text) into the file-templates, such as #`include` directives, declarations, definitions, comments, and anything else that you would put into hand-crafted code. All this code will then be literally copied over to the files generated on disk. But, the twist here is that you can also direct QM to **generate** specific parts of the code based on the model items of your choosing, with the granularity ranging from @ref bm_package "packages" and @ref bm_class "classes", down to specific @ref sm "state machines", @ref sm_state "states", @ref bm_attr "attributes", and @ref bm_oper-class "operations".
-
-
-@image html ce_file_gen.png
-@caption{QM Code Generation as Expansion of Code-Generation Directives}
-
-
-You achieve this by inserting the special @ref ce_gen "Code-Generation Directives" into your file-templates. For example, you can direct QM to generate a class @ref ce_gen-decl "declaration" in one place of a file on disk, a class @ref ce_gen-def "definition" in another place, and so on.
-
-@attention
-The files generated from *Internal Files* should **not** be edited manually outside the QM™ tool, because the whole body of the file will be re-generated and any edits would be lost. Therefore, to prevent inadvertent change of the files generated on disk, these files are saved as read-only.
-
-
-@section ce_file_extern External Files
-QM also supports **External Files**, which can be edited outside QM tool with any editor you like. Such External Files combine user-code with the generated-code and possibly @ref ce_gen "Code-Generation Directives". This merging of a file-template with generated-code is achieved by clearly delimiting the generated-sections with special comments. Such External Files can be edited inside any editor/IDE of choice and are **not** editable inside QM. The following listing shows an example of an *External File* on disk (the comments after the listing explain the interesting lines of code):
-
-@includelineno file_external.cpp
-
-
-`1..30` @ref ce_comment-file "Top-level file comment" generated by QM.
-NOTE: This code (between the `$file${..} vvvvvv` and `$endhead${..} ^^^^^^^` should **NOT** be edited manually.
-
-`21..34` user-code (editable)
-
-`35` @ref ce_gen "code-generation directive" (editable)
-
-`37..41` user-code (editable)
-
-`43..48` QP version requirement comment generated by QM.
-NOTE: This code (between the `$skip${..} vvvvvv` and `$endskip${..} ^^^^^^^` should **NOT** be edited manually.
-
-
-`50..65` code generated by QM by expanding the directive `$define ${SMs::Calc}`
-NOTE: This code (between the `$define${..} vvvvv` and `$enddef${..} ^^^^^^^^` should **NOT** be edited manually.
-
-@attention
-The files generated from *External Files* are saved as **writable** because the user can edit parts of these files. However, the generated sections delimited between the comments `"$...vvv"` and `"$end...^^^"` should **NOT** be edited, because they will be re-generated and any edits in these sections would be lost.
-
-
-@section ce_file_add Adding a New File
-The file items can only exist inside a @ref ce_dir "directory item", which determines the location of the file **relative to** the @ref ui_model_file. Therefore, to add a new file item, you first need to select the @ref ce_dir "directory item" in the @ref ui_explorer. Then **right**-click on this directory item and select the "Add File" in the popup menu, as shown below:
-
-@image html ce_file_add.png
-@caption{Adding a file item to a directory item}
-
-
-@section ce_file_prop File Property Sheet
-The following picture shows the Property Sheet of a File Item (see @ref ui_prop):
-
-@image html ce_file_prop.gif
-@caption{File Item Property Sheet}
-
-
-@subsection ce_file-name File Name
-The most important property of a file item is its **name**. QM™ automatically recognizes several file types based on the file name **extension** and applies a special icon for the recognized files. The following table shows the list of recognized file types and icons:
-
-
-File Name Extension| File Type | File Icon
-:------------------|:-----------|:----------:
-`.h` | C/C++ header file |
-`.hpp` | C++ header file |
-`.c` | C implementation file |
-`.cpp` | C++ implementation file |
-`.cxx` | C++ implementation file |
-`.cc` | C++ implementation file |
-`.ino` | Arduino sketch |
-`.py` | Python script |
-`.mak` | make file |
-`makefile` | make file |
-`Makefile` | make file |
-
-
-@note
-Providing one of the recognized file name extensions is necessary for QM™ to be able to apply the correct **syntax highlighting** for the file type. The file name extensions are case-sensitive.
-
-
-@subsection ce_file-encoding Encoding
-The **encoding** drop-box property of the file item allows you to select one of the few dozens of available character encodings for your file. This option might be interesting if you use special characters outside the basic ASCII character set. (NOTE: the *default* setting corresponds to the encoder selected in your operating system.)
-
-
-@subsection ce_file-external External
-The "external" check box designates a file as an @ref ce_file_extern "External File" that is **not** managed by QM, but still participates in the code generation. Such "external" files can be edited with an editor/IDE of choice.
-
-
-@section ce_file_eol Unix End-Of-Line Convention
-QM™ applies consistently the Unix end-of-line convention (single LF octet at the end of line) to all files saved on disk, regardless of the host operating system. This is done intentionally to generate **identical** code across diverse hosts, which might be used by various team members potentially using different operating sytems.
-
-@note
-Because the LF-only end-of-line convention is **nonnative** on Windows, the generated files might look incorrect in some text editors (e.g., Notepad). However, experience shows that most programming editors designed for editing code should have no problem correctly displaying the generated code.
-
-@nav{ce_dir,ce_gen}
-*/
-/*##########################################################################*/
-/*! @page ce_gen Code Generation
-@nav{ce_file,ce_declare}
-
-The QM™ code generation process consists of replacing the **code-generation directives** in the @ref ce_file "file templates" in the model with the corresponding pieces of auto-generated code in the files generated on disk. All other code fragments surrounding the code-generation directives in the file-templates are simply copied to the files on disk. The picture below illustrates the process:
-
-
-
-@image html ce_file_gen.png
-@caption{QM Code Generation as Expansion of Code-Generation Directives}
-
-
-@section ce_decl-def Declarations versus Definitions
-To work effectively with the *code-generation directives* in QM™, you need to understand the
-difference between **declarations** and **definitions** in C or C++.
-
-
-@subsection ce_gen-decl Declaration
-A **declaration** introduces a name and describes its type, be it a type name (struct/class/typedef), object (variable), or a function. A declaration is what the C or C++ compiler needs to accept references to that name. These are declarations:
-
-@code{.c}
-extern int bar;
-extern int g(int, int);
-double f(int, double); // extern can be omitted for function declarations
-class foo; // forward declaration
-class bar { bar(); ... }; // no extern allowed for class declarations
-@endcode
-
-@note
-The QM™ code generator applies the keyword `extern` only for declarations of variables.
-
-
-@subsection ce_gen-def Definition
-A **definition** actually instantiates/implements the symbol. It's what the linker needs in order to link references to those entities. These are definitions corresponding to the above declarations:
-
-@code{.c}
-int bar;
-int g(int lhs, int rhs) {return lhs*rhs;}
-double f(int i, double d) {return i+d;}
-bar::bar() {};
-@endcode
-
-@note
-In C and C++ a definition can be used in the place of a declaration, meaning that a definition also provides the type information that the compiler needs to accept references to the defined symbol.
-
-@remark
-Some C or C++ compilers can be configured to go beyond the ISO-C or ISO-C++ Stadnards and actually require separate declarations (e.g., "Require Prototypes" feature in the IAR compilers).
-
-
-@section ce_gen-syntax General Syntax
-The general syntax of the code-generating directives in the QM file templates is:
-
-@code{.c}
-$ ${}
-@endcode
-
-@note
-`$` can be followed by zero or more **spaces** before the `${}` specification.
-
-where `$` is one of:
-- @subpage ce_declare "$declare" for recursive declaration (e.g., `$declare ${}`)
-- @subpage ce_declare1 "$declare1" for non-recursive declaration (e.g,, `$declare1 ${}`)
-- @subpage ce_define "$define" for recursive definition (e.g., `$define ${}`)
-- @subpage ce_define1 "$define1" for non-recursive definition (e.g., `$define1 ${}`)
-
-and `` denotes a @ref bm_fq-name "Fully-Qualified Name" of the model item to expand.
-
-@remark
-The use of @ref bm_fq-name "Fully-Qualified Item Names" is necessary to unambiguously identify model items for code generation. For example, a class `Ship` residing inside the package `AOs` will be specified inside a code-generating directive as `AOs::Ship`.
-
-@image html ce_gen-exa.png
-@caption{Example of `$declare ${...}` and `$define ${...}` Directives}
-
-@remarks
-For backward compatibility, the QM tool supports also the old syntax the code-generating directives:
-`$()`
-
-
-@section ce_drag-n-drop Creating Fully-Qualified Names by Drag-n-Drop
-The fully-qualified item names can be, of course, typed by hand in the QM file templates. However, to avoid errors, the @ref ui_explorer allows you to **drag-n-drop** a model item onto a file-template to create a fully-qualified item name, as illustrated in the animation below:
-
-@image html ui_explorer_drag-link.gif "Creating a Fully-Qualified Item Name by Drag-n-Drop"
-
-@note
-The code-generation directives are recognized by the **QM syntax highlighter** and are shown in special color and embellishment (see @ref ui_custom) in the @ref bm_edit "QM Code Editors".
-
-@nav{ce_file,ce_declare}
-*/
-/*##########################################################################*/
-/*! @page ce_declare $declare
-@nav{ce_gen,ce_declare1}
-
-The `$declare ${}` directive requests generating a **declaration** of the `` specified between the parentheses. QM can generate declarations for the following item types:
-
-- @ref ce_declare_class "Class"
-- @ref ce_declare_attr "Free Attribute"
-- @ref ce_declare_oper "Free Operation"
-- @ref ce_declare_package "Package"
-
-@section ce_declare_class Class Declaration
-
-@subsection ce_declare_class-c Class Declaration in C (Header File)
-In C, the directive `$declare ${}` generates the C "class" declaration, which consists of a C `struct` with all the **attributes** of the class and associated C functions for all the **operations** (see also @webref{oop,Key Concept: Object-Oriented Programming in C}).
-
-@code{.c}
-/*${AOs::Ship} .............................................................*/
-typedef struct Ship {
-/* protected: */
- QActive super;
-
-/* private: */
- uint8_t x;
- uint16_t y;
- uint8_t exp_ctr;
- uint16_t score;
-} Ship;
-
-/* public: */
-void Ship_ctor(Ship * const me);
-extern Ship Ship_inst;
-
-/* protected: */
-QState Ship_initial(Ship * const me, void const * const par);
-QState Ship_active(Ship * const me, QEvt const * const e);
-QState Ship_parked(Ship * const me, QEvt const * const e);
-QState Ship_flying(Ship * const me, QEvt const * const e);
-QState Ship_exploding(Ship * const me, QEvt const * const e);
-@endcode
-
-@remarks
-A class with a @ref sm "State Machine", such as `Ship` in the example above, contains also the @ref ce_sm "state machine code". This code is specific to the state machine implementation strategy, which in this case is based on the `QActive` base class from the @webref{products/qp, "QP/C framework"}.
-
-
-@subsection ce_declare_class-c-static Class Declaration in C (File Scope)
-If the `$declare ${}` directive is used in a **file scope** (inside a `.c` file), the declaration generates function prototypes **with** the `static` keyword, as shown in the code generated by the directive `$declare ${AOs::Ship}` for the class `Ship` shown in the screen shot above:
-
-@note
-The use of the `static` keyword for all variables and functions declared at file scope is mandated by the MISRA-C:2012 Rule-8.8 (Required).
-
-@code{.c}
-/*${AOs::Ship} .............................................................*/
-. . .
-/* public: */
-static void Ship_ctor(Ship * const me);
-
-/* protected: */
-static QState Ship_initial(Ship * const me, void const * const par);
-static QState Ship_active(Ship * const me, QEvt const * const e);
-static QState Ship_parked(Ship * const me, QEvt const * const e);
-static QState Ship_flying(Ship * const me, QEvt const * const e);
-static QState Ship_exploding(Ship * const me, QEvt const * const e);
-@endcode
-
-
-@subsection ce_declare_class-cpp Class Declaration in C++
-In C++, the directive `$declare ${}` generates the C++ class declaration. For example, the code snippet below shows the code generated by the directive `$declare ${AOs::Ship}` for the class `AOs::Ship` shown in the screen shot above:
-
-@code{.cpp}
-//${AOs::Ship} ...............................................................
-class Ship : public QP::QActive {
-private:
- std::uint8_t m_x;
- std::uint16_t m_y;
- std::uint8_t m_exp_ctr;
- std::uint16_t m_score;
-
-public:
- static Ship inst;
-
-public:
- Ship();
-
-protected:
- Q_STATE_DECL(initial);
- Q_STATE_DECL(active);
- Q_STATE_DECL(parked);
- Q_STATE_DECL(flying);
- Q_STATE_DECL(exploding);
-}; // class Ship
-@endcode
-
-@note
-A class with a @ref sm "State Machine", such as `Ship` in the example above, contains also the *state machine members*. These members are specific to the state machine implementation strategy, which in this case is based on the `QP::QActive` base class from the @webref{products/qp, "QP/C++ framework"}.
-
-
-@section ce_declare_attr Free Attribute Declaration
-Free attribute is an attribute (variable) declared in a package outside of any class. The `$declare ${}` directive requests generating a **declaration** of the `` specified between the parentheses.
-
-@subsection ce_declare_attr-c Free Attribute Declaration in C
-The following code snippet shows the C code generated by the `$declare ${AOs::AO_Ship}` code-generation directive:
-
-@code{.c}
-extern QActive * const AO_Ship;
-@endcode
-
-@subsection ce_declare_attr-cpp Free Attribute Declaration in C++
-The following code snippet shows the C++ code generated by the `$declare ${AOs::AO_Ship}` code-generation directive. Please note the **C++ namespace** generated around the variable. This is because the enclosing package `AOs` provide the namespace `GAME`:
-
-@code{.cpp}
-namespace GAME {
-
-extern QP::QActive * const AO_Ship;
-
-} // namespace GAME
-@endcode
-
-
-@section ce_declare_oper Free Operation Declaration
-Free operation is an operation (function) declared in a package outside of any class. The `$declare ${}`> directive requests generating a **declaration** of the `` specified between the parentheses.
-
-@subsection ce_declare_oper-c Free Operation Declaration in C
-The following code snippet shows the C code generated by the `$declare ${AOs::do_bitmaps_overlap}` code-generation directive:
-
-@code{.c}
-/*${AOs::do_bitmaps_overl~} ................................................*/
-bool do_bitmaps_overlap(
- uint8_t bmp_id1,
- uint8_t x1,
- uint8_t y1,
- uint8_t bmp_id2,
- uint8_t x2,
- uint8_t y2);
-@endcode
-
-
-@subsection ce_declare_oper-cpp Free Operation Declaration in C++
-The following code snippet shows the C++ code generated by the `$declare ${AOs::do_bitmaps_overlap}` code-generation directive. Please note the C++ namespace generated around the function. This is because the enclosing package `AOs` provides the namespace `GAME`:
-
-@code{.cpp}
-namespace GAME {
-
-//${AOs::do_bitmaps_overl~} ..................................................
-bool do_bitmaps_overlap(
- std::uint8_t bmp_id1,
- std::uint8_t x1,
- std::uint8_t y1,
- std::uint8_t bmp_id2,
- std::uint8_t x2,
- std::uint8_t y2);
-
-} // namespace GAME
-@endcode
-
-
-@section ce_declare_package Package Declaration
-The `$declare ${}` directive requests generating a **recursive** declaration of all classes, free attributes, and free operations in the ``, as described in the sections above. If a package contains other packages, these packages are **recursively** declared, as described in the first sentence.
-
-@image html ce_gen-pkg.png
-@caption{Example of a Package declaration}
-
-@note
-The QM™ generates code in the same order as they appear in the @ref ui_explorer.
-
-@nav{ce_gen,ce_declare1}
-*/
-/*##########################################################################*/
-/*! @page ce_declare1 $declare1
-@nav{ce_declare,ce_define}
-
-The primary use for `$declare1` is to generate **non-recursive** declarations for @ref bm_package "packages". Specifically, the non-recursive declaration `$declare1 ${}` will **NOT** generate declarations of any sub-packages nested in ``.
-
-
-@image html ce_declare1.png
-@caption{Example of a non-recursive Package declaration}
-
-In the example package `DbC` shown above, the non-recursive declaration `$declare1 ${DbC}` will **NOT** declare sub-packages `DbC::active` and `DbC::inactive`. Instead, these sub-packages are generated separately surrounded by the `#if/#else` directives.
-
-@nav{ce_declare,ce_define}
-*/
-/*##########################################################################*/
-/*! @page ce_define $define
-@nav{ce_declare,ce_define1}
-
-The `$define ${}` directive requests generating a **definition** of the . QM can generate definitions for the following item types:
-
-- @ref ce_def_class "Class"
-- @ref ce_def_free-attr "Free Attribute"
-- @ref ce_def_free-oper "Free Operation"
-- @ref ce_def_package "Package"
-
-@remarks
-Code generation for State Machines (either as part of Classes or separatetly) is described in separate Section @ref ce_sm.
-
-
-@section ce_def_class Class Definition
-
-@image html ce_gen-class.png
-@caption{Class `Calc` with a State Machine used in the following examples of code generation}
-
-The directive `$define ${}` generates the **class definition**, which consists of all operations (member functions) defiend in the class as well as all static attributes (class variables). Additionally, if the class has a State Machine, the @ref ce_sm "State Machine code" will also be generated.
-
-@note
-QM generates code only for operations with *non-empty* operation code filed in the @ref bm_class-oper-prop "Class Operation Property Sheet". This allows the developer to provide external definitions of such operations (member functions) in other modules.
-
-@subsection ce_def_class-c Class Definition in C
-The following listing shows fragments of the generated code for the class `Calc` in C. The code shows class operations, such as `Calc_eval().
-
-@code{.c}
-/*$define${SMs::Calc} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
-
-/*${SMs::Calc} .............................................................*/
-Calc Calc_inst;
-
-/*${SMs::Calc::eval} .......................................................*/
-static bool Calc_eval(Calc * const me,
- double op,
- uint8_t oper)
-{
- double result;
- . . .
- if ((result < -99999999.0) || (99999999.0 < result)) {
- BSP_display_error(" Error 1 "); /* out of range */
- return false;
- }
- if ((-0.0000001 < result) && (result < 0.0000001)) {
- result = 0.0;
- }
- BSP_display(result);
-
- return true;
-}
-. . .
-
-/* Hiearchical State Machine code... */
-. . .
-/*$enddef${SMs::Calc} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-@endcode
-
-@remarks
-The `Calc` class operation in the C code above is defined as `static` because the QM code generator detected that the `Calc` class @ref ce_declare_class-c-static "declaration" was also placed in the same *file scope*. This use of `static` is mandated by MISRA-C:2012 Rule 8.8.
-
-@note
-Please refer to Section @ref bm_oper-class-c "Basic Modeling | Working with Class Operations | Class Operations in C" for more information about special class operations, such as @ref bm_class-ctor-c "constructors" and @ref bm_class-xtor-c "desctructors".
-
-
-@subsection ce_def_class-cpp Class Definition in C++
-The following listing shows fragments of the generated code for the class `Calc` in C++. The code shows class operations, such as `Calc::Calc()` constructor and the Calc::eval() opertion.
-
-@code{.cpp}
-//$define${SMs::Calc} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-
-//${SMs::Calc} ...............................................................
-Calc Calc::inst;
-
-//${SMs::Calc::Calc} .........................................................
-Calc::Calc()
- : QHsm(Q_STATE_CAST(&Calc::initial))
-{}
-
-//${SMs::Calc::eval} .........................................................
-bool Calc::eval(
- double op,
- uint8_t oper) noexcept
-{
- double result;
- . . .
- if ((result < -99999999.0) || (99999999.0 < result)) {
- BSP_display_error(" Error 1 "); // out of range
- return false;
- }
- if ((-0.0000001 < result) && (result < 0.0000001)) {
- result = 0.0;
- }
- BSP_display(result);
-
- return true;
-}
-//$enddef${SMs::Calc} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-@endcode
-
-@note
-Please refer to Section @ref bm_oper-class-cpp "Basic Modeling | Working with Class Operations | Class Operations in C++" for more information about special class operations, such as @ref bm_class-ctor-cpp "constructors" and @ref bm_class-xtor-cpp "desctructors".
-
-@section ce_def_free-attr Free Attribute Definition
-
-@image html ce_def_attr.png
-@caption{Free attrubute `AO_Ship` with an "initializer" used in the code generation examples}
-
-
-@subsection ce_def_free-attr-c Free Attribute Definition in C
-The following listing shows fragments of the generated code for the free attribute `AO_Ship` in C.
-
-@code{.c}
-/*${Shared::AO_Ship} .......................................................*/
-QActive * const AO_Ship = &Ship_inst.super;
-/*$enddef${Shared::AO_Ship} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-@endcode
-
-@note
-Note the attribute **initialization** with the provided initializer, which is necessary at the point of definition because the attribute is `const` and cannot be initialized later.
-
-@subsection ce_def_free-attr-cpp Free Attribute Definition in C++
-The following listing shows fragments of the generated code for the free attribute `AO_Ship` in C++.
-
-@code{.cpp}
-//$define${Shared::AO_Ship} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-namespace GAME {
-
-//${Shared::AO_Ship} .........................................................
-QP::QActive * const AO_Ship = &Ship::inst;
-
-} // namespace GAME
-//$enddef${Shared::AO_Ship} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-@endcode
-
-@note
-Note the attribute **initialization** with the provided initializer, which is necessary at the point of definition because the attribute is `const` and cannot be initialized later.
-
-
-@section ce_def_free-oper Free Operation Definition
-
-@image html ce_def_free-oper-c.png
-@caption{Free operation `gc()` in a package with namespace `QF_` resulting in `QF_gc()`}
-
-
-@subsection ce_def_free-oper-c Free Operation Definition in C
-The following listing shows fragments of the generated code for the free operation `gc()` in C.
-
-@code{.c}
-/*$define${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
-. . .
-/*${QF::QF-dyn::gc} ........................................................*/
-/*! @static @public @memberof QF */
-void QF_gc(QEvt const * const e) {
- /* is it a dynamic event? */
- if (e->poolId_ != 0U) {
- QF_CRIT_STAT_
- . . .
- }
-}
-@endcode
-
-@note
-The free operation `gc()` in a package `QF-dyn` with namespace `QF_` resulting in `QF_gc()`
-
-
-@subsection ce_def_free-oper-cpp Free Operation Definition in C++
-The following listing shows fragments of the generated code for the free operation `gc()` in C.
-
-@code{.cpp}
-//$define${QF::QF-dyn} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-namespace QP {
-namespace QF {
-. . .
-//${QF::QF-dyn::gc} ..........................................................
-void gc(QEvt const * const e) noexcept {
- // is it a dynamic event?
- if (e->poolId_ != 0U) {
- QF_CRIT_STAT_
- . . .
- }
-}
-. . .
-@endcode
-
-@note
-The free operation `gc()` in a package `QF-dyn` with namespace `QF::` resulting in `QF::gc()`
-
-@section ce_def_package Package Definition
-The `$define ${}` directive requests generating a **recursive** definition of all classes, free attributes, and free operations in the ``, as described in the sections above. If a package contains other packages, these packages are **recursively** defined, as described in the first sentence.
-
-@note
-The QM™ generates code in the same order as they appear in the @ref ui_explorer.
-
-
-@nav{ce_declare,ce_define1}
-*/
-/*##########################################################################*/
-/*! @page ce_define1 $define1
-@nav{ce_define,ce_sm}
-
-The `$define1 ${}` directive specifies a **non-recursive definition** of the specific ``, such as:
-
-@section ce_define1-package Package
-The non-recursive definition `$define1 ${}` defines all classes, free attributes and free operations nested directly in a given ``, but will **NOT** generate any sub-packages nested in that package.
-
-
-@section ce_define1-sm State Machine
-The non-recursive definition `$define1 ${}` defines only the top-most initial transition of the state machine. But, the non-recursive state definition does **NOT** define any states of the state machine.
-
-@section ce_define1-state State
-The non-recursive definition `$define1 ${}` defines only the following state elements:
-- entry action
-- exit action
-- initial transition nested directly in that state
-- transitions attached directly to the boundary of that state
-
-But, the non-recursive state definition does **NOT** define any sub-states nested in that state.
-
-@nav{ce_define,ce_sm}
-*/
-/*##########################################################################*/
-/*! @page ce_sm Generating Code for State Machines
-@nav{ce_define1,ce_comment}
-
-As described in Section @ref sm "State Machines", QM™ provides extensive support for modern @webref{fsm/#HSM,Hierarchical State Machines (HSMs)} (UML Statecharts). From the code engineering point of view, state machines are the most "constructive" element of the UML and the support of state machine code generation is the most valuable aspect of QM. This section describes the state machine implementation strategies and coding aspects for hierarchical state machines in C and C++.
-
-@image html ce_sm.png
-@image latex ce_sm.png with=6in
-@caption{Class `Calc` with a hierarchical state machine used in the following examples of code generation}
-
-@section ce_sm_stra Implementation Strategies
-As described in Section @ref sm_class "State Machine Base Classes", QM™ supports two **state machine implementation strategies**, depending on the selected @ref ce_sm_base "base class" for the application-level state machine:
-
-- @ref sm_class_qhsm "QHsm-Based State Machines" optimized for highest readability of the generated code at some efficiency cost, compared to the next strategy;
-
-- @ref sm_class_qmsm "QMsm/QMActive-Based State Machines" optimized for the highest performance at slightly less readable generated code.
-
-@subsection ce_sm_ctor State Machine Constructor
-Apart from selecting the `superclass` (base class) in the Class Property Sheet, the constructor of the application-level state machine must call the appropriate base class constructor. For example, a state machine class derived from `QHsm` must call the `QHsm` constructor and class derived from `QMActive` must call `QMActive` constructor.
-
-
-@subsubsection ce_sm_ctor-c State Machine Constructor in C
-The Section @ref bm_class-ctor-c "Class Constructors in C" describes how to model class constructors in C. has been described in the B
-
-
-@subsubsection ce_sm_ctor-cpp State Machine Constructor in C++
-
-
-@section ce_sm_act Action Code
-
-@subsection ce_sm_act-c Action Code in C
-
-@subsubsection ce_sm_act-c-attr Accessing Attributes
-
-@subsubsection ce_sm_act-c-par Accessing Event Parameters
-
-@subsection ce_sm_act-cpp Action Code in C++
-
-@subsubsection ce_sm_act-cpp-attr Accessing Attributes
-
-@subsubsection ce_sm_act-cpp-par Accessing Event Parameters
-
-@nav{ce_define1,ce_comment}
-*/
-/*##########################################################################*/
-/*! @page ce_comment Generating Comments
-@nav{ce_sm,ce_cond}
-
-Even though the code generated by QM™ is not intended to be edited manually outside QM™, it still needs to be understood and debugged using a traditional source-level debuggers.
-
-
-Also, some engineering organizations require all code, including auto-generated code, to comply with the internal *coding standards*. Such standards often dictate very specific **commenting style**, like provision of special file comments, function comments, variable comments, etc.
-
-To enhance the readability of the generated code and to meet the special commenting style requirements, QM™ can emit several kinds of various **comments**, all described in the following sections.
-
-
-@section ce_comment-file Top-Level File Comment
-At the top of each @ref ce_file "generated file", QM™ generates a **top-level comment**, which has two purposes:
-
-1. to remind the reader right away that this file is generated automatically and should **not** be changed manually, as any such changes will be lost when the file is re-generated from the model.
-
-2. to inform the reader about the licensing terms applying to the generated code, which are the same as the underlying QP framework, as explained in the section @ref ab_gen_code "Licensing the Generated Code".
-
-
-@note
-If you wish to add some additional comment at the top of your file, you can always put such a comment in the original @ref ce_file "file-item", which QM™ will then copy over to the file on disk immediately **after** the top-level comment described here.
-
-
-@subsection ce_comment_gpl QP Used Under GPL
-The following snippet of code shows the top-level file comment in the case when the underlying QP framework is used under the open-source GPL license:
-
-@code{.c}
-/*.$file${.::file.c} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
-/*
-* Model: test1.qm
-* File: ./file.c
-*
-* This code has been generated by QM tool (see state-machine.com/qm).
-* DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
-*
-* This program is open source software: you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as published
-* by the Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-* for more details.
-*/
-/*.$endhead${.::file.c} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-@endcode
-
-@sa @ref ui_license-open "Code Generation License Dialog Box--Open Source"
-
-
-@subsection ce_comment_commercial QP Used Under a Commercial License
-The following snippet of C++ code shows the top-level file comment in the case when the underlying QP framework is used under a commercial QP license (NOTE: In C++, the generated comments use the C++ comment style: `//...`, while in C, the C comment stye: /`*...*`/):
-
-@code{.cpp}
-//.$file${.::test2.cpp} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-//
-// Model: test2.qm
-// File: ./file.cpp
-//
-// This code has been generated by QM tool (see state-machine.com/qm).
-// DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
-//
-// This code is covered by the following commercial QP license:
-// License # : QPCPP-SP-141224A
-// Issued to : Bamboozle Technologies, Inc.
-// Framework(s): qpcpp
-// Support ends: 2015-12-24
-// Product(s) :
-// eGizmo Shuffle 2nd Generation
-//
-//.$endhead${.::test2.cpp} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-@endcode
-
-@sa @ref ui_license-closed "Code Generation License Dialog Box--Closed Source"
-
-
-@section ce_comment-doc Generating Comments from Documentation
-QM™ allows you to generate comments from the **documentation property** that is available in many model items, such as @ref bm_class "classes", @ref bm_attr "attributes", @ref bm_oper-class "operations", and @ref sm_state "states".
-
-@note
-The feature of generating comments from documentation has been primarily designed to help organizations comply with the specific commenting style imposed by their internal standards.
-
-
-The following screen shot shows an example of the *documentation property* that generates comments. Specifically, the example generates a comment with the @ref ce_declare "declaration" of the class as well another comment with the @ref ce_define "definition" of the class.
-
-@image html ce_comment-doc.png "Comments in the Documentation Property"
-
-The QM code generator uses the following algorithm to generate comments from the *documentation property*:
-
-1. The documentation text is searched for a comment, whereas both the C-style comments (/`*...*`/) and C++-style comments (`//`) are allowed. If no comment is found, the documentation property generates **no** comments. (NOTE: Any comments in the *documentation property* are clearly indicated by **syntax highlighting**);
-
-2. The first comment found is considered to pertain to the **declaration** and is generated with the @ref ce_declare "declaration" of the model item;
-
-3. The second comment found is considered to pertain to the **definition** and is generated with the @ref ce_define "definition" of the model item;
-
-4. If only one comment is found, the comment is considered to pertain to both @ref ce_declare "declaration" and @ref ce_define "definition" of the model item. In this case this (same) comment is generated with the *declaration* and with the *definition* of the model item.
-
-5. All other text in the documentation property preceding or following comments has no implications for code generation. Such text is considered internal model documentation.
-
-@note
-As illustrated in the screen shot above, the comments in the *documentation property* can contain special markup, such as Doxygen, Doc++, RoboDoc, etc.
-
-
-@section ce_comment-link Model-Link Comments
-QM™ generates also comments that contain the **model-links**. These **model-link comments** have a generic form: /`* ${} *`/, where `` is the @ref bm_fq-name "Fully-Qualified Item Name" of the referenced item. The following code snippet provides several examples of **model-reference comments** at lines [1-4]:
-
-@code{.c}
-[1] /* ${AOs::Missile::SM::flying} */
- static QState Missile_flying(Missile * const me, QEvt const * const e) {
- QState status_;
- switch (e->sig) {
-[2] /* ${AOs::Missile::SM::flying::TIME_TICK} */
- case TIME_TICK_SIG: {
-[3] /* ${AOs::Missile::SM::flying::TIME_TICK::[me->x+GAME_MI~]} */
- if (me->x + GAME_MISSILE_SPEED_X < GAME_SCREEN_WIDTH) {
- me->x += GAME_MISSILE_SPEED_X;
-
- /*tell the Tunnel to draw the Missile and test for wall hits*/
- ObjectImageEvt *oie = Q_NEW(ObjectImageEvt, MISSILE_IMG_SIG);
- oie->x = me->x;
- oie->y = me->y;
- oie->bmp = MISSILE_BMP;
- QACTIVE_POST(AO_Tunnel, (QEvt *)oie, me);
- status_ = QM_HANDLED();
- }
-[4] /* ${AOs::Missile::SM::flying::TIME_TICK::[else]} */
- else {
- static QMTranActTable const tatbl_ = { /* transition-action table */
- &Missile_armed_s,
- {
- Q_ACTION_CAST(0) /* zero terminator */
- }
- };
- status_ = QM_TRAN(&tatbl_);
- }
- break;
- }
- . . .
-@endcode
-
-The **model-link comments** ([1..4] in the listing above) allow you to quickly open the linked model item as the @ref ui_curr_item "Current Item" in QM™ To do so, you only need to:
-
-1. Select a piece of code containing the desired **model-link comment** and copy it into the Clipboard (Ctrl-C), which you can do from virtually any code editor or debugger.
-
-2. Next, click on QM™ tool and click the button or just press F5 (see @ref ui_toolbar_edit and @ref ui_menu_edit)
-
-
-@section ce_comment-div Divider Comments
-Finally, to improve readability of the generated code, QM™ generates **divider comments** to visually separate various sections of code, as illustrated in the following snippet of generated code (lines [1-3]):
-
-@code{.c}
-[1] /*${AOs::Missile_ctor} .....................................................*/
- void Missile_ctor(void) {
- Missile *me = &l_missile;
- QMActive_ctor(&me->super, Q_STATE_CAST(&Missile_initial));
- }
-[2] /*${AOs::Missile} ..........................................................*/
-[3] /*${AOs::Missile::SM} ......................................................*/
- static QState Missile_initial(Missile * const me, QEvt const * const e) {
- static QMTranActTable const tatbl_ = { /* transition-action table */
- . . .
-@endcode
-
-The *divider comments* ([1..3] in the listing above) often contain the @ref bm_fq-name "Fully-Qualified Item Name" of the model item that follows, so you can use the *divider comments* to quickly open the referenced model item as the @ref ui_curr_item "Current Item" in QM™, as described in the previous section @ref ce_comment-link.
-
-@nav{ce_sm,ce_cond}
-*/
-/*##########################################################################*/
-/*! @page ce_cond Conditional Compilation
-@nav{ce_comment,ce_qmc}
-
-Often, the models created with QM are intended for entire families of related products (product lines), as opposed to a single end-product only. The designers of such product lines often find that big pieces of the model, such as state machines, can be similar in all individual products, except for some parts that vary.
-
-
-One popular way to manage the variations at the C/C++ code level is through **conditional compilation**, meaning that blocks of code are surrounded by the preprocessor statements #`if` / #`endif` and are actually compiled only when the preprocessor expression `` evaluates to true at compile time.
-
-QM inherently supports inserting any user code into @ref ce_file "file-templates", which means that you can very easily surround blocks of code of your choice (including the @ref ce_gen ) with conditional compilation statements.
-
-However, to achieve a fine-granularity conditional compilation **inside** classes you need to use the special support for conditional compilation built-into QM. The conditional compilation is supported for the following model items:
-
-- @ref bm_attr "attributes" (class attributes and free attributes)
-- operations (@ref bm_oper-class "class operations" and @ref bm_oper-free "free operations")
-- @ref sm_state "states" (composite states and leaf states)
-- @ref sm_tran "transitions" (regular transitions, internal transitions, transitions with guards, and `CATCH_ALL` transitions).
-
-
-@note
-The conditional compilation is supported for all QP framework types (`qpc` and `qpcpp`) as well as all state machine types (subclasses of `QMsm` and `QHsm` base classes in QP5).
-
-
-@section ce_cond_apply Applying Conditional Compilation
-To mark a model item as conditionally compiled, append a question mark (`?`) followed by the preprocessor expression to the **name** of the attribute, state, or the transition in the @ref ui_prop. The following two screen shots provide examples for a conditional state and conditional transition, respectively. The highlighted text after the state name and transition trigger, respectively, corresponds to the pre-processor expression.
-
-@image html ce_cond_state_prop.png "Setting the Name Property of a Conditionally Compiled State"
-@n
-@image html ce_cond_tran_prop.png "Setting the Name Property of a Conditionally Compiled Transition"
-
-
-@subsection ce_cond_expr Pre-processor Expression Syntax
-The conditional expression that you add to the name property of a state or transition can be any valid expression accepted by the C/C++ pre-processor (excluding the `?`, obviously).
-
-For example, a conditional compilation expression `?def FOO_BAR` will lead to the generation of the following pre-processor statements around a @ref ce_declare "declaration" or @ref ce_define "definition" of a state:
-
-@code{.c}
-#ifdef FOO_BAR
- //. . .
-#endif /* def FOO_BAR */
-@endcode
-
-@note
-Please note that the QM code generator specifically does **not** append any spaces after the #`if`, so that statements of the form #`ifdef FOO_BAR` and #`ifundef FOO_BAR` can be easily generated from the conditions `?def FOO_BAR` and `?undef FOO_BAR`, respectively.
-
-However, your pre-processor expressions might be also more complex and might include logical operators `&&`, `||`, etc. For example, the condition `? (defined FOO_BAR) && (VERSION >= 531)` will lead to the generation of the following pre-processor statements:
-
-@code{.c}
-#if (defined FOO_BAR) && (VERSION >= 531)
- //. . .
-#endif /* (defined FOO_BAR) && (VERSION >= 531) */
-@endcode
-
-
-@subsection ce_cond_render Rendering Conditional States/Transitions
-As shown in the screen shots below, the QM™ tool will give you a visual indication by displaying the question mark (`?`) in front of the state name or the transition trigger in the @ref sm "State Diagram" as well as in the @ref ui_explorer :
-
-@image html ce_cond_state.png "Rendering of a Conditionally-Compiled State"
-@n
-@image html ce_cond_tran.png "Rendering of a Conditionally-Compiled Transition"
-
-
-@subsection ce_cond_check Conditional Compilation and Model Correctness
-The QM™ code generator applies the conditional compilation **consistently** and in a way that most developers should find **intuitive**.
-
-For example, for a conditionally-compiled state, both the state @ref ce_declare "declaration" and state @ref ce_define "definition" will be surrounded by the corresponding #`if` / #`endif` statements. Similarly, all substates of a conditionally-compiled state will be surrounded by the same #`if`/#`endif` statements as the superstate. The QM code generator will even correctly nest the #`if`/#`endif` statements for nested states, as one would expect. (NOTE: The following sub-sections describe how conditional compilation is applied in various special cases.)
-
-@attention
-However, the QM™ code generator is limited in that it does not "know" the settings of the pre-processor macros used for the conditional expressions. Consequently, QM can **not** check the completeness of a whole state-machine with some states or transitions conditionally-compiled. For example, the QM code generator will **not** report errors for transitions targeting conditionally-compiled states, even though such states might be "compiled out" in the actual code. In most such cases, the compilation of the code will fail (so you will **know** that your model is inconsistent), but avoiding such inconsistencies in the model is considered the responsibility of the developer (**you**), not the QM™ tool.
-
-
-@section ce_cond_state Conditional States
-This section describes the special cases of conditionally-compiled states.
-
-
-@subsection ce_cond_state_nest Nesting Conditional States
-If both a superstate and some of its substates are conditionally compiled (each with their own conditional expressions), the QM code generator **will** correctly **nest** the #`if`/#`endif` statements around the substates.
-
-@image html ce_cond_nest.png "Nested Conditional States"
-
-For example, if a superstate `state1` with a condition `?def FOO_BAR` has a substate `state3` with a condition `?(VERSION > 531)`, QM will generate the following conditional compilation statements for `state1` and `state3`.
-
-@code{.c}
-typedef struct {
-/* protected: */
- QMsm super;
-/* private state histories */
-
-#ifdef FOO_BAR
- QMState const *his_state1;
-#endif /* def FOO_BAR */
-
-} Test_QMsm;
-
-
-#ifdef FOO_BAR
-#if(VERSION > 531)
- // declaration or definition of state3
-#endif /* (VERSION > 531) */
-#endif /* def FOO_BAR */
-@endcode
-
-
-@subsection ce_cond_state_hist Conditional States with History
-If a conditionally compiled state has a @ref sm_hist "history", the QM code generator **will** correctly surround the @ref ce_declare "declaration" and the initialization of the state history variable. This will prevent allocating space and thus wasting memory (RAM) for the history attribute, in case the corresponding state is "compiled out".
-
-@image html ce_cond_hist.png "Conditional State with History"
-
-For example, if `state1` with a condition `?def FOO_BAR` has a history connector, QM will generate the following conditional compilation statements around the @ref ce_declare "declaration" and initialization of the `his_state1` history attribute.
-
-@code{.c}
-/*${AOs::Test_QMsm} .......................................................*/
-typedef struct {
-/* protected: */
- QMsm super;
-/* private state histories */
-
-#ifdef FOO_BAR
- QMState const *his_state1;
-#endif /* def FOO_BAR */
-
-} Test_QMsm;
-
-
-/*${AOs::Test_QMsm::SM} ...................................................*/
-static QState Test_QMsm_initial(Test_QMsm * const me, QEvt const * const e) {
- // . . .
-
-#ifdef FOO_BAR
- me->his_state1 = &Test_QMsm_state3_s;
-#endif /* def FOO_BAR */
-
- return QM_TRAN_INIT(&tatbl_);
-}
-@endcode
-
-
-@section ce_cond_tran Conditional Transitions
-A conditional compilation condition appended to the trigger name works for all @ref sm_tran "transition types" supported by QM, including regular transitions, internal transitions, transitions with guards, multi-trigger transitions, and `CATCH_ALL` transitions. The following sub-sections describe the special cases for conditionally-compiled transitions.
-
-Due to the way transitions are implemented in QP, there is no *declaration* of transition, so the conditional compilation applies only to the definition of a transition inside a state-handler function. The following snippet of code shows the conditional transition `TRIG2` with the condition `? (defined FOO_BAR) && (VERSION >= 531)` at line 6:
-
-@code{.c}
-/* ${AOs::Test_QMsm::SM::state1} */
-static QState Test_QMsm_state1(Test_QMsm * const me, QEvt const * const e) {
- QState status_;
- switch (e->sig) {
-
-#if (defined FOO_BAR) && (VERSION >= 531)
- /* ${AOs::Test_QMsm::SM::state1::TRIG2} */
- case TRIG2_SIG: {
- action2();
- // action associated with TRAN2
- break;
- }
-#endif /* (defined FOO_BAR) && (VERSION >= 531) */
-
- default: {
- status_ = QM_SUPER();
- break;
- }
- }
- (void)me; /* avoid compiler warning in case 'me' is not used */
- return status_;
-}
-@endcode
-
-@note
-Conditionally-compiled transitions can be attached to conditionally-compiled states. In that case the #`if`/#`endif` preprocessor statements will naturally nest, which will produce the expected result. (A transition will only be "compiled in" when both the conditional expression for the state as well as the actual conditional expression for the transition evaluate to true.)
-
-
-@subsection ce_cond_tran_multi Multi-Trigger Conditional Transitions
-A multi-trigger transition is a transition labeled with a (comma-separated) list of triggers, any one of which can trigger the transition. The conditional compilation works for this type of transition as well. In that case, you simply append the list of triggers with the question-mark (`?`) and the pre-processor expression. The following screen shot illustrates the situation:
-
-@image html ce_cond_multi.png "Multi-Trigger Conditional Transition"
-
-
-@subsection ce_cond_tran_catch CATCH_ALL Conditional Transitions
-The special **CATCH_ALL** transition is triggered by any not-explicitly handled trigger by a given state (so it "catches" all triggers). The conditional compilation works for this type of transition as well. In that case, you simply append the special `CATCH_ALL` pre-defined trigger with the question-mark (`?`) and the pre-processor expression. The following screen shot illustrates the situation:
-
-@image html ce_cond_catch.png "CATCH_ALL Conditional Transition"
-
-
-Because CATCH_ALL transitions are implemented in QP, the preprocessor #`if` statement also has the #`else` branch in this example, so that there is no "catch all" behavior when the transition is "compiled out". The following code snippet illustrates the conditional transition in a `QMsm` sub-class (please note the #`else` conditional branch):
-
-
-@code{.c}
-/* ${AOs::Test_QMsm::SM::state1} */
-static QState Test_QMsm_state1(Test_QMsm * const me, QEvt const * const e) {
- QState status_;
- switch (e->sig) {
- // triggers ...
- default: {
-
-#ifdef FOO
- /* ${AOs::Test_QMsm::SM::state0::CATCH_ALL} */
- static struct {
- QMState const *target;
- QActionHandler act[3];
- } const tatbl_ = { /* transition-action table */
- &Test_QMsm_state1_s, /* target state */
- {
- Q_ACTION_CAST(&Test_QMsm_state0_x), /* exit */
- Q_ACTION_CAST(&Test_QMsm_state1_e), /* entry */
- Q_ACTION_CAST(0) /* zero terminator */
- }
- };
- action1();
- status_ = QM_TRAN(&tatbl_);
-#else
- status_ = QM_SUPER();
-#endif /* def FOO */
-
- break;
- }
- }
- return status_;
-}
-@endcode
-@n
-
-The following code snippet illustrates the conditional transition in a `QHsm` sub-class (please note the #`else` conditional branch):
-
-@code{.c}
-/*${AOs::Test_QHsm::SM::state1} ............................................*/
-static QState Test_QHsm_state1(Test_QHsm * const me, QEvt const * const e) {
- QState status_;
- switch (e->sig) {
- /* ${AOs::Test_QHsm::SM::state1} */
- case Q_ENTRY_SIG: {
- entry1();
- status_ = Q_HANDLED();
- break;
- }
- /* ${AOs::Test_QHsm::SM::state1} */
- case Q_EXIT_SIG: {
- exit1();
- status_ = Q_HANDLED();
- break;
- }
-
- // triggers ...
-
- default: {
-
-#ifdef FOO
- /* ${AOs::Test_QHsm::SM::state1::CATCH_ALL} */
- if (e->sig < Q_USER_SIG) {
- status_ = Q_SUPER(&QHsm_top);
- }
- else {
- action1();
- status_ = Q_TRAN(&Test_QHsm_state2);
- }
-#else
- status_ = Q_SUPER(&QHsm_top);
-#endif /* def FOO */
-
- break;
- }
- }
- return status_;
-}
-@endcode
-@n
-
-@nav{ce_comment,ce_qmc}
-*/
-/*##########################################################################*/
-/*! @page ce_qmc QM Compiler (qmc)
-@nav{ce_cond,history}
-
-The @ref gs_install_folder "QM™ installation folder" contains the **command-line** utility called qmc (QM Compiler), which can generate code from a given @ref ui_model_file "QM model file". The `qmc` utility allows you to incorporate the code generation step into an **automated build process**, such as `Makefiles`, build scripts, or extra pre-compile steps in project files.
-
-
-By design, the `qmc` utility generates identical code as the QM™ graphical tool. In particular, `qmc` is aware of the @ref ui_session_file "QM session file" and applies the same QP licensing terms as QM™ (see also @ref ce_comment "generating comments").
-
-@attention
-The `qmc` utility has been specifically designed to run on "headless" servers, where GUI libraries are not installed.
-
-
-
-
-
-@section ce_qmc_command QMC Command-Line Arguments
-QMC supports the following command-line options:
-
-@verbatim
-qmc 5.0.4 (c) Quantum Leaps. https://www.state-machine.com/qm
-
-Usage: qmc [-h][-c [item]]
-or: qmc [-h][-c [item]] [--]
-
-Notes:
-The argument must be provided
-The option -c [item] might be repeated multiple times
-[item] is the fully-qualified model item name, e.g., ${foo::bar}
-
-Examples:
-qmc my_model.qm (generate code for entire model "my_model.qm")
-qmc xyz\my_model.qm (generate code for entire model "xyz\my_model.qm")
-qmc D:\xyz\my_model.qm (generate code for entire model "D:\xyz\my_model.qm")
-qmc -c ${pkgA} my_model.qm (generate code for item ${pkgA})
-qmc -c -- my_model.qm (generate code for entire model "my_model.qm")
-qmc my_model.qm -c ${pkgA} (generate code for item ${pkgA})
-qmc my_model.qm -c ${pkgA} -c${pkgB::.} (generate code for item ${pkgA} and ${pkgB::.})
-qmc my_model.qm -c ${.::main.c} (generate code for item ${.::main.c})
-@endverbatim
-
-where `` stands for the @ref ui_model_file "QM model file" to process. The `` can contain the whole absolute or relative **path** to the QM model file.
-
-
-@section ce_qmc_win Invoking qmc on Windows
-On Windows, the QMC executable is located in the `/bin/` directory, where `` denotes the QM installation directory.
-
-@verbatim
-c:\qp\qm\bin\qmc.exe
-@endverbatim
-
-
-@section ce_qmc_linux Invoking qmc on Linux
-On Linux, you invoke `qmc` by means of the **shell script** `qmc.sh`, which is located in the `/bin/` directory, where `` denotes the directory, in which you have installed QM. Assuming that you have installed QM in `/home//qp/qm`, you can invoke the `qmc` as follows:
-
-@verbatim
-/home//qp/bin/qm.sh
-@endverbatim
-
-where `` stands for the @ref ui_model_file "QM model file" to process. The `` can contain the whole absolute or relative **path** to the QM model file.
-
-
-@section ce_qmc_mac Invoking qmc on MacOS
-On MacOS, the `qmc` executable is located in the same bundle as the QM graphical modeling tool. Assuming that you have installed QM into the `/Applications/` folder, you can invoke the `qmc` as follows:
-
-@verbatim
-/Applications/qm.app/Contents/MacOS/qmc
-@endverbatim
-
-where `` stands for the @ref ui_model_file "QM model file" to process. The `` can contain the whole absolute or relative **path** to the QM model file.
-
-@nav{ce_cond,history}
-*/
-
diff --git a/doxygen/cpt.dox b/doxygen/cpt.dox
deleted file mode 100644
index 2d63c69..0000000
--- a/doxygen/cpt.dox
+++ /dev/null
@@ -1,52 +0,0 @@
-/*! @page cpt Key Concepts
-
-To use the QM™ tool effectively, you need to understand a few key concepts that underline the whole philosophy of modeling and code generation in QM™. The following sections provide the basic definitions of the concepts and links where you can learn more.
-
-
-
-
-@section cpt_oo Object Orientation
-QM™ is fundamentally an **object-oriented tool**, regardless of the target programming language (currently C or C++). Object orientation means that @ref bm_model "QM models" are fundamentally composed of @ref bm_class "classes" and instances of classes (objects). Also, only classes can have @ref sm "State Machines" associated with them.
-
-@note
-If you program in C and object-oriented programming is new to you, please refer to the Application Note @webref{oop,Object-Oriented Programming}, which describes how you can implement the concepts of @ref bm_class "classes", **inheritance**, and **polymorphism** to portable ANSI-C.
-@image html AN_OOP_in_C.png
-
-
-
-@section cpt_ao Active Objects
-QM™ assumes a specific overall **architecture** of your application, which combines object-orientation with the particular model of concurrency, known as "active objects" (a.k.a. "actors"). In this architecture, software application consists of collaborating active objects, which collectively deliver the desired behavior.
-
-Active objects have their own threads of control (that's why they can "do" anything). They are also fundamentally event-driven, meaning that they can communicate only by exchanging event instances.
-
-You can learn more about the active object model of computation from the Quantum Leaps website. Here are only the annotated links to the most important characteristics of active objects:
-
-- True Encapsulation for Concurrency
-- Asynchronous Communication
-- Run-to-Completion Event Processing
-- No Blocking
-
-
-
-@subsection ab_framework Real-Time Embedded Frameworks
-A Real-Time Embedded Framework (RTEF) combines the active object model of computation with real-time kernel(s), thus making active objects suitable for Real-Time Embedded (RTE) applications.
-
-
-
-@section cpt_inversion Inversion of Control
-The most important point to understand about a Real-Time Embedded Framework (RTEF) is how it differs from a toolkit, such as a traditional (Real-Time) Operating System (RTOS). When you use an (RT)OS, you write the main body of each thread and you call the code from the (RT)OS (such as a semaphore, time delay, etc.) In contrast, when you use a RTEF, you reuse the whole architecture and write the code that it calls. This leads to **inversion of control** compared to the traditional (RT)OS and is very characteristic to virtually all event-driven systems, such as Active Objects.
-
-
-
-@subsubsection cpt_codegen Framework and Code Generation
-By definition, the job of a RTEF is to provide well-defined "framework extension points" designed for customizing the framework into applications. This in turn provides well-defined rules for generating code and therefore most tools capable of automatic code generation are based on software frameworks.
-
-
-
-@subsection cpt_qp QP™ Frameworks and QM™
-QM™ uses the QP
-Much of the simplicity of QM™ derives from the fact that it limits itself to C or C++, and the QP™ RTEFs, as opposed to supporting an open-ended number of programming languages and yet-to-be-defined frameworks.
-
-@next{ui} or@n
-@next{bm}
-*/
diff --git a/doxygen/favicon.ico b/doxygen/favicon.ico
deleted file mode 100644
index b26ea96032b520dfbb56e9c120cf72ad8a2e8902..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1406
zcmdUuX;9Tw7{-5;mbNIRATB5=!WE@l072r4$|^|#As6JT;1XI%AdJ4|ud{b+7iq!1
z>|B`5wW=blr1$3L+o`D*1Sks8gR}~lfca_hQ`WA{CHWA9WO{t6C6FMr)^gOXQTY_87rt+
zrQo!39F|6l>27aFcccKDeg@pGQxPyh&=9BKj#@>-x)3G~>B*~silsBrB+O-n-!AOz
zo^UdKHIr?nSaY(Z-lXH>Q_H~u!H&@R$VUyJD7=vSx;7jvWgOopxOAYBlmK5^TlExW
zc404b;;vRp#2kUqz*?$~N%bFGPGn>v<|E`NJzeRjD??@}=)Q7^G1daPtp;y-F8Z_W
zJQiKZjRejT>@DmuAKlEx@W)KCbmY_$XO>$>Q@rgy#l;<{RBfm?E#YqKc>>+sm_6Me
zE2{()Q|p))n2wioBBiAdnLEo3-R_A
z3^)CY{W;wPxw;VKK8^dG;>Dl(KeEv$>y$fQ1a3V0E9aH{EB{d#?y~M(()7OjbH#^C
z3a3r{=F77!K~)#_s@^4{rr)4rmiyPd8K0FsS-xkC&G^9s(mySA`*`!2Dbo+6%wmE|
zl)ta-YVU>1jE*!H9mQbFYq=xd*i^B-apd6>FP9VTdfa^9%$V1EoijV!_q{M)8XB1V
zg*MbHW4+n%p8H#;#t!r}P2Acm_LD_B>%$oLb@Ny9OuPDoexIWwb-uWnh)CR}5
a6{#dh?K9|UVGj(RX9@8V{V&u>_J0GBCB)(Y
diff --git a/doxygen/gs.dox b/doxygen/gs.dox
deleted file mode 100644
index 0057b07..0000000
--- a/doxygen/gs.dox
+++ /dev/null
@@ -1,707 +0,0 @@
-/*! @page gs Getting Started
-@ifnot LATEX
-@nav{index,gs_get}
-@endif
-
-The following sections describe how to get started with QM™ quickly:
-- @subpage gs_get
-- @subpage gs_run
-- @subpage gs_tut
-- @subpage gs_exa
-
-@remark
-The features of this online help and tips for using it are described in Section @ref help.
-
-@note
-QM Tutorial video
-@image html qm_tut_video.jpg "QM Tutorial video"
-@image latex qm_tut_video.jpg "QM Tutorial video"
-
-@ifnot LATEX
-@nav{index,gs_get}
-@endif
-*/
-/*##########################################################################*/
-/*!
-@page gs_get Downloading & Installing QM™
-@ifnot LATEX
-@nav{gs,gs_run}
-@endif
-
-@section gs_bundle Downloading QM™ in QP™-Bundle
-The most recommended way of getting QM™ is by downloading the @webref{#Downloads,QP-bundle™}, which includes QM™ and also all @webref{products/qp,QP™ Real-Time Embedded Frameworks} and the @webref{products/qtools,QTools™ collection}. The main advantage of getting QM™ bundled together like that is that you get all components, tools and ready-to-use examples.
-
-@ifnot LATEX
-@remark
-@htmlonly
-
-@endhtmlonly
-@endif
-@image{inline} latex qp-bundle.png width=0.5in
-@webref{#Downloads,QP-bundle™} is the **most recommended** way of downloading and installing QM™. However, if you are allergic to installers and GUIs or don't have administrator privileges you can also **download and install QM™ separately** as described below.
-
-
-@section gs_gh Downloading QM™ from GitHub
-Go to the QM™ release page on GitHub, and choose the QM™ version number you wish to download. You should select the latest QM™ version, unless you have a very specific reason to go with an older release.
-
-Inside the release directory (e.g., `5.1.3`), you need to choose the QM™ archive for your platform. QM™ is available for Windows (`qm_-win32.zip`), Linux (`qm_-linux64.zip`), and MacOS (`qm_-macx64.dmg`).
-
-![QM downloads from GitHub](qm_gh.jpg)
-
-
-@section gs_install Installing QM™
-
-@note
-If you have any previous version of QM™ installed on your system, it is highly recommended to **uninstall it** before installing a newer version.
-
-
-@section gs_install_win Installing QM™ on Windows
-After downloading the ZIP archive for Windows (`qm_-win32.zip`), you can unzip the archive into any directory, although the `C:\qp\` folder is the recommended default.
-
-@remarks
-It is generally **not** recommended to install QM™ in such Windows locations as `"Program Files"` or `"Program Files (x86)"`, because these directories have access limitations and don't allow you to modify the @ref ui_custom_qss "QM Style Sheet" (`qm.qss`) or @ref ui_new-dlg "new model templates".
-
-
-If you wish, after the installation, you could create a desktop shortcut and you can also associate QM™ model files (`*.qm` and `*.qmp`) with the QM application (using the standard Windows Explorer and "Open With" popup menu).
-
-To uninstall QM™ you simply delete the installation directory.
-
-
-@section gs_install_linux Installing QM™ on Linux
-After downloading the ZIP archive for Linux (`qm_-linux64.zip`), you can unzip the archive into any directory, although the `~/qp/` folder is the recommended default.
-
-
-@subsection gs_install_linux_icon Manual Setup of QM Desktop Shortcut
-The easiest way to launch QM™ is through the desktop shortcut. However, on some Linux desktops the provided QM setup program might not be able to install correctly. In most of such cases, you might still be able to create the desktop shortcut manually. The provided procedure should work for both KDE and GNOME desktops:
-
-1. Drag the file `\bin\qm.desktop` from the file explorer to the desktop:
-
-![Dragging the QM shortcut to the desktop](setup_linux_shortcut.png)
-
-2. Right-click on the desktop shortcut and choose "Icon Settings" (or sometimes Properties) from the popup menu. Set the application command to `\bin\qm.sh` script
-
-![Setting qm.sh script as shortcut command](setup_linux_cmd.png)
-
-3. If you wish to set the QM icon for the shortcut, click on the image and browse inside `\Resources\` folder:
-
-![Changing the icon for the QM shortcut](setup_linux_icon.png)
-
-@attention
-To run the QM™ application on Linux, you need to run the `/bin/qm.sh` bash script instead of directly running the `/bin/qm` executable.
-
-
-@section gs_install_mac Installing QM™ on macOS
-
-After downloading the `qm_-macx64.dmg` disk image, double click on the `.dmg` file. This will mount and open the disk image. To install the QM tool, you simply drag the `qm.app` image into the `Applications` folder (typically visible in the Dock). If you wish, you might also create the alias of the `qm.app` and place it on your Desktop.
-
-![QM setup for macOS](setup_mac.png)
-
-To uninstall QM, simply delete the QM application from the Applications folder.
-
-
-@section gs_install_folder QM™ Installation Folder
-The setup program installs QM™ executable and all shared libraries necessary to run the application. The following example shows directories and files installed on Windows (where `<qm>` denotes the folder where you chose to install QM™):
-
-
-@code{.c}
-
- +---bin/ // executables
- | +---platforms/ // Platform plugin for Qt5
- | | qwindows.dll
- | |
- | | qm.exe // QM application executable
- | | . . .
- | | Qt5Core.dll // Qt5 Core features DLL
- | | Qt5Gui.dll // Qt5 GUI DLL
- | | Qt5PrintSupport.dll // Qt5 Print DLL
- | | Qt5Widgets.dll // Qt5 Widgets DLL
- | | . . .
- |
- +---html/ // HTML help
- | | ~~~
- | | index.html // HTML index file for all help topics
- |
- +---Resources/ // QM model templates
- | +---qpc/ // templates for QP/C
- | +---qpcpp/ // templates for QP/C++
- | | qm.qss // QM style sheet (see Customizing QM)
- |
- | QM_LICENSE.txt // QM license
- | README.md // QM release notes
- | unins000.exe // QM uninstaller (if QM installed separately)
-@endcode
-
-
-@section gs_qp QP™ Frameworks
-If your only intention is to use QM™ as a drawing tool, you don't need to bother with @webref{products/qp,QP™} or even know what it is. However, if you wish to use QM™ to its full potential for generating production-quality code, you need to install at least one of the QP™ frameworks (QP/C or QP/C++). The open source QP™ frameworks are available for download inside the @webref{#Downloads,QP-bundle™}, which includes QM™ and also all @webref{products/qp,QP™ Real-Time Embedded Frameworks} and the @webref{products/qtools,QTools™ collection}> or separately, as described in the Reference Manuals of each framework.
-
-@ifnot LATEX
-@nav{gs_get,gs_run}
-@endif
-*/
-/*##########################################################################*/
-/*! @page gs_run Launching QM™
-@ifnot LATEX
-@nav{gs_get, gs_tut}
-@endif
-
-The QM™ modeling tool can be used in two modes of operation: interactive GUI mode and command-line mode. This section begins with the description of the @ref gs_run_cmd-line "command-line parameters" and the @ref gs_console "console-mode", which is the same on all platforms supported by QM. Next, the section describes how to launch QM™ in the @ref gs_run_win "interactive GUI mode", which might vary, depending on the underlying operating system.
-
-
-
-@section gs_run_cmd-line Command-Line Parameters
-The QM™ executable takes the following optional command-line parameters:
-- Console-Mode:
- + `-h` prints help to the console and exits
- + `-c [item]` generates code for the given model `[item]` and exits
- + `-d [item][.png|.emf]` generates a diagram from the given model `[item]` and exits
-- GUI-Mode:
- + `-stylesheet ` overrides a stylesheet used by QM
- + `-style