format 58
"electronics" // trunk::src::electronics
  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
  
  package_ref 130326 // simulation

  classview 130070 "electronics"
    //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 155414 "Component"
      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 Bass class for all electrical components
@author David Saxton
"
      classrelation 212246 // <generalisation>
	relation 212246 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 212246 // <generalisation>
	  b parent class_ref 148118 // CNItem
      end

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

      operation 470550 "Component"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param inout name "icnDocument" type class_ref 151958 // ICNDocument
	  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 "// Degrees per radian

${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} & ${p2}${)}
        : CNItem( icnDocument, newItem, id ),
        m_angleDegrees(0),
        b_flipped(false)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 470678 "~Component"
	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

      operation 470806 "createPin"
	preserve_cpp_body_indent public return_type class_ref 155670 // ECNode
	nparams 4
	  param in name "x" explicit_type "double"
	  param in name "y" explicit_type "double"
	  param in name "orientation" explicit_type "int"
	  param in name "name" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, const ${t3} & ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, const ${t3} & ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 470934 "voltageColor"
	class_operation preserve_cpp_body_indent public explicit_return_type "QColor"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// static

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Converts the voltage level to a colour - this is used in drawing
		 * wires and pins.
		 "
      end

      operation 471062 "voltageLength"
	class_operation preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// static

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * @return a value between 0.0 and 1.0, representing a scaled version of
		 * the absolute value of the voltage.
		 * @see voltageColor
		 "
      end

      operation 471190 "angleDegrees"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_angleDegrees; };
"
	
	
	
	
	comment "*
		 * Angle of orientation
		 "
      end

      operation 471318 "setAngleDegrees"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "degrees" 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}}
"
	
	
	
	
	comment "*
		 * Sets the angle (in degrees)
		 "
      end

      operation 471446 "flipped"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return b_flipped; };
"
	
	
	
	
	comment "*
		 * Whether or not the item is flipped
		 "
      end

      operation 471574 "setFlipped"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "flipped" 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 whether or not the item is flipped
		 "
      end

      operation 471702 "setNodalCurrents"
	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 "*
		 * After calculating nodal voltages, each component will be
		 * called to tell its nodes what the current flowing *into*
		 * the component is.
		 "
      end

      operation 471830 "circuitDocument"
	const cpp_inline public return_type class_ref 156950 // CircuitDocument
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pCircuitDocument; };
"
	
	
	
	
	comment "*
		 * @return pointer to the CircuitDocument that we're in.
		 "
      end

      operation 471958 "initElements"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "stage" type class_ref 151446 // uint
	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 472086 "finishedCreation"
	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 472214 "doesStepNonLogic"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment "*
		 * If reinherit (and use) the stepNonLogic function, then you must also
		 * reinherit this function so that it returns true. Else your component
		 * will not get called.
		 "
      end

      operation 472342 "stepNonLogic"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
      end

      operation 472470 "transMatrix"
	class_operation preserve_cpp_body_indent public explicit_return_type "QWMatrix"
	nparams 5
	  param in name "angleDegrees" explicit_type "int"
	  param in name "flipped" explicit_type "bool"
	  param in name "x" explicit_type "int"
	  param in name "y" explicit_type "int"
	  param in name "inverse" explicit_type "bool"
	    defaultvalue "false "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Returns the translation matrix used for painting et al
		 * @param orientation The orientation to use
		 * @param x x co-ordinate of the center of the object to be mapped
		 * @param y y co-ordinate of the center of the object to be mapped
		 * @param inverse If false, maps the unrotated item to a rotated one, else mapped->unmapped
		 "
      end

      operation 472598 "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}}
"
	
	
	
	
	comment "*
		 * @return Information about the component in an ItemData struct.
		 "
      end

      operation 472726 "restoreFromItemData"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "itemData" type class_ref 158486 // ItemData
	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 "*
		 * Restores the state of the component from the ItemData struct.
		 "
      end

      operation 472854 "createBJT"
	preserve_cpp_body_indent public return_type class_ref 186134 // BJT
	nparams 4
	  param inout name "cN" type class_ref 156822 // Pin
	  param inout name "bN" type class_ref 156822 // Pin
	  param inout name "eN" type class_ref 156822 // Pin
	  param in name "isNPN" explicit_type "bool"
	    defaultvalue "true "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 472982 "createBJT"
	preserve_cpp_body_indent public return_type class_ref 186134 // BJT
	nparams 4
	  param inout name "c" type class_ref 155670 // ECNode
	  param inout name "b" type class_ref 155670 // ECNode
	  param inout name "e" type class_ref 155670 // ECNode
	  param in name "isNPN" explicit_type "bool"
	    defaultvalue "true "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 473110 "createCapacitance"
	preserve_cpp_body_indent public return_type class_ref 186262 // Capacitance
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "capacitance" 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}}
"
	
	
	
	
      end

      operation 473238 "createCapacitance"
	preserve_cpp_body_indent public return_type class_ref 186262 // Capacitance
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "capacitance" 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}}
"
	
	
	
	
      end

      operation 473366 "createCCCS"
	preserve_cpp_body_indent public return_type class_ref 186390 // CCCS
	nparams 5
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param inout name "n2" type class_ref 156822 // Pin
	  param inout name "n3" type class_ref 156822 // Pin
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 473494 "createCCCS"
	preserve_cpp_body_indent public return_type class_ref 186390 // CCCS
	nparams 5
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param inout name "n2" type class_ref 155670 // ECNode
	  param inout name "n3" type class_ref 155670 // ECNode
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 473622 "createCCVS"
	preserve_cpp_body_indent public return_type class_ref 186518 // CCVS
	nparams 5
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param inout name "n2" type class_ref 156822 // Pin
	  param inout name "n3" type class_ref 156822 // Pin
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 473750 "createCCVS"
	preserve_cpp_body_indent public return_type class_ref 186518 // CCVS
	nparams 5
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param inout name "n2" type class_ref 155670 // ECNode
	  param inout name "n3" type class_ref 155670 // ECNode
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 473878 "createCurrentSignal"
	preserve_cpp_body_indent public return_type class_ref 186646 // CurrentSignal
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "current" 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}}
"
	
	
	
	
      end

      operation 474006 "createCurrentSignal"
	preserve_cpp_body_indent public return_type class_ref 186646 // CurrentSignal
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "current" 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}}
"
	
	
	
	
      end

      operation 474134 "createCurrentSource"
	preserve_cpp_body_indent public return_type class_ref 186774 // CurrentSource
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "current" 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}}
"
	
	
	
	
      end

      operation 474262 "createCurrentSource"
	preserve_cpp_body_indent public return_type class_ref 186774 // CurrentSource
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "current" 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}}
"
	
	
	
	
      end

      operation 474390 "createDiode"
	preserve_cpp_body_indent public return_type class_ref 186902 // Diode
	nparams 2
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	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 474518 "createDiode"
	preserve_cpp_body_indent public return_type class_ref 186902 // Diode
	nparams 2
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	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 474646 "createJFET"
	preserve_cpp_body_indent public return_type class_ref 187030 // JFET
	nparams 4
	  param inout name "D" type class_ref 156822 // Pin
	  param inout name "G" type class_ref 156822 // Pin
	  param inout name "S" type class_ref 156822 // Pin
	  param in name "JFET_type" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 474774 "createJFET"
	preserve_cpp_body_indent public return_type class_ref 187030 // JFET
	nparams 4
	  param inout name "D" type class_ref 155670 // ECNode
	  param inout name "G" type class_ref 155670 // ECNode
	  param inout name "S" type class_ref 155670 // ECNode
	  param in name "JFET_type" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 474902 "createInductance"
	preserve_cpp_body_indent public return_type class_ref 187158 // Inductance
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "inductance" 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}}
"
	
	
	
	
      end

      operation 475030 "createInductance"
	preserve_cpp_body_indent public return_type class_ref 187158 // Inductance
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "inductance" 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}}
"
	
	
	
	
      end

      operation 475158 "createLogicIn"
	preserve_cpp_body_indent public return_type class_ref 179990 // LogicIn
	nparams 1
	  param inout name "node" type class_ref 156822 // Pin
	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 475286 "createLogicIn"
	preserve_cpp_body_indent public return_type class_ref 179990 // LogicIn
	nparams 1
	  param inout name "node" type class_ref 155670 // ECNode
	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 475414 "createLogicOut"
	preserve_cpp_body_indent public return_type class_ref 180630 // LogicOut
	nparams 2
	  param inout name "node" type class_ref 156822 // Pin
	  param in name "isHigh" explicit_type "bool"
	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 475542 "createLogicOut"
	preserve_cpp_body_indent public return_type class_ref 180630 // LogicOut
	nparams 2
	  param inout name "node" type class_ref 155670 // ECNode
	  param in name "isHigh" explicit_type "bool"
	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 475670 "createMOSFET"
	preserve_cpp_body_indent public return_type class_ref 187286 // MOSFET
	nparams 5
	  param inout name "D" type class_ref 156822 // Pin
	  param inout name "G" type class_ref 156822 // Pin
	  param inout name "S" type class_ref 156822 // Pin
	  param inout name "B" type class_ref 156822 // Pin
	  param in name "MOSFET_type" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 475798 "createMOSFET"
	preserve_cpp_body_indent public return_type class_ref 187286 // MOSFET
	nparams 5
	  param inout name "D" type class_ref 155670 // ECNode
	  param inout name "G" type class_ref 155670 // ECNode
	  param inout name "S" type class_ref 155670 // ECNode
	  param inout name "B" type class_ref 155670 // ECNode
	  param in name "MOSFET_type" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 475926 "createOpAmp"
	preserve_cpp_body_indent public return_type class_ref 187414 // OpAmp
	nparams 3
	  param inout name "nonInverting" type class_ref 156822 // Pin
	  param inout name "inverting" type class_ref 156822 // Pin
	  param inout name "out" type class_ref 156822 // Pin
	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}}
"
	
	
	
	
      end

      operation 476054 "createOpAmp"
	preserve_cpp_body_indent public return_type class_ref 187414 // OpAmp
	nparams 3
	  param inout name "nonInverting" type class_ref 155670 // ECNode
	  param inout name "out" type class_ref 155670 // ECNode
	  param inout name "inverting" type class_ref 155670 // ECNode
	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}}
