format 58
"Control" // ProcessingLayer::Control
  revision 9
  modified_by 5 "hiv"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
  //collaboration diagram settings
  show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default show_stereotype_properties default
  //activity diagram settings
  package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
  show_infonote default drawing_language default show_stereotype_properties default
  
  comment "Command handling, Proc-Layer dispatcher, controller and administrative facilities"
  classview 128389 "Controller Workings"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
    //collaboration diagram settings
    show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default show_stereotype_properties default
    //class settings
    //activity diagram settings
    package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
    show_infonote default drawing_language default show_stereotype_properties default
    classdiagram 128645 "Controller Entities"
      draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
      size A4
    end

    activity 128133 "configure Render"
      activitydiagram 129541 "the render configuration flow"
	package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
	show_infonote default drawing_language default show_stereotype_properties default
	size A4
      end

      parameter 128005 "Render Request" explicit_type ""
	unordered 
	in
	flow 128901 "<flow>"
	  on activityaction_ref 128389 // activity action determine Render Params
	end
      end

      activityaction 128133 "setup StateProxy"
	opaque_action
	flow 129157 "<flow>"
	  on activitynode_ref 128389 // decision
	end
      end

      activitynode 128389 decision "build necessary?"
	flow 129541 "<flow>"
	  on activityaction_ref 128517 // activity action build Render Engine
	    uml_guard "build necessary"
	end

	flow 129797 "<flow>"
	  on activitynode_ref 128773 // merge
	    uml_guard "reuse exiting Engine"
	end
      end

      activityaction 128005 "setup Build Params"
	opaque_action
      end

      activitynode 128773 merge ""
	flow 130053 "<flow>"
	  on activitynode_ref 128901 // activity_final
	end
      end

      expansionregion 128005 "determine Render Params"
	iterative
      end

      activityaction 128389 "determine Render Params"
	opaque_action
	associated_diagram activitydiagram_ref 129541 // the render configuration flow
	flow 129029 "<flow>"
	  on activityaction_ref 128133 // activity action setup StateProxy
	end
      end

      activityaction 128517 "build Render Engine"
	opaque_action
	flow 129669 "<flow>"
	  on activitynode_ref 128773 // merge
	end
      end

      activitynode 128901 activity_final ""
      end
    end

    class 130309 "ControllerFacade"
      visibility public stereotype "boundary"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings."
    end

    class 130437 "PathManager"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)"
      operation 128261 "buildProcessor"
	public return_type class_ref 131461 // RenderGraph
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
	
	
      end
    end

    class 130949 "RenderState"
      visibility protected 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Encapsulates the logic used to get a \"current render process\" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless."
      operation 128389 "getStateProxy"
	public return_type class_ref 132741 // State
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
	
	
      end
    end

    class 145413 "STypeManager"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end
  end

  classview 130693 "Command Handling"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
    //collaboration diagram settings
    show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default show_stereotype_properties default
    //class settings
    //activity diagram settings
    package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
    show_infonote default drawing_language default show_stereotype_properties default
    classdiagram 134021 "Command structure"
      draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
      size A4
    end

    class 148485 "Command"
      visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      php_decl "${comment}${visibility}interface ${name} {
${members}}
"
      python_2_2 python_decl ""
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Key abstraction for all proc/edit operations and UNDO management"
      attribute 132613 "ID"
	const_attribute public explicit_type ""
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 132741 "name"
	const_attribute public explicit_type "Symbol"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 132869 "do"
	public type class_ref 148741 // Mutation
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 132997 "undo"
	public type class_ref 148869 // UndoMutation
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 133125 "closure"
	private type class_ref 148997 // CmdClosure
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      operation 137733 "execute"
	public explicit_return_type "void"
	nparams 1
	  param in name "context" explicit_type "HandlingPattern"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
	
	
      end

      classrelation 172805 // <unidirectional association>
	relation 162821 --->
	  stereotype "has_a"
	  a role_name "" multiplicity "1" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 172805 // <unidirectional association>
	  b multiplicity "1" parent class_ref 148997 // CmdClosure
      end

      classrelation 173189 // <unidirectional association>
	relation 163205 --->
	  stereotype "has_a"
	  a role_name "" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 173189 // <unidirectional association>
	  b parent class_ref 148741 // Mutation
      end

      classrelation 173317 // <unidirectional association>
	relation 163333 --->
	  a role_name "" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 173317 // <unidirectional association>
	  b parent class_ref 148869 // UndoMutation
      end

      classrelation 173573 // <dependency>
	relation 163589 -_->
	  stereotype "invokes"
	  a package
	    cpp default "#include in source"
	    classrelation_ref 173573 // <dependency>
	  b parent class_ref 148613 // HandlingPattern
      end
    end

    class 148613 "HandlingPattern"
      abstract visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 173701 // <dependency>
	relation 163717 -_->
	  stereotype "involves"
	  a package
	    cpp default "#include in source"
	    classrelation_ref 173701 // <dependency>
	  b parent class_ref 141957 // ProcDispatcher
      end
    end

    class 148741 "Mutation"
      visibility package stereotype "func"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 148869 "UndoMutation"
      visibility package stereotype "func"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 171909 // <generalisation>
	relation 161925 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 171909 // <generalisation>
	  b parent class_ref 148741 // Mutation
      end

      classrelation 172933 // capture (<unidirectional association>)
	relation 162949 --->
	  a role_name "capture" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 172933 // capture (<unidirectional association>)
	  b parent class_ref 148741 // Mutation
      end

      classrelation 173061 // undoOp (<unidirectional association>)
	relation 163077 --->
	  a role_name "undoOp" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 173061 // undoOp (<unidirectional association>)
	  b parent class_ref 148741 // Mutation
      end
    end

    class 148997 "CmdClosure"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 149125 "DoSync"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 172037 // <generalisation>
	relation 162053 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 172037 // <generalisation>
	  b parent class_ref 148613 // HandlingPattern
      end
    end

    class 149253 "DoAsync"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 172165 // <generalisation>
	relation 162181 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 172165 // <generalisation>
	  b parent class_ref 148613 // HandlingPattern
      end
    end

    class 149381 "UndoSync"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 172293 // <generalisation>
	relation 162309 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 172293 // <generalisation>
	  b parent class_ref 148613 // HandlingPattern
      end
    end

    class 149509 "RedoLast"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 172421 // <generalisation>
	relation 162437 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 172421 // <generalisation>
	  b parent class_ref 148613 // HandlingPattern
      end
    end

    class 149637 "ParamAccessor"
      visibility package 
      nformals 1
      formal name "TY" type "class" explicit_default_value ""
        explicit_extends ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 141957 "ProcDispatcher"
      visibility package stereotype "control"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 150789 "Closure"
      visibility package 
      nformals 1
      formal name "SIG" type "class" explicit_default_value ""
        explicit_extends ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 174853 // <generalisation>
	relation 164869 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 174853 // <generalisation>
	  b parent class_ref 148997 // CmdClosure
      end

      classrelation 175109 // params (<directional composition>)
	relation 165125 *-->
	  stereotype "tuple"
	  a role_name "params" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 175109 // params (<directional composition>)
	  b multiplicity "*" parent class_ref 149637 // ParamAccessor
      end
    end

    class 150917 "ArgumentHolder"
      visibility package 
      nformals 1
      formal name "SIG" type "class" explicit_default_value ""
        explicit_extends ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 175237 // <generalisation>
	relation 165253 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 175237 // <generalisation>
	  b parent class_ref 148997 // CmdClosure
      end

      classrelation 175493 // arguments (<unidirectional association>)
	relation 165509 --->
	  stereotype "manages"
	  a role_name "arguments" multiplicity "1" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value};
