format 40
"Builder" // ProcessingLayer::MObject::Builder
  revision 17
  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_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
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow 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
  //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
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow 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
  //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
  //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
  //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
  
  classview 128261 "Builder 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_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
    //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
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow 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
    //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
    //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
    
    collaborationdiagram 128517 "build process"
      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
      comment "This figure shows the process of building and starting a RenderEngine"
      size A4
    end

    activity 128005 "building the Engine"
      activitydiagram 129413 "build 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 no shadow default
	show_infonote default drawing_language default
	size A4
      end

      parameter 128645 "build Request" explicit_type ""
	unordered 
	in
	flow 130309 "<flow>"
	  on activityaction_ref 128645 // activity action configure Tools
	end
      end

      activityaction 128645 "configure Tools"
	opaque_action
	flow 130821 "<flow>"
	  on activitynode_ref 129029 // fork
	end
      end

      expansionregion 128133 "establish partitioning"
	iterative
	activityaction 128773 "define segment"
	  opaque_action
	  pin 128133 "inFixture" explicit_type ""
	    unordered 
	    in
	  end

	  flow 130693 "<flow>"
	    on expansionnode_ref 128133 // segments
	  end
	end

	expansionnode 128005 "segment Tool"
	   explicit_type ""
	  unordered is_control
	  flow 130565 "<flow>"
	    on activityaction_ref 128773 // activity action define segment
	  end
	end

	expansionnode 128133 "segments"
	   explicit_type ""
	  unordered is_control
	end
      end

      activityobject 128005 "Fixture"
	 explicit_type ""
	unordered 
	simplerelation 128389
	  -_->
	    on activity_ref 128005 // building the Engine
	end

	flow 130181 "<flow>"
	  on pin_ref 128133 // inFixture
	end

	flow 131717 "<flow>"
	  on pin_ref 128133 // inFixture
	end
      end

      activitynode 129029 fork ""
	flow 130949 "<flow>"
	  on expansionnode_ref 128005 // segment Tool
	end

	flow 131077 "<flow>"
	  on expansionnode_ref 128261 // build Tool
	end
      end

      expansionregion 128261 "build Processors"
	iterative
	expansionnode 128261 "build Tool"
	   explicit_type ""
	  unordered is_control
	  flow 131205 "<flow>"
	    on activityaction_ref 128901 // activity action create ProcNode
	  end
	end

	expansionnode 128389 "segments"
	   explicit_type ""
	  unordered is_control
	  flow 131333 "<flow>"
	    on activityaction_ref 128901 // activity action create ProcNode
	  end
	end

	activityaction 128901 "create ProcNode"
	  opaque_action
	  flow 131461 "<flow>"
	    on activityaction_ref 129029 // activity action connect
	  end
	end

	activityaction 129029 "connect"
	  opaque_action
	  flow 131845 "<flow>"
	    on expansionnode_ref 128517 // complete Render Engine
	  end
	end

	expansionnode 128517 "complete Render Engine"
	   explicit_type ""
	  unordered is_control
	  flow 131973 "<flow>"
	    on activitynode_ref 129157 // activity_final
	  end
	end
      end

      activitynode 129157 activity_final ""
      end
    end

    classdiagram 129285 "Builder Entities"
      draw_all_relations default hide_attributes default hide_operations default show_members_full_definition yes show_members_visibility default show_members_stereotype default show_parameter_dir no 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
      size A4
    end

    class 130565 "BuilderFacade"
      visibility public stereotype "boundary"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Provides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade"
      operation 128517 "buildEngine"
	public return_type class_ref 131333 // RenderEngine
	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}
}

"
	
	
	comment "Main Operation of the Builder: create a render engine for a given part of the timeline"
      end
    end

    class 130693 "ToolFactory"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 128773 "configure"
	public return_type class_ref 134149 // BuilderTool
	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

      classrelation 137221 // <dependency>
	relation 135685 -_->
	  a package
	    cpp default "#include in source"
	    classrelation_ref 137221 // <dependency>
	  b multiplicity "" parent class_ref 134149 // BuilderTool
      end
    end

    class 130821 "ConManager"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Connection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal \"data pull\" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session"
      operation 129029 "getConnection"
	public explicit_return_type "int"
	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}
}