"
	
	
	
	
      end

      operation 476182 "createResistance"
	preserve_cpp_body_indent public return_type class_ref 187542 // Resistance
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "resistance" 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}}
"
	
	
	
	
      end

      operation 476310 "createResistance"
	preserve_cpp_body_indent public return_type class_ref 187542 // Resistance
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "resistance" 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}}
"
	
	
	
	
      end

      operation 476438 "createSwitch"
	preserve_cpp_body_indent public return_type class_ref 156310 // Switch
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "open" explicit_type "bool"
	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}}
"
	
	
	
	
      end

      operation 476566 "createSwitch"
	preserve_cpp_body_indent public return_type class_ref 156310 // Switch
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "open" explicit_type "bool"
	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}}
"
	
	
	
	
      end

      operation 476694 "createVCCS"
	preserve_cpp_body_indent public return_type class_ref 187670 // VCCS
	nparams 5
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param inout name "n2" type class_ref 156822 // Pin
	  param inout name "n3" type class_ref 156822 // Pin
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 476822 "createVCCS"
	preserve_cpp_body_indent public return_type class_ref 187670 // VCCS
	nparams 5
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param inout name "n2" type class_ref 155670 // ECNode
	  param inout name "n3" type class_ref 155670 // ECNode
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 476950 "createVCVS"
	preserve_cpp_body_indent public return_type class_ref 187798 // VCVS
	nparams 5
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param inout name "n2" type class_ref 156822 // Pin
	  param inout name "n3" type class_ref 156822 // Pin
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 477078 "createVCVS"
	preserve_cpp_body_indent public return_type class_ref 187798 // VCVS
	nparams 5
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param inout name "n2" type class_ref 155670 // ECNode
	  param inout name "n3" type class_ref 155670 // ECNode
	  param in name "gain" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} * ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} * ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 477206 "createVoltagePoint"
	preserve_cpp_body_indent public return_type class_ref 187926 // VoltagePoint
	nparams 2
	  param inout name "n0" type class_ref 156822 // Pin
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477334 "createVoltagePoint"
	preserve_cpp_body_indent public return_type class_ref 187926 // VoltagePoint
	nparams 2
	  param inout name "n0" type class_ref 155670 // ECNode
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477462 "createVoltageSignal"
	preserve_cpp_body_indent public return_type class_ref 188054 // VoltageSignal
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477590 "createVoltageSignal"
	preserve_cpp_body_indent public return_type class_ref 188054 // VoltageSignal
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477718 "createVoltageSource"
	preserve_cpp_body_indent public return_type class_ref 188182 // VoltageSource
	nparams 3
	  param inout name "n0" type class_ref 156822 // Pin
	  param inout name "n1" type class_ref 156822 // Pin
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477846 "createVoltageSource"
	preserve_cpp_body_indent public return_type class_ref 188182 // VoltageSource
	nparams 3
	  param inout name "n0" type class_ref 155670 // ECNode
	  param inout name "n1" type class_ref 155670 // ECNode
	  param in name "voltage" 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}}
"
	
	
	
	
      end

      operation 477974 "ecNodeWithID"
	preserve_cpp_body_indent public return_type class_ref 155670 // ECNode
	nparams 1
	  param in name "ecNodeId" 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 478102 "removeElement"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "element" type class_ref 155926 // Element
	  param in name "setPinsInterIndependent" explicit_type "bool"
	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 "*
		 * Safely delete an element - in this case, calls element->componentDeleted,
		 * and removes it from the element list.
		 * @param setPinsInterIndependent whether to call
		 * setPinsInterIndependent. The call is time-consuming, and unnecessary
		 * if the pins from which the element was originally attached will be/
		 * were removed, or they will become interdependent again.
		 "
      end

      operation 478230 "removeSwitch"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 "*
		 * Safely remove a switch.
		 "
      end

      operation 478358 "removeElements"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "setPinsInterIndependent" explicit_type "bool"
	    defaultvalue "false "
	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 elements and switches.
		 * @param setPinsInterIndependent whether to bother calling
		 * setPinsInterIndependent. This is false when calling from the
		 * destructor, or when the dependency information is the same.
		 "
      end

      operation 478486 "switchList"
	const cpp_inline public return_type class_ref 156438 // SwitchList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_switchList; };
"
	
	
	
	
	comment "*
		 * @return the list of switches that this component uses.
		 "
      end

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

      operation 478614 "elementCreated"
	public explicit_return_type "void"
	nparams 1
	  param inout name "element" type class_ref 155926 // Element
	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 "*
		 * Emitted when an element is created.
		 "
      end

      operation 478742 "elementDestroyed"
	public explicit_return_type "void"
	nparams 1
	  param inout name "element" type class_ref 155926 // Element
	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 "*
		 * Emitted when an element is destroyed.
		 "
      end

      operation 478870 "switchCreated"
	public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 "*
		 * Emitted when a switch. is created
		 "
      end

      operation 478998 "switchDestroyed"
	public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 "*
		 * Emitted when a switch is destroyed.
		 "
      end

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

      operation 479126 "slotUpdateConfiguration"
	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 479254 "removeItem"
	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 479382 "drawPortShape"
	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 "*
		 * Convenience functionality provided for components in a port shape
		 * (such as ParallelPortComponent and SerialPortComponent).
		 "
      end

      operation 479510 "itemPointsChanged"
	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 479638 "updateAttachedPositioning"
	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 479766 "initPainter"
	preserve_cpp_body_indent cpp_virtual 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

      operation 479894 "deinitPainter"
	preserve_cpp_body_indent cpp_virtual 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 "*
		 * Untranforms the painter from the matrix. This *must* be called after doing
		 * initPainter( QPainter &p );
		 "
      end

      operation 480022 "initDIP"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "pins" explicit_type "QStringList"
	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 "*
		 * This creates a set of nodes with their internal IDs set to those in QStringList pins.
		 * The pins are in a DIP arrangement, and are spaced width() apart.
		 "
      end

      operation 480150 "initDIPSymbol"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param in name "pins" explicit_type "QStringList"
	  param in name "_width" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Creates the DIP symbol:
		 * @li constructs rectangular shape
		 * @li puts on text labels in appropriate positions from QStringList pins
		 "
      end

      operation 480278 "init1PinLeft"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1 "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// 	QString createNode( double _x, double _y, int shape, int orientation, const QString &name, int type, bool isInput = true );

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Create 1 pin on the left of the component, placed half way down if h1 is
		 * -1 - else at the position of h1.
		 "
      end

      operation 480406 "init2PinLeft"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1 "
	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 "*
		 * Create 2 pins on the left of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 480534 "init3PinLeft"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 3
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h3" explicit_type "int"
	    defaultvalue "-1 "
	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 "*
		 * Create 3 pins on the left of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 480662 "init4PinLeft"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 4
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h3" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h4" explicit_type "int"
	    defaultvalue "-1 "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Create 4 pins on the left of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 480790 "init1PinRight"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1 "
	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 "*
		 * Create 1 pin on the right of the component, placed half way down if h1 is
		 * -1 - else at the position of h1.
		 "
      end

      operation 480918 "init2PinRight"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1 "
	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 "*
		 * Create 2 pins on the right of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 481046 "init3PinRight"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 3
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h3" explicit_type "int"
	    defaultvalue "-1 "
	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 "*
		 * Create 3 pins on the right of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 481174 "init4PinRight"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 4
	  param in name "h1" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h2" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h3" explicit_type "int"
	    defaultvalue "-1"
	  param in name "h4" explicit_type "int"
	    defaultvalue "-1 "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Create 4 pins on the right of the component, either spread out, or at the
		 * given heights.
		 "
      end

      operation 481302 "rebuildPinInterDepedence"
	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 "*
		 * When we remove an element, we have to rebuild the list of inter-dependent
		 * nodes. (when adding elements, we just call setInterDependent).
		 "
      end

      classrelation 212374 // m_pPNode (<unidirectional association>)
	relation 212374 --->
	  a role_name "m_pPNode" multiplicity "[4]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 212374 // m_pPNode (<unidirectional association>)
	  b parent class_ref 155670 // ECNode
      end

      classrelation 212502 // m_pNNode (<unidirectional association>)
	relation 212502 --->
	  a role_name "m_pNNode" multiplicity "[4]" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 212502 // m_pNNode (<unidirectional association>)
	  b parent class_ref 155670 // ECNode
      end

      classrelation 212630 // m_pCircuitDocument (<directional composition>)
	relation 212630 *-->
	  stereotype "QGuardedPtr"
	  a role_name "m_pCircuitDocument" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 212630 // m_pCircuitDocument (<directional composition>)
	  b parent class_ref 156950 // CircuitDocument
      end

      attribute 270486 "m_angleDegrees"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

      operation 481430 "setInterDependent"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "it" explicit_type "ElementMapList::iterator"
	  param in name "pins" explicit_type "QValueList<Pin*>"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Convenience function for calling both setInterCircuitDependent and
		 * setInterGroundDependent.
		 * @param it Which pins are inter-dependent needs to be recorded in case
		 * this information is later needed in rebuildPinInterDependence.
		 "
      end

      operation 481558 "setAllPinsInterIndependent"
	preserve_cpp_body_indent private 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 "*
		 * Sets all pins independent of each other.
		 "
      end

      operation 481686 "setInterCircuitDependent"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "it" explicit_type "ElementMapList::iterator"
	  param in name "pins" explicit_type "QValueList<Pin*>"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * The given pins will affect the simulation of each other. Therefore, they
		 * will need to be simulated in the same circuit.
		 "
      end

      operation 481814 "setInterGroundDependent"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "it" explicit_type "ElementMapList::iterator"
	  param in name "pins" explicit_type "QValueList<Pin*>"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * If any of the given pins are ground, then that will affect whether
		 * any of the other pins can be ground.
		 "
      end

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

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

      operation 481942 "handleElement"
	preserve_cpp_body_indent private explicit_return_type "ElementMapList::iterator"
	nparams 2
	  param inout name "e" type class_ref 155926 // Element
	  param in name "pins" explicit_type "QValueList<Pin*>"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * @return an iterator to the element in m_elementMapList
		 "
      end
    end

    class 155670 "ECNode"
      abstract 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 Electrical node with voltage / current / etc properties
