format 58
"mechanics" // trunk::src::mechanics
  revision 1
  modified_by 22 "zolee"
  // 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
  
  classview 129942 "mechanics"
    //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
    class 152086 "MechanicsDocument"
      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 "*
@author David Saxton
"
      classrelation 289302 // <generalisation>
	relation 289302 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 289302 // <generalisation>
	  b parent class_ref 151190 // ItemDocument
      end

      extra_member 173718 "Q_OBJECT"
	
	cpp "  Q_OBJECT" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 734998 "MechanicsDocument"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "caption" explicit_type "QString"
	  param in name "name" explicit_type "char"
	    defaultvalue "0 "
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} * ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}, const ${t1} * ${p1}${)}
	: ItemDocument( caption, name )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 735126 "~MechanicsDocument"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 735254 "createView"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 157206 // View
	nparams 3
	  param inout name "viewContainer" type class_ref 157334 // ViewContainer
	  param in name "viewAreaId" type class_ref 151446 // uint
	  param in name "name" explicit_type "char"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} * ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 735382 "isValidItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "itemId" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 735510 "isValidItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 735638 "deleteSelection"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 735766 "copy"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 735894 "selectAll"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 736022 "selectList"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 152214 // ItemGroup
	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 736150 "mechanicsItemWithID"
	preserve_cpp_body_indent public return_type class_ref 152598 // MechanicsItem
	nparams 1
	  param in name "id" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 736278 "addItem"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 151702 // Item
	nparams 3
	  param in name "id" explicit_type "QString"
	  param in name "p" explicit_type "QPoint"
	  param in name "newItem" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 736406 "appendDeleteList"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "qcanvasItem" type class_ref 145174 // QCanvasItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Adds a QCanvasItem to the delete list to be deleted, when
	 * flushDeleteList() is called
	 "
      end

      operation 736534 "flushDeleteList"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 "*
	 * Permantly deletes all items that have been added to the delete list with
	 * the appendDeleteList( QCanvasItem *qcanvasItem ) function.
	 "
      end

      operation 736662 "registerItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param inout name "qcanvasItem" type class_ref 145174 // QCanvasItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Register an item with the ICNDocument.
	 "
      end

      classrelation 289430 // m_selectList (<unidirectional association>)
	relation 289430 --->
	  a role_name "m_selectList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 289430 // m_selectList (<unidirectional association>)
	  b parent class_ref 152470 // MechanicsGroup
      end

      classrelation 289558 // m_mechanicsSimulation (<unidirectional association>)
	relation 289558 --->
	  a role_name "m_mechanicsSimulation" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 289558 // m_mechanicsSimulation (<unidirectional association>)
	  b parent class_ref 224150 // MechanicsSimulation
      end
    end

    class 152470 "MechanicsGroup"
      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 "*
@author David Saxton
"
      classrelation 289686 // <generalisation>
	relation 289686 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 289686 // <generalisation>
	  b parent class_ref 152214 // ItemGroup
      end

      extra_member 173846 "Q_OBJECT"
	
	cpp "  Q_OBJECT" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 736790 "MechanicsGroup"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	  param in name "name" explicit_type "char"
	    defaultvalue "0"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, const ${t1} * ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, const ${t1} * ${p1}${)}
	: ItemGroup( mechanicsDocument, name )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 736918 "~MechanicsGroup"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 737046 "toplevelMechItemList"
	preserve_cpp_body_indent const public return_type class_ref 224022 // MechanicsItemList
	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 "*
	 * Returns a list of top-level mechanics items only
	 "
      end

      operation 737174 "setSelectionMode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "sm" type class_ref 151446 // uint
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Sets the selection mode of all MechanicsItems in the group
	 "
      end

      operation 737302 "setRaised"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "isRaised" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * \"Raises\" (increases the z value of) the selected group of items
	 "
      end

      operation 737430 "removeChildren"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "item" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Removes all the children of the given item from the group
	 "
      end

      operation 737558 "addItem"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 737686 "removeItem"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 737814 "addQCanvasItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 145174 // QCanvasItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 737942 "contains"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 145174 // QCanvasItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 738070 "count"
	const cpp_virtual cpp_inline public return_type class_ref 151446 // uint
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return itemCount(); };
"
	
	
	
	
      end

      operation 738198 "deleteAllItems"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 738326 "mergeGroup"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "itemGroup" type class_ref 152214 // ItemGroup
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 738454 "removeAllItems"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 738582 "removeQCanvasItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "item" type class_ref 145174 // QCanvasItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 738710 "setItems"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "list" type class_ref 145430 // QCanvasItemList
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 738838 "setSelected"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "sel" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Sets the selected state of all items in the group
	 "
      end

      operation 738966 "extractMechanicsItems"
	preserve_cpp_body_indent const public return_type class_ref 224022 // MechanicsItemList
	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 "*
	 * Extracts the mechanics items from the item list
	 "
      end

      operation 739094 "updateInfo"
	preserve_cpp_body_indent protected explicit_return_type "void"
	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

      attribute 348822 "b_isRaised"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 152598 "MechanicsItem"
      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 "*