"
	    classrelation_ref 175493 // arguments (<unidirectional association>)
	  b multiplicity "1" parent class_ref 150789 // Closure
      end
    end

    state 128005 "Lifecycle"
      stereotype "machine"
      statediagram 135173 "Command lifecycle"
	package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition yes draw_all_relations default shadow default
	show_activities default region_horizontally default drawing_language default show_stereotype_properties default
	size A4
      end

      pseudostate 128005 entry_point "ID"
	transition 128901 "<transition>"
	  on stateaction_ref 128005
	  external 
	end
      end

      stateaction 128005
	uml "fetch def"
	comment "try to fetch existing definition"
	transition 128773 "<transition>"
	  on pseudostate_ref 128133 // choice
	  external 
	end
      end

      state 128133 "scratch"
	transition 128261 "<transition>"
	  on stateaction_ref 128133
	  external 
	end
      end

      stateaction 128133
	uml "def DO"
	transition 128389 "<transition>"
	  on pseudostate_ref 128261 // fork
	  external 
	end

	transition 129029 "<transition>"
	  on stateaction_ref 128261
	  external 
	end

	transition 129157 "<transition>"
	  on stateaction_ref 128517
	  external 
	end
      end

      stateaction 128261
	uml "def CAP"
	transition 129285 "<transition>"
	  on stateaction_ref 128389
	  external 
	end
      end

      stateaction 128389
	uml "def UNDO"
	transition 129541 "<transition>"
	  on state_ref 128261 // CmdDef
	  external 
	end
      end

      stateaction 128517
	uml "def UNDO"
	transition 129413 "<transition>"
	  on stateaction_ref 128645
	  external 
	end
      end

      stateaction 128645
	uml "def CAP"
	transition 129669 "<transition>"
	  on state_ref 128261 // CmdDef
	  external 
	end
      end

      state 128261 "CmdDef"
	transition 129797 "<transition>"
	  on stateaction_ref 128773
	  external 
	end
      end

      stateaction 128773
	uml "bind"
	transition 129925 "<transition>"
	  on state_ref 128389 // Command
	  external 
	end
      end

      state 128389 "Command"
	transition 130053 "<transition>"
	  on stateaction_ref 129029
	  external 
	end
      end

      stateaction 129029
	stereotype "send-signal"
	uml "exec pattern"
	transition 130181 "<transition>"
	  on state_ref 128517 // undo-able
	  external 
	end
      end

      state 128517 "undo-able"
	transition 130309 "<transition>"
	  on pseudostate_ref 128517 // exit_point
	  external 
	end

	transition 130437 "<transition>"
	  on stateaction_ref 129157
	  external 
	end

	transition 130693 "<transition>"
	  on stateaction_ref 129029
	  external 
	end
      end

      pseudostate 128133 choice 
	stereotype "try"
	transition 128005 "<transition>"
	  on state_ref 128133 // scratch
	    uml_expr "not found"
	  external 
	end

	transition 128133 "<transition>"
	  on state_ref 128261 // CmdDef
	    uml_expr "found"
	  external 
	end
      end

      pseudostate 128261 fork 
	transition 128517 "<transition>"
	  on stateaction_ref 128261
	  external 
	end

	transition 128645 "<transition>"
	  on stateaction_ref 128517
	  external 
	end
      end

      pseudostate 128389 fork 
      end

      pseudostate 128517 exit_point "done"
      end

      stateaction 129157
	stereotype "send-signal"
	uml "undo"
	transition 130565 "<transition>"
	  on state_ref 128517 // undo-able
	  external 
	end
      end
    end
  end
end