@author David Saxton
"
      classrelation 214166 // <generalisation>
	relation 214166 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 214166 // <generalisation>
	  b parent class_ref 153238 // Node
      end

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

      operation 483478 "ECNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 5
	  param inout name "icnDocument" type class_ref 151958 // ICNDocument
	  param in name "_type" type class_ref 165526 // node_type
	  param in name "dir" explicit_type "int"
	  param in name "pos" explicit_type "QPoint"
	  param inout name "_id" explicit_type "QString"
	    defaultvalue "0L "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, const ${t3} & ${p3}${v3}, ${t4} * ${p4}${v4}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, ${t2} ${p2}, const ${t3} & ${p3}, ${t4} * ${p4}${)}
	: Node( icnDocument, _type, dir, pos, _id )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 483606 "~ECNode"
	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 483734 "setParentItem"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "parentItem" type class_ref 148118 // CNItem
	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 483862 "drawShape"
	abstract cpp_virtual public 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};
"
	
	
	
	
	comment "*
		 *  draws the ECNode; still only a pure virtual function
		 "
      end

      operation 483990 "setNumPins"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "num" explicit_type "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 "*
		 * Set the number of pins \"contained\" in this node.
		 "
      end

      operation 484118 "numPins"
	const cpp_inline public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pins.size(); };
"
	
	
	
	
	comment "*
		 * @return the number of pins in this node.
		 * @see setNumPins
		 "
      end

      operation 484246 "pins"
	const cpp_inline public return_type class_ref 189206 // PinVector
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pins; };
"
	
	
	
	
	comment "*
		 * @return the pins in the node, as a vector
		 "
      end

      operation 484374 "pin"
	const cpp_inline public return_type class_ref 156822 // Pin
	nparams 1
	  param in name "num" explicit_type "uint"
	    defaultvalue "0 "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return (num < m_pins.size()) ? m_pins[num] : 0l; };
"
	
	
	
	
	comment "*
		 * @param num number of the 
		 * @return pointer to a pin in this node, given by num
		 "
      end

      operation 484502 "showVoltageBars"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bShowVoltageBars; };
"
	
	
	
	
      end

      operation 484630 "setShowVoltageBars"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "show" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bShowVoltageBars = show; };
"
	
	
	
	
      end

      operation 484758 "showVoltageColor"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bShowVoltageColor; };
"
	
	
	
	
      end

      operation 484886 "setShowVoltageColor"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "show" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bShowVoltageColor = show; };
"
	
	
	
	
      end

      operation 485014 "setNodeChanged"
	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

      operation 485142 "isConnected"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 2
	  param inout name "node" type class_ref 153238 // Node
	  param inout name "checkedNodes" type class_ref 158742 // NodeList
	    defaultvalue "0L "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// -- functionality from node.cpp --

${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " -- the moved interface from node.h; some methods are changed --
*
		 * Returns true if this node is connected (or is the same as) the node given
		 * by other connectors or nodes (although not through CNItems)
		 * checkedNodes is a list of nodes that have already been checked for
		 * being the connected nodes, and so can simply return if they are in there.
		 * If it is null, it will assume that it is the first ndoe & will create a list
		 "
      end

      operation 485270 "setVisible"
	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}}
"
	
	
	
	
	comment "*
		 * Sets the node's visibility, as well as updating the visibility of the
		 * attached connectors as appropriate
	 	"
      end

      operation 485398 "addConnector"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "connector" type class_ref 153110 // Connector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * const ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * const ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Registers an input connector (i.e. this is the end node) as connected
		 * to this node.
	 	"
      end

      operation 485526 "createConnector"
	preserve_cpp_body_indent public return_type class_ref 153110 // Connector
	nparams 1
	  param inout name "node" type class_ref 153238 // Node
	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 "*
		 * Creates a new connector, sets this as the end node to the connector
		 * and returns a pointer to the connector.
		 "
      end

      operation 485654 "connectorList"
	const cpp_inline public return_type class_ref 150038 // ConnectorList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_connectorList; };
"
	
	
	
	
	comment "*
		 * Returns a list of the attached connectors; implemented inline 
	 	"
      end

      operation 485782 "removeNullConnectors"
	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 "*
		 * Removes all the NULL connectors
	 	 "
      end

      operation 485910 "numCon"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "includeParentItem" explicit_type "bool"
	  param in name "includeHiddenConnectors" explicit_type "bool"
	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 "*
		 * Returns the total number of connections to the node. This is the number
		 * of connectors and the parent
		 * item connector if it exists and is requested.
		 * @param includeParentItem Count the parent item as a connector if it exists
		 * @param includeHiddenConnectors hidden connectors are those as e.g. part of a subcircuit
	 	"
      end

      operation 486038 "removeConnector"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "connector" type class_ref 153110 // Connector
	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 a specific connector
		 "
      end

      operation 486166 "getAllConnectors"
	const cpp_virtual cpp_inline public return_type class_ref 150038 // ConnectorList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_connectorList; };
"
	
	
	
	
	comment "*
		 * @return the list of all the connectors attached to the node
		 "
      end

      operation 486294 "getAConnector"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 153110 // Connector
	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 "*
		 * For an electric node: returns the first connector
		 * If the node isn't connected to anyithing, returns null ( 0 )
		 * @return pointer to the desired connector
		 "
      end

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

      operation 486422 "numPinsChanged"
	public explicit_return_type "void"
	nparams 1
	  param in name "newNum" explicit_type "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}}
"
	
	
	
	
      end

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

      operation 486550 "checkForRemoval"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "connector" type class_ref 153110 // Connector
	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 " -- from node.h --"
      end

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

      operation 486678 "removeElement"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param inout name "e" type class_ref 155926 // Element
	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 486806 "removeSwitch"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 271382 "m_bShowVoltageBars"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

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

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

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

      operation 486934 "findConnectorDivergePoint"
	preserve_cpp_body_indent cpp_virtual protected explicit_return_type "QPoint"
	nparams 1
	  param inout name "found" 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 " -- functionality from node.h --
* If this node has precisely two connectors emerging from it, then this
		 * function will trace the two connectors until the point where they
		 * diverge; this point is returned. 
		 * TODO: find a meaning for this function, for an electronic node...
		 "
      end

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

      operation 487062 "handleNewConnector"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 1
	  param inout name "connector" type class_ref 153110 // Connector
	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 "* (please document this) registers some signals for the node and the new connector (?) "
      end
    end

    class 156310 "Switch"
      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 219286 // <generalisation>
	relation 219286 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 219286 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

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

      class 192022 "State"
	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 283030 "Open"
	  public type class_ref 192022 // State
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 283158 "Closed"
	  public type class_ref 192022 // State
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 505494 "Switch"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param inout name "parent" type class_ref 155414 // Component
	  param inout name "p1" type class_ref 156822 // Pin
	  param inout name "p2" type class_ref 156822 // Pin
	  param in name "state" type class_ref 192022 // State
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 505622 "~Switch"
	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 505750 "setState"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "state" type class_ref 192022 // State
	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 "*
		 * If bouncing has been set to true, then the state will not switch
		 * immediately to that given.
		 "
      end

      operation 505878 "state"
	const cpp_inline public return_type class_ref 192022 // State
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_state; };
"
	
	
	
	
      end

      operation 506006 "setBounce"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "bounce" explicit_type "bool"
	  param in name "msec" explicit_type "int"
	    defaultvalue "5 "
	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 "*
		 * Tell the switch whether to bounce or not, for the given duration,
		 * when the state is changed.
		 "
      end

      operation 506134 "bounce"
	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 "*
		 * Tell the switch to continue bouncing (updates the resistance value).
		 * Called from the simulator.
		 "
      end

      operation 506262 "calculateCurrent"
	preserve_cpp_body_indent public 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 "*
		 * Attempts to calculate the current that is flowing through the switch.
		 * (If all the connectors at one of the ends know their currents, then
		 * this switch will give the current to the pins at either end).
		 * @return whether it was successful.
		 * @see CircuitDocument::calculateConnectorCurrents
		 "
      end

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

      operation 506390 "stopBouncing"
	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 "*
		 * Called from a QTimer timeout - our bouncing period has come to an
		 * end. This will then fully disconnect or connect the pins depending
		 * on the current state.
		 "
      end

      operation 506518 "startBouncing"
	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 283286 "m_bBounce"
	protected explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 283414 "m_bouncePeriod_ms"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 283542 "m_bounceStart"
	protected explicit_type "unsigned long long"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Simulator time that bouncing started"
      end

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

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

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

      classrelation 219798 // m_pP1 (<directional composition>)
	relation 219798 *-->
	  stereotype "QGuardedPtr"
	  a role_name "m_pP1" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 219798 // m_pP1 (<directional composition>)
	  b parent class_ref 156822 // Pin
      end

      classrelation 219926 // m_pP2 (<directional composition>)
	relation 219926 *-->
	  stereotype "QGuardedPtr"
	  a role_name "m_pP2" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 219926 // m_pP2 (<directional composition>)
	  b parent class_ref 156822 // Pin
      end

      attribute 283670 "m_pStopBouncingTimer"
	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 156822 "Pin"
      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 217494 // <generalisation>
	relation 217494 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 217494 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

      class 190614 "GroundType"
	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 276246 "gt_always"
	  public type class_ref 190614 // GroundType
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 276374 "gt_high"
	  public type class_ref 190614 // GroundType
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 276502 "gt_medium"
	  public type class_ref 190614 // GroundType
	  init_value "= 10"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 276630 "gt_low"
	  public type class_ref 190614 // GroundType
	  init_value "= 15"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 276758 "gt_never"
	  public type class_ref 190614 // GroundType
	  init_value "= 20 // everything else
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 495638 "Pin"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "parent" type class_ref 155670 // ECNode
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 495766 "~Pin"
	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 495894 "parentECNode"
	const cpp_inline public return_type class_ref 155670 // ECNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pECNode; };
"
	
	
	
	
      end

      operation 496022 "localConnectedPins"
	preserve_cpp_body_indent const public return_type class_ref 156182 // PinList
	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 "*
		 * This function returns the pins that are directly connected to this pins:
		 * either at the ends of connected wires, or via switches.
		 "
      end

      operation 496150 "setSwitchConnected"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "pin" type class_ref 156822 // Pin
	  param in name "isConnected" explicit_type "bool"
	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 "*
		 * Adds/removes the given pin to the list of ones that this pin is/isn't
		 * connected to via a switch.
		 "
      end

      operation 496278 "setVoltage"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "v" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_voltage = v; };