@author David Saxton
"
      classrelation 289942 // <generalisation>
	relation 289942 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 289942 // <generalisation>
	  b parent class_ref 151702 // Item
      end

      extra_member 173974 "Q_OBJECT"
	
	cpp "  Q_OBJECT" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 741270 "MechanicsItem"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	  param in name "newItem" explicit_type "bool"
	  param in name "id" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} & ${p2}${v2}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} & ${p2}${)}
	: Item( mechanicsDocument, newItem, id )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 741398 "~MechanicsItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      class 224662 "SelectionMode"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum ${name} {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 349846 "sm_move"
	  public type class_ref 224662 // SelectionMode
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 349974 "sm_resize"
	  public type class_ref 224662 // SelectionMode
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 350102 "sm_rotate"
	  public type class_ref 224662 // SelectionMode
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 741526 "setSelectionMode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "sm" type class_ref 224662 // SelectionMode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Sets the selection mode (sm_resize or sm_rotate). Note that setSelected
	 * also needs to be called to select the item.
	 "
      end

      operation 741654 "setSelected"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "yes" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 741782 "selectionMode"
	const cpp_inline public return_type class_ref 224662 // SelectionMode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_selectionMode; };
"
	
	
	
	
	comment "*
	 * @returns the selection mode
	 "
      end

      operation 741910 "moveBy"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 2
	  param in name "dx" explicit_type "double"
	  param in name "dy" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Move the MechanicsItem by the given amount
	 "
      end

      operation 742038 "absolutePosition"
	preserve_cpp_body_indent const public return_type class_ref 224534 // PositionInfo
	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 "*
	 * Returns the absolute position on the canvas
	 "
      end

      operation 742166 "relativePosition"
	const cpp_inline public return_type class_ref 224534 // PositionInfo
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_relativePosition; };
"
	
	
	
	
	comment "*
	 * Returns the position relative to the parent item (or the absolute
	 * position if there is no parent item)
	 "
      end

      operation 742294 "mechanicsInfo"
	cpp_inline public return_type class_ref 224278 // MechanicsInfo
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return &m_mechanicsInfo; };
"
	
	
	
	
	comment "*
	 * Returns the mechanics info for this item (so not taking into account that
	 * of attached children)
	 "
      end

      operation 742422 "mechanicsInfoCombined"
	cpp_inline public return_type class_ref 224406 // CombinedMechanicsInfo
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return &m_mechanicsInfoCombined; };
"
	
	
	
	
	comment "*
	 * Returns the combined mechanics info for this item (which takes into
	 * account that of attached children).
	 "
      end

      operation 742550 "maxInnerRectangle"
	preserve_cpp_body_indent const public explicit_return_type "QRect"
	nparams 1
	  param in name "outerRect" explicit_type "QRect"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Returns the rectangle that can legitimately fit inside the given bounding
	 * rectangle, given this items current rotation. Legitimately means that
	 * whether this item is allowed to be distorted, inverted, resized, etc.
	 "
      end

      operation 742678 "itemData"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 158486 // ItemData
	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 742806 "mousePressEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "eventInfo" type class_ref 151318 // EventInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 742934 "mouseReleaseEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "eventInfo" type class_ref 151318 // EventInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 743062 "mouseDoubleClickEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "eventInfo" type class_ref 151318 // EventInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 743190 "mouseMoveEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "eventInfo" type class_ref 151318 // EventInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 743318 "wheelEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "eventInfo" type class_ref 151318 // EventInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 743446 "enterEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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 743574 "leaveEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	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

      extra_member 174102 "slots"
	
	cpp "  public slots:" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 743702 "rotateBy"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "dtheta" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Rotate the item by the given amount (in radians)
	 "
      end

      operation 743830 "parentMoved"
	preserve_cpp_body_indent public explicit_return_type "void"
	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

      extra_member 174230 "signals"
	
	cpp "  signals:" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 743958 "moved"
	public explicit_return_type "void"
	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 "*
	 * Emitted when this item moves (translates or rotates)
	 "
      end

      extra_member 174358 "slots"
	
	cpp "  protected slots:" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 744086 "updateMechanicsInfoCombined"
	preserve_cpp_body_indent protected explicit_return_type "void"
	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 "*
	 * Recalculate the combined mechanics info (e.g. when mass is changed, or child added)
	 "
      end

      operation 744214 "reparented"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 2
	  param inout name "oldItem" type class_ref 151702 // Item
	  param inout name "newItem" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 744342 "childAdded"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 1
	  param inout name "child" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 744470 "childRemoved"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 1
	  param inout name "child" type class_ref 151702 // Item
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 744598 "itemResized"
	cpp_virtual cpp_inline protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
	comment "*
	 * Called when this item is resized, so that sub classes can do whatever
	 "
      end

      operation 744726 "initPainter"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param inout name "p" explicit_type "QPainter"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Sets the correct orientation on the painter
	 "
      end

      operation 744854 "deinitPainter"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param inout name "p" explicit_type "QPainter"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * *Must* be called after calling initPainter, if initPainter was called
	 "
      end

      operation 744982 "dataChanged"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	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 745110 "itemPointsChanged"
	cpp_virtual cpp_inline protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { updateCanvasPoints(); };
