format 58
"microbe" // trunk::microbe
  revision 1
  modified_by 22 "zolee"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
  //collaboration diagram settings
  show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default show_stereotype_properties default
  //activity diagram settings
  package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
  show_infonote default drawing_language default show_stereotype_properties default
  
  classview 129558 "microbe"
    //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 133398 "BTreeBase"
      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 This holds a pointer to the start of the tree, and provides the traversal code.
@author Daniel Clarke
"
      operation 144790 "BTreeBase"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 144918 "~BTreeBase"
	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 145046 "root"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_root; };
"
	
	
	
	
	comment "* Return a pointer to the root node of the tree "
      end

      operation 145174 "setRoot"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "root" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} {m_root = root; };
"
	
	
	
	
	comment "* Set the root node of the tree "
      end

      operation 145302 "addNode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param inout name "parent" type class_ref 133526 // BTreeNode
	  param inout name "node" type class_ref 133526 // BTreeNode
	  param in name "left" 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}}
"
	
	
	
	
	comment "* Link the node into the tree. a.t.m all this really
    does it sets the parent/child relationship pointers, 
    but is used in case something needs to be changed in the future 
    Added to the left if left == true or the right if left == false "
      end

      operation 145430 "deleteTree"
	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 "* Deletes all nodes in tree and zeros pointer to root node "
      end

      operation 145558 "pruneTree"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "root" type class_ref 133526 // BTreeNode
	  param in name "" explicit_type "bool"
	    defaultvalue "true"
	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 "* Tidies the tree up; merging constants and removing redundant branches "
      end

      operation 145686 "replaceNode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "node" type class_ref 133526 // BTreeNode
	  param inout name "replacement" type class_ref 133526 // BTreeNode
	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 "* Put a node in place of another, linking it correctly into the parent. "
      end

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

    class 133526 "BTreeNode"
      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 node points to the two child nodes (left and right), and contains the binary
operation used to combine them.

@author Daniel Clarke
@author David Saxton
"
      operation 145814 "BTreeNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 145942 "BTreeNode"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param inout name "p" type class_ref 133526 // BTreeNode
	  param inout name "l" type class_ref 133526 // BTreeNode
	  param inout name "r" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, ${t2} * ${p2}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 146070 "~BTreeNode"
	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 146198 "deleteChildren"
	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 "*
		 * Used for debugging purposes; prints the tree structure to stdout.
		 
 		void printTree();
*
		 * Recursively delete all children of a node.
		 "
      end

      operation 146326 "parent"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_parent; };
"
	
	
	
	
	comment "*
		 * @return the parent node.
		 "
      end

      operation 146454 "left"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_left; };
"
	
	
	
	
	comment "*
		 * @return the left child node.
		 "
      end

      operation 146582 "right"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_right; };
"
	
	
	
	
	comment "*
		 * @return the right child node.
		 "
      end

      operation 146710 "setParent"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "parent" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_parent = parent; };
"
	
	
	
	
      end

      operation 146838 "setLeft"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "left" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_left = left; m_left->setParent( this ); };
"
	
	
	
	
	comment "*
		 * Set the child node on the left to the one give, and reparents it to
		 * this node. 
		 "
      end

      operation 146966 "setRight"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "right" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_right = right; m_right->setParent( this ); };
"
	
	
	
	
	comment "*
		 * Set the child node on the right to the one give, and reparents it to
		 * this node. 
		 "
      end

      operation 147094 "hasChildren"
	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_left || m_right; };
"
	
	
	
	
	comment "*
		 * @return true if have a left or a right child node.
		 "
      end

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

      operation 147350 "setType"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "type" type class_ref 133654 // ExprType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_type = type; };
"
	
	
	
	
      end

      operation 147478 "value"
	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_value;};
"
	
	
	
	
      end

      operation 147606 "setValue"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "value" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_value = value; };
"
	
	
	
	
      end

      operation 147734 "childOp"
	const cpp_inline public return_type class_ref 133910 // Operation
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {return m_childOp;};
"
	
	
	
	
      end

      operation 147862 "setChildOp"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "op" type class_ref 133910 // Operation
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_childOp = op;};
"
	
	
	
	
      end

      operation 147990 "setReg"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "r" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_reg = r; };
"
	
	
	
	
      end

      operation 148118 "reg"
	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_reg;};
"
	
	
	
	
      end

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

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

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

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

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

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

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

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

    class 133654 "ExprType"
      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 194582 "unset"
	public type class_ref 133654 // ExprType
	init_value "= 1"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 194710 "working"
	public type class_ref 133654 // ExprType
	init_value "= 2"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 194838 "number"
	public type class_ref 133654 // ExprType
	init_value "= 3"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 194966 "variable"
	public type class_ref 133654 // ExprType
	init_value "= 4"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 195094 "extpin"
	public type class_ref 133654 // ExprType
	init_value "= 5"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 195222 "keypad"
	public type class_ref 133654 // ExprType
	init_value "= 6
"
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 133782 "Expression"
      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 Daniel Clarke
@author David Saxton
"
      class 133910 "Operation"
	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 175510 "noop"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 175638 "addition"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 175766 "subtraction"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 175894 "multiplication"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176022 "division"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176150 "exponent"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176278 "equals"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176406 "notequals"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176534 "pin"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176662 "notpin"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176790 "read_keypad"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 176918 "function"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177046 "bwand"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177174 "bwor"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177302 "bwxor"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177430 "bwnot"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177558 "divbyzero"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177686 "gt"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177814 "lt"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 177942 "ge"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178070 "le"
	  public type class_ref 133910 // Operation
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 148374 "Expression"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param inout name "pic" type class_ref 134038 // PIC14
	  param inout name "master" type class_ref 134166 // Microbe
	  param in name "sourceLine" type class_ref 134294 // SourceLine
	  param in name "suppressNumberTooBig" explicit_type "bool"
	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}${)}
	: m_sourceLine(sourceLine)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 148502 "~Expression"
	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 148630 "compileExpression"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "expression" 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 "*
		 * Generates the code needed to evaluate an expression. Firstly, a tree
		 * is generated from the expression string; then that tree is traversed
		 * to generate the assembly.
		 "
      end

      operation 148758 "compileConditional"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param in name "expression" explicit_type "QString"
	  param inout name "ifCode" type class_ref 134422 // Code
	  param inout name "elseCode" type class_ref 134422 // Code
	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}}
"
	
	
	
	
      end

      operation 148886 "processConstant"
	preserve_cpp_body_indent public explicit_return_type "QString"
	nparams 2
	  param in name "expr" explicit_type "QString"
	  param inout name "isConstant" explicit_type "bool"
	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 "* 
		 * Returns a *number* rather than evaluating code, and sets isConstant to true
		 * if it the expression evaluated to a constant.
		 "
      end

      classrelation 133398 // m_pic (<unidirectional association>)
	relation 133398 --->
	  a role_name "m_pic" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 133398 // m_pic (<unidirectional association>)
	  b parent class_ref 134038 // PIC14
      end

      classrelation 133526 // mb (<unidirectional association>)
	relation 133526 --->
	  a role_name "mb" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 133526 // mb (<unidirectional association>)
	  b parent class_ref 134166 // Microbe
      end

      operation 149014 "traverseTree"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param inout name "root" type class_ref 133526 // BTreeNode
	  param in name "conditionalRoot" explicit_type "bool"
	    defaultvalue "false "
	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 "* Turns the operations encoded in the given tree into assembly code "
      end

      operation 149142 "isUnaryOp"
	preserve_cpp_body_indent private explicit_return_type "bool"
	nparams 1
	  param in name "op" type class_ref 133910 // Operation
	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 149270 "expressionValue"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 3
	  param in name "expr" explicit_type "QString"
	  param inout name "" type class_ref 133398 // BTreeBase
	  param inout name "node" type class_ref 133526 // BTreeNode
	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 149398 "doOp"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 3
	  param in name "op" type class_ref 133910 // Operation
	  param inout name "left" type class_ref 133526 // BTreeNode
	  param inout name "right" type class_ref 133526 // BTreeNode
	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 149526 "doUnaryOp"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "op" type class_ref 133910 // Operation
	  param inout name "node" type class_ref 133526 // BTreeNode
	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 149654 "buildTree"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 4
	  param in name "unstrippedExpression" explicit_type "QString"
	  param inout name "tree" type class_ref 133398 // BTreeBase
	  param inout name "node" type class_ref 133526 // BTreeNode
	  param in name "level" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} * ${p1}, ${t2} * ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Parses an expression, and generates a tree structure from it.
		 "
      end

      operation 149782 "findSkipBrackets"
	class_operation preserve_cpp_body_indent private explicit_return_type "int"
	nparams 3
	  param in name "expr" explicit_type "QString"
	  param in name "ch" explicit_type "char"
	  param in name "startPos" explicit_type "int"
	    defaultvalue "0"
	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}}
"
	
	
	
	
      end

      operation 149910 "findSkipBrackets"
	class_operation preserve_cpp_body_indent private explicit_return_type "int"
	nparams 3
	  param in name "expr" explicit_type "QString"
	  param in name "phrase" explicit_type "QString"
	  param in name "startPos" explicit_type "int"
	    defaultvalue "0"
	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}}
"
	
	
	
	
      end

      operation 150038 "stripBrackets"
	preserve_cpp_body_indent private explicit_return_type "QString"
	nparams 1
	  param in name "expression" explicit_type "QString"
	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 150166 "mistake"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "type" type class_ref 134550 // MistakeType
	  param in name "context" explicit_type "QString"
	    defaultvalue "0 "
	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}}
"
	
	
	
	
      end

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

      classrelation 133782 // m_ifCode (<unidirectional association>)
	relation 133782 --->
	  a role_name "m_ifCode" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 133782 // m_ifCode (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      classrelation 133910 // m_elseCode (<unidirectional association>)
	relation 133910 --->
	  a role_name "m_elseCode" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 133910 // m_elseCode (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      operation 150294 "expressionType"
	preserve_cpp_body_indent private return_type class_ref 133654 // ExprType
	nparams 1
	  param in name "expression" 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 expression type
		 * 0 = directly usable number (literal)
		 * 1 = variable
		 * 2 = expression that needs evaluating
		 * (maybe not, see enum).
		 "
      end

      operation 150422 "isLiteral"
	class_operation private explicit_return_type "bool"
	nparams 1
	  param in name "text" 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

      attribute 178198 "m_bSupressNumberTooBig"
	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 134038 "PIC14"
      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 Daniel Clarke
@author David Saxton
"
      class 144150 "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 203286 "P16C84"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 203414 "P16F84"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 203542 "P16F627"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 203670 "P16F628"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 203798 "P16F877"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 203926 "unknown"
	  public type class_ref 144150 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 144278 "LocationType"
	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 204054 "num"
	  public type class_ref 144278 // LocationType
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204182 "work"
	  public type class_ref 144278 // LocationType
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204310 "var"
	  public type class_ref 144278 // LocationType
	  init_value "= 3
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 144406 "DelaySubroutine"
	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 204438 "Delay_None"
	  public type class_ref 144406 // DelaySubroutine
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204566 "Delay_3uS"
	  public type class_ref 144406 // DelaySubroutine
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204694 "Delay_768uS"
	  public type class_ref 144406 // DelaySubroutine
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204822 "Delay_200mS"
	  public type class_ref 144406 // DelaySubroutine
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 204950 "Delay_50S"
	  public type class_ref 144406 // DelaySubroutine
	  init_value "= 4
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 196246 "PIC14"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param inout name "master" type class_ref 134166 // Microbe
	  param in name "type" type class_ref 144150 // Type
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// A
// b
// C
// d
// E
// F

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

      operation 196374 "~PIC14"
	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 196502 "toType"
	class_operation preserve_cpp_body_indent public return_type class_ref 144150 // Type
	nparams 1
	  param in name "_text" 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 "*
		 * Tries to convert the string to a PIC type, returning unknown if
		 * unsuccessful.
		 "
      end

      operation 196630 "type"
	const cpp_inline public return_type class_ref 144150 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_type; };