"
	
	
	
	
	comment "*
		 * After calculating the nodal voltages in the circuit, this function should
		 * be called to tell the pin what its voltage is.
		 "
      end

      operation 496406 "voltage"
	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_voltage; };
"
	
	
	
	
	comment "*
		 * Returns the voltage as set by setVoltage.
		 "
      end

      operation 496534 "resetCurrent"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { m_current = 0.0; };
"
	
	
	
	
	comment "*
		 * After calculating nodal voltages, each component will be called to tell
		 * its pins what the current flowing *into* the component is. This sets it
		 * to zero in preparation to merging the current.
		 "
      end

      operation 496662 "mergeCurrent"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "i" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_current += i; };
"
	
	
	
	
	comment "*
		 * Adds the given current to that already flowing into the pin.
		 * @see setCurrent
		 "
      end

      operation 496790 "current"
	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_current; };
"
	
	
	
	
	comment "*
		 * Returns the current as set by mergeCurrent.
		 "
      end

      operation 496918 "setCurrentKnown"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "isKnown" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bCurrentIsKnown = isKnown; };
"
	
	
	
	
	comment "*
		 * In many cases (such as if this pin is a ground pin), the current
		 * flowing into the pin has not been calculated, and so the value
		 * returned by current() cannot be trusted.
		 "
      end

      operation 497046 "setSwitchCurrentsUnknown"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { m_switchList.remove( 0l ); m_unknownSwitchCurrents = m_switchList; };
"
	
	
	
	
	comment "*
		 * Tell thie Pin that none of the currents from the switches have yet
		 * been merged.
		 "
      end

      operation 497174 "currentIsKnown"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bCurrentIsKnown && m_unknownSwitchCurrents.isEmpty(); };
"
	
	
	
	
	comment "*
		 * This returns the value given by setCurrentKnown AND'd with whether
		 * we know the current from each switch attached to this pin.
		 * @see setCurrentKnown
		 "
      end

      operation 497302 "setSwitchCurrentKnown"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_unknownSwitchCurrents.remove( sw ); };
"
	
	
	
	
	comment "*
		 * Tells the Pin that the current from the given switch has been merged.
		 "
      end

      operation 497430 "calculateCurrentFromWires"
	preserve_cpp_body_indent public 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 "*
		 * Tries to calculate the Pin current from the input / output wires.
		 * @return whether was successful.
		 "
      end

      operation 497558 "setGroundType"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "gt" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_groundType = gt; };
"
	
	
	
	
	comment "*
		 * Sets the \"ground type\" - i.e. the priority that this pin has for being
		 * ground over other pins in the circuit. Lower gt = higher priority. It's
		 * recommended to use Pin::GroundType.
		 "
      end

      operation 497686 "groundType"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_groundType; };
"
	
	
	
	
	comment "*
		 * Returns the priority for ground.
		 "
      end

      operation 497814 "addCircuitDependentPin"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "pin" type class_ref 156822 // Pin
	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 dependent pin - one whose voltages will (or might) affect the
		 * voltage of this pin. This is set by Component.
		 "
      end

      operation 497942 "addGroundDependentPin"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "pin" type class_ref 156822 // Pin
	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 dependent pin - one whose voltages will (or might) affect the
		 * voltage of this pin. This is set by Component.
		 "
      end

      operation 498070 "removeDependentPins"
	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 "*
		 * Removes all Circuit and Ground dependent pins.
		 "
      end

      operation 498198 "circuitDependentPins"
	const cpp_inline public return_type class_ref 156182 // PinList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_circuitDependentPins; };
"
	
	
	
	
	comment "*
		 * Returns the ids of the pins whose voltages will affect this pin.
		 * @see void setDependentPins( QStringList ids )
		 "
      end

      operation 498326 "groundDependentPins"
	const cpp_inline public return_type class_ref 156182 // PinList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_groundDependentPins; };
"
	
	
	
	
	comment "*
		 * Returns the ids of the pins whose voltages will affect this pin.
		 * @see void setDependentPins( QStringList ids )
		 "
      end

      operation 498454 "setEqId"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "id" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_eqId = id; };
"
	
	
	
	
	comment "*
		 * Use this function to set the pin identifier for equations,
		 * which should be done every time new pins are registered.
		 "
      end

      operation 498582 "eqId"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_eqId; };
"
	
	
	
	
	comment "*
		 * The equation identifier.
		 * @see setEqId
		 "
      end

      operation 498710 "elements"
	const cpp_inline public return_type class_ref 156054 // ElementList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_elementList; };
"
	
	
	
	
	comment "*
		 * Returns a list of elements that will affect this pin (e.g. if this
		 * pin is part of a resistor, then that list will contain a pointer to a
		 * Resistance element)
		 "
      end

      operation 498838 "addElement"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "e" type class_ref 155926 // Element
	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 an element to the list of those that will affect this pin.
		 "
      end

      operation 498966 "removeElement"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "e" type class_ref 155926 // Element
	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 an element from the list of those that will affect this pin.
		 "
      end

      operation 499094 "addSwitch"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 an switch to the list of those that will affect this pin.
		 "
      end

      operation 499222 "removeSwitch"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "sw" type class_ref 156310 // Switch
	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 an switch from the list of those that will affect this pin.
		 "
      end

      operation 499350 "addInputWire"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "wire" type class_ref 159382 // Wire
	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 499478 "addOutputWire"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "wire" type class_ref 159382 // Wire
	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 499606 "removeWire"
	public explicit_return_type "void"
	nparams 1
	  param inout name "wire" type class_ref 159382 // Wire
	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 499734 "inputWireList"
	const cpp_inline public return_type class_ref 156566 // WireList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_inputWireList; };
"
	
	
	
	
      end

      operation 499862 "outputWireList"
	const cpp_inline public return_type class_ref 156566 // WireList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_outputWireList; };
"
	
	
	
	
      end

      operation 499990 "numWires"
	const cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_inputWireList.size() + m_outputWireList.size(); };
"
	
	
	
	
      end

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

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

      attribute 277142 "m_eqId"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 277270 "m_groundType"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

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

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

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

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

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

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

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

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

    class 157078 "CircuitICNDocument"
      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 "*
A document holding a circuit

	@author Zoltan P <zoltan.padrah@gmail.com>
"
      classrelation 211350 // <generalisation>
	relation 211350 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 211350 // <generalisation>
	  b parent class_ref 151958 // ICNDocument
      end

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

      operation 468246 "CircuitICNDocument"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "caption" explicit_type "QString"
	  param in name "name" explicit_type "char"
	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}${)}
	: ICNDocument(caption, name )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 468374 "~CircuitICNDocument"
	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 468502 "canConnect"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "bool"
	nparams 2
	  param inout name "qcanvasItem1" type class_ref 145174 // QCanvasItem
	  param inout name "qcanvasItem2" type class_ref 145174 // QCanvasItem
	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 "*
	 * Reinherit this function to perform special checks on whether the two
	 * given QCanvasItems (either nodes or connectors or both) can be
	 * connected together.
	 "
      end

      operation 468630 "createConnector"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 153110 // Connector
	nparams 4
	  param inout name "node" type class_ref 153238 // Node
	  param inout name "con" type class_ref 153110 // Connector
	  param in name "pos2" explicit_type "QPoint"
	  param inout name "pointList" type class_ref 150166 // QPointList
	    defaultvalue "0L "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} * ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, const ${t2} & ${p2}, ${t3} * ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Splits Connector con into two connectors at point pos2, and creates a connector from the node
	 * to the intersection of the two new connectors. If pointList is non-null, then the new connector
	 * from the node will be assigned those points
	 "
      end

      operation 468758 "createConnector"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 153110 // Connector
	nparams 5
	  param inout name "con1" type class_ref 153110 // Connector
	  param inout name "con2" type class_ref 153110 // Connector
	  param in name "pos1" explicit_type "QPoint"
	  param in name "pos2" explicit_type "QPoint"
	  param inout name "pointList" type class_ref 150166 // QPointList
	    defaultvalue "0L "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} & ${p2}${v2}, const ${t3} & ${p3}${v3}, ${t4} * ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, const ${t2} & ${p2}, const ${t3} & ${p3}, ${t4} * ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Splits con1 and con2 into two new connectors each at points pos1 and pos2, and creates a new connector
	 * between the two points of intersection given by pos1 and pos2. If pointList is non-null, then the new
	 * connector between the two points will be assigned those points
	 "
      end

      operation 468886 "createConnector"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 153110 // Connector
	nparams 3
	  param in name "startNodeId" explicit_type "QString"
	  param in name "endNodeId" explicit_type "QString"
	  param inout name "pointList" type class_ref 150166 // QPointList
	    defaultvalue "0L "
	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}}
"
	
	
	
	
	comment "*
	 * Creates a connector between two nodes, and returns a pointer to it
	 * and adds the operation to the undo list
	 "
      end

      operation 469014 "createConnector"
	cpp_virtual cpp_inline public return_type class_ref 153110 // Connector
	nparams 3
	  param inout name "node1" type class_ref 153238 // Node
	  param inout name "node2" type class_ref 153238 // Node
	  param inout name "pointList" type class_ref 150166 // QPointList
	    defaultvalue "0L "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract} { return ICNDocument::createConnector(node1,node2, pointList); };
"
	
	
	
	
	comment "*
	 * Creates a connector from node1 to node2. If pointList is non-null, then the
	 * connector will be assigned those points
	 "
      end

      operation 469142 "nodeWithID"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 153238 // Node
	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}}