"
	
	
	
	
      end

      operation 745238 "updateCanvasPoints"
	preserve_cpp_body_indent protected explicit_return_type "void"
	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 "*
	 * Calculates the setPoints required from the current m_itemPoints and the
	 * current position / angle
	 "
      end

      classrelation 290070 // p_mechanicsDocument (<unidirectional association>)
	relation 290070 --->
	  a role_name "p_mechanicsDocument" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 290070 // p_mechanicsDocument (<unidirectional association>)
	  b parent class_ref 152086 // MechanicsDocument
      end

      classrelation 290198 // m_relativePosition (<directional composition>)
	relation 290198 *-->
	  a role_name "m_relativePosition" protected
	    comment " Absolution position if not attached to a parent item, or otherwise relative to parent item"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290198 // m_relativePosition (<directional composition>)
	  b parent class_ref 224534 // PositionInfo
      end

      classrelation 290326 // m_mechanicsInfo (<directional composition>)
	relation 290326 *-->
	  a role_name "m_mechanicsInfo" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290326 // m_mechanicsInfo (<directional composition>)
	  b parent class_ref 224278 // MechanicsInfo
      end

      classrelation 290454 // m_mechanicsInfoCombined (<directional composition>)
	relation 290454 *-->
	  a role_name "m_mechanicsInfoCombined" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290454 // m_mechanicsInfoCombined (<directional composition>)
	  b parent class_ref 224406 // CombinedMechanicsInfo
      end

      classrelation 290582 // m_selectionMode (<directional composition>)
	relation 290582 *-->
	  a role_name "m_selectionMode" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290582 // m_selectionMode (<directional composition>)
	  b parent class_ref 224662 // SelectionMode
      end
    end

    class 183702 "MechanicsView"
      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 "*
@author David Saxton
"
      classrelation 291734 // <generalisation>
	relation 291734 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 291734 // <generalisation>
	  b parent class_ref 162838 // ItemView
      end

      extra_member 174742 "Q_OBJECT"
	
	cpp "  Q_OBJECT" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 747542 "MechanicsView"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	  param inout name "viewContainer" type class_ref 157334 // ViewContainer
	  param in name "viewAreaId" type class_ref 151446 // uint
	  param in name "name" explicit_type "char"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} ${p2}${v2}, const ${t3} * ${p3}${v3}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} ${p2}, const ${t3} * ${p3}${)}
	: ItemView( mechanicsDocument, viewContainer, viewAreaId, name )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 747670 "~MechanicsView"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 747798 "dragEnterEvent"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	nparams 1
	  param inout name "e" explicit_type "QDragEnterEvent"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 291862 // m_pMechanicsDocument (<unidirectional association>)
	relation 291862 --->
	  a role_name "m_pMechanicsDocument" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 291862 // m_pMechanicsDocument (<unidirectional association>)
	  b parent class_ref 152086 // MechanicsDocument
      end
    end

    class 223766 "ChassisCircular2"
      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 "*