"
	
	
	
	
	comment "*
		 * @return the PIC type.
		 "
      end

      operation 196758 "minimalTypeString"
	preserve_cpp_body_indent const public explicit_return_type "QString"
	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 the Type as a string without the P at the front.
		 "
      end

      operation 196886 "toPortPin"
	preserve_cpp_body_indent public return_type class_ref 142102 // PortPin
	nparams 1
	  param in name "portPinString" 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 "*
		 * Translates the portPinString (e.g. \"PORTA.2\") into a PortPin if the port
		 * and pin combination is valid (otherwise returns an invalid PortPin with
		 * a pin of -1.
		 "
      end

      operation 197014 "gprStart"
	preserve_cpp_body_indent const public explicit_return_type "uchar"
	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 address that the General Purpose Registers starts at.
		 "
      end

      operation 197142 "setParser"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "parser" type class_ref 144022 // Parser
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_parser = parser; };
"
	
	
	
	
      end

      operation 197270 "setCode"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "code" type class_ref 134422 // Code
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_pCode = code; };
"
	
	
	
	
      end

      operation 197398 "mergeCode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "code" type class_ref 134422 // Code
	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 197526 "setConditionalCode"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "ifCode" type class_ref 134422 // Code
	  param inout name "elseCode" type class_ref 134422 // Code
	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 197654 "ifCode"
	preserve_cpp_body_indent public return_type class_ref 134422 // Code
	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 197782 "elseCode"
	preserve_cpp_body_indent public return_type class_ref 134422 // Code
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      classrelation 144662 // m_ifCode (<unidirectional association>)
	relation 144662 --->
	  a role_name "m_ifCode" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 144662 // m_ifCode (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      classrelation 144790 // m_elseCode (<unidirectional association>)
	relation 144790 --->
	  a role_name "m_elseCode" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 144790 // m_elseCode (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      operation 197910 "postCompileConstruct"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "interrupts" 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}}
"
	
	
	
	
      end

      operation 198038 "isValidPort"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "portName" 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 whether or not the port is valid.
		 * @see isValidPortPin
		 "
      end

      operation 198166 "isValidPortPin"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "portPin" type class_ref 142102 // PortPin
	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 whether or not the port and pin is a valid combination.
		 * @see isValidPort
		 "
      end

      operation 198294 "isValidTris"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "trisName" 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 198422 "isValidInterrupt"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "interruptName" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//****************************modifications ends********************************************

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

      operation 198550 "isValidRegister"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "registerName" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//*****************Modified ****************************//
//New function isValiedRegister is added to check whether a register is valied or not

${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/modified new function isValidRegister is added ******************"
      end

      operation 198678 "Sgoto"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "label" 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 "		bool isValidRegisterBit( const QString & interruptName ) const; 
TODO GIE=high
******************************modification ends***********************************"
      end

      operation 198806 "Slabel"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "label" 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 198934 "Send"
	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 199062 "Ssubroutine"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "procName" explicit_type "QString"
	  param inout name "subCode" type class_ref 134422 // Code
	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}}
"
	
	
	
	
      end

      operation 199190 "Sinterrupt"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "procName" explicit_type "QString"
	  param inout name "subCode" type class_ref 134422 // Code
	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}}
"
	
	
	
	
      end

      operation 199318 "Scall"
	preserve_cpp_body_indent public explicit_return_type "void"
	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

      operation 199446 "Ssetlh"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "portPin" type class_ref 142102 // PortPin
	  param in name "high" explicit_type "bool"
	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}}
"
	
	
	
	
      end

      operation 199574 "add"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	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 199702 "subtract"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 199830 "mul"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	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 199958 "div"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 200086 "assignNum"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "val" 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 200214 "assignVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "val" 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 200342 "saveToReg"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "dest" 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 200470 "saveResultToVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "var" 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 "*
		 * Move the contents of the working register to the register with the given
		 * name.
		 "
      end

      operation 200598 "equal"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \"==\" "
      end

      operation 200726 "notEqual"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \"!=\" "
      end

      operation 200854 "greaterThan"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \">\" "
      end

      operation 200982 "lessThan"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \"<\" "
      end

      operation 201110 "greaterOrEqual"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \">=\" "
      end

      operation 201238 "lessOrEqual"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* Code for \"<=\" "
      end

      operation 201366 "bitwise"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 5
	  param in name "op" type class_ref 133910 // Operation
	  param in name "r_val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//****************************commented for modification *******************************