"
	
	
	
	
	comment "*
	 * Returns a pointer to a node on the canvas with the given id,
	 * or NULL if no such node exists
	 "
      end

      operation 469270 "getEcNodeWithID"
	preserve_cpp_body_indent public return_type class_ref 155670 // ECNode
	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 469398 "slotAssignNodeGroups"
	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 "*
	 * Assigns the orphan nodes into NodeGroups. You shouldn't call this
	 * function directly - instead use ItemDocument::requestEvent.
	 "
      end

      operation 469526 "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 469654 "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 "*
	 * registers (adds to the document) an item (a connector or a node)
	 * @param qcanvasItem the item to be registered
	 * @return true if succeeded, false if it didn't
	 "
      end

      operation 469782 "unregisterUID"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "uid" 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 469910 "nodeList"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 158742 // NodeList
	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 470038 "joinConnectors"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 1
	  param inout name "node" type class_ref 155670 // ECNode
	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 "*
	 * If there are two connectors joined to a node, then they can be merged
	 * into one connector. The node will not be removed.
	 * @param node The node between the two connectors
	 * @param noCreate If true, no new connectors will be created
	 * @returns true if it was successful in merging the connectors
	 "
      end

      operation 470166 "selectAllNodes"
	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}}
"
	
	
	
	
	comment "*
	 *        Selects all nodes on the document. Should be overridden.
	 "
      end

      operation 470294 "deleteAllNodes"
	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}}
"
	
	
	
	
	comment "*
	 * 	deletes all the elements containde in the nodeList. Should be overridden.
	 "
      end

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

    class 159382 "Wire"
      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 220054 // <generalisation>
	relation 220054 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 220054 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

      operation 506646 "Wire"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param inout name "startPin" type class_ref 156822 // Pin
	  param inout name "endPin" type class_ref 156822 // Pin
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 506774 "~Wire"
	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 506902 "calculateCurrent"
	preserve_cpp_body_indent public 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 "*
		 * Attempts to calculate the current that is flowing through
		 * the connector. Returns true if successfuly, otherwise returns false
		 "
      end

      operation 507030 "currentIsKnown"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bCurrentIsKnown; };
"
	
	
	
	
	comment "*
		 * Returns true if the current flowing through the connector is known
		 "
      end

      operation 507158 "setCurrentKnown"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "known" 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 "*
		 * Set whether the actual current flowing into this node is known (in some
		 * cases - such as this node being ground - it is not known, and so the
		 * value returned by current() cannot be relied on.
		 "
      end

      operation 507286 "current"
	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_current; };
"
	
	
	
	
	comment "*
		 * Returns the current flowing through the connector.
		 * This only applies for electronic connectors
		 "
      end

      operation 507414 "voltage"
	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}}
"
	
	
	
	
	comment "*
		 * Returns the voltage at the connector. This is an average of the
		 * voltages at either end.
		 "
      end

      operation 507542 "startPin"
	const cpp_inline public return_type class_ref 156822 // Pin
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pStartPin; };
"
	
	
	
	
      end

      operation 507670 "endPin"
	const cpp_inline public return_type class_ref 156822 // Pin
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pEndPin; };
"
	
	
	
	
      end

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

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

      classrelation 220182 // m_pStartPin (<directional composition>)
	relation 220182 *-->
	  stereotype "QGuardedPtr"
	  a role_name "m_pStartPin" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 220182 // m_pStartPin (<directional composition>)
	  b parent class_ref 156822 // Pin
      end

      classrelation 220310 // m_pEndPin (<directional composition>)
	relation 220310 *-->
	  stereotype "QGuardedPtr"
	  a role_name "m_pEndPin" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	    classrelation_ref 220310 // m_pEndPin (<directional composition>)
	  b parent class_ref 156822 // Pin
      end
    end

    class 160278 "GpsimProcessor"
      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 216598 // <generalisation>
	relation 216598 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 216598 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

      classrelation 216726 // <dependency>
	relation 216726 -_->
	  stereotype "friend"
	  a default
	    cpp default "Generated"
	    classrelation_ref 216726 // <dependency>
	  b parent class_ref 181014 // GpsimDebugger
      end

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

      operation 492182 "GpsimProcessor"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "symbolFile" explicit_type "QString"
	  param inout name "parent" explicit_type "QObject"
	    defaultvalue "0 "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} * ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} * ${p1}${)}
	: QObject(parent),
	m_symbolFile(symbolFile)
${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Create a new gpsim processor. After calling this constructor, you
		 * should always call codLoadStatus() to ensure that the cod file was
		 * loaded successfully.
		 "
      end

      operation 492310 "~GpsimProcessor"
	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 492438 "setDebugMode"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "mode" type class_ref 189974 // Type
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_debugMode = mode; };
"
	
	
	
	
      end

      operation 492566 "currentDebugger"
	const cpp_inline public return_type class_ref 181014 // GpsimDebugger
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pDebugger[m_debugMode]; };
"
	
	
	
	
      end

      class 190102 "CodLoadStatus"
	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 273686 "CodSuccess"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 273814 "CodFileNotFound"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 273942 "CodUnrecognizedProcessor"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274070 "CodFileNameTooLong"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274198 "CodLstNotFound"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274326 "CodBadFile"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274454 "CodFileUnreadable"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274582 "CodFailure"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274710 "CodUnknown"
	  public type class_ref 190102 // CodLoadStatus
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 190230 "InstructionType"
	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 274838 "LiteralOp"
	  public type class_ref 190230 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 274966 "BitOp"
	  public type class_ref 190230 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 275094 "RegisterOp"
	  public type class_ref 190230 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 275222 "UnknownOp"
	  public type class_ref 190230 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 492694 "codLoadStatus"
	const cpp_inline public return_type class_ref 190102 // CodLoadStatus
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_codLoadStatus; };
"
	
	
	
	
	comment "*
		 * @return status of opening the COD file
		 * @see displayCodLoadStatus
		 "
      end

      operation 492822 "displayCodLoadStatus"
	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 "*
		 * Popups a messagebox to the user according to the CodLoadStatus. Will
		 * only popup a messagebox if the CodLoadStatus wasn't CodSuccess.
		 "
      end

      operation 492950 "sourceFileList"
	preserve_cpp_body_indent public explicit_return_type "QStringList"
	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 source files for the currently running program.
		 "
      end

      operation 493078 "setRunning"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "run" 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 "*
		 * Set whether or not to run gpsim. (i.e. whether or not the step
		 * function should do anything when called with force=false).
		 "
      end

      operation 493206 "isRunning"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bIsRunning; };
"
	
	
	
	
	comment "*
		 * Returns true if running (currently simulating), else gpsim is paused.
		 "
      end

      operation 493334 "executeNext"
	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 "*
		 * Execute the next program instruction. If we are not in a running
		 * mode, then this function will do nothing.
		 "
      end

      operation 493462 "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 "*
		 * Reset all parts of the simulation. Gpsim will not run until
		 * setRunning(true) is called. Breakpoints are not affected.
		 "
      end

      operation 493590 "microInfo"
	preserve_cpp_body_indent const public return_type class_ref 164886 // MicroInfo
	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 microinfo describing this processor.
		 "
      end

      operation 493718 "picProcessor"
	const cpp_inline public explicit_return_type "pic_processor"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pPicProcessor; };
"
	
	
	
	
      end

      operation 493846 "programMemorySize"
	preserve_cpp_body_indent const public explicit_return_type "uint"
	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 493974 "registerMemory"
	const cpp_inline public return_type class_ref 189718 // RegisterSet
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pRegisterMemory; };
"
	
	
	
	
      end

      operation 494102 "instructionType"
	public return_type class_ref 190230 // InstructionType
	nparams 1
	  param in name "address" explicit_type "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 "*
		 * @return the instruction type at the given address.
		 "
      end

      operation 494230 "operandRegister"
	preserve_cpp_body_indent public explicit_return_type "int"
	nparams 1
	  param in name "address" explicit_type "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 "*
		 * @return the address of the operand's register at address if the
		 * instruction at address is a register operation, and -1 otherwise.
		 "
      end

      operation 494358 "operandLiteral"
	preserve_cpp_body_indent public explicit_return_type "int"
	nparams 1
	  param in name "address" explicit_type "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 "*
		 * @return the literal if the instruction at address is a literal
		 * operation, and -1 otherwise.
		 "
      end

      class 190358 "ProgramFileValidity"
	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 275350 "DoesntExist"
	  public type class_ref 190358 // ProgramFileValidity
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 275478 "IncorrectType"
	  public type class_ref 190358 // ProgramFileValidity
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 275606 "Valid"
	  public type class_ref 190358 // ProgramFileValidity
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 494486 "isValidProgramFile"
	class_operation preserve_cpp_body_indent public return_type class_ref 190358 // ProgramFileValidity
	nparams 1
	  param in name "programFile" 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}}
"
	
	
	
	
	comment "*
		 * @return information on the validity of the given program file (either
		 * DoesntExist, IncorrectType, or Valid).
		 * @see static QString generateSymbolFile
		 "
      end

      operation 494614 "generateSymbolFile"
	class_operation preserve_cpp_body_indent public explicit_return_type "QString"
	nparams 4
	  param in name "fileName" explicit_type "QString"
	  param inout name "receiver" explicit_type "QObject"
	  param in name "successMember" explicit_type "char"
	  param in name "failMember" explicit_type "char"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} * ${p2}${v2}, const ${t3} * ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} * ${p1}, const ${t2} * ${p2}, const ${t3} * ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Converts the file at programFile to a Symbol file for emulation,
		 * and returns that symbol file's path
		 * @param programFile The full url to the file
		 * @param assembled The slot to connect the assembled signal to
		 * @see static bool isValidProgramFile( const QString &programFile )
		 "
      end

      operation 494742 "compileMicrobe"
	class_operation preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "filename" explicit_type "QString"
	  param inout name "receiver" explicit_type "QObject"
	  param in name "successMember" explicit_type "char"
	  param in name "failMember" explicit_type "char"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} * ${p2}${v2}, const ${t3} * ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} * ${p1}, const ${t2} * ${p2}, const ${t3} * ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 *Compile microbe to output to the given filename
		 "
      end

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

      operation 494870 "runningStatusChanged"
	public explicit_return_type "void"
	nparams 1
	  param in name "isRunning" 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 "END convenience functions for PIC files