"
	
	
	comment "TODO"
      end
    end

    class 131077 "Assembler"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "This is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects"
      operation 128901 "build"
	public return_type class_ref 131333 // RenderEngine
	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 132741 "State"
      abstract visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      classrelation 135941 // currFrame (<unidirectional association>)
	relation 134533 --->
	  stereotype "vector"
	  a role_name "currFrame" multiplicity "" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 135941 // currFrame (<unidirectional association>)
	  b multiplicity "1" parent class_ref 133253 // Frame
      end

      operation 135813 "fetch"
	public explicit_return_type ""
	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

      operation 135941 "allocateBuffer"
	public explicit_return_type ""
	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

      operation 136197 "releaseBuffer"
	public explicit_return_type ""
	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

      operation 136325 "isCalculated"
	public explicit_return_type ""
	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 134021 "Buildable"
      abstract visibility public stereotype "interface"
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      operation 129669 "apply"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "providedTool" type class_ref 134149 // BuilderTool
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	
	
      end

      classrelation 146437 // <generalisation>
	relation 144261 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 146437 // <generalisation>
	  b multiplicity "" parent class_ref 140165 // Visitable
      end
    end

    class 134149 "BuilderTool"
      abstract visibility public stereotype "interface"
      nactuals 1
      actual class class_ref 140293 // Applicable
        rank 0 explicit_value ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
      idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
      explicit_switch_type ""
      
      comment "Used according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes"
      operation 129797 "treat"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "mElement" type class_ref 134021 // Buildable
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	
	
	comment "This operation is to be overloaded for the specific MObject subclasses to be treated."
      end

      classrelation 146565 // <generalisation>
	relation 144389 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 146565 // <generalisation>
	  b multiplicity "" parent class_ref 140037 // Tool
      end

      classrelation 146693 // <generalisation>
	relation 144517 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 146693 // <generalisation>
	  b multiplicity "" parent class_ref 140293 // Applicable
      end
    end

    class 134277 "SegmentationTool"
      visibility package 
      nactuals 1
      actual class class_ref 140293 // Applicable
        rank 0 explicit_value ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. \"Constant\" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections."
      classrelation 137605 // <realization>
	relation 135941 -_-|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 137605 // <realization>
	  b multiplicity "" parent class_ref 134149 // BuilderTool
      end

      operation 129925 "treat"
	public explicit_return_type "void"
	nparams 1
	  param in name "something" type class_ref 134021 // Buildable
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      operation 130181 "treat"
	public explicit_return_type "void"
	nparams 1
	  param in name "clip" type class_ref 128901 // Clip
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      operation 130053 "treat"
	public explicit_return_type "void"
	nparams 1
	  param in name "effect" type class_ref 129029 // Effect
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      classrelation 139013 // segments (<directional aggregation by value>)
	relation 137221 *-->
	  stereotype "list"
	  a role_name "segments" multiplicity "*" protected
	    comment "the partitioning of the Timeline to be created by this tool."
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 139013 // segments (<directional aggregation by value>)
	  b multiplicity "" parent class_ref 135173 // Segment
      end

      classrelation 146821 // <generalisation>
	relation 144645 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 146821 // <generalisation>
	  b multiplicity "" parent class_ref 140293 // Applicable
      end
    end

    class 134405 "NodeCreatorTool"
      visibility package 
      nactuals 1
      actual class class_ref 140293 // Applicable
        rank 0 explicit_value ""
      cpp_decl "${comment}${template}class ${name}${inherit}
  {
${members}  };
${inlines}
"
      java_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "This Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render."
      classrelation 137733 // <realization>
	relation 136069 -_-|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 137733 // <realization>
	  b multiplicity "" parent class_ref 134149 // BuilderTool
      end

      operation 130309 "treat"
	public explicit_return_type "void"
	nparams 1
	  param inout name "something" type class_ref 134021 // Buildable
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      operation 130437 "treat"
	public explicit_return_type "void"
	nparams 1
	  param inout name "clip" type class_ref 128901 // Clip
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      operation 130565 "treat"
	public explicit_return_type "void"
	nparams 1
	  param inout name "effect" type class_ref 129029 // Effect
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      operation 130693 "treat"
	public explicit_return_type "void"
	nparams 1
	  param inout name "auto" type class_ref 129925 // Auto
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};"
	cpp_def "${comment}${inline}${type}
${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl}
{
  ${body}
}

"
	
	
      end

      attribute 129797 "proc"
	protected type class_ref 131461 // Processor
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	idl_decl ""
	comment "holds the Processor (Render Engine Element) to be built by the current build step"
      end

      classrelation 146949 // <generalisation>
	relation 144773 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 146949 // <generalisation>
	  b multiplicity "" parent class_ref 140293 // Applicable
      end
    end
  end
end
