<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="415px" preserveAspectRatio="none" style="width:896px;height:415px;" version="1.1" viewBox="0 0 896 415" width="896px" zoomAndPan="magnify"><defs><filter height="300%" id="f14eszahge7obk" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--class gui::GuiVisitor--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="108.0234" id="gui::GuiVisitor" style="stroke: #A80036; stroke-width: 1.5;" width="210" x="129" y="8"/><ellipse cx="187.25" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M187.3594,19.3438 L186.2031,24.4219 L188.5313,24.4219 L187.3594,19.3438 Z M185.875,17.1094 L188.8594,17.1094 L192.2188,29.5 L189.7656,29.5 L189,26.4375 L185.7188,26.4375 L184.9688,29.5 L182.5313,29.5 L185.875,17.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="85" x="207.75" y="28.1543">gui::GuiVisitor</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="130" x2="338" y1="40" y2="40"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="135" y="54.2104">void visit(gui::Item &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="135" y="67.0151">void visit(gui::Rect &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="135" y="79.8198">void visit(gui::Text &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="198" x="135" y="109.4292">void visit(gui::CustomItem2 &item)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="130" x2="184.5" y1="92.8164" y2="92.8164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="99" x="184.5" y="96.1245">. visit overloads .</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="283.5" x2="338" y1="92.8164" y2="92.8164"/><!--class gui::ConcreteVisitor1--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="108.0234" id="gui::ConcreteVisitor1" style="stroke: #A80036; stroke-width: 1.5;" width="210" x="6" y="176"/><ellipse cx="42.15" cy="192" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M45.1188,197.6406 Q44.5406,197.9375 43.9,198.0781 Q43.2594,198.2344 42.5563,198.2344 Q40.0563,198.2344 38.7281,196.5938 Q37.4156,194.9375 37.4156,191.8125 Q37.4156,188.6875 38.7281,187.0313 Q40.0563,185.375 42.5563,185.375 Q43.2594,185.375 43.9,185.5313 Q44.5563,185.6875 45.1188,185.9844 L45.1188,188.7031 Q44.4938,188.125 43.9,187.8594 Q43.3063,187.5781 42.6813,187.5781 Q41.3375,187.5781 40.65,188.6563 Q39.9625,189.7188 39.9625,191.8125 Q39.9625,193.9063 40.65,194.9844 Q41.3375,196.0469 42.6813,196.0469 Q43.3063,196.0469 43.9,195.7813 Q44.4938,195.5 45.1188,194.9219 L45.1188,197.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="131" x="60.85" y="196.1543">gui::ConcreteVisitor1</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="215" y1="208" y2="208"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="12" y="222.2104">void visit(gui::Item &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="12" y="235.0151">void visit(gui::Rect &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="12" y="247.8198">void visit(gui::Text &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="198" x="12" y="277.4292">void visit(gui::CustomItem2 &item)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="61.5" y1="260.8164" y2="260.8164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="99" x="61.5" y="264.1245">. visit overloads .</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="160.5" x2="215" y1="260.8164" y2="260.8164"/><!--class gui::ConcreteVisitor2--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="108.0234" id="gui::ConcreteVisitor2" style="stroke: #A80036; stroke-width: 1.5;" width="210" x="251" y="176"/><ellipse cx="287.15" cy="192" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M290.1188,197.6406 Q289.5406,197.9375 288.9,198.0781 Q288.2594,198.2344 287.5563,198.2344 Q285.0563,198.2344 283.7281,196.5938 Q282.4156,194.9375 282.4156,191.8125 Q282.4156,188.6875 283.7281,187.0313 Q285.0563,185.375 287.5563,185.375 Q288.2594,185.375 288.9,185.5313 Q289.5563,185.6875 290.1188,185.9844 L290.1188,188.7031 Q289.4938,188.125 288.9,187.8594 Q288.3063,187.5781 287.6813,187.5781 Q286.3375,187.5781 285.65,188.6563 Q284.9625,189.7188 284.9625,191.8125 Q284.9625,193.9063 285.65,194.9844 Q286.3375,196.0469 287.6813,196.0469 Q288.3063,196.0469 288.9,195.7813 Q289.4938,195.5 290.1188,194.9219 L290.1188,197.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="131" x="305.85" y="196.1543">gui::ConcreteVisitor2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="252" x2="460" y1="208" y2="208"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="257" y="222.2104">void visit(gui::Item &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="257" y="235.0151">void visit(gui::Rect &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="257" y="247.8198">void visit(gui::Text &item)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="198" x="257" y="277.4292">void visit(gui::CustomItem2 &item)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="252" x2="306.5" y1="260.8164" y2="260.8164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="99" x="306.5" y="264.1245">. visit overloads .</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="405.5" x2="460" y1="260.8164" y2="260.8164"/><!--class gui::Item--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="60.8047" id="gui::Item" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="496.5" y="31.5"/><ellipse cx="571.75" cy="47.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M574.7188,53.1406 Q574.1406,53.4375 573.5,53.5781 Q572.8594,53.7344 572.1563,53.7344 Q569.6563,53.7344 568.3281,52.0938 Q567.0156,50.4375 567.0156,47.3125 Q567.0156,44.1875 568.3281,42.5313 Q569.6563,40.875 572.1563,40.875 Q572.8594,40.875 573.5,41.0313 Q574.1563,41.1875 574.7188,41.4844 L574.7188,44.2031 Q574.0938,43.625 573.5,43.3594 Q572.9063,43.0781 572.2813,43.0781 Q570.9375,43.0781 570.25,44.1563 Q569.5625,45.2188 569.5625,47.3125 Q569.5625,49.4063 570.25,50.4844 Q570.9375,51.5469 572.2813,51.5469 Q572.9063,51.5469 573.5,51.2813 Q574.0938,51 574.7188,50.4219 L574.7188,53.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="592.25" y="51.6543">gui::Item</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="63.5" y2="63.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="71.5" y2="71.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="502.5" y="85.7104">void accept(gui::GuiVisitor &visitor)</text><!--class gui::Rect--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="60.8047" id="gui::Rect" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="496.5" y="199.5"/><ellipse cx="571.25" cy="215.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M574.2188,221.1406 Q573.6406,221.4375 573,221.5781 Q572.3594,221.7344 571.6563,221.7344 Q569.1563,221.7344 567.8281,220.0938 Q566.5156,218.4375 566.5156,215.3125 Q566.5156,212.1875 567.8281,210.5313 Q569.1563,208.875 571.6563,208.875 Q572.3594,208.875 573,209.0313 Q573.6563,209.1875 574.2188,209.4844 L574.2188,212.2031 Q573.5938,211.625 573,211.3594 Q572.4063,211.0781 571.7813,211.0781 Q570.4375,211.0781 569.75,212.1563 Q569.0625,213.2188 569.0625,215.3125 Q569.0625,217.4063 569.75,218.4844 Q570.4375,219.5469 571.7813,219.5469 Q572.4063,219.5469 573,219.2813 Q573.5938,219 574.2188,218.4219 L574.2188,221.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="591.75" y="219.6543">gui::Rect</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="231.5" y2="231.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="239.5" y2="239.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="502.5" y="253.7104">void accept(gui::GuiVisitor &visitor)</text><!--class gui::Text--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="60.8047" id="gui::Text" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="248.5" y="344"/><ellipse cx="324.25" cy="360" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M327.2188,365.6406 Q326.6406,365.9375 326,366.0781 Q325.3594,366.2344 324.6563,366.2344 Q322.1563,366.2344 320.8281,364.5938 Q319.5156,362.9375 319.5156,359.8125 Q319.5156,356.6875 320.8281,355.0313 Q322.1563,353.375 324.6563,353.375 Q325.3594,353.375 326,353.5313 Q326.6563,353.6875 327.2188,353.9844 L327.2188,356.7031 Q326.5938,356.125 326,355.8594 Q325.4063,355.5781 324.7813,355.5781 Q323.4375,355.5781 322.75,356.6563 Q322.0625,357.7188 322.0625,359.8125 Q322.0625,361.9063 322.75,362.9844 Q323.4375,364.0469 324.7813,364.0469 Q325.4063,364.0469 326,363.7813 Q326.5938,363.5 327.2188,362.9219 L327.2188,365.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="344.75" y="364.1543">gui::Text</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="249.5" x2="460.5" y1="376" y2="376"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="249.5" x2="460.5" y1="384" y2="384"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="254.5" y="398.2104">void accept(gui::GuiVisitor &visitor)</text><!--class gui::CustomItem1--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="60.8047" id="gui::CustomItem1" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="496.5" y="344"/><ellipse cx="544.25" cy="360" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M547.2188,365.6406 Q546.6406,365.9375 546,366.0781 Q545.3594,366.2344 544.6563,366.2344 Q542.1563,366.2344 540.8281,364.5938 Q539.5156,362.9375 539.5156,359.8125 Q539.5156,356.6875 540.8281,355.0313 Q542.1563,353.375 544.6563,353.375 Q545.3594,353.375 546,353.5313 Q546.6563,353.6875 547.2188,353.9844 L547.2188,356.7031 Q546.5938,356.125 546,355.8594 Q545.4063,355.5781 544.7813,355.5781 Q543.4375,355.5781 542.75,356.6563 Q542.0625,357.7188 542.0625,359.8125 Q542.0625,361.9063 542.75,362.9844 Q543.4375,364.0469 544.7813,364.0469 Q545.4063,364.0469 546,363.7813 Q546.5938,363.5 547.2188,362.9219 L547.2188,365.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="564.75" y="364.1543">gui::CustomItem1</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="376" y2="376"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="708.5" y1="384" y2="384"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="201" x="502.5" y="398.2104">void accept(gui::GuiVisitor &visitor)</text><!--class gui::CustomItem2--><rect fill="#FEFECE" filter="url(#f14eszahge7obk)" height="48" id="gui::CustomItem2" style="stroke: #A80036; stroke-width: 1.5;" width="141" x="744.5" y="350.5"/><ellipse cx="759.5" cy="366.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M762.4688,372.1406 Q761.8906,372.4375 761.25,372.5781 Q760.6094,372.7344 759.9063,372.7344 Q757.4063,372.7344 756.0781,371.0938 Q754.7656,369.4375 754.7656,366.3125 Q754.7656,363.1875 756.0781,361.5313 Q757.4063,359.875 759.9063,359.875 Q760.6094,359.875 761.25,360.0313 Q761.9063,360.1875 762.4688,360.4844 L762.4688,363.2031 Q761.8438,362.625 761.25,362.3594 Q760.6563,362.0781 760.0313,362.0781 Q758.6875,362.0781 758,363.1563 Q757.3125,364.2188 757.3125,366.3125 Q757.3125,368.4063 758,369.4844 Q758.6875,370.5469 760.0313,370.5469 Q760.6563,370.5469 761.25,370.2813 Q761.8438,370 762.4688,369.4219 L762.4688,372.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="773.5" y="370.6543">gui::CustomItem2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="745.5" x2="884.5" y1="382.5" y2="382.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="745.5" x2="884.5" y1="390.5" y2="390.5"/><!--link gui::GuiVisitor to gui::ConcreteVisitor1--><path d="M182.15,132.97 C171.49,147.36 160.44,162.28 150.31,175.95 " fill="none" id="gui::GuiVisitor-gui::ConcreteVisitor1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="176.87,128.34,194.4,116.44,188.12,136.67,176.87,128.34" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::GuiVisitor to gui::ConcreteVisitor2--><path d="M285.42,132.97 C296,147.36 306.96,162.28 317.01,175.95 " fill="none" id="gui::GuiVisitor-gui::ConcreteVisitor2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="279.48,136.7,273.27,116.44,290.76,128.41,279.48,136.7" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::Item to gui::Rect--><path d="M603,112.77 C603,140.97 603,175.29 603,199.3 " fill="none" id="gui::Item-gui::Rect" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="596,112.68,603,92.68,610,112.68,596,112.68" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::Rect to gui::Text--><path d="M534.14,270.57 C493.81,293.74 443.7,322.53 406.75,343.77 " fill="none" id="gui::Rect-gui::Text" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="530.79,264.42,551.61,260.53,537.76,276.56,530.79,264.42" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::Rect to gui::CustomItem1--><path d="M603,280.64 C603,301.59 603,325.3 603,343.52 " fill="none" id="gui::Rect-gui::CustomItem1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="596,280.53,603,260.53,610,280.53,596,280.53" style="stroke: #A80036; stroke-width: 1.0;"/><!--link gui::Rect to gui::CustomItem2--><path d="M663.58,271.72 C701.5,297.21 748.98,329.12 780.56,350.35 " fill="none" id="gui::Rect-gui::CustomItem2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="659.62,277.49,646.93,260.53,667.43,265.87,659.62,277.49" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
abstract class gui::GuiVisitor
{
void visit(gui::Item &item)
void visit(gui::Rect &item)
void visit(gui::Text &item)
... visit overloads ...
void visit(gui::CustomItem2 &item)
}
class gui::ConcreteVisitor1
{
void visit(gui::Item &item)
void visit(gui::Rect &item)
void visit(gui::Text &item)
... visit overloads ...
void visit(gui::CustomItem2 &item)
}
class gui::ConcreteVisitor2
{
void visit(gui::Item &item)
void visit(gui::Rect &item)
void visit(gui::Text &item)
... visit overloads ...
void visit(gui::CustomItem2 &item)
}
gui::GuiVisitor <|- - gui::ConcreteVisitor1
gui::GuiVisitor <|- - gui::ConcreteVisitor2
class gui::Item
{
void accept(gui::GuiVisitor &visitor)
}
class gui::Rect
{
void accept(gui::GuiVisitor &visitor)
}
class gui::Text
{
void accept(gui::GuiVisitor &visitor)
}
class gui::CustomItem1
{
void accept(gui::GuiVisitor &visitor)
}
class gui::CustomItem2
{
}
gui::Item <|- - gui::Rect
gui::Rect <|- - gui::Text
gui::Rect <|- - gui::CustomItem1
gui::Rect <|- - gui::CustomItem2
@enduml
PlantUML version 1.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
Operating System: Linux
OS Version: 5.4.0-56-generic
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>