*
		 * Emitted when the running status of gpsim changes.
		 "
      end

      operation 494998 "emitLineReached"
	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 "*
		 * Calls emitLineReached for each debugger.
		 "
      end

      attribute 275734 "m_pPicProcessor"
	protected explicit_type "pic_processor"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

      attribute 275862 "m_symbolFile"
	const_attribute protected explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

      classrelation 217238 // m_pDebugger (<unidirectional association>)
	relation 217238 --->
	  a role_name "m_pDebugger" multiplicity "[2]" protected
	    comment " Asm, HLL"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 217238 // m_pDebugger (<unidirectional association>)
	  b parent class_ref 181014 // GpsimDebugger
      end

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

      attribute 276118 "m_bIsRunning"
	private explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 181014 "GpsimDebugger"
      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 215702 // <generalisation>
	relation 215702 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 215702 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

      classrelation 215830 // <dependency>
	relation 215830 -_->
	  stereotype "friend"
	  a default
	    cpp default "Generated"
	    classrelation_ref 215830 // <dependency>
	  b parent class_ref 160278 // GpsimProcessor
      end

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

      class 189974 "Type"
	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 273046 "AsmDebugger"
	  public type class_ref 189974 // Type
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 273174 "HLLDebugger"
	  public type class_ref 189974 // Type
	  init_value "= 1
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 489878 "GpsimDebugger"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "type" type class_ref 189974 // Type
	  param inout name "gpsim" type class_ref 160278 // GpsimProcessor
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} * ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "//END class GpsimProcessor
//BEGIN class GpsimDebugger

${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} * ${p1}${)}
	: QObject()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 490006 "~GpsimDebugger"
	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 490134 "gpsim"
	const cpp_inline public return_type class_ref 160278 // GpsimProcessor
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_pGpsim; };
"
	
	
	
	
      end

      operation 490262 "associateLine"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "sourceFile" explicit_type "QString"
	  param in name "sourceLine" explicit_type "int"
	  param in name "assemblyFile" explicit_type "QString"
	  param in name "assemblyLine" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}, const ${t2} & ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * When an assembly file was generated by a high level language compiler
		 * like SDCC, it will insert markers like \";#CSRC\" that show which line
		 * of source-code generated the given set of assembly instructions. This
		 * matches up the assembly file lines with the associated source file
		 * lines.
		 "
      end

      operation 490390 "checkForBreak"
	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 "*
		 * Check to see if we've hit a breakpoint or similar; if so, this
		 * function will stop the execution of the PIC program.
		 "
      end

      operation 490518 "setBreakpoints"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "path" explicit_type "QString"
	  param in name "lines" type class_ref 162966 // IntList
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Sets the breakpoints used for the given file to exactly those that
		 * are contained in this list. Breakpoints for other files are not
		 * affected.
		 * @param path the location of the file (which gpsim must recognise).
		 "
      end

      operation 490646 "setBreakpoint"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param in name "path" explicit_type "QString"
	  param in name "line" explicit_type "int"
	  param in name "isBreakpoint" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Sets / removes the breakpoint at the given line
		 "
      end

      operation 490774 "currentLine"
	preserve_cpp_body_indent public return_type class_ref 134294 // SourceLine
	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 current source line that gpsim is at. By default, this
		 * will be the corresponding assembly line. That can be overwritten
		 * using mapAddressBlockToLine.
		 "
      end

      operation 490902 "currentDebugLine"
	preserve_cpp_body_indent public return_type class_ref 189462 // DebugLine
	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 pointer to the debug info for the current line.
		 "
      end

      operation 491030 "programAddress"
	preserve_cpp_body_indent public explicit_return_type "int"
	nparams 2
	  param in name "path" explicit_type "QString"
	  param in name "line" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * @return the program address for the given line (or -1 if no such
		 * line).
		 "
      end

      operation 491158 "stepInto"
	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 "*
		 * Step into the next program line.
		 "
      end

      operation 491286 "stepOver"
	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 "*
		 * Step over the next program instruction. If we are currently running,
		 * this function will do nothing. Otherwise, it will record the current
		 * stack level, step, and if the new stack level is <= the initial level
		 * then return - otherwise, this processor will set a breakpoint for
		 * stack levels <= initial, and go to running mode.
		 "
      end

      operation 491414 "stepOut"
	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 "*
		 * Similar to stepOver, except we break when the stack level becomes <
		 * the initial stack level (instead of <= initial).
		 "
      end

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

      operation 491542 "lineReached"
	public explicit_return_type "void"
	nparams 1
	  param in name "sourceLine" type class_ref 134294 // SourceLine
	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 "*
		 * Emitted when a line is reached. By default, this is the line of the
		 * input assembly file; however, the line associated with an address in
		 * the PIC memory can be changed with mapAddressBlockToLine.
		 "
      end

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

      operation 491670 "gpsimRunningStatusChanged"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "isRunning" 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 491798 "initAddressToLineMap"
	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

      operation 491926 "stackStep"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "dl" 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 492054 "emitLineReached"
	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 273302 "m_stackLevelLowerBreak"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Set by step-over, for when the stack level decreases to the one given"
      end

      classrelation 215958 // m_previousAtLineEmit (<directional composition>)
	relation 215958 *-->
	  a role_name "m_previousAtLineEmit" protected
	    comment " Used for working out whether we should emit a new line reached signal"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 215958 // m_previousAtLineEmit (<directional composition>)
	  b parent class_ref 134294 // SourceLine
      end

      attribute 273430 "m_addressToLineMap"
	protected type class_ref 189462 // DebugLine
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

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

      attribute 273558 "m_addressSize"
	protected explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 216470 // m_sourceLineMap (<directional composition>)
	relation 216470 *-->
	  a role_name "m_sourceLineMap" protected
	    comment " assembly <--> High level language"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 216470 // m_sourceLineMap (<directional composition>)
	  b parent class_ref 189334 // SourceLineMap
      end
    end

    class 181782 "RegisterInfo"
      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 info from gpsim register, used to hide gpsim interface
@author David Saxton
"
      classrelation 214934 // <generalisation>
	relation 214934 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 214934 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

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

      operation 488214 "RegisterInfo"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "reg" type class_ref 134934 // Register
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterSet
//BEGIN class RegisterInfo

${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      class 189590 "RegisterType"
	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 272150 "Invalid"
	  public type class_ref 189590 // RegisterType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 272278 "Generic"
	  public type class_ref 189590 // RegisterType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 272406 "File"
	  public type class_ref 189590 // RegisterType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 272534 "SFR"
	  public type class_ref 189590 // RegisterType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 272662 "Breakpoint"
	  public type class_ref 189590 // RegisterType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 488342 "type"
	const cpp_inline public return_type class_ref 189590 // RegisterType
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_type; };
"
	
	
	
	
      end

      operation 488470 "name"
	const cpp_inline public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_name; };
"
	
	
	
	
      end

      operation 488598 "value"
	preserve_cpp_body_indent const public explicit_return_type "uint"
	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 488726 "toString"
	class_operation preserve_cpp_body_indent public explicit_return_type "QString"
	nparams 1
	  param in name "type" type class_ref 189590 // RegisterType
	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 488854 "update"
	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 "*
		 * Checks to see if the value has changed; if so, emit new value.
		 "
      end

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

      operation 488982 "valueChanged"
	public explicit_return_type "void"
	nparams 1
	  param in name "newValue" explicit_type "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}}
"
	
	
	
	
      end

      attribute 272790 "m_name"
	protected explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

      attribute 272918 "m_prevEmitValue"
	protected explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 185622 "ECNodeMap"
      visibility package stereotype "typedef" base_type class_ref 155670 // ECNode
      cpp_decl "${comment}typedef QMap<QString,${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 211222 // <dependency>
	relation 211222 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 211222 // <dependency>
	  b parent class_ref 155670 // ECNode
      end
    end

    class 185750 "PinListList"
      visibility package stereotype "typedef" explicit_base_type "QValueList< QValueList<Pin*> >"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 185878 "ElementMap"
      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 "*
Contains vital information about the elements in the component.
"
      operation 470422 "ElementMap"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class ElementMap

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      classrelation 211606 // e (<unidirectional association>)
	relation 211606 --->
	  a role_name "e" public
	    comment " The element"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 211606 // e (<unidirectional association>)
	  b parent class_ref 155926 // Element
      end

      classrelation 211734 // n (<unidirectional association>)
	relation 211734 --->
	  a role_name "n" multiplicity "[4]" public
	    comment " The Pins associated with the CNodes in the element"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
"
	    classrelation_ref 211734 // n (<unidirectional association>)
	  b parent class_ref 156822 // Pin
      end

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

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

    class 186006 "ElementMapList"
      visibility package stereotype "typedef" base_type class_ref 185878 // ElementMap
      cpp_decl "${comment}typedef QValueList<${type}> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 212118 // <dependency>
	relation 212118 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 212118 // <dependency>
	  b parent class_ref 185878 // ElementMap
      end
    end

    class 188310 "ComponentModel"
      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 ""
      
      operation 482070 "ComponentModel"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class ComponentModel

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 482198 "~ComponentModel"
	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 482326 "setDescription"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "description" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_description = description; };
"
	
	
	
	
	comment "*
		 * Sets the description.
		 "
      end

      operation 482454 "description"
	const cpp_inline public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_description; };
"
	
	
	
	
	comment "*
		 * @return A short description.
		 "
      end

      operation 482582 "property"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 1
	  param in name "name" 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}}
"
	
	
	
	
	comment "*
		 * @return the value of the property with the given @p name . If the
		 * property does not exist, then the value 0.0 is returned.
		 "
      end

      operation 482710 "setProperty"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "name" explicit_type "QString"
	  param in name "value" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Set the property called @p name to have the value @p value .
		 "
      end

      attribute 270742 "m_name"
	protected explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 270870 "m_description"
	protected explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

    class 188438 "ComponentModelDict"
      visibility package stereotype "typedef" base_type class_ref 188310 // ComponentModel
      cpp_decl "${comment}typedef QDict<${type}> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 213142 // <dependency>
	relation 213142 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 213142 // <dependency>
	  b parent class_ref 188310 // ComponentModel
      end
    end

    class 188566 "ComponentModelLibrary"
      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 <david@bluehaze.org>