@short Mechanics Framework, circular base, two wheels
@author David Saxton
"
      classrelation 288918 // <generalisation>
	relation 288918 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 288918 // <generalisation>
	  b parent class_ref 152598 // MechanicsItem
      end

      operation 734102 "ChassisCircular2"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	  param in name "newItem" explicit_type "bool"
	  param in name "id" explicit_type "char"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} * ${p2}${v2}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} * ${p2}${)}
	: MechanicsItem( mechanicsDocument, newItem, id ? id : \"chassis_circular_2\" )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 734230 "~ChassisCircular2"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 734358 "construct"
	class_operation preserve_cpp_body_indent public return_type class_ref 151702 // Item
	nparams 3
	  param inout name "itemDocument" type class_ref 151190 // ItemDocument
	  param in name "newItem" explicit_type "bool"
	  param in name "id" explicit_type "char"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} * ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 734486 "libraryItem"
	class_operation preserve_cpp_body_indent public return_type class_ref 172694 // LibraryItem
	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 734614 "advance"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "phase" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 734742 "itemResized"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "void"
	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 734870 "drawShape"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param inout name "p" explicit_type "QPainter"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 348310 "m_theta1"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Angle of rotation of wheel 1 (used for drawing)"
      end

      attribute 348438 "m_theta2"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Angle of rotation of wheel 1 (used for drawing)"
      end

      attribute 348566 "m_wheel1Pos"
	protected explicit_type "QRect"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Position of first wheel, with respect to top left of item"
      end

      attribute 348694 "m_wheel2Pos"
	protected explicit_type "QRect"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Position of second wheel, with respect to top left of item"
      end
    end

    class 223894 "MechItemList"
      visibility package stereotype "typedef" base_type class_ref 152598 // MechanicsItem
      cpp_decl "${comment}typedef QValueList<${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 289046 // <dependency>
	relation 289046 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 289046 // <dependency>
	  b parent class_ref 152598 // MechanicsItem
      end
    end

    class 224022 "MechanicsItemList"
      visibility package stereotype "typedef" base_type class_ref 152598 // MechanicsItem
      cpp_decl "${comment}typedef QValueList<${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 289174 // <dependency>
	relation 289174 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 289174 // <dependency>
	  b parent class_ref 152598 // MechanicsItem
      end
    end

    class 224150 "MechanicsSimulation"
      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 "*
@author David Saxton
"
      classrelation 290966 // <generalisation>
	relation 290966 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 290966 // <generalisation>
	  b parent class_ref 225046 // typedef49
      end

      extra_member 174486 "Q_OBJECT"
	
	cpp "  Q_OBJECT" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 745878 "MechanicsSimulation"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}
	: QObject(mechanicsDocument)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 746006 "~MechanicsSimulation"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 746134 "mechanicsDocument"
	const cpp_inline public return_type class_ref 152086 // MechanicsDocument
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_mechanicsDocument; };
"
	
	
	
	
      end

      extra_member 174614 "slots"
	
	cpp "  protected slots:" ""
	java ""
	php ""
	python ""
	idl ""
      end

      operation 746262 "slotAdvance"
	preserve_cpp_body_indent protected explicit_return_type "void"
	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 291094 // p_mechanicsDocument (<directional composition>)
	relation 291094 *-->
	  stereotype "QGuardedPtr"
	  a role_name "p_mechanicsDocument" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 291094 // p_mechanicsDocument (<directional composition>)
	  b parent class_ref 152086 // MechanicsDocument
      end

      attribute 350614 "m_advanceTmr"
	protected explicit_type "QTimer"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 224278 "MechanicsInfo"
      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 "*