//
//void PIC14::bitwise( Expression::Operation op, const QString &r_val1, const QString &val2, bool val1IsNum, bool val2IsNum )
//{
//	QString val1 = r_val1;
//	// There is no instruction for notting a literal,
//	// so instead I am going to XOR with 0xFF
//	if( op == Expression::bwnot ) val1 = \"0xFF\";
//	if( val1IsNum ) m_pCode->append(new Instr_movlw(val1.toInt( 0, 0 )));// result += instruction(\"movlw\\t\"+val1);
//	else m_pCode->append(new Instr_movf(val1,0));//result += instruction(\"movf\\t\"+val1+\",0\");
//	
//	QString opString;
//	if( val2IsNum )
//	{
//		switch(op)
//		{
//			case Expression::bwand: m_pCode->append(new Instr_andlw(val2.toInt( 0, 0 ))); break;
//			case Expression::bwor: m_pCode->append(new Instr_iorlw(val2.toInt( 0, 0 ))); break;
//			case Expression::bwxor: m_pCode->append(new Instr_xorlw(val2.toInt( 0, 0 ))); break;
//			case Expression::bwnot: m_pCode->append(new Instr_xorlw(val2.toInt( 0, 0 ))); break;
//			default: break;
//		}
//	}
//	else
//	{
//		switch(op)
//		{
//			case Expression::bwand: m_pCode->append(new Instr_andwf(val2,0)); break;
//			case Expression::bwor: m_pCode->append(new Instr_iorwf(val2,0)); break;
//			case Expression::bwxor: m_pCode->append(new Instr_xorwf(val2,0)); break;
//			case Expression::bwnot: m_pCode->append(new Instr_xorwf(val2,0)); break;
//			default: break;
//		}
//	
//	}
//}
///comment end and the new function is given bellow -- new code is working well
// TODO - One error with OR operation if A OR 255 result in segebentation fault 
//*****************modified to make the bit operation works***************************/

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}, const ${t2} & ${p2}, ${t3} ${p3}, ${t4} ${p4}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/*****modified the function **************
commented for new function since it is not working 
		void bitwise( Expression::Operation op, const QString &val1, const QString &val2, bool val1IsNum, bool val2IsNum );
code for AND OR XOR opertions "
      end

      operation 201494 "Swhile"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "whileCode" type class_ref 134422 // Code
	  param in name "expression" 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 "*******************modification end  ---Result --- new code is working well**************"
      end

      operation 201622 "Srepeat"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "repeatCode" type class_ref 134422 // Code
	  param in name "expression" 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}}
"
	
	
	
	
      end

      operation 201750 "Sif"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param inout name "ifCode" type class_ref 134422 // Code
	  param inout name "elseCode" type class_ref 134422 // Code
	  param in name "expression" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} & ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, const ${t2} & ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 201878 "Sfor"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 6
	  param inout name "forCode" type class_ref 134422 // Code
	  param inout name "initCode" type class_ref 134422 // Code
	  param in name "expression" explicit_type "QString"
	  param in name "variable" explicit_type "QString"
	  param in name "step" explicit_type "QString"
	  param in name "stepPositive" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}, const ${t2} & ${p2}${v2}, const ${t3} & ${p3}${v3}, const ${t4} & ${p4}${v4}, ${t5} ${p5}${v5}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, ${t1} * ${p1}, const ${t2} & ${p2}, const ${t3} & ${p3}, const ${t4} & ${p4}, ${t5} ${p5}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 202006 "Spin"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "portPin" type class_ref 142102 // PortPin
	  param in name "NOT" explicit_type "bool"
	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}}
"
	
	
	
	
      end

      operation 202134 "addCommonFunctions"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "delay" type class_ref 144406 // DelaySubroutine
	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 202262 "Sdelay"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "length_us" explicit_type "uint"
	  param in name "pos" type class_ref 137494 // InstructionPosition
	    defaultvalue "Code::Middle "
	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 \"Special Functionality\" functions
*
		 * Delay the program execution, for the given period of length_us (unit:
		 * microseconds).
		 * @param pos the position to add the code for calling the delay subroutine.
		 "
      end

      operation 202390 "SsevenSegment"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "pinMap" type class_ref 142358 // Variable
	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 "*
		 * Output the working register to the given seven segment.
		 * @param name The variable giving the pin configuration of the seven
		 * segment.
		 "
      end

      operation 202518 "Skeypad"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "pinMap" type class_ref 142358 // Variable
	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 "*
		 * Read the value of the keypad to the working register.
		 * @param name The variable giving the pin configuration of the keypad.
		 "
      end

      operation 202646 "SincVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "var" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//***************************************modification ends*****************************

${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "END \"Special Functionality\" functions"
      end

      operation 202774 "SdecVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "var" 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 202902 "SrotlVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "var" 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 203030 "SrotrVar"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "var" 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 203158 "Stristate"
	preserve_cpp_body_indent public explicit_return_type "void"
	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 203286 "Sasm"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "raw" 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 203414 "multiply"
	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 203542 "divide"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

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

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

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

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

      operation 203670 "ifInitCode"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 4
	  param in name "val1" explicit_type "QString"
	  param in name "val2" explicit_type "QString"
	  param in name "val1Type" type class_ref 144278 // LocationType
	  param in name "val2Type" type class_ref 144278 // LocationType
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, const ${t1} & ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 203798 "rearrangeOpArguments"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 4
	  param inout name "val1" explicit_type "QString"
	  param inout name "val2" explicit_type "QString"
	  param inout name "val1Type" type class_ref 144278 // LocationType
	  param inout name "val2Type" type class_ref 144278 // LocationType
	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 "*
		 * The function makes sure that val1 always contains a working register
		 * variable, if one has been passed, this is done by swapping val1 and val2 when
		 * neccessary
		 "
      end

      operation 203926 "interruptNameToBit"
	preserve_cpp_body_indent protected explicit_return_type "int"
	nparams 2
	  param in name "name" explicit_type "QString"
	  param in name "flag" explicit_type "bool"
	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 "*
		 * @param flag True means give flag bit, false means give enable bit instead
		 "
      end
    end

    class 134166 "Microbe"
      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 Daniel Clarke
@author David Saxton
"
      class 134550 "MistakeType"
	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 195734 "UnknownStatement"
	  public type class_ref 134550 // MistakeType
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 195862 "InvalidPort"
	  public type class_ref 134550 // MistakeType
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 195990 "UnassignedPin"
	  public type class_ref 134550 // MistakeType
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196118 "NonHighLowPinState"
	  public type class_ref 134550 // MistakeType
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196246 "UnassignedPort"
	  public type class_ref 134550 // MistakeType
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196374 "UnexpectedStatementBeforeBracket"
	  public type class_ref 134550 // MistakeType
	  init_value "= 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196502 "MismatchedBrackets"
	  public type class_ref 134550 // MistakeType
	  init_value "= 7"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196630 "InvalidEquals"
	  public type class_ref 134550 // MistakeType
	  init_value "= 8"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196758 "ReservedKeyword"
	  public type class_ref 134550 // MistakeType
	  init_value "= 9"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 196886 "ConsecutiveOperators"
	  public type class_ref 134550 // MistakeType
	  init_value "= 10"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197014 "MissingOperator"
	  public type class_ref 134550 // MistakeType
	  init_value "= 11"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197142 "UnknownVariable"
	  public type class_ref 134550 // MistakeType
	  init_value "= 12"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197270 "UnopenableInclude"
	  public type class_ref 134550 // MistakeType
	  init_value "= 16"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197398 "DivisionByZero"
	  public type class_ref 134550 // MistakeType
	  init_value "= 17"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197526 "NumberTooBig"
	  public type class_ref 134550 // MistakeType
	  init_value "= 18"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197654 "NonConstantStep"
	  public type class_ref 134550 // MistakeType
	  init_value "= 19"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197782 "NonConstantDelay"
	  public type class_ref 134550 // MistakeType
	  init_value "= 20"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 197910 "HighLowExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 21"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198038 "InvalidComparison"
	  public type class_ref 134550 // MistakeType
	  init_value "= 22"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198166 "SubBeforeEnd"
	  public type class_ref 134550 // MistakeType
	  init_value "= 23"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198294 "LabelExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 24"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198422 "TooManyTokens"
	  public type class_ref 134550 // MistakeType
	  init_value "= 25"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198550 "FixedStringExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 26"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198678 "PinListExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 27"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198806 "AliasRedefined"
	  public type class_ref 134550 // MistakeType
	  init_value "= 28"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 198934 "InvalidInterrupt"
	  public type class_ref 134550 // MistakeType
	  init_value "= 29"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199062 "InterruptRedefined"
	  public type class_ref 134550 // MistakeType
	  init_value "= 30"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199190 "InterruptBeforeEnd"
	  public type class_ref 134550 // MistakeType
	  init_value "= 31"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199318 "ReadOnlyVariable"
	  public type class_ref 134550 // MistakeType
	  init_value "= 32"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199446 "WriteOnlyVariable"
	  public type class_ref 134550 // MistakeType
	  init_value "= 33"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199574 "InvalidPinMapSize"
	  public type class_ref 134550 // MistakeType
	  init_value "= 34"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199702 "VariableRedefined"
	  public type class_ref 134550 // MistakeType
	  init_value "= 35"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199830 "InvalidVariableName"
	  public type class_ref 134550 // MistakeType
	  init_value "= 36"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 199958 "VariableExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 40"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 200086 "NameExpected"
	  public type class_ref 134550 // MistakeType
	  init_value "= 41
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

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

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

      operation 187158 "~Microbe"
	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 187286 "errorReport"
	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_errorReport; };
"
	
	
	
	
	comment "*
		 * Returns a list of errors occured during compilation, intended for
		 * outputting to stderr.
		 "
      end

      operation 187414 "compile"
	preserve_cpp_body_indent public explicit_return_type "QString"
	nparams 2
	  param in name "url" explicit_type "QString"
	  param in name "optimize" explicit_type "bool"
	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 "*
		 * Call this to compile the given code. This serves as the top level of
		 * recursion as it performs initialisation of things, to recurse at
		 * levels use parseUsingChild(), or create your own Parser.
		 * @param url is used for reporting errors
		 "
      end

      operation 187542 "compileError"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 3
	  param in name "type" type class_ref 134550 // MistakeType
	  param in name "context" explicit_type "QString"
	  param in name "sourceLine" type class_ref 134294 // SourceLine
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}, const ${t2} & ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}, const ${t2} & ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Adds the given compiler error at the file line number to the
		 * compilation report.
		 "
      end

      operation 187670 "uniqueLabel"
	cpp_inline public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return QString(\"__%1\").arg(m_uniqueLabel++); };
"
	
	
	
	
	comment "*
		 * This is for generating unique numbers for computer generated labels.
		 "
      end

      operation 187798 "alias"
	preserve_cpp_body_indent const public explicit_return_type "QString"
	nparams 1
	  param in name "alias" 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 "*
		 * If alias is an alias for something then it returns that something,
		 * otherwise it just returns alias (which in that case is not an alias!)
		 "
      end

      operation 187926 "addAlias"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "name" explicit_type "QString"
	  param in name "dest" 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 "*
		 * Aliases the name to the dest.
		 "
      end

      operation 188054 "addDelayRoutineWanted"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "routine" 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 "*
		 * Tell Microbe that a minimum of the given delay routine needs to be
		 * created.
		 * @see PIC14::DelaySubroutine
		 * @param routine - DelaySubroutine enum, higher is more priority
		 "
      end

      operation 188182 "makePic"
	preserve_cpp_body_indent public return_type class_ref 134038 // PIC14
	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 "*
		 * Makes a new PIC assembly object, based on the PIC string that the
		 * user has given in the source.
		 "
      end

      operation 188310 "setInterruptUsed"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "interruptName" 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 "*
		 * Add the interrupt as being used, i.e. make sure there is one and only
		 * one occurance of its name in m_usedInterrupts.
		 "
      end

      operation 188438 "isInterruptUsed"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "interruptName" 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 whether the given interrupt has already been used.
		 "
      end

      operation 188566 "isValidVariableName"
	class_operation preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "variableName" 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 whether the variable name is valid.
		 "
      end

      operation 188694 "addVariable"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "variable" type class_ref 142358 // Variable
	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 "*
		 * Appends the given variable name to the variable list.
		 "
      end

      operation 188822 "variable"
	preserve_cpp_body_indent const public return_type class_ref 142358 // Variable
	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 "*
		 * @returns the variable with the given name, or one of invalidType if
		 * no such variable exists.
		 "
      end

      operation 188950 "isVariableKnown"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	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 "*
		 * @returns whether the variable has been declared yet.
		 "
      end

      operation 189078 "dest"
	preserve_cpp_body_indent const public explicit_return_type "QString"
	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 is used as a temporary variable while evaluating an expression.
		 "
      end

      operation 189206 "incDest"
	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 189334 "decDest"
	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 189462 "resetDest"
	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 189590 "simplifyProgram"
	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 "*
		 * Strips comments from m_program, simplifies the white space in each line,
		 * puts braces on separate lines, and then removes any blank lines.
		 "
      end

      attribute 200214 "m_usedInterrupts"
	protected explicit_type "QStringList"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

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

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

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

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

      attribute 200854 "m_aliasList"
	protected explicit_type "QString,QString"
	stereotype "QMap"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 200982 "m_picType"
	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 134294 "SourceLine"
      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 "*
Represents a source line, with the convention of line number starting at zero.
@author David Saxton
"
      operation 186262 "SourceLine"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class SourceLine

${comment}${inline}${class}::${name}${(}${)}
	: m_line(-1)
${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * The QValueList template requires a default constructor - calling this
		 * though creates an invalid SourceLine with line() returning -1. So
		 * this constructor should never be used.
		 "
      end

      operation 186390 "SourceLine"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 3
	  param in name "text" explicit_type "QString"
	  param in name "url" explicit_type "QString"
	  param in name "line" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}${)}${volatile}${throw};
"
	cpp_def "//END class Microbe
//BEGIN class SourceLine

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

      operation 186518 "text"
	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_text; };
"
	
	
	
	
      end

      operation 186646 "url"
	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_url; };
"
	
	
	
	
      end

      operation 186774 "line"
	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_line; };
"
	
	
	
	
      end

      operation 186902 "toStringList"
	class_operation preserve_cpp_body_indent public explicit_return_type "QStringList"
	nparams 1
	  param in name "lines" type class_ref 142742 // SourceLineList
	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 "*
		 * Extracts the text from each SourceLine and adds it to the
		 * returned QStringList.
		 "
      end

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

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

      attribute 195606 "m_line"
	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 134422 "Code"
      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 "*
Holds a program structure; an (ordered) list of blocks of code, each of which
contains a list of instructions. The structure is such as to provide easy
manipulation of the program, as well as aiding the optimizer.

@author David Saxton
"
      operation 156310 "Code"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterDepends
//BEGIN clas Code

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

      class 137110 "iterator"
	visibility package stereotype "typedef" base_type class_ref 136982 // CodeIterator
	cpp_decl "${comment}typedef ${type} ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 135702 // <dependency>
	  relation 135702 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 135702 // <dependency>
	    b parent class_ref 136982 // CodeIterator
	end
      end

      class 137366 "const_iterator"
	visibility package stereotype "typedef" base_type class_ref 137238 // CodeConstIterator
	cpp_decl "${comment}typedef ${type} ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 135830 // <dependency>
	  relation 135830 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 135830 // <dependency>
	    b parent class_ref 137238 // CodeConstIterator
	end
      end

      class 137494 "InstructionPosition"
	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 191126 "InterruptHandler"
	  public type class_ref 137494 // InstructionPosition
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 191254 "LookupTable"
	  public type class_ref 137494 // InstructionPosition
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 191382 "Middle"
	  public type class_ref 137494 // InstructionPosition
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 191510 "Subroutine"
	  public type class_ref 137494 // InstructionPosition
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 191638 "PositionCount"
	  public type class_ref 137494 // InstructionPosition
	  init_value "= 4 ///< This must remain the last item and be the number of valid positions
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 156438 "begin"
	preserve_cpp_body_indent public return_type class_ref 136982 // CodeIterator
	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 156566 "end"
	preserve_cpp_body_indent public return_type class_ref 136982 // CodeIterator
	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 156694 "begin"
	preserve_cpp_body_indent const public return_type class_ref 137238 // CodeConstIterator
	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 156822 "end"
	preserve_cpp_body_indent const public return_type class_ref 137238 // CodeConstIterator
	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 156950 "queueLabel"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "label" explicit_type "QString"
	  param in name "position" type class_ref 137494 // InstructionPosition
	    defaultvalue "Middle "
	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 "*
		 * Queues a label to be given to the next instruction to be added in the
		 * given position
		 "
      end

      operation 157078 "queuedLabels"
	const cpp_inline public explicit_return_type "QStringList"
	nparams 1
	  param in name "position" type class_ref 137494 // InstructionPosition
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return m_queuedLabels[position]; };
"
	
	
	
	
	comment "*
		 * Returns the list of queued labels for the given position. This is
		 * used in merging code, as we also need to merge any queued labels.
		 "
      end

      operation 157206 "append"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "instruction" type class_ref 134678 // Instruction
	  param in name "position" type class_ref 137494 // InstructionPosition
	    defaultvalue "Middle "
	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 the Instruction at the given position.
		 "
      end

      operation 157334 "instruction"
	preserve_cpp_body_indent const public return_type class_ref 134678 // Instruction
	nparams 1
	  param in name "label" 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 the Instruction with the given label (or null if no such
		 * Instruction).
		 "
      end

      operation 157462 "find"
	preserve_cpp_body_indent public return_type class_ref 137110 // iterator
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 "*
		 * Look for an Assembly instruction (other types are ignored).
		 * @return an iterator to the current instruction, or end if it wasn't
		 * found.
		 "
      end

      operation 157590 "removeInstruction"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 the Instruction (regardless of position).
		 * @warning You should always use only this function to remove an
		 * instruction as this function handles stuff such as pushing labels
		 * from this instruction onto the next before deletion.
		 "
      end

      operation 157718 "generateCode"
	preserve_cpp_body_indent const public explicit_return_type "QString"
	nparams 1
	  param inout name "pic" type class_ref 134038 // PIC14
	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 "*
		 * Merges all the blocks output together with other magic such as adding
		 * variables, gpasm directives, etc.
		 "
      end

      operation 157846 "merge"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param inout name "code" type class_ref 134422 // Code
	  param in name "middleInsertionPosition" type class_ref 137494 // InstructionPosition
	    defaultvalue "Middle "
	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 "*
		 * Appends the InstructionLists to the end of the ones in this instance.
		 * @param middleInsertionPosition is the position where the middle code
		 * blocks of the given code will be merged at.
		 "
      end

      operation 157974 "instructionList"
	cpp_inline public return_type class_ref 134806 // InstructionList
	nparams 1
	  param in name "position" type class_ref 137494 // InstructionPosition
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return & m_instructionLists[position]; };
"
	
	
	
	
	comment "*
		 * @returns the InstructionList for the given insertion position.
		 "
      end

      operation 158102 "instructionList"
	const cpp_inline public return_type class_ref 134806 // InstructionList
	nparams 1
	  param in name "position" type class_ref 137494 // InstructionPosition
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} * ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return & m_instructionLists[position]; };
"
	
	
	
	
	comment "*
		 * @returns the InstructionList for the given insertion position.
		 "
      end

      operation 158230 "generateLinksAndStates"
	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 generateOutputLinks for each Instruction
		 "
      end

      operation 158358 "setAllUnused"
	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 setUsed(false) for all instructions.
		 "
      end

      operation 158486 "postCompileConstruct"
	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 "*
		 * Does any work that is needed to the code before it can be passed to
		 * the optimizer (such as flushing out queued labels). This is called
		 * after all the instructions have been added to the code.
		 "
      end

      operation 158614 "findVariables"
	preserve_cpp_body_indent const protected 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 "*
		 * Used when generating the code. Finds the list of general purpose
		 * registers that are referenced and returns their aliases.
		 "
      end

      classrelation 135958 // m_instructionLists (<directional composition>)
	relation 135958 *-->
	  a role_name "m_instructionLists" multiplicity "[ PositionCount ]" protected
	    comment "/< @see InstructionPosition"
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	    classrelation_ref 135958 // m_instructionLists (<directional composition>)
	  b parent class_ref 134806 // InstructionList
      end

      attribute 191766 "m_queuedLabels"
	protected explicit_type "QStringList"
	multiplicity "[ PositionCount ]"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "/< @see InstructionPosition"
      end

      operation 158742 "Code"
	private explicit_return_type ""
	nparams 1
	  param in name "" type class_ref 134422 // Code
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment " Disable copy constructor and operator="
      end

      operation 158870 "operator ="
	private return_type class_ref 134422 // Code
	nparams 1
	  param in name "" type class_ref 134422 // Code
	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 134678 "Instruction"
      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 "*
@author Daniel Clarke
@author David Saxton
"
      class 137622 "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 192406 "Assembly"
	  public type class_ref 137622 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 192534 "Raw"
	  public type class_ref 137622 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 192662 "Comment"
	  public type class_ref 137622 // InstructionType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 137750 "AssemblyType"
	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 192790 "FileOriented"
	  public type class_ref 137750 // AssemblyType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 192918 "BitOriented"
	  public type class_ref 137750 // AssemblyType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 193046 "WorkingOriented"
	  public type class_ref 137750 // AssemblyType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 193174 "Other"
	  public type class_ref 137750 // AssemblyType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 193302 "None"
	  public type class_ref 137750 // AssemblyType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

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

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

      operation 160406 "~Instruction"
	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 160534 "setCode"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "code" type class_ref 134422 // Code
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_pCode = code; };
"
	
	
	
	
      end

      operation 160662 "type"
	const cpp_virtual cpp_inline public return_type class_ref 137622 // InstructionType
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Assembly; };
"
	
	
	
	
	comment "*
		 * This is used to decide how to output the instruction, and which
		 * instructions to avoid while optimizing.
		 "
      end

      operation 160790 "assemblyType"
	abstract const cpp_virtual public return_type class_ref 137750 // AssemblyType
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
		 * @return the AssemblyType (None for non-Assembly instructions).
		 "
      end

      operation 160918 "code"
	abstract const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "*
		 * The text to output to the generated assembly.
		 "
      end

      operation 161046 "setInputState"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "processorState" type class_ref 136214 // ProcessorState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_inputState = processorState; };
"
	
	
	
	
	comment "*
		 * The input processor state is used to generate the outputlinks and the
		 * output processor state.
		 "
      end

      operation 161174 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 "*
		 * By using the ProcessorState, the Instruction should:
		 * * Find all instructions that could be executed after this instruction.
		 * * Generate the output ProcessorState.
		 * The default behaviour of this function is to link to the next
		 * sequential instruction, and to generate an unknown ProcessorState.
		 * @warning if your instruction depends on any bits, then it must
		 * reinherit this function and say so.
		 * @param instruction points at this instruction
		 "
      end

      operation 161302 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 the processor behaviour for this instruction.
		 "
      end

      operation 161430 "addInputLink"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 "*
		 * An input link is an instruction that might be executed immediately
		 * before this Instruction.
		 "
      end

      operation 161558 "addOutputLink"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 "*
		 * An output link is an instruction that might be executed immediately
		 * after this Instruction.
		 "
      end

      operation 161686 "inputLinks"
	const cpp_inline public return_type class_ref 134806 // InstructionList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_inputLinks; };
"
	
	
	
	
	comment "*
		 * The list of instructions that might be executed immediately before
		 * this instruction.
		 * @see addInputLink
		 "
      end

      operation 161814 "outputLinks"
	const cpp_inline public return_type class_ref 134806 // InstructionList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_outputLinks; };
"
	
	
	
	
	comment "*
		 * The list of instructions that might be executed immediately after
		 * this instruction. Instruction does not generate these links; instead
		 * the list is generated Code::generateLinksAndStates function.
		 "
      end

      operation 161942 "removeInputLink"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 "*
		 * Remove the given input link from the instruction.
		 "
      end

      operation 162070 "removeOutputLink"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "instruction" type class_ref 134678 // Instruction
	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 "*
		 * Remove the given output link from the instruction.
		 "
      end

      operation 162198 "clearLinks"
	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 "*
		 * Clears all input and output links from this instruction. This does
		 * not remove references to this instruction from other instructions.
		 "
      end

      operation 162326 "labels"
	const cpp_inline public explicit_return_type "QStringList"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_labels; };
"
	
	
	
	
	comment "*
		 * An instruction may have zero, or more than zero labels associated
		 * with it - these will be printed before the instruction in the
		 * assembly output.
		 "
      end

      operation 162454 "addLabels"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "labels" 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 "*
		 * @see labels
		 "
      end

      operation 162582 "setLabels"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "labels" 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 "*
		 * @see labels
		 "
      end

      operation 162710 "setUsed"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "used" explicit_type "bool"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_bUsed = used; };
"
	
	
	
	
	comment "*
		 * @see used
		 "
      end

      operation 162838 "isUsed"
	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_bUsed; };
"
	
	
	
	
	comment "*
		 * Used for optimization purposes in determining whether the instruction
		 * has been examined yet (to avoid infinite loops).
		 "
      end

      operation 162966 "setRegisterDepends"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param in name "depends" explicit_type "uchar"
	  param in name "reg" type class_ref 134934 // Register
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { m_registerDepends.reg(reg) = depends; };
"
	
	
	
	
	comment "*
		 * Set by the optimizer to indicate whether this instruction or any of
		 * its outputs overwrite any of the bits of the given register.
		 "
      end

      operation 163094 "registerDepends"
	cpp_inline public explicit_return_type "uchar"
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return m_registerDepends.reg(reg); };
"
	
	
	
	
	comment "*
		 * @see setOutputsOverwriteWorking
		 "
      end

      operation 163222 "resetRegisterDepends"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { m_registerDepends.reset(); };
"
	
	
	
	
	comment "*
		 * Resets the overwrites.
		 "
      end

      operation 163350 "inputState"
	const cpp_inline public return_type class_ref 136214 // ProcessorState
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_inputState; };
"
	
	
	
	
	comment "*
		 * @return the input processor state to this instruction.
		 * @see setInputState
		 "
      end

      operation 163478 "outputState"
	const cpp_inline public return_type class_ref 136214 // ProcessorState
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_outputState; };
"
	
	
	
	
	comment "*
		 * @return the output processor state from this instruction.
		 * @see generateLinksAndStates.
		 "
      end

      operation 163606 "file"
	const cpp_inline public return_type class_ref 134934 // Register
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_file; };
"
	
	
	
	
	comment "*
		 * Only applicable to Instructions that refer to a file.
		 "
      end

      operation 163734 "bit"
	const cpp_inline public return_type class_ref 135318 // RegisterBit
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bit; };
"
	
	
	
	
	comment "*
		 * Only applicable to Instructions that refer to a bit (such as BCF).
		 "
      end

      operation 163862 "literal"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_literal; };
"
	
	
	
	
	comment "*
		 * Only applicable to instructions that refer to a literal (such as
		 * XORLW).
		 "
      end

      operation 163990 "outputReg"
	const cpp_inline public return_type class_ref 134934 // Register
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return (m_dest == 0) ? Register::WORKING : m_file; };
"
	
	
	
	
	comment "*
		 * Applicable only to instructions that save a result to working or file
		 * depending on the destination bit.
		 "
      end

      operation 164118 "dest"
	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_dest; };
"
	
	
	
	
	comment "*
		 * Applicable only to instructions that use the destination flag.
		 "
      end

      operation 164246 "makeOutputLinks"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 3
	  param in name "current" type class_ref 137110 // iterator
	  param in name "firstOutput" explicit_type "bool"
	    defaultvalue "true"
	  param in name "secondOutput" explicit_type "bool"
	    defaultvalue "false "
	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 "*
		 * This function is provided for convenience; it creates links to the
		 * first or second instructions after this one, depending on the value
		 * of firstOutput and secondOutput.
		 * @see generateOutputLinks
		 "
      end

      operation 164374 "makeLabelOutputLink"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "label" 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 "*
		 * This function is provided for instructions that jump to a label (i.e.
		 * call and goto).
		 "
      end

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

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

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

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

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

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

      attribute 193814 "m_labels"
	protected explicit_type "QStringList"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

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

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

      attribute 193942 "m_raw"
	protected explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " Used by source code, raw asm, etc"
      end

      attribute 194070 "m_literal"
	protected explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 194198 "m_dest"
	protected explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value} : 1;
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment " is 0 (W) or 1 (file)."
      end

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

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

      operation 164502 "Instruction"
	private explicit_return_type ""
	nparams 1
	  param in name "" type class_ref 134678 // Instruction
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment " Disable copy constructor and operator="
      end

      operation 164630 "operator ="
	private return_type class_ref 134678 // Instruction
	nparams 1
	  param in name "" type class_ref 134678 // Instruction
	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 134806 "InstructionList"
      visibility package stereotype "typedef" base_type class_ref 134678 // Instruction
      cpp_decl "${comment}typedef QValueList<${type}*> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 134038 // <dependency>
	relation 134038 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 134038 // <dependency>
	  b parent class_ref 134678 // Instruction
      end
    end

    class 134934 "Register"
      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 Register - should be used instead of a register name. Contains
info like whether or not the adressing of the register depends on the bank
selection.

@author David Saxton
"
      class 135062 "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 178326 "TMR0"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178454 "OPTION_REG"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178582 "PCL"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178710 "STATUS"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178838 "FSR"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 178966 "PORTA"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179094 "TRISA"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179222 "PORTB"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179350 "TRISB"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179478 "EEDATA"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179606 "EECON1"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179734 "EEADR"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179862 "EECON2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 179990 "PCLATH"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180118 "INTCON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180246 "PORTC"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180374 "PORTD"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180502 "PORTE"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180630 "TRISC"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180758 "TRISD"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 180886 "TRISE"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181014 "ADCON0"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181142 "ADCON1"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181270 "WORKING"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181398 "GPR"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181526 "PIR1"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181654 "PIR2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181782 "TMR1L"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 181910 "TMR1H"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182038 "T1CON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182166 "TMR2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182294 "T2CON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182422 "RCSTA"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182550 "TXREG"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182678 "RCREG"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182806 "ADRESH"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 182934 "PIE1"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183062 "TXSTA"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183190 "ADRESL"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183318 "EEDATH"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183446 "EEADRH"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183574 "SSPBUF"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183702 "SSPCON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183830 "CCPR1L"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 183958 "CCPR1H"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184086 "CCP1CON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184214 "CCPR2L"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184342 "CCPR2H"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184470 "CCP2CON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184598 "PIE2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184726 "PCON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184854 "SSPCON2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 184982 "PR2"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185110 "SSPADD"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185238 "SSPSTAT"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185366 "SPBRG"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185494 "VRCON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185622 "CMCON"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 185750 "none"
	  public type class_ref 135062 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 135190 "Banks"
	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 185878 "Bank0"
	  public type class_ref 135190 // Banks
	  init_value "= 1 << 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186006 "Bank1"
	  public type class_ref 135190 // Banks
	  init_value "= 1 << 1
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 150550 "Register"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "type" type class_ref 135062 // Type
	    defaultvalue "none "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Register

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Creates a register of the given type, giving it the appropriate name.
		 * Note that this constructor should not be used for GPR.
		 "
      end

      operation 150678 "Register"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "name" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Construct a Register with the given name. If the name is not
		 * recognized, then it is assumed to be a GPR register.
		 "
      end

      operation 150806 "Register"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "name" explicit_type "char"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Construct a Register with the given name. If the name is not
		 * recognized, then it is assumed to be a GPR register.
		 "
      end

      operation 150934 "operator <"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 less-than-equality between registers; name is only compared
		 * if both registers have type GPR.
		 "
      end

      operation 151062 "operator =="
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 equality between registers; name is only compared if both
		 * registers have type GPR.
		 "
      end

      operation 151190 "banks"
	preserve_cpp_body_indent const public explicit_return_type "uchar"
	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 0x1 and 0x2 for being addressable from banks 0 and 1
		 * respectively, OR'ed together.
		 "
      end

      operation 151318 "bankDependent"
	preserve_cpp_body_indent const 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 "*
		 * Convenience function.
		 * @see banks
		 "
      end

      operation 151446 "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; };
"
	
	
	
	
	comment "*
		 * Returns the name of the register, or the alias for the GPR.
		 "
      end

      operation 151574 "type"
	const cpp_inline public return_type class_ref 135062 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_type; };
"
	
	
	
	
	comment "*
		 * @return the type of register.
		 "
      end

      operation 151702 "affectsExternal"
	preserve_cpp_body_indent const 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 "*
		 * From the Optimizer's perspective, it is OK to remove, change or add
		 * any instruction so long as there are no visible external changes that
		 * go against the original intention of the microbe source (a general
		 * guiding principle). Therefore, this function returns true for PORT
		 * and TRIS registers, false for everything else.
		 "
      end

      attribute 186134 "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 134166 // m_type (<directional composition>)
	relation 134166 *-->
	  a role_name "m_type" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 134166 // m_type (<directional composition>)
	  b parent class_ref 135062 // Type
      end
    end

    class 135318 "RegisterBit"
      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 ""
      
      class 135446 "STATUS_bits"
	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 186262 "C"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186390 "DC"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186518 "Z"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186646 "NOT_PD"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186774 "NOT_TO"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 186902 "RP0"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187030 "RP1"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187158 "IRP"
	  public type class_ref 135446 // STATUS_bits
	  init_value "= 7
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 135574 "INTCON_bits"
	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 187286 "RBIF"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187414 "INTF"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187542 "T0IF"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187670 "RBIE"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187798 "INTE"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 187926 "T0IE"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188054 "EEIE"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188182 "GIE"
	  public type class_ref 135574 // INTCON_bits
	  init_value "= 7
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 135702 "OPTION_bits"
	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 188310 "PS0"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188438 "PS1"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188566 "PS2"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188694 "PSA"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188822 "T0SE"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 188950 "T0CS"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 5"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189078 "INTEDG"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 6"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189206 "NOT_RBPU"
	  public type class_ref 135702 // OPTION_bits
	  init_value "= 7
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      class 135830 "EECON1_bits"
	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 189334 "RD"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 0"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189462 "WR"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 1"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189590 "WREN"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 2"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189718 "WRERR"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 3"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189846 "EEIF"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 4"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 189974 "EEPGD"
	  public type class_ref 135830 // EECON1_bits
	  init_value "= 7
		"
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 151830 "RegisterBit"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "bitPos" explicit_type "uchar"
	    defaultvalue "0"
	  param in name "reg" type class_ref 135062 // Type
	    defaultvalue "Register::none "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class RegisterBit

${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Constructs a bit of the given register type at the given position.
		 "
      end

      operation 151958 "RegisterBit"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "name" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Construct a register bit with the given name.
		 "
      end

      operation 152086 "RegisterBit"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "name" explicit_type "char"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Construct a register bit with the given name.
		 "
      end

      operation 152214 "registerType"
	const cpp_inline public return_type class_ref 135062 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_registerType; };
"
	
	
	
	
	comment "*
		 * @warning do not trust this value! actually, this function should be
		 * removed, or the constructors fixed so that this value can be trusted.
		 * @return the register type that the bit belongs to.
		 "
      end

      operation 152342 "bitPos"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bitPos; };
"
	
	
	
	
	comment "*
		 * @return the position of the bit, e.g. \"5\" for RP0.
		 "
      end

      operation 152470 "bit"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return (1 << m_bitPos); };
"
	
	
	
	
	comment "*
		 * @return the bit, e.g. \"0x20\" for Z.
		 "
      end

      operation 152598 "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; };
"
	
	
	
	
	comment "*
		 * @return the name of the bit, e.g. \"Z\" for Z.
		 "
      end

      operation 152726 "initFromName"
	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 "*
		 * Determines the register type and bit pos from the bit name (m_name).
		 "
      end

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

      attribute 190102 "m_bitPos"
	protected explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value} : 3;
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 190230 "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
    end

    class 135958 "RegisterState"
      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 information on the state of a register before an instruction is
executed.

Note that all the \"uchar\" values in this class should be considered as the 8
bits of a register. So for example, if known=0x2, then only the second bit of
the register is known, and its value is given in the second bit of value.

@author David Saxton
"
      operation 152854 "RegisterState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterBit
//BEGIN class RegisterState

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

      operation 152982 "merge"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "state" type class_ref 135958 // RegisterState
	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 "*
		 * Merges the known and values together, (possibly) reducing what is
		 * known.
		 "
      end

      operation 153110 "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 "*
		 * Sets known to unknown and value to zero.
		 "
      end

      operation 153238 "definiteZeros"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return (~value) & known; };
"
	
	
	
	
	comment "*
		 * Returns the bits that are definitely zero.
		 "
      end

      operation 153366 "definiteOnes"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return value & known; };
"
	
	
	
	
	comment "*
		 * Returns the bits that are definitely one.
		 "
      end

      operation 153494 "unknown"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return ~known; };
"
	
	
	
	
	comment "*
		 * Returns the bits that are unknown.
		 "
      end

      operation 153622 "maxValue"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return (value & known) | (~known); };
"
	
	
	
	
	comment "*
		 * @return the largest possible value that this register might be
		 * storing, based on which bits are known and the value of those bits.
		 "
      end

      operation 153750 "minValue"
	const cpp_inline public explicit_return_type "uchar"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return (value & known); };
"
	
	
	
	
	comment "*
		 * @return the smallest possible value that this register might be
		 * storing, based on which bits are known and the value of those bits.
		 "
      end

      operation 153878 "operator =="
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "state" type class_ref 135958 // RegisterState
	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 whether the known and value uchars are equal
		 "
      end

      operation 154006 "operator !="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "state" type class_ref 135958 // RegisterState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return !( *this == state ); };
"
	
	
	
	
	comment "*
		 * @return whether either of the known and value uchars are not equal.
		 "
      end

      operation 154134 "print"
	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 "*
		 * Prints known and value.
		 "
      end

      attribute 190358 "known"
	public explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

    class 136086 "RegisterBehaviour"
      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 "*
Setting and dependency information for register bits. See the respective member
descriptions for more information.

@author David Saxton
"
      operation 154262 "RegisterBehaviour"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterState
//BEGIN class RegisterBehaviour

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

      operation 154390 "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 "*
		 * Sets \"depends\", \"indep\" and \"changes\" to 0x0.
		 "
      end

      attribute 190614 "depends"
	public explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 190742 "indep"
	public explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 136214 "ProcessorState"
      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 information on the state of a processor; e.g. register values

@author David Saxton
 "
      operation 154518 "ProcessorState"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class RegisterBehaviour
//BEGIN class ProcessorState

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

      operation 154646 "merge"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "state" type class_ref 136214 // ProcessorState
	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 "*
		 * Calls merge for each RegisterState.
		 "
      end

      operation 154774 "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 "*
		 * Calls reset() for each RegisterState.
		 "
      end

      operation 154902 "reg"
	preserve_cpp_body_indent public return_type class_ref 135958 // RegisterState
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 state for the given register.
		 "
      end

      operation 155030 "reg"
	preserve_cpp_body_indent const public return_type class_ref 135958 // RegisterState
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 state for the given register.
		 "
      end

      operation 155158 "operator =="
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 1
	  param in name "state" type class_ref 136214 // ProcessorState
	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 whether all the RegisterStates are identical
		 "
      end

      operation 155286 "operator !="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "state" type class_ref 136214 // ProcessorState
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return !( *this == state ); };
"
	
	
	
	
	comment "*
		 * @return whether any of the RegisterStates are not equal.
		 "
      end

      operation 155414 "print"
	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 "*
		 * Displays each register's name and calls RegisterState::print in turn.
		 "
      end

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

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

      class 136342 "RegisterMap"
	visibility package stereotype "typedef" base_type class_ref 134934 // Register
	cpp_decl "${comment}typedef QMap<${type},RegisterState> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 134678 // <dependency>
	  relation 134678 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 134678 // <dependency>
	    b parent class_ref 134934 // Register
	end
      end

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

    class 136470 "ProcessorBehaviour"
      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 behavioural information for each register.

@author David Saxton
"
      operation 155542 "ProcessorBehaviour"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class ProcessorState
//BEGIN class ProcessorBehaviour

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

      operation 155670 "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 "*
		 * Calls reset() for each RegisterBehaviour.
		 "
      end

      operation 155798 "reg"
	preserve_cpp_body_indent public return_type class_ref 136086 // RegisterBehaviour
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 behaviour for the given register.
		 "
      end

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

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

      class 136598 "RegisterMap"
	visibility package stereotype "typedef" base_type class_ref 134934 // Register
	cpp_decl "${comment}typedef QMap<${type},RegisterBehaviour> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 135190 // <dependency>
	  relation 135190 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 135190 // <dependency>
	    b parent class_ref 134934 // Register
	end
      end

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

    class 136726 "RegisterDepends"
      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 information on whether a register is overwritten before its value is
used. Each uchar respresents the 8 bits of the register; if the bit is 1, then
the corresponding bit of the register is used by the Instruction or one
of its outputs before it is overwritten.

@author David Saxton
"
      operation 155926 "RegisterDepends"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class ProcessorBehaviour
//BEGIN class RegisterDepends

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

      operation 156054 "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 "*
		 * Sets all the depends values to 0x0.
		 "
      end

      operation 156182 "reg"
	preserve_cpp_body_indent public explicit_return_type "uchar"
	nparams 1
	  param in name "reg" type class_ref 134934 // Register
	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 behaviour for the given register.
		 "
      end

      attribute 190870 "working"
	public explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 190998 "status"
	public explicit_type "uchar"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      class 136854 "RegisterMap"
	visibility package stereotype "typedef" base_type class_ref 134934 // Register
	cpp_decl "${comment}typedef QMap<${type},uchar> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 135446 // <dependency>
	  relation 135446 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 135446 // <dependency>
	    b parent class_ref 134934 // Register
	end
      end

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

    class 136982 "CodeIterator"
      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 "*
Iterates over all the instructions, going seamlessly between the different lists
and avoiding the non-assembly instructions.

@author David Saxton
 "
      operation 158998 "operator !="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "i" type class_ref 136982 // CodeIterator
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return it != i.it; };
"
	
	
	
	
      end

      operation 159126 "operator =="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "i" type class_ref 136982 // CodeIterator
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return it == i.it; };
"
	
	
	
	
      end

      operation 159254 "operator ++"
	preserve_cpp_body_indent public return_type class_ref 136982 // CodeIterator
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END class Code
//BEGIN class CodeIterator

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

      operation 159382 "operator *"
	cpp_inline public return_type class_ref 134678 // Instruction
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return *it; };
"
	
	
	
	
      end

      operation 159510 "removeAndIncrement"
	preserve_cpp_body_indent public return_type class_ref 136982 // CodeIterator
	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 the instruction that this iterator is currently pointing at
		 * (removing it from any lists), and increments the iterator to the next
		 * instruction.
		 "
      end

      operation 159638 "insertBefore"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "ins" type class_ref 134678 // Instruction
	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 "*
		 * Inserts the given instruction before the instruction pointed at by
		 * this iterator.
		 "
      end

      attribute 191894 "it"
	public explicit_type "InstructionList::iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 192022 "listEnd"
	public explicit_type "InstructionList::iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

      classrelation 136214 // code (<unidirectional association>)
	relation 136214 --->
	  a role_name "code" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 136214 // code (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      classrelation 136342 // list (<unidirectional association>)
	relation 136342 --->
	  a role_name "list" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 136342 // list (<unidirectional association>)
	  b parent class_ref 134806 // InstructionList
      end
    end

    class 137238 "CodeConstIterator"
      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 const version of CodeIterator (cannot change instructions).

@author David Saxton
 "
      operation 159766 "operator !="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "i" type class_ref 137238 // CodeConstIterator
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return it != i.it; };
"
	
	
	
	
      end

      operation 159894 "operator =="
	const cpp_inline public explicit_return_type "bool"
	nparams 1
	  param in name "i" type class_ref 137238 // CodeConstIterator
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return it == i.it; };
"
	
	
	
	
      end

      operation 160022 "operator ++"
	preserve_cpp_body_indent public return_type class_ref 137238 // CodeConstIterator
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END class CodeIterator
//BEGIN class CodeConstIterator

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

      operation 160150 "operator *"
	const cpp_inline public return_type class_ref 134678 // Instruction
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return *it; };
"
	
	
	
	
      end

      attribute 192150 "it"
	public explicit_type "InstructionList::const_iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 192278 "listEnd"
	public explicit_type "InstructionList::const_iterator"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

      classrelation 136598 // code (<unidirectional association>)
	relation 136598 --->
	  a role_name "code" const_relation public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 136598 // code (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

      classrelation 136726 // list (<unidirectional association>)
	relation 136726 --->
	  a role_name "list" const_relation public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 136726 // list (<unidirectional association>)
	  b parent class_ref 134806 // InstructionList
      end
    end

    class 137878 "Instr_addwf"
      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 "BEGIN Byte-Oriented File Register Operations"
      classrelation 137878 // <generalisation>
	relation 137878 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 137878 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 164758 "Instr_addwf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 164886 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END class Instruction
//BEGIN Byte-Oriented File Register Operations

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

      operation 165014 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 165142 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 165270 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138006 "Instr_andwf"
      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 138006 // <generalisation>
	relation 138006 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138006 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 165398 "Instr_andwf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 165526 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 165654 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 165782 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 165910 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138134 "Instr_clrf"
      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 138134 // <generalisation>
	relation 138134 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138134 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 166038 "Instr_clrf"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "file" type class_ref 134934 // Register
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_file = file; m_dest = 1; };
"
	
	
	
	
      end

      operation 166166 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 166294 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 166422 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 166550 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138262 "Instr_decf"
      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 "TODO CLRW
TODO COMF"
      classrelation 138262 // <generalisation>
	relation 138262 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138262 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 166678 "Instr_decf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 166806 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//TODO CLRW
//TODO COMF

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

      operation 166934 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 167062 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 167190 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138390 "Instr_decfsz"
      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 138390 // <generalisation>
	relation 138390 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138390 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 167318 "Instr_decfsz"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 167446 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 167574 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 167702 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 167830 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138518 "Instr_incf"
      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 138518 // <generalisation>
	relation 138518 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138518 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 167958 "Instr_incf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 168086 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 168214 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 168342 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 168470 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138646 "Instr_iorwf"
      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 "TODO INCFSZ"
      classrelation 138646 // <generalisation>
	relation 138646 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138646 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 168598 "Instr_iorwf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 168726 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//TODO INCFSZ

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

      operation 168854 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 168982 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 169110 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138774 "Instr_movf"
      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 138774 // <generalisation>
	relation 138774 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138774 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 169238 "Instr_movf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 169366 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 169494 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 169622 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 169750 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 138902 "Instr_movwf"
      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 138902 // <generalisation>
	relation 138902 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 138902 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 169878 "Instr_movwf"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "file" type class_ref 134934 // Register
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_file = file; m_dest = 1; };
"
	
	
	
	
      end

      operation 170006 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 170134 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 170262 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 170390 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139030 "Instr_rlf"
      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 "TODO NOP"
      classrelation 139030 // <generalisation>
	relation 139030 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139030 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 170518 "Instr_rlf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 170646 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//TODO NOP

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

      operation 170774 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 170902 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 171030 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139158 "Instr_rrf"
      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 139158 // <generalisation>
	relation 139158 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139158 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 171158 "Instr_rrf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 171286 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 171414 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 171542 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 171670 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139286 "Instr_subwf"
      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 139286 // <generalisation>
	relation 139286 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139286 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 171798 "Instr_subwf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 171926 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 172054 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 172182 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 172310 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139414 "Instr_swapf"
      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 139414 // <generalisation>
	relation 139414 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139414 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 172438 "Instr_swapf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 172566 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 172694 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 172822 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 172950 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139542 "Instr_xorwf"
      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 139542 // <generalisation>
	relation 139542 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139542 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 173078 "Instr_xorwf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "dest" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_dest = dest; };
"
	
	
	
	
      end

      operation 173206 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 173334 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 173462 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 173590 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return FileOriented; };
"
	
	
	
	
      end
    end

    class 139670 "Instr_bcf"
      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 "END Byte-Oriented File Register Operations
BEGIN Bit-Oriented File Register Operations"
      classrelation 139670 // <generalisation>
	relation 139670 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139670 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 173718 "Instr_bcf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "bit" type class_ref 135318 // RegisterBit
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_bit = bit; };
"
	
	
	
	
      end

      operation 173846 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Byte-Oriented File Register Operations
//BEGIN Bit-Oriented File Register Operations

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

      operation 173974 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 174102 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 174230 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return BitOriented; };
"
	
	
	
	
      end
    end

    class 139798 "Instr_bsf"
      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 139798 // <generalisation>
	relation 139798 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139798 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 174358 "Instr_bsf"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "bit" type class_ref 135318 // RegisterBit
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_bit = bit; };
"
	
	
	
	
      end

      operation 174486 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 174614 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 174742 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 174870 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return BitOriented; };
"
	
	
	
	
      end
    end

    class 139926 "Instr_btfsc"
      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 139926 // <generalisation>
	relation 139926 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 139926 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 174998 "Instr_btfsc"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "bit" type class_ref 135318 // RegisterBit
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_bit = bit; };
"
	
	
	
	
      end

      operation 175126 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 175254 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 175382 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 175510 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 140054 "Instr_btfss"
      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 140054 // <generalisation>
	relation 140054 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140054 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 175638 "Instr_btfss"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param in name "file" type class_ref 134934 // Register
	  param in name "bit" type class_ref 135318 // RegisterBit
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw} { m_file = file; m_bit = bit; };
"
	
	
	
	
      end

      operation 175766 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 175894 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 176022 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 176150 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 140182 "Instr_addlw"
      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 "END Bit-Oriented File Register Operations
BEGIN Literal and Control Operations"
      classrelation 140182 // <generalisation>
	relation 140182 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140182 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 176278 "Instr_addlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 176406 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Bit-Oriented File Register Operations
//BEGIN Literal and Control Operations

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

      operation 176534 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 176662 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 176790 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 140310 "Instr_andlw"
      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 140310 // <generalisation>
	relation 140310 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140310 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 176918 "Instr_andlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 177046 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 177174 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 177302 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 177430 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 140438 "Instr_call"
      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 140438 // <generalisation>
	relation 140438 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140438 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 177558 "Instr_call"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "label" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_label = label; };
"
	
	
	
	
      end

      operation 177686 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 177814 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 177942 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 178070 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end

      operation 178198 "makeReturnLinks"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "next" type class_ref 134678 // Instruction
	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 "*
		 * Called from Code after all the output links have been generated. The
		 * instruction that is called has its output links followed, and any
		 * returns encountered are linked back to the instruction after this
		 * one.
		 * @param next the instruction after this one which the return points
		 * will be linked to.
		 "
      end

      operation 178326 "label"
	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_label; };
"
	
	
	
	
      end

      operation 178454 "setLabel"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "label" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_label = label; };
"
	
	
	
	
      end

      operation 178582 "linkReturns"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 2
	  param inout name "current" type class_ref 134678 // Instruction
	  param inout name "returnPoint" type class_ref 134678 // Instruction
	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 "*
		 * Used by makeReturnLinks. Recursively follows the instruction's output
		 * links, until a return is found - then, link the return point back to
		 * the instruction after this one. Call instructions found while
		 * following the output are ignored.
		 * @param returnPoint the instruction to link back to on finding a
		 * return.
		 "
      end

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

    class 140566 "Instr_goto"
      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 "TODO CLRWDT"
      classrelation 140566 // <generalisation>
	relation 140566 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140566 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 178710 "Instr_goto"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "label" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_label = label; };
"
	
	
	
	
      end

      operation 178838 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//TODO CLRWDT

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

      operation 178966 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 179094 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 179222 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end

      operation 179350 "label"
	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_label; };
"
	
	
	
	
      end

      operation 179478 "setLabel"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "label" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { m_label = label; };
"
	
	
	
	
      end

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

    class 140694 "Instr_iorlw"
      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 140694 // <generalisation>
	relation 140694 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140694 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 179606 "Instr_iorlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 179734 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 179862 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 179990 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 180118 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 140822 "Instr_movlw"
      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 140822 // <generalisation>
	relation 140822 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140822 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 180246 "Instr_movlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 180374 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 180502 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 180630 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 180758 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 140950 "Instr_retfie"
      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 140950 // <generalisation>
	relation 140950 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 140950 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 180886 "Instr_retfie"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
      end

      operation 181014 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 181142 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 181270 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 181398 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 141078 "Instr_retlw"
      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 141078 // <generalisation>
	relation 141078 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141078 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 181526 "Instr_retlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 181654 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 181782 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 181910 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 182038 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 141206 "Instr_return"
      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 141206 // <generalisation>
	relation 141206 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141206 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 182166 "Instr_return"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
      end

      operation 182294 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 182422 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 182550 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 182678 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 141334 "Instr_sleep"
      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 141334 // <generalisation>
	relation 141334 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141334 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 182806 "Instr_sleep"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
      end

      operation 182934 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 183062 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 183190 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 183318 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Other; };
"
	
	
	
	
      end
    end

    class 141462 "Instr_sublw"
      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 141462 // <generalisation>
	relation 141462 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141462 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 183446 "Instr_sublw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 183574 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 183702 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 183830 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 183958 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 141590 "Instr_xorlw"
      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 141590 // <generalisation>
	relation 141590 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141590 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 184086 "Instr_xorlw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "literal" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} { m_literal = literal; };
"
	
	
	
	
      end

      operation 184214 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 184342 "generateLinksAndStates"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "current" type class_ref 137110 // iterator
	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 184470 "behaviour"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 136470 // ProcessorBehaviour
	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 184598 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return WorkingOriented; };
"
	
	
	
	
      end
    end

    class 141718 "Instr_sourceCode"
      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 "END Literal and Control Operations
BEGIN Microbe (non-assembly) Operations"
      classrelation 141718 // <generalisation>
	relation 141718 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141718 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 184726 "Instr_sourceCode"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "source" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_raw = source; };
"
	
	
	
	
      end

      operation 184854 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//END Literal and Control Operations
//BEGIN Microbe (non-assembly) Operations

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

      operation 184982 "type"
	const cpp_virtual cpp_inline public explicit_return_type "InstructionType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Comment; };
"
	
	
	
	
      end

      operation 185110 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return None; };
"
	
	
	
	
      end
    end

    class 141846 "Instr_asm"
      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 141846 // <generalisation>
	relation 141846 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141846 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 185238 "Instr_asm"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "raw" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_raw = raw; };
"
	
	
	
	
      end

      operation 185366 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 185494 "type"
	const cpp_virtual cpp_inline public explicit_return_type "InstructionType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Raw; };
"
	
	
	
	
      end

      operation 185622 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return None; };
"
	
	
	
	
      end
    end

    class 141974 "Instr_raw"
      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 " Like Instr_asm, but does not put ;asm {} in, used
 for internal things like gpasm directives etc..."
      classrelation 141974 // <generalisation>
	relation 141974 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 141974 // <generalisation>
	  b parent class_ref 134678 // Instruction
      end

      operation 185750 "Instr_raw"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param in name "raw" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw} { m_raw = raw; };
"
	
	
	
	
      end

      operation 185878 "code"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "QString"
	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 186006 "type"
	const cpp_virtual cpp_inline public explicit_return_type "InstructionType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Raw; };
"
	
	
	
	
      end

      operation 186134 "assemblyType"
	const cpp_virtual cpp_inline public explicit_return_type "AssemblyType"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return None; };
"
	
	
	
	
      end
    end

    class 142102 "PortPin"
      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
 "
      operation 195606 "PortPin"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "port" explicit_type "QString"
	  param in name "pin" explicit_type "int"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class PortPin

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

      operation 195734 "PortPin"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Creates an invalid PortPin ( pin() will return -1).
		 "
      end

      operation 195862 "port"
	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_port; };
"
	
	
	
	
	comment "*
		 * Returns port (uppercase).
		 "
      end

      operation 195990 "portPosition"
	preserve_cpp_body_indent const public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Returns the port position (e.g. \"PORTA\" is 0, \"PORTB\" is 1, etc).
		 "
      end

      operation 196118 "pin"
	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_pin; };
"
	
	
	
	
	comment "*
		 * Returns the pin (-1 == invalid PortPin).
		 "
      end

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

      attribute 203158 "m_pin"
	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 142230 "PortPinList"
      visibility package stereotype "typedef" base_type class_ref 142102 // PortPin
      cpp_decl "${comment}typedef QValueList<${type}> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 142102 // <dependency>
	relation 142102 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 142102 // <dependency>
	  b parent class_ref 142102 // PortPin
      end
    end

    class 142358 "Variable"
      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 Daniel Clarke
@author David Saxton
"
      class 144662 "VariableType"
	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 205078 "charType"
	  public type class_ref 144662 // VariableType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 205206 "sevenSegmentType"
	  public type class_ref 144662 // VariableType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 205334 "keypadType"
	  public type class_ref 144662 // VariableType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 205462 "invalidType"
	  public type class_ref 144662 // VariableType
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

      operation 205462 "Variable"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "type" type class_ref 144662 // VariableType
	  param in name "name" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${throw}{
${body}}
"
	
	
	
	
      end

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

      operation 205718 "~Variable"
	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 205846 "type"
	const cpp_inline public return_type class_ref 144662 // VariableType
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_type; };
"
	
	
	
	
      end

      operation 205974 "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 206102 "isReadable"
	preserve_cpp_body_indent const 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 "*
		 * @returns whether the variable can be read from (e.g. the seven
		 * segment variable cannot).
		 "
      end

      operation 206230 "isWritable"
	preserve_cpp_body_indent const 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 "*
		 * @returns whether the variable can be written to (e.g. the keypad
		 * variable cannot).
		 "
      end

      operation 206358 "setPortPinList"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "portPinList" type class_ref 142230 // PortPinList
	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 "*
		 * @see portPinList
		 "
      end

      operation 206486 "portPinList"
	const cpp_inline public return_type class_ref 142230 // PortPinList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_portPinList; };
"
	
	
	
	
	comment "*
		 * Used in seven-segments and keypads,
		 "
      end

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

      attribute 205590 "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 145814 // m_portPinList (<directional composition>)
	relation 145814 *-->
	  a role_name "m_portPinList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 145814 // m_portPinList (<directional composition>)
	  b parent class_ref 142230 // PortPinList
      end
    end

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

    class 142614 "AliasMap"
      visibility package stereotype "typedef" explicit_base_type "QMap<QString,QString>"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

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

    class 142870 "Optimizer"
      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
"
      operation 189718 "Optimizer"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 189846 "~Optimizer"
	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 189974 "optimize"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param inout name "code" type class_ref 134422 // Code
	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 190102 "propagateLinksAndStates"
	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 "*
		 * Repeatedly generates links and states for the instructions and
		 * refining their input states, until equilibrium in the input states
		 * is reached.
		 "
      end

      operation 190230 "giveInputStates"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Tell the instructions about their input states.
		 * @return whether any input states changed from the previous value
		 * stored in the instruction (if checkChanged is true - else returns
		 * true).
		 "
      end

      operation 190358 "pruneInstructions"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Remove instructions without any input links (and the ones that are
		 * only linked to from a removed instruction).
		 * @return whether any instructions were removed
		 "
      end

      operation 190486 "optimizeInstructions"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Perform optimizations (code cropping, modification, assembly, etc)
		 * based on instruction linkage and processor states.
		 * @return whether anything was changed
		 "
      end

      operation 190614 "redirectGotos"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 2
	  param inout name "current" type class_ref 134678 // Instruction
	  param in name "label" 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 "*
		 * Redirects any GOTOs that point at the given instruction to the given
		 * label.
		 * @return whether any GOTOs were redirected
		 "
      end

      operation 190742 "generateRegisterDepends"
	preserve_cpp_body_indent protected explicit_return_type "uchar"
	nparams 2
	  param inout name "current" type class_ref 134678 // Instruction
	  param in name "reg" type class_ref 134934 // Register
	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 "*
		 * Find out if the given instruction or any of its outputs overwrite
		 * any of the bits of the given register before they are used.
		 "
      end

      operation 190870 "registerDepends"
	preserve_cpp_body_indent protected explicit_return_type "uchar"
	nparams 2
	  param inout name "current" type class_ref 134678 // Instruction
	  param in name "reg" type class_ref 134934 // Register
	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 "*
		 * This function should only be used from generateRegisterDepends.
		 * Recursively looks at the output links of the given instruction, and
		 * returns which bits are eventually used before being overwritten.
		 "
      end

      operation 190998 "canRemove"
	preserve_cpp_body_indent protected explicit_return_type "bool"
	nparams 3
	  param inout name "ins" type class_ref 134678 // Instruction
	  param in name "reg" type class_ref 134934 // Register
	  param in name "bitMask" explicit_type "uchar"
	    defaultvalue "0xff "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}, const ${t1} & ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} * ${p0}, const ${t1} & ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * We often need to know whether removing an instruction will affect the
		 * future processor state. This function looks are all possible future
		 * dependencies of the given register, and returns true if the removal
		 * of the instruction will have no critical effect.
		 * @param bitMask only look at the given bits of the register
		 "
      end

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

    class 142998 "Statement"
      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 Daniel Clarke
@author David Saxton
"
      classrelation 142870 // code (<unidirectional association>)
	relation 142870 --->
	  a role_name "code" public
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 142870 // code (<unidirectional association>)
	  b parent class_ref 134806 // InstructionList
      end

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

      operation 191126 "text"
	const cpp_inline public explicit_return_type "QString"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return content.text(); };
"
	
	
	
	
	comment "*
		 * Returns the microbe code from content.
		 "
      end

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

      operation 191254 "hasBracedCode"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return !bracedCode.isEmpty(); };
"
	
	
	
	
	comment "*
		 * Just returns whether or not the braced code is empty.
		 "
      end

      operation 191382 "tokenise"
	class_operation preserve_cpp_body_indent public explicit_return_type "QStringList"
	nparams 1
	  param in name "line" explicit_type "QString"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// static function

${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * This breaks up the line seperated by spaces,{,and =/
		 "
      end

      operation 191510 "tokenise"
	const cpp_inline public explicit_return_type "QStringList"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return tokenise( content.text() ); };
"
	
	
	
	
	comment "*
		 * @see tokenise(const QString &line)
		 "
      end

      operation 191638 "isLabel"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return content.text().right(1) == \":\"; };
"
	
	
	
	
	comment "*
		 * @returns whether or not the content looks like a label (ends with a
		 * colon).
		 "
      end
    end

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

    class 143254 "Field"
      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 Daniel Clarke
@author David Saxton
"
      class 143382 "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 201110 "FixedString"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201238 "Label"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201366 "Variable"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201494 "Name"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201622 "PinList"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201750 "Code"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 201878 "Expression"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 202006 "Newline"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end

	attribute 202134 "None"
	  public type class_ref 143382 // Type
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

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

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Create a Field of type None.
		 "
      end

      operation 191894 "Field"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "type" type class_ref 143382 // Type
	  param in name "key" explicit_type "QString"
	    defaultvalue "0 "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Create a Field.
		 "
      end

      operation 192022 "Field"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 4
	  param in name "type" type class_ref 143382 // Type
	  param in name "key" explicit_type "QString"
	  param in name "string" explicit_type "QString"
	  param in name "compulsory" explicit_type "bool"
	    defaultvalue "true"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, const ${t1} & ${p1}${v1}, const ${t2} & ${p2}${v2}, ${t3} ${p3}${v3}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} ${p0}, const ${t1} & ${p1}, const ${t2} & ${p2}, ${t3} ${p3}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Create a Field (this constructor should only be used with
		 * FixedStrings.
		 "
      end

      operation 192150 "type"
	const cpp_inline public return_type class_ref 143382 // Type
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_type; };
"
	
	
	
	
	comment "*
		 * The type of field expected.
		 "
      end

      operation 192278 "string"
	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_string; };
"
	
	
	
	
	comment "*
		 * String data relevant to the field dependent on m_type.
		 "
      end

      operation 192406 "key"
	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_key; };
"
	
	
	
	
	comment "*
		 * The key in which the found token will be attached to 
		 * in the output map. If it is an empty string, then the field will be 
		 * processed but not put in the output, effectively ignoring it.
		 "
      end

      operation 192534 "compulsory"
	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_compulsory; };
"
	
	
	
	
	comment "*
		 * Only FixedStrings may be compulsory, that is the only type that can
		 * actually have its presence checked.
		 * This flag is set to indicate that no error should be rasied if the 
		 * field is not present. Note that if a field is found missing, then
		 * the rest of the statement is ignored (regardless of whether the rest
		 * is marked compulsory or not.)
		 "
      end

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

      attribute 202262 "m_string"
	private explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 202390 "m_key"
	private explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 202518 "m_compulsory"
	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 143510 "OutputField"
      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 192662 "OutputField"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "//END class Field
//BEGIN class OutputField

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Constructs an empty output field.
		 "
      end

      operation 192790 "OutputField"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "bracedCode" type class_ref 142742 // SourceLineList
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Constructs an output field consisting of braced code.
		 "
      end

      operation 192918 "OutputField"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "string" explicit_type "QString"
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment "*
		 * Constructs an output field consisting of a single string.
		 "
      end

      operation 193046 "string"
	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_string; };
"
	
	
	
	
      end

      operation 193174 "bracedCode"
	const cpp_inline public return_type class_ref 142742 // SourceLineList
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_bracedCode; };
"
	
	
	
	
      end

      operation 193302 "found"
	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_found; };
"
	
	
	
	
      end

      attribute 202646 "m_string"
	private explicit_type "QString"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

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

      attribute 202774 "m_found"
	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 143638 "StatementDefinition"
      visibility package stereotype "typedef" base_type class_ref 143254 // Field
      cpp_decl "${comment}typedef QValueList<${type}> ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      classrelation 143638 // <dependency>
	relation 143638 -_->
	  a default
	    cpp default "#include in source"
	    classrelation_ref 143638 // <dependency>
	  b parent class_ref 143254 // Field
      end
    end

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

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

    class 144022 "Parser"
      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 Daniel Clarke
@author David Saxton
"
      operation 193430 "Parser"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "_mb" type class_ref 134166 // Microbe
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "//BEGIN class Parser

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

      operation 193558 "~Parser"
	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 193686 "mistake"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 2
	  param in name "type" type class_ref 134550 // MistakeType
	  param in name "context" explicit_type "QString"
	    defaultvalue "0 "
	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 "*
		 * Report a compile error to Microbe; the current source line will be
		 * sent. Context is extra information to be inserted into the error
		 * message, only applicable to some errors (such as a use of a reserved
		 * keyword).
		 "
      end

      operation 193814 "createChildParser"
	preserve_cpp_body_indent public return_type class_ref 144022 // Parser
	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 "*
		 * Creates a new instance of the parser class with all state information
		 * (class members) copied from this instance of the class. Don't forget to
		 * delete it when you are done!
		 "
      end

      operation 193942 "parseWithChild"
	preserve_cpp_body_indent public return_type class_ref 134422 // Code
	nparams 1
	  param in name "lines" type class_ref 142742 // SourceLineList
	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 "*
		 * Creates a child class and uses it to parse recursively.
		 "
      end

      operation 194070 "parse"
	preserve_cpp_body_indent public return_type class_ref 134422 // Code
	nparams 1
	  param in name "lines" type class_ref 142742 // SourceLineList
	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 is the actual parsing function, make sure to use parseUsingChild
		 * instead (???)
		 "
      end

      operation 194198 "getBracedCode"
	preserve_cpp_body_indent public return_type class_ref 142742 // SourceLineList
	nparams 2
	  param inout name "it" explicit_type "SourceLineList::const_iterator"
	  param in name "end" explicit_type "SourceLineList::const_iterator"
	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 lines between the braces, excluding the braces, e.g.
		 * defproc name
		 * {
		 * more code 
		 * some more code
		 * }
		 * returns (\"more code\",\"some more code\").
		 * Note that Microbe has already put the braces on separate lines for us.
		 * @param it is the iterator at the position of the first brace, this
		 * function will return with it pointing at the matching closing brace.
		 * @param end is the iterator pointing to the end of the source line
		 * list, so that we don't search past it.
		 * @returns The braced code (excluding the braces).
		 "
      end

      operation 194326 "getExpressionType"
	public return_type class_ref 133654 // ExprType
	nparams 1
	  param in name "expression" 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 expression type.
		 * 0 = directly usable number (literal).
		 * 1 = variable.
		 * 2 = expression that needs evaluating.
		 "
      end

      operation 194454 "isLiteral"
	class_operation preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "text" 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 "*
		 * Examines the text to see if it looks like a literal, i.e. of the form
		 * \"321890\",\"021348\",\"0x3C\",\"b'0100110'\",\"0101001b\",\"h'43A'\", or \"2Ah\".
		 * Everything else is considered non-literal.
		 * @see literalToInt.
		 "
      end

      operation 194582 "literalToInt"
	class_operation preserve_cpp_body_indent public explicit_return_type "int"
	nparams 2
	  param in name "literal" explicit_type "QString"
	  param inout name "ok" explicit_type "bool"
	    defaultvalue "0l "
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} & ${p0}${v0}, ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//
//Literal's in form:
//-> 321890
//-> 021348
//-> 0x3C
//-> b'0100110'
//-> 0101001b
//-> h'43A'
//-> 2Ah
//
//Everything else is non-literal...
//

${comment}${inline}${type} ${class}::${name}${(}const ${t0} & ${p0}, ${t1} * ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "*
		 * Tries to convert the given literal string into a integer. If it fails,
		 * i.e. it is not any recognised literal, then it returns -1 and sets *ok to
		 * false. Else, *ok is set to true and the literal value is returned.
		 * @see isLiteral
		 "
      end

      operation 194710 "doArithmetic"
	class_operation preserve_cpp_body_indent public explicit_return_type "int"
	nparams 3
	  param in name "lvalue" explicit_type "int"
	  param in name "rvalue" explicit_type "int"
	  param in name "op" type class_ref 133910 // Operation
	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 "*
		 * Does the specified operation on the given numbers and returns the result.
		 "
      end

      operation 194838 "processAssignment"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 1
	  param in name "line" 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 whether it was an assignment (which might not have been in
		 * the proper form).
		 "
      end

      operation 194966 "compileConditionalExpression"
	preserve_cpp_body_indent const public explicit_return_type "void"
	nparams 3
	  param in name "expression" explicit_type "QString"
	  param inout name "ifCode" type class_ref 134422 // Code
	  param inout name "elseCode" type class_ref 134422 // Code
	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}}
"
	
	
	
	
      end

      operation 195094 "processConstant"
	preserve_cpp_body_indent const public explicit_return_type "QString"
	nparams 3
	  param in name "expression" explicit_type "QString"
	  param inout name "isConstant" explicit_type "bool"
	  param in name "suppressNumberTooBig" explicit_type "bool"
	    defaultvalue "false"
	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}}
"
	
	
	
	
      end

      operation 195222 "processStatement"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 2
	  param in name "name" explicit_type "QString"
	  param in name "fieldMap" type class_ref 143894 // OutputFieldMap
	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 "*
		 * This is called when the bulk of the actual parsing has been carried
		 * out and is ready to be turned into assembly code.
		 * @param name Name of the statement to be processed
		 * @param fieldMap A map of named fields as appropriate to the statement
		 "
      end

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

      classrelation 144150 // m_pPic (<unidirectional association>)
	relation 144150 --->
	  a role_name "m_pPic" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 144150 // m_pPic (<unidirectional association>)
	  b parent class_ref 134038 // PIC14
      end

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

      classrelation 144278 // mb (<unidirectional association>)
	relation 144278 --->
	  a role_name "mb" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 144278 // mb (<unidirectional association>)
	  b parent class_ref 134166 // Microbe
      end

      classrelation 144406 // m_code (<unidirectional association>)
	relation 144406 --->
	  a role_name "m_code" private
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	    classrelation_ref 144406 // m_code (<unidirectional association>)
	  b parent class_ref 134422 // Code
      end

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

      operation 195350 "Parser"
	private explicit_return_type ""
	nparams 1
	  param in name "" type class_ref 144022 // Parser
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} & ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}const ${t0} & ${p0}${)}${throw}{
${body}}
"
	
	
	
	
	comment " Disable copy constructor and operator="
      end

      operation 195478 "operator ="
	private return_type class_ref 144022 // Parser
	nparams 1
	  param in name "" type class_ref 144022 // Parser
	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 144534 "Traverser"
      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 "*
Keeps persistant information needed and the algorithm for traversing the binary trees made of BTreeNodes, initialise either by passing a BTreeBase or BTreeNode to traverse a sub tree.

Note that this is designed for traversing in the *reverse* way starting at the end of each branch
in order to calculate the expression contained in the tree.

@author Daniel Clarke
"
      operation 204054 "Traverser"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param inout name "root" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${t0} * ${p0}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 204182 "~Traverser"
	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 204310 "start"
	preserve_cpp_body_indent public return_type class_ref 133526 // BTreeNode
	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 "* Find where to start in the tree and return it also resets all the data related to the traversal. "
      end

      operation 204438 "next"
	preserve_cpp_body_indent public return_type class_ref 133526 // BTreeNode
	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 "* Finds the next node to move to and returns it. "
      end

      operation 204566 "onLeftBranch"
	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 "* Returns true if we are on the left branch, false otherwise. "
      end

      operation 204694 "oppositeNode"
	preserve_cpp_body_indent public return_type class_ref 133526 // BTreeNode
	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 node on the opposite branch of the parent. "
      end

      operation 204822 "current"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_current; };
"
	
	
	
	
      end

      operation 204950 "setCurrent"
	cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "current" type class_ref 133526 // BTreeNode
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} {m_current = current;};
"
	
	
	
	
      end

      operation 205078 "descendLeftwardToTerminal"
	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 "* From the current position, go down the tree taking a left turn always, 
	 and stopping when reaching the left terminal node.
	 "
      end

      operation 205206 "moveToParent"
	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 "* It might occur in the future that next() does not just move to the parent,
	 so use this for moving to parent
	 "
      end

      operation 205334 "root"
	const cpp_inline public return_type class_ref 133526 // BTreeNode
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} {return m_root;};
"
	
	
	
	
      end

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

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

  deploymentview 129430 "microbe"
    //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 131606 "btreebase"
      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 133398 // BTreeBase
      end
    end

    artifact 131734 "btreenode"
      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 133526 // BTreeNode
      end
    end

    artifact 131862 "expression"
      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 133782 // Expression
      end
    end

    artifact 131990 "instruction"
      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 134806 // InstructionList
	class_ref 134934 // Register
	class_ref 135318 // RegisterBit
	class_ref 135958 // RegisterState
	class_ref 136086 // RegisterBehaviour
	class_ref 136214 // ProcessorState
	class_ref 136470 // ProcessorBehaviour
	class_ref 136726 // RegisterDepends
	class_ref 134422 // Code
	class_ref 136982 // CodeIterator
	class_ref 137238 // CodeConstIterator
	class_ref 134678 // Instruction
	class_ref 137878 // Instr_addwf
	class_ref 138006 // Instr_andwf
	class_ref 138134 // Instr_clrf
	class_ref 138262 // Instr_decf
	class_ref 138390 // Instr_decfsz
	class_ref 138518 // Instr_incf
	class_ref 138646 // Instr_iorwf
	class_ref 138774 // Instr_movf
	class_ref 138902 // Instr_movwf
	class_ref 139030 // Instr_rlf
	class_ref 139158 // Instr_rrf
	class_ref 139286 // Instr_subwf
	class_ref 139414 // Instr_swapf
	class_ref 139542 // Instr_xorwf
	class_ref 139670 // Instr_bcf
	class_ref 139798 // Instr_bsf
	class_ref 139926 // Instr_btfsc
	class_ref 140054 // Instr_btfss
	class_ref 140182 // Instr_addlw
	class_ref 140310 // Instr_andlw
	class_ref 140438 // Instr_call
	class_ref 140566 // Instr_goto
	class_ref 140694 // Instr_iorlw
	class_ref 140822 // Instr_movlw
	class_ref 140950 // Instr_retfie
	class_ref 141078 // Instr_retlw
	class_ref 141206 // Instr_return
	class_ref 141334 // Instr_sleep
	class_ref 141462 // Instr_sublw
	class_ref 141590 // Instr_xorlw
	class_ref 141718 // Instr_sourceCode
	class_ref 141846 // Instr_asm
	class_ref 141974 // Instr_raw
      end
    end

    artifact 132118 "microbe"
      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 142230 // PortPinList
	class_ref 142486 // VariableList
	class_ref 142614 // AliasMap
	class_ref 133654 // ExprType
	class_ref 142742 // SourceLineList
	class_ref 134294 // SourceLine
	class_ref 134166 // Microbe
      end
    end

    artifact 132246 "optimizer"
      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 142870 // Optimizer
      end
    end

    artifact 132374 "parser"
      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 142998 // Statement
	class_ref 143126 // StatementList
	class_ref 143254 // Field
	class_ref 143510 // OutputField
	class_ref 143638 // StatementDefinition
	class_ref 143766 // DefinitionMap
	class_ref 143894 // OutputFieldMap
	class_ref 144022 // Parser
      end
    end

    artifact 132502 "pic14"
      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 142102 // PortPin
	class_ref 134038 // PIC14
      end
    end

    artifact 132630 "traverser"
      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 144534 // Traverser
      end
    end

    artifact 132758 "variable"
      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 142358 // Variable
      end
    end

    artifact 162966 "main"
      stereotype "source"
      cpp_src "int main(int argc, char **argv)
{
	KAboutData about(\"microbe\", I18N_NOOP(\"Microbe\"), version, description,
					 KAboutData::License_GPL, \"(C) 2004-2005, The KTechlab developers\", 0, \"http://ktechlab.org\", \"ktechlab-devel@lists.sourceforge.net\" );
	about.addAuthor( \"Daniel Clarke\", 0, \"daniel.jc@gmail.com\" );
	about.addAuthor( \"David Saxton\", 0, \"david@bluehaze.org\" );
	about.addAuthor( \"Modified to add pic 16f877,16f627 and 16f628 by George John\", 0,\"az.j.george@gmail.com\" );
    KCmdLineArgs::init(argc, argv, &about);
    KCmdLineArgs::addCmdLineOptions( options );
	
	KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
	
	if(args->count() == 2 )
	{
		Microbe mb;	
//		QString s = mb.compile( args->arg(0), args->isSet(\"show-source\"), args->isSet(\"optimize\"));

		QString s = mb.compile( args->arg(0), args->isSet(\"optimize\"));

		QString errorReport = mb.errorReport();
		
		if ( !errorReport.isEmpty() )
		{
			cerr << mb.errorReport();
			return 1; // If there was an error, don't write the output to file.
		}
		
		else
		{
			ofstream out(args->arg(1));
			out << s;
			return 0;
		}
	}
	else args->usage();
}
"
      associated_classes
      end
    end
  end
end