"
      classrelation 213270 // <generalisation>
	relation 213270 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 213270 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

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

      class 188822 "ModelType"
	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 270998 "None"
	  public type class_ref 188822 // ModelType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 271126 "NPN"
	  public type class_ref 188822 // ModelType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 271254 "PNP"
	  public type class_ref 188822 // ModelType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 188950 "ComponentModelDictMap"
	visibility package stereotype "typedef" base_type class_ref 188822 // ModelType
	cpp_decl "${comment}typedef QMap<${type},ComponentModelDict> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 213398 // <dependency>
	  relation 213398 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 213398 // <dependency>
	    b parent class_ref 188822 // ModelType
	end
      end

      class 189078 "ModelStringListMap"
	visibility package stereotype "typedef" base_type class_ref 188822 // ModelType
	cpp_decl "${comment}typedef QMap<${type},QStringList> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 213526 // <dependency>
	  relation 213526 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 213526 // <dependency>
	    b parent class_ref 188822 // ModelType
	end
      end

      operation 482838 "modelIDs"
	const cpp_inline public explicit_return_type "QStringList"
	nparams 1
	  param in name "modelType" type class_ref 188822 // ModelType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return m_componentModelIDs[ modelType ]; };
"
	
	
	
	
	comment "*
		 * @return The list of IDs for the given ModelType.
		 * @see modelNames
		 "
      end

      operation 482966 "self"
	class_operation preserve_cpp_body_indent public return_type class_ref 188566 // ComponentModelLibrary
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// static

${comment}${inline}${type} * ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 483094 "~ComponentModelLibrary"
	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 483222 "loadModels"
	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 "*
		 * Reads in the component models from disk.
		 "
      end

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

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

      operation 483350 "ComponentModelLibrary"
	preserve_cpp_body_indent private explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      classrelation 213910 // m_pSelf (<unidirectional association>)
	relation 213910 --->
	  a role_name "m_pSelf" init_value "= 0l" class_relation private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 213910 // m_pSelf (<unidirectional association>)
	  b parent class_ref 188566 // ComponentModelLibrary
      end
    end

    class 188694 "typedef25"
      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 189206 "PinVector"
      visibility package stereotype "typedef" base_type class_ref 156822 // Pin
      cpp_decl "${comment}typedef QValueVector<${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 214038 // <dependency>
	relation 214038 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 214038 // <dependency>
	  b parent class_ref 156822 // Pin
      end
    end

    class 189334 "SourceLineMap"
      visibility package stereotype "typedef" base_type class_ref 134294 // SourceLine
      cpp_decl "${comment}typedef QMap<${type},SourceLine> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 214678 // <dependency>
	relation 214678 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 214678 // <dependency>
	  b parent class_ref 134294 // SourceLine
      end
    end

    class 189462 "DebugLine"
      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 214806 // <generalisation>
	relation 214806 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 214806 // <generalisation>
	  b parent class_ref 134294 // SourceLine
      end

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

      operation 487318 "DebugLine"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "fileName" explicit_type "QString"
	  param in name "line" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterInfo
//BEGIN class DebugLine

${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}${)}
	: SourceLine( fileName, line )
${throw}{
${body}}
"
	
	
	
	
      end

      operation 487446 "isBreakpoint"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bIsBreakpoint; };
"
	
	
	
	
	comment "*
		 * Whether or not to break when we reach this line.
		 "
      end

      operation 487574 "setBreakpoint"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "breakpoint" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bIsBreakpoint = breakpoint; };
"
	
	
	
	
	comment "*
		 * Set whether or not to break when we reach this line.
		 "
      end

      operation 487702 "markAsDeleted"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { m_bMarkedAsDeleted = true; };
"
	
	
	
	
	comment "*
		 * Used for efficiency purposes by GpsimProcessor. Sets a flag.
		 "
      end

      operation 487830 "markedAsDeleted"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bMarkedAsDeleted; };
"
	
	
	
	
	comment "*
		 * Used for efficiency purposes by GpsimProcessor.
		 "
      end

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

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

      operation 487958 "DebugLine"
	private explicit_return_type ""
	nparams 1
	  param in name "dl" type class_ref 189462 // DebugLine
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 488086 "operator ="
	private return_type class_ref 189462 // DebugLine
	nparams 1
	  param in name "dl" type class_ref 189462 // DebugLine
	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
    end

    class 189718 "RegisterSet"
      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 information about a set of registers, used to hide gpsim interface.
@author David Saxton
"
      operation 489110 "RegisterSet"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "picProcessor" explicit_type "pic_processor"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//END class Debugger
//BEGIN class RegisterSet

${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 489238 "~RegisterSet"
	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 489366 "update"
	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 "*
		 * Calls update for each RegisterInfo in this set.
		 "
      end

      operation 489494 "size"
	const cpp_inline public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_registers.size(); };
"
	
	
	
	
	comment "*
		 * Returns the number of registers.
		 "
      end

      operation 489622 "fromAddress"
	preserve_cpp_body_indent public return_type class_ref 181782 // RegisterInfo
	nparams 1
	  param in name "address" explicit_type "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}}
"
	
	
	
	
      end

      operation 489750 "fromName"
	preserve_cpp_body_indent public return_type class_ref 181782 // RegisterInfo
	nparams 1
	  param in name "name" 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

      class 189846 "RegisterInfoMap"
	visibility package stereotype "typedef" base_type class_ref 181782 // RegisterInfo
	cpp_decl "${comment}typedef QMap<QString,${type}*> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 215318 // <dependency>
	  relation 215318 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 215318 // <dependency>
	    b parent class_ref 181782 // RegisterInfo
	end
      end

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

      classrelation 215574 // m_registers (<unidirectional association>)
	relation 215574 --->
	  stereotype "QValueVector"
	  a role_name "m_registers" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}*> ${name}${value};
"
	    classrelation_ref 215574 // m_registers (<unidirectional association>)
	  b parent class_ref 181782 // RegisterInfo
      end
    end

    class 190486 "JunctionNode"
      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 "*
 An ECNode class with type() == ec_junction
"
      classrelation 217366 // <generalisation>
	relation 217366 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 217366 // <generalisation>
	  b parent class_ref 155670 // ECNode
      end

      operation 495126 "JunctionNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param inout name "icnDocument" type class_ref 151958 // ICNDocument
	  param in name "dir" explicit_type "int"
	  param in name "pos" explicit_type "QPoint"
	  param inout name "id" explicit_type "QString"
	    defaultvalue "0L"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} * ${p3}${v3}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} & ${p2}, ${t3} * ${p3}${)}: 
		ECNode(icnDocument, Node::ec_junction, dir, pos, id)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 495254 "~JunctionNode"
	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 495382 "type"
	const cpp_virtual cpp_inline public explicit_return_type "node_type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Node::ec_junction; };
"
	
	
	
	
	comment "* Returns the node's type. This member will be removed one day "
      end

      operation 495510 "drawShape"
	preserve_cpp_body_indent cpp_virtual public 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 "*
	 *  draws the JunctionNode
	 "
      end
    end

    class 190742 "PinNode"
      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 "*
An ECNode class with type() == ec_pin

"
      classrelation 218774 // <generalisation>
	relation 218774 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 218774 // <generalisation>
	  b parent class_ref 155670 // ECNode
      end

      operation 500118 "PinNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param inout name "icnDocument" type class_ref 151958 // ICNDocument
	  param in name "dir" explicit_type "int"
	  param in name "pos" explicit_type "QPoint"
	  param inout name "id" explicit_type "QString"
	    defaultvalue "0L"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} * ${p3}${v3}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} ${p1}, const ${t2} & ${p2}, ${t3} * ${p3}${)} :
		  ECNode(icnDocument, Node::ec_pin, dir, pos, id)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 500246 "~PinNode"
	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 500374 "type"
	const cpp_virtual cpp_inline public explicit_return_type "node_type"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Node::ec_pin; };
"
	
	
	
	
	comment "* Returns the node's type. This member will be removed one day "
      end

      operation 500502 "drawShape"
	preserve_cpp_body_indent cpp_virtual public 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 "*
	 *  draws the PinNode
	 "
      end
    end

    class 190870 "Port"
      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
 "
      class 190998 "ProbeResult"
	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 277526 "ExistsAndRW"
	  public type class_ref 190998 // ProbeResult
	  init_value "= 1 << 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 277654 "ExistsButNotRW"
	  public type class_ref 190998 // ProbeResult
	  init_value "= 1 << 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 277782 "DoesntExist"
	  public type class_ref 190998 // ProbeResult
	  init_value "= 1 << 2
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 500630 "Port"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Port

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 500758 "~Port"
	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

      operation 500886 "ports"
	class_operation preserve_cpp_body_indent public explicit_return_type "QStringList"
	nparams 1
	  param in name "probeResult" explicit_type "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 "*
		 * Returns a list of ports, whose probe status AND's with probeResult.
		 * This function just returns the combination of the lists for
		 * SerialPort::ports and ParallelPort::ports.
		 "
      end
    end

    class 191126 "SerialPort"
      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 "*
Abstraction for a serial port, allowing control over individual pins.

@author David Saxton
 "
      classrelation 218902 // <generalisation>
	relation 218902 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 218902 // <generalisation>
	  b parent class_ref 190870 // Port
      end

      class 191254 "Pin"
	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 277910 "CD"
	  public type class_ref 191254 // Pin
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278038 "RD"
	  public type class_ref 191254 // Pin
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278166 "TD"
	  public type class_ref 191254 // Pin
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278294 "DTR"
	  public type class_ref 191254 // Pin
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278422 "GND"
	  public type class_ref 191254 // Pin
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278550 "DSR"
	  public type class_ref 191254 // Pin
	  init_value "= 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278678 "RTS"
	  public type class_ref 191254 // Pin
	  init_value "= 7"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278806 "CTS"
	  public type class_ref 191254 // Pin
	  init_value "= 8"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 278934 "RI"
	  public type class_ref 191254 // Pin
	  init_value "= 9 // Ring indicator
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 501014 "SerialPort"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class Port
//BEGIN class SerialPort

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 501142 "~SerialPort"
	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 501270 "setPinState"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "pin" type class_ref 191254 // Pin
	  param in name "state" explicit_type "bool"
	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 "*
		 * Writes state (high or low) to the given pin.
		 "
      end

      operation 501398 "pinState"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "pin" type class_ref 191254 // Pin
	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 501526 "probe"
	class_operation preserve_cpp_body_indent public explicit_return_type "ProbeResult"
	nparams 1
	  param in name "port" 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 501654 "ports"
	class_operation preserve_cpp_body_indent public explicit_return_type "QStringList"
	nparams 1
	  param in name "probeResult" explicit_type "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 "*
		 * @see Port::ports
		 "
      end

      operation 501782 "openPort"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "port" explicit_type "QString"
	  param in name "baudRate" explicit_type "speed_t"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Opens the given port.
		 * @return if the port could be opened.
		 * @param baudRate The baud rate as defined in bits/termios.h
		 "
      end

      operation 501910 "closePort"
	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 "*
		 * Closes any currently open port.
		 "
      end

      attribute 279062 "m_previousState"
	protected explicit_type "termios"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 279190 "m_file"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 191382 "ParallelPort"
      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 "*