@short Stores mass, moment of inertia
@author David Saxton
"
      operation 739222 "MechanicsInfo"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      attribute 348950 "mass"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Mass"
      end

      attribute 349078 "momentOfInertia"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Moment of inertia"
      end
    end

    class 224406 "CombinedMechanicsInfo"
      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 289814 // <generalisation>
	relation 289814 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 289814 // <generalisation>
	  b parent class_ref 224278 // MechanicsInfo
      end

      operation 739350 "CombinedMechanicsInfo"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}
	: MechanicsInfo()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 739478 "CombinedMechanicsInfo"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "info" type class_ref 224278 // MechanicsInfo
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}
	: MechanicsInfo(info)
${throw}{
${body}}
"
	
	
	
	
      end

      attribute 349206 "x"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " X coordinate of center of mass"
      end

      attribute 349334 "y"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Y coordinate of center of mass"
      end
    end

    class 224534 "PositionInfo"
      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 "*
@short Stores a position and orientation
@author David Saxton
"
      operation 739606 "PositionInfo"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 739734 "operator +"
	preserve_cpp_body_indent public return_type class_ref 224534 // PositionInfo
	nparams 1
	  param in name "info" type class_ref 224534 // PositionInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Adds together two positions: for this=PARENT +(CHILD), the new position
	 * is formed by translating this position by that of the CHILDs
	 * translation, and then rotating everything about the center of this item
	 "
      end

      operation 739862 "operator -"
	preserve_cpp_body_indent public return_type class_ref 224534 // PositionInfo
	nparams 1
	  param in name "info" type class_ref 224534 // PositionInfo
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Not quite the inverse of operator+. Subtracts the given position info
	 * as if it was applied before this current info.
	 "
      end

      operation 739990 "x"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_x; };
"
	
	
	
	
	comment "*
	 * x position (0 is left)
	 "
      end

      operation 740118 "y"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_y; };
"
	
	
	
	
	comment "*
	 * y position (0 is top)
	 "
      end

      operation 740246 "angle"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_angle; };
"
	
	
	
	
	comment "*
	 * Angle in radians, positive direction is anticlockwise
	 "
      end

      operation 740374 "setX"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "x" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_x = x; };
"
	
	
	
	
	comment "*
	 * Sets the x-position
	 "
      end

      operation 740502 "setY"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "y" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_y = y; };
"
	
	
	
	
	comment "*
	 * Sets the y-position
	 "
      end

      operation 740630 "setAngle"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "angle" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_angle = angle; };
"
	
	
	
	
	comment "*
	 * Sets the angle
	 "
      end

      operation 740758 "translate"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param in name "dx" explicit_type "double"
	  param in name "dy" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { m_x += dx; m_y += dy; };
"
	
	
	
	
	comment "*
	 * Adds (x,y) to the current position
	 "
      end

      operation 740886 "rotate"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "angle" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_angle += angle; };
"
	
	
	
	
	comment "*
	 * Rotates anticlockwise by the given amount (in radians)
	 "
      end

      operation 741014 "reset"
	preserve_cpp_body_indent public explicit_return_type "void"
	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 "*
	 * Resets the position to (0,0), and the orientation to 0
	 "
      end

      operation 741142 "rotateAboutPoint"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param in name "x" explicit_type "double"
	  param in name "y" explicit_type "double"
	  param in name "angle" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Rotates the current position about the given point through the given
	 * angle in radians anticlockwise. This will change the position and
	 * orientation.
	 "
      end

      attribute 349462 "m_x"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 349590 "m_y"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 349718 "m_angle"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 224790 "Vector2D"
      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 "*
@short 2 dimensional vector with associated length functions et al
@author David Saxton
"
      operation 745366 "Vector2D"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 745494 "length"
	preserve_cpp_body_indent const public explicit_return_type "double"
	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 745622 "lengthSquared"
	const cpp_inline public explicit_return_type "double"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return x*x + y*y; };
"
	
	
	
	
      end

      attribute 350230 "x"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 350358 "y"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 224918 "RigidBodyState"
      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 "*
@short State of a rigid body, in an inertial MechanicsDocument frame
@author David Saxton
"
      operation 745750 "RigidBodyState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      classrelation 290710 // linearMomentum (<directional composition>)
	relation 290710 *-->
	  a role_name "linearMomentum" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290710 // linearMomentum (<directional composition>)
	  b parent class_ref 224790 // Vector2D
      end

      attribute 350486 "angularMomentum"
	public explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 290838 // position (<directional composition>)
	relation 290838 *-->
	  a role_name "position" public
	    comment " Position of center of mass"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 290838 // position (<directional composition>)
	  b parent class_ref 224790 // Vector2D
      end
    end

    class 225046 "typedef49"
      visibility package stereotype "typedef" explicit_base_type "QObject"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 225174 "RigidBody"
      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 "*
