statechart_fig1_redialer.svg 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  3. "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  4. <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  5. -->
  6. <!-- Title: state transitions Pages: 1 -->
  7. <svg width="805pt" height="394pt"
  8. viewBox="0.00 0.00 805.00 394.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  9. <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 390)">
  10. <title>state transitions</title>
  11. <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-390 801,-390 801,4 -4,4"/>
  12. <g id="clust1" class="cluster">
  13. <title>cluster__Dialing</title>
  14. <path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 777,-8 777,-8 783,-8 789,-14 789,-20 789,-20 789,-335 789,-335 789,-341 783,-347 777,-347 777,-347 20,-347 20,-347 14,-347 8,-341 8,-335 8,-335 8,-20 8,-20 8,-14 14,-8 20,-8"/>
  15. <text text-anchor="start" x="380.1682" y="-328.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Dialing</text>
  16. </g>
  17. <g id="clust2" class="cluster">
  18. <title>cluster__Dialing_Redialer</title>
  19. <polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="438,-16 438,-309 781,-309 781,-16 438,-16"/>
  20. <text text-anchor="start" x="587.1668" y="-290.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Redialer</text>
  21. </g>
  22. <g id="clust3" class="cluster">
  23. <title>cluster__Dialing_Dialer</title>
  24. <polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-309 430,-309 430,-16 24,-16"/>
  25. <text text-anchor="start" x="211.8376" y="-290.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Dialer</text>
  26. </g>
  27. <!-- __initial -->
  28. <g id="node1" class="node">
  29. <title>__initial</title>
  30. <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="16" cy="-380.5" rx="5.5" ry="5.5"/>
  31. </g>
  32. <!-- _Dialing -->
  33. <!-- __initial&#45;&gt;_Dialing -->
  34. <g id="edge1" class="edge">
  35. <title>__initial&#45;&gt;_Dialing</title>
  36. <path fill="none" stroke="#000000" d="M16,-374.9533C16,-370.7779 16,-364.5043 16,-357.0332"/>
  37. <polygon fill="#000000" stroke="#000000" points="19.5001,-356.9971 16,-346.9971 12.5001,-356.9972 19.5001,-356.9971"/>
  38. <text text-anchor="middle" x="17.3895" y="-358" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
  39. </g>
  40. <!-- _Dialing_Redialer -->
  41. <!-- _Dialing_Redialer_initial -->
  42. <g id="node4" class="node">
  43. <title>_Dialing_Redialer_initial</title>
  44. <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="552" cy="-265.5" rx="5.5" ry="5.5"/>
  45. </g>
  46. <!-- _Dialing_Redialer_WaitForRedial -->
  47. <g id="node6" class="node">
  48. <title>_Dialing_Redialer_WaitForRedial</title>
  49. <polygon fill="transparent" stroke="transparent" stroke-width="2" points="607.5,-178 496.5,-178 496.5,-142 607.5,-142 607.5,-178"/>
  50. <text text-anchor="start" x="507.8342" y="-156.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">WaitForRedial ✓</text>
  51. <path fill="none" stroke="#000000" stroke-width="2" d="M508.8333,-143C508.8333,-143 595.1667,-143 595.1667,-143 600.8333,-143 606.5,-148.6667 606.5,-154.3333 606.5,-154.3333 606.5,-165.6667 606.5,-165.6667 606.5,-171.3333 600.8333,-177 595.1667,-177 595.1667,-177 508.8333,-177 508.8333,-177 503.1667,-177 497.5,-171.3333 497.5,-165.6667 497.5,-165.6667 497.5,-154.3333 497.5,-154.3333 497.5,-148.6667 503.1667,-143 508.8333,-143"/>
  52. </g>
  53. <!-- _Dialing_Redialer_initial&#45;&gt;_Dialing_Redialer_WaitForRedial -->
  54. <g id="edge2" class="edge">
  55. <title>_Dialing_Redialer_initial&#45;&gt;_Dialing_Redialer_WaitForRedial</title>
  56. <path fill="none" stroke="#000000" d="M552,-259.8288C552,-255.1736 552,-248.4097 552,-242.5 552,-242.5 552,-242.5 552,-195.5 552,-193.1079 552,-190.6252 552,-188.1342"/>
  57. <polygon fill="#000000" stroke="#000000" points="555.5001,-188.0597 552,-178.0598 548.5001,-188.0598 555.5001,-188.0597"/>
  58. <text text-anchor="middle" x="553.3895" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
  59. </g>
  60. <!-- _Dialing_Redialer_RedialDigits -->
  61. <g id="node5" class="node">
  62. <title>_Dialing_Redialer_RedialDigits</title>
  63. <polygon fill="transparent" stroke="transparent" stroke-width="2" points="561.5,-60 476.5,-60 476.5,-24 561.5,-24 561.5,-60"/>
  64. <text text-anchor="start" x="487.5026" y="-38.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">RedialDigits</text>
  65. <path fill="none" stroke="#000000" stroke-width="2" d="M488.8333,-25C488.8333,-25 549.1667,-25 549.1667,-25 554.8333,-25 560.5,-30.6667 560.5,-36.3333 560.5,-36.3333 560.5,-47.6667 560.5,-47.6667 560.5,-53.3333 554.8333,-59 549.1667,-59 549.1667,-59 488.8333,-59 488.8333,-59 483.1667,-59 477.5,-53.3333 477.5,-47.6667 477.5,-47.6667 477.5,-36.3333 477.5,-36.3333 477.5,-30.6667 483.1667,-25 488.8333,-25"/>
  66. </g>
  67. <!-- _Dialing_Redialer_RedialDigits&#45;&gt;_Dialing_Redialer_RedialDigits -->
  68. <g id="edge3" class="edge">
  69. <title>_Dialing_Redialer_RedialDigits&#45;&gt;_Dialing_Redialer_RedialDigits</title>
  70. <path fill="none" stroke="#000000" d="M561.7986,-46.856C574.0518,-46.6655 583.5,-45.0469 583.5,-42 583.5,-39.8577 578.8289,-38.4214 571.7961,-37.6913"/>
  71. <polygon fill="#000000" stroke="#000000" points="571.9749,-34.1959 561.7986,-37.144 571.5923,-41.1855 571.9749,-34.1959"/>
  72. <text text-anchor="start" x="583.5" y="-39" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[c &lt; numdigits(p)]^dial(digit(p, c+1)) &#160;&#160;</text>
  73. </g>
  74. <!-- _Dialing_Redialer_RedialDigits&#45;&gt;_Dialing_Redialer_WaitForRedial -->
  75. <g id="edge4" class="edge">
  76. <title>_Dialing_Redialer_RedialDigits&#45;&gt;_Dialing_Redialer_WaitForRedial</title>
  77. <path fill="none" stroke="#000000" d="M476.4216,-59.8718C471.3898,-64.5715 468,-70.3799 468,-77.5 468,-124.5 468,-124.5 468,-124.5 468,-130.7463 475.9804,-136.5147 487.0215,-141.5063"/>
  78. <polygon fill="#000000" stroke="#000000" points="485.8568,-144.811 496.4386,-145.3373 488.4946,-138.327 485.8568,-144.811"/>
  79. <text text-anchor="start" x="468" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[c == numdigits(p)] &#160;&#160;</text>
  80. </g>
  81. <!-- _Dialing_Redialer_WaitForRedial&#45;&gt;_Dialing_Redialer_RedialDigits -->
  82. <g id="edge5" class="edge">
  83. <title>_Dialing_Redialer_WaitForRedial&#45;&gt;_Dialing_Redialer_RedialDigits</title>
  84. <path fill="none" stroke="#000000" d="M595.0313,-141.6979C599.8125,-137.0752 603,-131.4043 603,-124.5 603,-124.5 603,-124.5 603,-77.5 603,-69.0842 588.5133,-61.5359 571.5722,-55.5861"/>
  85. <polygon fill="#000000" stroke="#000000" points="572.5769,-52.2323 561.9843,-52.4497 570.4005,-58.8854 572.5769,-52.2323"/>
  86. <text text-anchor="start" x="603" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">redial [c == 0]/p = lp ^dial(digit(lp, 1)) &#160;&#160;</text>
  87. </g>
  88. <!-- _Dialing_Dialer -->
  89. <!-- _Dialing_Dialer_initial -->
  90. <g id="node8" class="node">
  91. <title>_Dialing_Dialer_initial</title>
  92. <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="80" cy="-265.5" rx="5.5" ry="5.5"/>
  93. </g>
  94. <!-- _Dialing_Dialer_WaitForDial -->
  95. <g id="node10" class="node">
  96. <title>_Dialing_Dialer_WaitForDial</title>
  97. <polygon fill="transparent" stroke="transparent" stroke-width="2" points="128.5,-178 31.5,-178 31.5,-142 128.5,-142 128.5,-178"/>
  98. <text text-anchor="start" x="42.505" y="-156.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">WaitForDial ✓</text>
  99. <path fill="none" stroke="#000000" stroke-width="2" d="M43.8333,-143C43.8333,-143 116.1667,-143 116.1667,-143 121.8333,-143 127.5,-148.6667 127.5,-154.3333 127.5,-154.3333 127.5,-165.6667 127.5,-165.6667 127.5,-171.3333 121.8333,-177 116.1667,-177 116.1667,-177 43.8333,-177 43.8333,-177 38.1667,-177 32.5,-171.3333 32.5,-165.6667 32.5,-165.6667 32.5,-154.3333 32.5,-154.3333 32.5,-148.6667 38.1667,-143 43.8333,-143"/>
  100. </g>
  101. <!-- _Dialing_Dialer_initial&#45;&gt;_Dialing_Dialer_WaitForDial -->
  102. <g id="edge6" class="edge">
  103. <title>_Dialing_Dialer_initial&#45;&gt;_Dialing_Dialer_WaitForDial</title>
  104. <path fill="none" stroke="#000000" d="M80,-259.8288C80,-255.1736 80,-248.4097 80,-242.5 80,-242.5 80,-242.5 80,-195.5 80,-193.1079 80,-190.6252 80,-188.1342"/>
  105. <polygon fill="#000000" stroke="#000000" points="83.5001,-188.0597 80,-178.0598 76.5001,-188.0598 83.5001,-188.0597"/>
  106. <text text-anchor="middle" x="81.3895" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
  107. </g>
  108. <!-- _Dialing_Dialer_DialDigits -->
  109. <g id="node9" class="node">
  110. <title>_Dialing_Dialer_DialDigits</title>
  111. <polygon fill="transparent" stroke="transparent" stroke-width="2" points="141,-60 69,-60 69,-24 141,-24 141,-60"/>
  112. <text text-anchor="start" x="79.6734" y="-38.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">DialDigits</text>
  113. <path fill="none" stroke="#000000" stroke-width="2" d="M81.3333,-25C81.3333,-25 128.6667,-25 128.6667,-25 134.3333,-25 140,-30.6667 140,-36.3333 140,-36.3333 140,-47.6667 140,-47.6667 140,-53.3333 134.3333,-59 128.6667,-59 128.6667,-59 81.3333,-59 81.3333,-59 75.6667,-59 70,-53.3333 70,-47.6667 70,-47.6667 70,-36.3333 70,-36.3333 70,-30.6667 75.6667,-25 81.3333,-25"/>
  114. </g>
  115. <!-- _Dialing_Dialer_DialDigits&#45;&gt;_Dialing_Dialer_DialDigits -->
  116. <g id="edge7" class="edge">
  117. <title>_Dialing_Dialer_DialDigits&#45;&gt;_Dialing_Dialer_DialDigits</title>
  118. <path fill="none" stroke="#000000" d="M141.25,-46.875C153.3333,-46.875 163,-45.25 163,-42 163,-39.7656 158.431,-38.2993 151.6489,-37.6011"/>
  119. <polygon fill="#000000" stroke="#000000" points="151.3996,-34.0861 141.25,-37.125 151.0794,-41.0788 151.3996,-34.0861"/>
  120. <text text-anchor="start" x="163" y="-39" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dial [c &lt; 10]/lp = lp * 10 + d⁏ c += 1⁏ &#160;^out.out(d) &#160;&#160;</text>
  121. </g>
  122. <!-- _Dialing_Dialer_DialDigits&#45;&gt;_Dialing_Dialer_WaitForDial -->
  123. <g id="edge8" class="edge">
  124. <title>_Dialing_Dialer_DialDigits&#45;&gt;_Dialing_Dialer_WaitForDial</title>
  125. <path fill="none" stroke="#000000" d="M74.6899,-60.1859C70.1752,-65.0344 67,-70.8191 67,-77.5 67,-124.5 67,-124.5 67,-124.5 67,-126.9367 67.2734,-129.4132 67.7409,-131.8668"/>
  126. <polygon fill="#000000" stroke="#000000" points="64.4295,-133.0164 70.5523,-141.6629 71.1579,-131.0853 64.4295,-133.0164"/>
  127. <text text-anchor="start" x="67" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[c == 10] &#160;&#160;</text>
  128. </g>
  129. <!-- _Dialing_Dialer_WaitForDial&#45;&gt;_Dialing_Dialer_DialDigits -->
  130. <g id="edge10" class="edge">
  131. <title>_Dialing_Dialer_WaitForDial&#45;&gt;_Dialing_Dialer_DialDigits</title>
  132. <path fill="none" stroke="#000000" d="M128.5115,-146.0105C144.3736,-139.9675 158,-132.4599 158,-124.5 158,-124.5 158,-124.5 158,-77.5 158,-70.3568 154.6355,-64.5595 149.602,-59.8834"/>
  133. <polygon fill="#000000" stroke="#000000" points="151.3797,-56.849 141.2305,-53.8085 147.2684,-62.5145 151.3797,-56.849"/>
  134. <text text-anchor="start" x="158" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dial ∧ redial [c == 0]/lp = d⁏ c = 1⁏ &#160;^out.out(d) &#160;&#160;</text>
  135. </g>
  136. <!-- _Dialing_Dialer_WaitForDial&#45;&gt;_Dialing_Dialer_WaitForDial -->
  137. <g id="edge9" class="edge">
  138. <title>_Dialing_Dialer_WaitForDial&#45;&gt;_Dialing_Dialer_WaitForDial</title>
  139. <path fill="none" stroke="#000000" d="M128.7649,-164.8167C141.1797,-164.5001 150.5,-162.8945 150.5,-160 150.5,-157.9648 145.8922,-156.5668 138.8407,-155.8061"/>
  140. <polygon fill="#000000" stroke="#000000" points="138.9618,-152.307 128.7649,-155.1833 138.5299,-159.2937 138.9618,-152.307"/>
  141. <text text-anchor="start" x="150.5" y="-157" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dial ∧ ¬redial [c &lt; 10]/c += 1⁏ lp = lp * 10 + d⁏ &#160;^out.out(d) &#160;&#160;</text>
  142. </g>
  143. </g>
  144. </svg>