Abstraction for a parallel port, allowing control over individual pins.
Based loosely on code in the parapin project; see http://parapin.sf.net

@author David Saxton
"
      classrelation 219030 // <generalisation>
	relation 219030 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 219030 // <generalisation>
	  b parent class_ref 190870 // Port
      end

      class 191510 "Pin"
	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 279318 "PIN02"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 279446 "PIN03"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 279574 "PIN04"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 279702 "PIN05"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 279830 "PIN06"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 279958 "PIN07"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280086 "PIN08"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280214 "PIN09"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 7"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280342 "DATA_PINS"
	  public type class_ref 191510 // Pin
	  init_value "= PIN02 | PIN03 | PIN04 | PIN05 | PIN06
					 | PIN07 | PIN08 | PIN09"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280470 "PIN15"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 11"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280598 "PIN13"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 12"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280726 "PIN12"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 13"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280854 "PIN10"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 14"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 280982 "PIN11"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 15"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281110 "STATUS_PINS"
	  public type class_ref 191510 // Pin
	  init_value "= PIN15 | PIN13 | PIN12 | PIN10 | PIN11"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281238 "PIN01"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 16"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281366 "PIN14"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 17"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281494 "PIN16"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 18"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281622 "PIN17"
	  public type class_ref 191510 // Pin
	  init_value "= 1 << 19"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 281750 "CONTROL_PINS"
	  public type class_ref 191510 // Pin
	  init_value "= PIN01 | PIN14 | PIN16 | PIN17
			
			
			// Pins 18 to 25 are ground
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 191638 "Register"
	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 281878 "Data"
	  public type class_ref 191638 // Register
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 282006 "Status"
	  public type class_ref 191638 // Register
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 282134 "Control"
	  public type class_ref 191638 // Register
	  init_value "= 2
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 191766 "Direction"
	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 282262 "Input"
	  public type class_ref 191766 // Direction
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 282390 "Output"
	  public type class_ref 191766 // Direction
	  init_value "= 1
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 502038 "ParallelPort"
	public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

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

      operation 502294 "openPort"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "port" 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}}
"
	
	
	
	
	comment "*
		 * Opens the given port.
		 * @return if the port could be opened.
		 "
      end

      operation 502422 "closePort"
	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 "*
		 * Closes any currently open port.
		 "
      end

      operation 502550 "setPinState"
	public explicit_return_type "void"
	nparams 2
	  param in name "pins" explicit_type "int"
	  param in name "state" explicit_type "bool"
	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 "BEGIN Pin-oriented operations
*
		 * @param pins A list of ParallelPort::Pin OR'd together.
		 "
      end

      operation 502678 "pinState"
	public explicit_return_type "int"
	nparams 1
	  param in name "pins" 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}}
"
	
	
	
	
	comment "*
		 * @return the pin states for the given list of pins.
		 "
      end

      operation 502806 "setDataState"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "pins" explicit_type "uchar"
	  param in name "state" explicit_type "bool"
	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 "*
		 * Sets the given pins to the given state in the Data register.
		 "
      end

      operation 502934 "setControlState"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "pins" explicit_type "uchar"
	  param in name "state" explicit_type "bool"
	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 "*
		 * Sets the given pins to the given state in the Control register.
		 "
      end

      operation 503062 "readFromRegister"
	preserve_cpp_body_indent public explicit_return_type "uchar"
	nparams 1
	  param in name "reg" type class_ref 191638 // Register
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Pin-oriented operations
//BEGIN Register-oriented operations

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "END Pin-oriented operations
BEGIN Register-oriented operations
*
		 * Reads and stores the value in the given reigsters, and returns it.
		 "
      end

      operation 503190 "writeToData"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "value" explicit_type "uchar"
	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 "*
		 * Write the given value to the Data register.
		 "
      end

      operation 503318 "writeToControl"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "value" explicit_type "uchar"
	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 "*
		 * Write the given value to the Control register (any input pins will be
		 * set to one).
		 "
      end

      operation 503446 "setDataDirection"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "dir" type class_ref 191766 // Direction
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Register-oriented operations
//BEGIN Changing pin directions

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "END Register-oriented operations
BEGIN Changing pin directions
*
		 * Sets the (input / ouput) direction of the data pins.
		 "
      end

      operation 503574 "setControlDirection"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "pins" explicit_type "int"
	  param in name "dir" type class_ref 191766 // Direction
	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 "*
		 * Sets the given pins to the given direction.
		 "
      end

      operation 503702 "probe"
	class_operation preserve_cpp_body_indent public explicit_return_type "ProbeResult"
	nparams 1
	  param in name "port" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Changing pin directions

${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "END Changing pin directions"
      end

      operation 503830 "ports"
	class_operation preserve_cpp_body_indent public explicit_return_type "QStringList"
	nparams 1
	  param in name "probeResult" explicit_type "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 "*
		 * @see Port::ports
		 "
      end

      operation 503958 "writeToRegister"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param in name "reg" type class_ref 191638 // Register
	  param in name "value" explicit_type "uchar"
	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 "*
		 * Writes the value to the given register.
		 "
      end

      operation 504086 "reset"
	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 282518 "m_reg"
	protected explicit_type "uchar"
	multiplicity "[3]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 282646 "m_inputPins"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 282774 "m_outputPins"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 282902 "m_file"
	protected explicit_type "int"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 191894 "Subcircuits"
      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 "*
Interface for dealing with loading / saving / etc of subcircuits
@author David Saxton
"
      classrelation 219158 // <generalisation>
	relation 219158 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 219158 // <generalisation>
	  b parent class_ref 188694 // typedef25
      end

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

      operation 504214 "~Subcircuits"
	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 504342 "createSubcircuit"
	class_operation preserve_cpp_body_indent public return_type class_ref 170902 // ECSubcircuit
	nparams 4
	  param in name "id" explicit_type "int"
	  param inout name "circuitDocument" type class_ref 156950 // CircuitDocument
	  param in name "newItem" explicit_type "bool"
	  param in name "newId" explicit_type "char"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} ${p2}${v2}, const ${t3} * ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${t0} ${p0}, ${t1} * ${p1}, ${t2} ${p2}, const ${t3} * ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Handles subcircuit creation when the user selects the subcircuit to be
	 * created.
	 * @param id Id of subcircuit; e.g. \"sc/10\"
	 "
      end

      operation 504470 "initECSubcircuit"
	class_operation preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "subcircuitId" explicit_type "int"
	  param inout name "ecSubcircuit" type class_ref 170902 // ECSubcircuit
	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 "*
	 * Loads a subcircuit into a subcircuit component
	 "
      end

      operation 504598 "loadSubcircuits"
	class_operation 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 "*
	 * Reads in the config entries and adds the subcircuits found to the
	 * component selector
	 "
      end

      operation 504726 "addSubcircuit"
	class_operation preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "name" explicit_type "QString"
	  param in name "subcircuitXml" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Saves the given subcircuit to the appdata dir, updates the appropriate
	 * config entries, and adds the subcircuit to the component selector.
	 "
      end

      operation 504854 "genFileName"
	class_operation preserve_cpp_body_indent public explicit_return_type "QString"
	nparams 1
	  param in name "nextId" explicit_type "int"
	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 a path to the appdata dir, e.g. genFileName(2) might return
	 * ~/.kde/share/apps/ktechlab/subcircuit_2.circuit
	 "
      end

      operation 504982 "updateComponentSelector"
	class_operation preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "id" explicit_type "int"
	  param in name "name" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
	 * Adds the given entry to the component selector
	 "
      end

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

      operation 505110 "slotItemRemoved"
	preserve_cpp_body_indent protected explicit_return_type "void"
	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 505238 "Subcircuits"
	preserve_cpp_body_indent private explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}
	: QObject()
${throw}{
${body}}
"
	
	
	
	
      end

      operation 505366 "subcircuits"
	preserve_cpp_body_indent friend cpp_inline private return_type class_ref 191894 // Subcircuits
	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
  end

  package_ref 130838 // components

  deploymentview 129942 "electronics"
    //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 140182 "circuiticndocument"
      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 185622 // ECNodeMap
	class_ref 157078 // CircuitICNDocument
      end
    end

    artifact 140310 "component"
      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 185750 // PinListList
	class_ref 185878 // ElementMap
	class_ref 186006 // ElementMapList
	class_ref 155414 // Component
      end
    end

    artifact 140438 "componentmodellibrary"
      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 188310 // ComponentModel
	class_ref 188438 // ComponentModelDict
	class_ref 188694 // typedef25
	class_ref 188566 // ComponentModelLibrary
      end
    end

    artifact 140566 "ecnode"
      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 189206 // PinVector
	class_ref 155670 // ECNode
      end
    end

    artifact 140694 "gpsimprocessor"
      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 189334 // SourceLineMap
	class_ref 189462 // DebugLine
	class_ref 181782 // RegisterInfo
	class_ref 189718 // RegisterSet
	class_ref 181014 // GpsimDebugger
	class_ref 160278 // GpsimProcessor
      end
    end

    artifact 140822 "junctionnode"
      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 190486 // JunctionNode
      end
    end

    artifact 140950 "pin"
      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 156822 // Pin
      end
    end

    artifact 141078 "pinnode"
      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 190742 // PinNode
      end
    end

    artifact 141206 "port"
      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 190870 // Port
	class_ref 191126 // SerialPort
	class_ref 191382 // ParallelPort
      end
    end

    artifact 141334 "subcircuits"
      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 191894 // Subcircuits
      end
    end

    artifact 141462 "switch"
      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 156310 // Switch
      end
    end

    artifact 141590 "wire"
      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 159382 // Wire
      end
    end
  end

  package_ref 131734 // models
end