Rigid body with mass, inertia, etc. Collection of mechanics items with
functionality for moving them about, rotating, etc. Only one mother-parent
(has no parent itself, all other items are descendents) allowed.
@short Rigid body, handles MechanicsItems
@author David Saxton
"
      operation 746390 "RigidBody"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "mechanicsDocument" type class_ref 152086 // MechanicsDocument
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 746518 "~RigidBody"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 746646 "advance"
	public explicit_return_type "void"
	nparams 2
	  param in name "phase" explicit_type "int"
	  param in name "delta" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * 
	 "
      end

      operation 746774 "addMechanicsItem"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param inout name "item" type class_ref 152598 // MechanicsItem
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Add the MechanicsItem to the entity.
	 * @returns true iff successful in adding
	 "
      end

      operation 746902 "overallParent"
	const cpp_inline public return_type class_ref 152598 // MechanicsItem
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return p_overallParent; };
"
	
	
	
	
	comment "*
	 * Pointer to the mother MechanicsItem.
	 "
      end

      operation 747030 "updateRigidBodyInfo"
	preserve_cpp_body_indent public explicit_return_type "void"
	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 "*
	 * Updates the mass and the moment of inertia info
	 "
      end

      operation 747158 "findOverallParent"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	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 "*
	 * Attempt to find the overall parent.
	 * @returns false iff unsucessful (including if there are no MechanicsItems present)
	 "
      end

      operation 747286 "moveBy"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param in name "dx" explicit_type "double"
	  param in name "dy" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Move the set of MechanicsItems by the given amount
	 "
      end

      operation 747414 "rotateBy"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "dtheta" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Rotate the set of MechanicsItems by the given amount about the center of
	 * mass.
	 * @param angle Rotate amount in radians
	 "
      end

      classrelation 291222 // m_mechanicsItemList (<directional composition>)
	relation 291222 *-->
	  a role_name "m_mechanicsItemList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 291222 // m_mechanicsItemList (<directional composition>)
	  b parent class_ref 224022 // MechanicsItemList
      end

      classrelation 291350 // p_overallParent (<unidirectional association>)
	relation 291350 --->
	  a role_name "p_overallParent" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 291350 // p_overallParent (<unidirectional association>)
	  b parent class_ref 152598 // MechanicsItem
      end

      classrelation 291478 // p_mechanicsDocument (<unidirectional association>)
	relation 291478 --->
	  a role_name "p_mechanicsDocument" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 291478 // p_mechanicsDocument (<unidirectional association>)
	  b parent class_ref 152086 // MechanicsDocument
      end

      classrelation 291606 // m_rigidBodyState (<directional composition>)
	relation 291606 *-->
	  a role_name "m_rigidBodyState" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 291606 // m_rigidBodyState (<directional composition>)
	  b parent class_ref 224918 // RigidBodyState
      end

      attribute 350742 "m_mass"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 350870 "m_momentOfInertia"
	protected explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end
  end

  deploymentview 130966 "mechanics"
    //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
    artifact 161174 "chassiscircular2"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 223766 // ChassisCircular2
      end
    end

    artifact 161302 "mechanicsdocument"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 223894 // MechItemList
	class_ref 224022 // MechanicsItemList
	class_ref 152086 // MechanicsDocument
      end
    end

    artifact 161430 "mechanicsgroup"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 152470 // MechanicsGroup
      end
    end

    artifact 161558 "mechanicsitem"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 224278 // MechanicsInfo
	class_ref 224406 // CombinedMechanicsInfo
	class_ref 224534 // PositionInfo
	class_ref 152598 // MechanicsItem
      end
    end

    artifact 161686 "mechanicssimulation"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 224790 // Vector2D
	class_ref 224918 // RigidBodyState
	class_ref 225046 // typedef49
	class_ref 224150 // MechanicsSimulation
	class_ref 225174 // RigidBody
      end
    end

    artifact 161814 "mechanicsview"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 183702 // MechanicsView
      end
    end
  end
end
