format 73
"topology" // core::topology
  revision 1
  modified_by 48 "allardj"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers 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_relation_modifiers default show_relation_visibility 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
  
  cpp_h_dir "/home/allardj/work/Sofa/framework/sofa/core/topology/"
  cpp_src_dir "/home/allardj/work/Sofa/framework/sofa/core/topology/"
  cpp_namespace "sofa::core::topology"
  classview 128304 "topology"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers 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_relation_modifiers default show_relation_visibility 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 132272 "BaseMeshTopology"
      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 ""
      
      classrelation 170416 // <generalisation>
	relation 170416 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 170416 // <generalisation>
	  b parent class_ref 152496 // Topology
      end

      class 189232 "index_type"
	visibility package stereotype "typedef" explicit_base_type "unsigned int"
	cpp_decl "${comment}typedef ${type} ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
      end

      class 189360 "anonymous5"
	visibility package stereotype "enum"
	cpp_decl "${comment}enum  {
${items}
};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	attribute 166064 "InvalidID"
	  public type class_ref 189360 // anonymous5
	  init_value " (unsigned)-1 "
	  cpp_decl "  ${name}${value},${comment}"
	  java_decl ""
	  php_decl ""
	  python_decl ""
	  idl_decl ""
	end
      end

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

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

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

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

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

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

      class 190256 "Edge"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef fixed_array<${type},2> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171312 // <dependency>
	  relation 171312 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171312 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 190384 "Triangle"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef fixed_array<${type},3> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171440 // <dependency>
	  relation 171440 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171440 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 190512 "Quad"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef fixed_array<${type},4> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171568 // <dependency>
	  relation 171568 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171568 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 190640 "Tetra"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef fixed_array<${type},4> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171696 // <dependency>
	  relation 171696 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171696 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 190768 "Hexa"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef fixed_array<${type},8> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171824 // <dependency>
	  relation 171824 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171824 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 190896 "SeqEdges"
	visibility package stereotype "typedef" base_type class_ref 190256 // Edge
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 171952 // <dependency>
	  relation 171952 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 171952 // <dependency>
	    b parent class_ref 190256 // Edge
	end
      end

      class 191024 "SeqTriangles"
	visibility package stereotype "typedef" base_type class_ref 190384 // Triangle
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 172080 // <dependency>
	  relation 172080 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 172080 // <dependency>
	    b parent class_ref 190384 // Triangle
	end
      end

      class 191152 "SeqQuads"
	visibility package stereotype "typedef" base_type class_ref 190512 // Quad
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 172208 // <dependency>
	  relation 172208 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 172208 // <dependency>
	    b parent class_ref 190512 // Quad
	end
      end

      class 191280 "SeqTetrahedra"
	visibility package stereotype "typedef" base_type class_ref 190640 // Tetra
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 172336 // <dependency>
	  relation 172336 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 172336 // <dependency>
	    b parent class_ref 190640 // Tetra
	end
      end

      class 191408 "SeqHexahedra"
	visibility package stereotype "typedef" base_type class_ref 190768 // Hexa
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 172464 // <dependency>
	  relation 172464 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 172464 // <dependency>
	    b parent class_ref 190768 // Hexa
	end
      end

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

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

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

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

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

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

      class 192304 "EdgesInTriangle"
	visibility package stereotype "typedef" base_type class_ref 189616 // EdgeID
	cpp_decl "${comment}typedef fixed_array<${type},3> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 173360 // <dependency>
	  relation 173360 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 173360 // <dependency>
	    b parent class_ref 189616 // EdgeID
	end
      end

      class 192432 "EdgesInQuad"
	visibility package stereotype "typedef" base_type class_ref 189616 // EdgeID
	cpp_decl "${comment}typedef fixed_array<${type},4> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 173488 // <dependency>
	  relation 173488 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 173488 // <dependency>
	    b parent class_ref 189616 // EdgeID
	end
      end

      class 192560 "TrianglesInTetrahedron"
	visibility package stereotype "typedef" base_type class_ref 189744 // TriangleID
	cpp_decl "${comment}typedef fixed_array<${type},4> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 173616 // <dependency>
	  relation 173616 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 173616 // <dependency>
	    b parent class_ref 189744 // TriangleID
	end
      end

      class 192688 "EdgesInTetrahedron"
	visibility package stereotype "typedef" base_type class_ref 189616 // EdgeID
	cpp_decl "${comment}typedef fixed_array<${type},6> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 173744 // <dependency>
	  relation 173744 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 173744 // <dependency>
	    b parent class_ref 189616 // EdgeID
	end
      end

      class 192816 "QuadsInHexahedron"
	visibility package stereotype "typedef" base_type class_ref 189872 // QuadID
	cpp_decl "${comment}typedef fixed_array<${type},6> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 173872 // <dependency>
	  relation 173872 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 173872 // <dependency>
	    b parent class_ref 189872 // QuadID
	end
      end

      class 192944 "EdgesInHexahedron"
	visibility package stereotype "typedef" base_type class_ref 189616 // EdgeID
	cpp_decl "${comment}typedef fixed_array<${type},12> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174000 // <dependency>
	  relation 174000 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174000 // <dependency>
	    b parent class_ref 189616 // EdgeID
	end
      end

      class 193072 "VerticesAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 189488 // PointID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174128 // <dependency>
	  relation 174128 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174128 // <dependency>
	    b parent class_ref 189488 // PointID
	end
      end

      class 193200 "EdgesAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 189616 // EdgeID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174256 // <dependency>
	  relation 174256 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174256 // <dependency>
	    b parent class_ref 189616 // EdgeID
	end
      end

      class 193328 "TrianglesAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 189744 // TriangleID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174384 // <dependency>
	  relation 174384 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174384 // <dependency>
	    b parent class_ref 189744 // TriangleID
	end
      end

      class 193456 "QuadsAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 189872 // QuadID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174512 // <dependency>
	  relation 174512 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174512 // <dependency>
	    b parent class_ref 189872 // QuadID
	end
      end

      class 193584 "TetrahedraAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 190000 // TetraID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174640 // <dependency>
	  relation 174640 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174640 // <dependency>
	    b parent class_ref 190000 // TetraID
	end
      end

      class 193712 "HexahedraAroundVertex"
	visibility package stereotype "typedef" base_type class_ref 190128 // HexaID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174768 // <dependency>
	  relation 174768 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174768 // <dependency>
	    b parent class_ref 190128 // HexaID
	end
      end

      class 193840 "TrianglesAroundEdge"
	visibility package stereotype "typedef" base_type class_ref 189744 // TriangleID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 174896 // <dependency>
	  relation 174896 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 174896 // <dependency>
	    b parent class_ref 189744 // TriangleID
	end
      end

      class 193968 "QuadsAroundEdge"
	visibility package stereotype "typedef" base_type class_ref 189872 // QuadID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 175024 // <dependency>
	  relation 175024 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 175024 // <dependency>
	    b parent class_ref 189872 // QuadID
	end
      end

      class 194096 "TetrahedraAroundEdge"
	visibility package stereotype "typedef" base_type class_ref 190000 // TetraID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 175152 // <dependency>
	  relation 175152 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 175152 // <dependency>
	    b parent class_ref 190000 // TetraID
	end
      end

      class 194224 "HexahedraAroundEdge"
	visibility package stereotype "typedef" base_type class_ref 190128 // HexaID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 175280 // <dependency>
	  relation 175280 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 175280 // <dependency>
	    b parent class_ref 190128 // HexaID
	end
      end

      class 194352 "TetrahedraAroundTriangle"
	visibility package stereotype "typedef" base_type class_ref 190000 // TetraID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 175408 // <dependency>
	  relation 175408 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 175408 // <dependency>
	    b parent class_ref 190000 // TetraID
	end
      end

      class 194480 "HexahedraAroundQuad"
	visibility package stereotype "typedef" base_type class_ref 190128 // HexaID
	cpp_decl "${comment}typedef vector<${type}> ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
	classrelation 175536 // <dependency>
	  relation 175536 -_->
	    a default
	      cpp default "#include in source"
	      classrelation_ref 175536 // <dependency>
	    b parent class_ref 190128 // HexaID
	end
      end

      operation 342320 "BaseMeshTopology"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw};
"
	cpp_def "${comment}${inline}${class}::${name}${(}${)}
: fileTopology(initData(&fileTopology,\"fileTopology\",\"Filename of the mesh\"))
${throw}{
  ${body}}
"
	
	
	
	
	comment "/ @}"
      end

      operation 342448 "init"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 342576 "load"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "bool"
	nparams 1
	  param in name "filename" explicit_type "char"
	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 "/ Load the topology from a file.
/
/ The default implementation supports the following formats: obj, gmsh, mesh (custom simple text file), xs3 (deprecated description of mass-springs networks)."
      end

      operation 342704 "getFilename"
	const cpp_virtual cpp_inline public explicit_return_type "std::string"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {return fileTopology.getValue();};
"
	
	
	
	
      end

      operation 342832 "getEdges"
	abstract cpp_virtual public return_type class_ref 190896 // SeqEdges
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment " defined in Topology
virtual int getNbPoints() const = 0;
/ Complete sequence accessors
/ @{"
      end

      operation 342960 "getTriangles"
	abstract cpp_virtual public return_type class_ref 191024 // SeqTriangles
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
      end

      operation 343088 "getQuads"
	abstract cpp_virtual public return_type class_ref 191152 // SeqQuads
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
      end

      operation 343216 "getTetrahedra"
	abstract cpp_virtual public return_type class_ref 191280 // SeqTetrahedra
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
      end

      operation 343344 "getHexahedra"
	abstract cpp_virtual public return_type class_ref 191408 // SeqHexahedra
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
      end

      operation 343472 "getNbEdges"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getEdges().size(); };
"
	
	
	
	
	comment "/ @}
/ Random accessors
/ @{"
      end

      operation 343600 "getNbTriangles"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getTriangles().size(); };
"
	
	
	
	
      end

      operation 343728 "getNbQuads"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getQuads().size(); };
"
	
	
	
	
      end

      operation 343856 "getNbTetrahedra"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getTetrahedra().size(); };
"
	
	
	
	
      end

      operation 343984 "getNbHexahedra"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getHexahedra().size(); };
"
	
	
	
	
      end

      operation 344112 "getEdge"
	cpp_virtual cpp_inline public return_type class_ref 190256 // Edge
	nparams 1
	  param in name "i" type class_ref 189616 // EdgeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getEdges()[i]; };
"
	
	
	
	
      end

      operation 344240 "getTriangle"
	cpp_virtual cpp_inline public return_type class_ref 190384 // Triangle
	nparams 1
	  param in name "i" type class_ref 189744 // TriangleID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getTriangles()[i]; };
"
	
	
	
	
      end

      operation 344368 "getQuad"
	cpp_virtual cpp_inline public return_type class_ref 190512 // Quad
	nparams 1
	  param in name "i" type class_ref 189872 // QuadID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getQuads()[i]; };
"
	
	
	
	
      end

      operation 344496 "getTetrahedron"
	cpp_virtual cpp_inline public return_type class_ref 190640 // Tetra
	nparams 1
	  param in name "i" type class_ref 190000 // TetraID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getTetrahedra()[i]; };
"
	
	
	
	
      end

      operation 344624 "getHexahedron"
	cpp_virtual cpp_inline public return_type class_ref 190768 // Hexa
	nparams 1
	  param in name "i" type class_ref 190128 // HexaID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getHexahedra()[i]; };
"
	
	
	
	
      end

      operation 344752 "getNbTetras"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getTetrahedra().size(); };
"
	
	
	
	
	comment "/ @}
/ Bridge from old functions (using Tetra/Tetras and Hexa/Hexas) to new ones
/@{"
      end

      operation 344880 "getNbHexas"
	cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getHexahedra().size(); };
"
	
	
	
	
      end

      operation 345008 "getTetra"
	cpp_virtual cpp_inline public return_type class_ref 190640 // Tetra
	nparams 1
	  param in name "i" type class_ref 190000 // TetraID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getTetrahedra()[i]; };
"
	
	
	
	
      end

      operation 345136 "getHexa"
	cpp_virtual cpp_inline public return_type class_ref 190768 // Hexa
	nparams 1
	  param in name "i" type class_ref 190128 // HexaID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getHexahedra()[i]; };
"
	
	
	
	
      end

      operation 345264 "getTetras"
	cpp_virtual cpp_inline public return_type class_ref 191280 // SeqTetrahedra
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} {return getTetrahedra();};
"
	
	
	
	
      end

      operation 345392 "getHexas"
	cpp_virtual cpp_inline public return_type class_ref 191408 // SeqHexahedra
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} {return getHexahedra();};
"
	
	
	
	
      end

      operation 345520 "getEdgesAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193200 // EdgesAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of edges adjacent to a given vertex.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ @}
/ @name neighbors queries
/ @{
/ Returns the set of edges adjacent to a given vertex."
      end

      operation 345648 "getEdgesInTriangle"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192304 // EdgesInTriangle
	nparams 1
	  param in name "i" type class_ref 189744 // TriangleID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of edges adjacent to a given triangle."
      end

      operation 345776 "getEdgesInQuad"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192432 // EdgesInQuad
	nparams 1
	  param in name "i" type class_ref 189872 // QuadID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of edges adjacent to a given quad."
      end

      operation 345904 "getEdgesInTetrahedron"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192688 // EdgesInTetrahedron
	nparams 1
	  param in name "i" type class_ref 190000 // TetraID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of edges adjacent to a given tetrahedron."
      end

      operation 346032 "getEdgesInHexahedron"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192944 // EdgesInHexahedron
	nparams 1
	  param in name "i" type class_ref 190128 // HexaID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of edges adjacent to a given hexahedron."
      end

      operation 346160 "getTrianglesAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193328 // TrianglesAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of triangle adjacent to a given vertex.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of triangles adjacent to a given vertex."
      end

      operation 346288 "getTrianglesAroundEdge"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193840 // TrianglesAroundEdge
	nparams 1
	  param in name "i" type class_ref 189616 // EdgeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of triangle adjacent to a given edge.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of triangles adjacent to a given edge."
      end

      operation 346416 "getTrianglesInTetrahedron"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192560 // TrianglesInTetrahedron
	nparams 1
	  param in name "i" type class_ref 190000 // TetraID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of triangle adjacent to a given tetrahedron.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of triangles adjacent to a given tetrahedron."
      end

      operation 346544 "getQuadsAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193456 // QuadsAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of quad adjacent to a given vertex.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of quads adjacent to a given vertex."
      end

      operation 346672 "getQuadsAroundEdge"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193968 // QuadsAroundEdge
	nparams 1
	  param in name "i" type class_ref 189616 // EdgeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of quad adjacent to a given edge.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of quads adjacent to a given edge."
      end

      operation 346800 "getQuadsInHexahedron"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 192816 // QuadsInHexahedron
	nparams 1
	  param in name "i" type class_ref 190128 // HexaID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of quad adjacent to a given hexahedron.

${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of quads adjacent to a given hexahedron."
      end

      operation 346928 "getTetrahedraAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193584 // TetrahedraAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of tetrahedra adjacent to a given vertex."
      end

      operation 347056 "getTetrahedraAroundEdge"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 194096 // TetrahedraAroundEdge
	nparams 1
	  param in name "i" type class_ref 189616 // EdgeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of tetrahedra adjacent to a given edge."
      end

      operation 347184 "getTetrahedraAroundTriangle"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 194352 // TetrahedraAroundTriangle
	nparams 1
	  param in name "i" type class_ref 189744 // TriangleID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of tetrahedra adjacent to a given triangle."
      end

      operation 347312 "getHexahedraAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193712 // HexahedraAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of hexahedra adjacent to a given vertex."
      end

      operation 347440 "getHexahedraAroundEdge"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 194224 // HexahedraAroundEdge
	nparams 1
	  param in name "i" type class_ref 189616 // EdgeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of hexahedra adjacent to a given edge."
      end

      operation 347568 "getHexahedraAroundQuad"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 194480 // HexahedraAroundQuad
	nparams 1
	  param in name "i" type class_ref 189872 // QuadID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} & ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of hexahedra adjacent to a given quad."
      end

      operation 347696 "getVerticesAroundVertex"
	preserve_cpp_body_indent cpp_virtual public return_type class_ref 193072 // VerticesAroundVertex
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of vertices adjacent to a given vertex (i.e. sharing an edge)"
      end

      operation 347824 "getElementAroundElement"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "vector<index_type>"
	nparams 1
	  param in name "elem" type class_ref 189232 // index_type
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of element indices adjacent to a given element (i.e. sharing a link)"
      end

      operation 347952 "getElementAroundElements"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "vector<index_type>"
	nparams 1
	  param in name "elems" explicit_type "vector<index_type>"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of element indices adjacent to a given list of elements (i.e. sharing a link)"
      end

      operation 348080 "getEdgeIndex"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "v1" type class_ref 189488 // PointID
	  param in name "v2" type class_ref 189488 // PointID
	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 index of the edge joining vertex v1 and vertex v2; returns -1 if no edge exists"
      end

      operation 348208 "getTriangleIndex"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "int"
	nparams 3
	  param in name "v1" type class_ref 189488 // PointID
	  param in name "v2" type class_ref 189488 // PointID
	  param in name "v3" type class_ref 189488 // PointID
	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 "/ Returns the index of the triangle given three vertex indices; returns -1 if no triangle exists"
      end

      operation 348336 "getQuadIndex"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "int"
	nparams 4
	  param in name "v1" type class_ref 189488 // PointID
	  param in name "v2" type class_ref 189488 // PointID
	  param in name "v3" type class_ref 189488 // PointID
	  param in name "v4" type class_ref 189488 // PointID
	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 "/ Returns the index of the quad given four vertex indices; returns -1 if no quad exists"
      end

      operation 348464 "getTetrahedronIndex"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "int"
	nparams 4
	  param in name "v1" type class_ref 189488 // PointID
	  param in name "v2" type class_ref 189488 // PointID
	  param in name "v3" type class_ref 189488 // PointID
	  param in name "v4" type class_ref 189488 // PointID
	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 "/ Returns the index of the tetrahedron given four vertex indices; returns -1 if no tetrahedron exists"
      end

      operation 348592 "getHexahedronIndex"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "int"
	nparams 8
	  param in name "v1" type class_ref 189488 // PointID
	  param in name "v2" type class_ref 189488 // PointID
	  param in name "v3" type class_ref 189488 // PointID
	  param in name "v4" type class_ref 189488 // PointID
	  param in name "v5" type class_ref 189488 // PointID
	  param in name "v6" type class_ref 189488 // PointID
	  param in name "v7" type class_ref 189488 // PointID
	  param in name "v8" type class_ref 189488 // PointID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}, ${t5} ${p5}${v5}, ${t6} ${p6}${v6}, ${t7} ${p7}${v7}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}, ${t4} ${p4}, ${t5} ${p5}, ${t6} ${p6}, ${t7} ${p7}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the index of the hexahedron given eight vertex indices; returns -1 if no hexahedron exists"
      end

      operation 348720 "getVertexIndexInTriangle"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 190384 // Triangle
	  param in name "vertexIndex" type class_ref 189488 // PointID
	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 the index (either 0, 1 ,2 or 3) of the vertex whose global index is vertexIndex. Returns -1 if none "
      end

      operation 348848 "getEdgeIndexInTriangle"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192304 // EdgesInTriangle
	  param in name "edgeIndex" type class_ref 189616 // EdgeID
	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 the index (either 0, 1 ,2) of the edge whose global index is edgeIndex. Returns -1 if none "
      end

      operation 348976 "getVertexIndexInQuad"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 190512 // Quad
	  param in name "vertexIndex" type class_ref 189488 // PointID
	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 the index (either 0, 1 ,2 or 3) of the vertex whose global index is vertexIndex. Returns -1 if none "
      end

      operation 349104 "getEdgeIndexInQuad"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192432 // EdgesInQuad
	  param in name "edgeIndex" type class_ref 189616 // EdgeID
	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 the index (either 0, 1 ,2, 3) of the edge whose global index is edgeIndex. Returns -1 if none "
      end

      operation 349232 "getVertexIndexInTetrahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 190640 // Tetra
	  param in name "vertexIndex" type class_ref 189488 // PointID
	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 the index (either 0, 1 ,2 or 3) of the vertex whose global index is vertexIndex. Returns -1 if none "
      end

      operation 349360 "getEdgeIndexInTetrahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192688 // EdgesInTetrahedron
	  param in name "edgeIndex" type class_ref 189616 // EdgeID
	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 the index (either 0, 1 ,2 ,3, 4, 5) of the edge whose global index is edgeIndex. Returns -1 if none "
      end

      operation 349488 "getTriangleIndexInTetrahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192560 // TrianglesInTetrahedron
	  param in name "triangleIndex" type class_ref 189744 // TriangleID
	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 the index (either 0, 1 ,2 ,3) of the triangle whose global index is triangleIndex. Returns -1 if none "
      end

      operation 349616 "getVertexIndexInHexahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 190768 // Hexa
	  param in name "vertexIndex" type class_ref 189488 // PointID
	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 the index (either 0, 1 ,2, 3, 4, 5, 6, or 7) of the vertex whose global index is vertexIndex. Returns -1 if none "
      end

      operation 349744 "getEdgeIndexInHexahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192944 // EdgesInHexahedron
	  param in name "edgeIndex" type class_ref 189616 // EdgeID
	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 the index (either 0, 1 ,2 ,3, 4, 5, 6, 7, 8, 9, 10, 11) of the edge whose global index is edgeIndex. Returns -1 if none "
      end

      operation 349872 "getQuadIndexInHexahedron"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "int"
	nparams 2
	  param in name "t" type class_ref 192816 // QuadsInHexahedron
	  param in name "quadIndex" type class_ref 189872 // QuadID
	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 the index (either 0, 1 ,2 ,3, 4, 5) of the quad whose global index is quadIndex. Returns -1 if none "
      end

      operation 350000 "getLocalEdgesInTetrahedron"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 190256 // Edge
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	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 "* \\brief Returns for each index (between 0 and 5) the two vertex indices that are adjacent to that edge "
      end

      operation 350128 "getLocalTrianglesInTetrahedron"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 190384 // Triangle
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	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 "* \\brief Returns for each index (between 0 and 3) the three local vertices indices that are adjacent to that triangle "
      end

      operation 350256 "getLocalEdgesInHexahedron"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 190256 // Edge
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	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 "* \\brief Returns for each index (between 0 and 12) the two vertex indices that are adjacent to that edge "
      end

      operation 350384 "getLocalQuadsInHexahedron"
	preserve_cpp_body_indent const cpp_virtual public return_type class_ref 190512 // Quad
	nparams 1
	  param in name "i" type class_ref 189488 // PointID
	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 "* \\brief Returns for each index (between 0 and 6) the four vertices indices that are adjacent to that quad "
      end

      operation 350512 "getLines"
	cpp_inline public return_type class_ref 191792 // SeqLines
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getEdges(); };
"
	
	
	
	
	comment "/ @name Deprecated names, for backward-compatibility
/ @{"
      end

      operation 350640 "getNbLines"
	cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getNbEdges(); };
"
	
	
	
	
      end

      operation 350768 "getLine"
	cpp_inline public return_type class_ref 191664 // Line
	nparams 1
	  param in name "i" type class_ref 191536 // LineID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getEdge(i); };
"
	
	
	
	
      end

      operation 350896 "getCubes"
	cpp_inline public return_type class_ref 192176 // SeqCubes
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getHexahedra(); };
"
	
	
	
	
      end

      operation 351024 "getNbCubes"
	cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return getNbHexahedra(); };
"
	
	
	
	
      end

      operation 351152 "getCube"
	cpp_inline public return_type class_ref 192048 // Cube
	nparams 1
	  param in name "i" type class_ref 191920 // CubeID
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return getHexahedron(i); };
"
	
	
	
	
      end

      operation 351280 "hasPos"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment "/ @}
/ @name Initial points accessors (only available if the topology was loaded from a file containing this information).
/ Note that this data is only used for initialization and is not maintained afterwards (i.e. topological changes may not be applied)
/ @{"
      end

      operation 351408 "getPX"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end

      operation 351536 "getPY"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end

      operation 351664 "getPZ"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end

      operation 351792 "clear"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// for procedural creation

${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ @}
/ Procedural creation methods
/ @{"
      end

      operation 351920 "addPoint"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 3
	  param in name "px" explicit_type "double"
	  param in name "py" explicit_type "double"
	  param in name "pz" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 352048 "addEdge"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 2
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	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 352176 "addLine"
	cpp_inline public explicit_return_type "void"
	nparams 2
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} { addEdge(a,b); };
"
	
	
	
	
      end

      operation 352304 "addTriangle"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 3
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	  param in name "c" explicit_type "int"
	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 352432 "addQuad"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 4
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	  param in name "c" explicit_type "int"
	  param in name "d" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 352560 "addTetra"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 4
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	  param in name "c" explicit_type "int"
	  param in name "d" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 352688 "addHexa"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 8
	  param in name "a" explicit_type "int"
	  param in name "b" explicit_type "int"
	  param in name "c" explicit_type "int"
	  param in name "d" explicit_type "int"
	  param in name "e" explicit_type "int"
	  param in name "f" explicit_type "int"
	  param in name "g" explicit_type "int"
	  param in name "h" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}, ${t5} ${p5}${v5}, ${t6} ${p6}${v6}, ${t7} ${p7}${v7}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, ${t3} ${p3}, ${t4} ${p4}, ${t5} ${p5}, ${t6} ${p6}, ${t7} ${p7}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 352816 "checkConnexity"
	cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {return true;};
"
	
	
	
	
	comment "/ @}
/ get information about connexity of the mesh
/ @{
/ Checks if the topology has only one connected component. @return Return true if so."
      end

      operation 352944 "getNumberOfConnectedComponent"
	cpp_virtual cpp_inline public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {return 0;};
"
	
	
	
	
	comment "/ Returns the number of connected component."
      end

      operation 353072 "getConnectedElement"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "vector<index_type>"
	nparams 1
	  param in name "elem" type class_ref 189232 // index_type
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}const ${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ Returns the set of element indices connected to an input one (i.e. which can be reached by topological links)"
      end

      operation 353200 "getRevision"
	const cpp_virtual cpp_inline public explicit_return_type "int"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return 0; };
"
	
	
	
	
	comment "/ @}
/ get the current revision of this mesh (use to detect changes)
/ @deprecated"
      end

      operation 353328 "reOrientateTriangle"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param in name "id" type class_ref 189744 // TriangleID
	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 "/ Will change order of vertices in triangle: t[1] <=> t[2]"
      end

      operation 353456 "beginChange"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "/ Management of topological changes and state changes
/ @{
* \\brief Provides an iterator on the first element in the list of TopologyChange objects."
      end

      operation 353584 "endChange"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of TopologyChange objects."
      end

      operation 353712 "beginStateChange"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the first element in the list of StateChange objects."
      end

      operation 353840 "endStateChange"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of StateChange objects."
      end

      operation 353968 "addTopologyEngine"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "_topologyEngine" type class_ref 194608 // TopologyEngine
	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 "* \\brief Adds a TopologyEngine to the list."
      end

      operation 354096 "beginTopologyEngine"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<TopologyEngine *>::const_iterator"
	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 "* \\brief Provides an iterator on the first element in the list of TopologyEngine objects."
      end

      operation 354224 "endTopologyEngine"
	preserve_cpp_body_indent const cpp_virtual public explicit_return_type "sofa::helper::list<TopologyEngine *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of TopologyEngine objects."
      end

      operation 354352 "getTrianglesOnBorder"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "sofa::helper::vector<TriangleID>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of triangles on the border of the triangulation

${inline}const ${type} & ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "/ @}
 functions returning border elements. To be moved in a mapping."
      end

      operation 354480 "getEdgesOnBorder"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "sofa::helper::vector<EdgeID>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of edges on the border of the triangulation

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

      operation 354608 "getPointsOnBorder"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "sofa::helper::vector<PointID>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "/// Returns the set of points on the border of the triangulation

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

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

    class 152496 "Topology"
      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 178608 // <generalisation>
	relation 178608 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 178608 // <generalisation>
	  b parent class_ref 195504 // typedef20
      end

      classrelation 178736 // <generalisation>
	relation 178736 ---|>
	  a private
	    cpp default "${type}"
	    classrelation_ref 178736 // <generalisation>
	  b parent class_ref 128304 // BaseObject
      end

      operation 363952 "Topology"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} :BaseObject(){};
"
	
	
	
	
      end

      operation 364080 "~Topology"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
      end

      operation 364208 "hasPos"
	const cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment " Access to embedded position information (in case the topology is a regular grid for instance)
 This is not very clean and is quit slow but it should only be used during initialization"
      end

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

      operation 364464 "setNbPoints"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
      end

      operation 364592 "getPX"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end

      operation 364720 "getPY"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end

      operation 364848 "getPZ"
	const cpp_virtual cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return 0.0; };
"
	
	
	
	
      end
    end

    class 194608 "TopologyEngine"
      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 class that will interact on a topological Data "
      classrelation 178352 // <generalisation>
	relation 178352 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 178352 // <generalisation>
	  b parent class_ref 133424 // DataEngine
      end

      class 196400 "t_topologicalData"
	visibility package stereotype "typedef" explicit_base_type "sofa::core::objectmodel::Data< sofa::helper::vector <void*> >"
	cpp_decl "${comment}typedef ${type} ${name};
"
	java_decl ""
	php_decl ""
	python_2_2 python_decl ""
	idl_decl ""
	explicit_switch_type ""
	
      end

      operation 362928 "TopologyEngine"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} : m_topologicalData(NULL)  {};
"
	
	
	
	
      end

      operation 363056 "~TopologyEngine"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} {
         if (this->m_topologicalData != NULL)
            this->removeTopologicalData();
      };
"
	
	
	
	
      end

      operation 363184 "init"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {
         this->addInput(&m_changeList);
         this->addOutput(m_topologicalData);
      };
"
	
	
	
	
      end

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

      attribute 171056 "m_changeList"
	public explicit_type "sofa::helper::list<const TopologyChange *> "
	stereotype "Data"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      operation 363440 "getNumberOfTopologicalChanges"
	cpp_inline public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {return (m_changeList.getValue()).size();};
"
	
	
	
	
      end

      operation 363568 "registerTopologicalData"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 1
	  param inout name "topologicalData" type class_ref 196400 // t_topologicalData
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract} {m_topologicalData = topologicalData;};
"
	
	
	
	
      end

      operation 363696 "removeTopologicalData"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {
         if (this->m_topologicalData)
            delete this->m_topologicalData;
      };
"
	
	
	
	
      end

      operation 363824 "getTopologicalData"
	cpp_virtual cpp_inline public return_type class_ref 196400 // t_topologicalData
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} {return m_topologicalData;};
"
	
	
	
	
      end

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

    class 194736 "TopologyAlgorithms"
      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 class that contains a set of high-level (user frisendly) methods that perform topological changes "
      classrelation 175792 // <generalisation>
	relation 175792 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 175792 // <generalisation>
	  b parent class_ref 194864 // BaseTopologyObject
      end

      operation 354736 "TopologyAlgorithms"
	cpp_inline protected explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "* \\brief Constructor.
		*"
      end

      operation 354864 "~TopologyAlgorithms"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "/ Destructor "
      end

      operation 354992 "init"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// TopologyAlgorithms implementation

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

      operation 355120 "addTopologyChange"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "topologyChange" type class_ref 194992 // TopologyChange
	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 "* \\brief Adds a TopologyChange object to the list of the topology this object describes."
      end

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

    class 194864 "BaseTopologyObject"
      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 176816 // <generalisation>
	relation 176816 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 176816 // <generalisation>
	  b parent class_ref 195504 // typedef20
      end

      classrelation 176944 // <generalisation>
	relation 176944 ---|>
	  a private
	    cpp default "${type}"
	    classrelation_ref 176944 // <generalisation>
	  b parent class_ref 128304 // BaseObject
      end
    end

    class 194992 "TopologyChange"
      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 "* \\brief Base class to indicate a topology change occurred.
	*
	* All topological changes taking place in a given BaseTopology will issue a TopologyChange in the
	* BaseTopology's changeList, so that BasicTopologies mapped to it can know what happened and decide how to
	* react.
	* Classes inheriting from this one describe a given topolopy change (e.g. RemovedPoint, AddedEdge, etc).
	* The exact type of topology change is given by member changeType."
      operation 362160 "~TopologyChange"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "* \\ brief Destructor.
		*
		* Must be virtual for TopologyChange to be a Polymorphic type."
      end

      operation 362288 "getChangeType"
	const cpp_inline public return_type class_ref 196016 // TopologyChangeType
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_changeType;};
"
	
	
	
	
	comment "* \\brief Returns the code of this TopologyChange. "
      end

      operation 362416 "operator <<"
	friend cpp_inline public explicit_return_type "std::ostream"
	nparams 2
	  param inout name "os" explicit_type "std::ostream"
	  param in name "" type class_ref 194992 // TopologyChange
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} & ${p0}${v0}, const ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {
         return os;
      };
"
	
	
	
	
	comment "/ Output empty stream"
      end

      operation 362544 "operator >>"
	friend cpp_inline public explicit_return_type "std::istream"
	nparams 2
	  param inout name "in" explicit_type "std::istream"
	  param in name "" type class_ref 194992 // TopologyChange
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${t0} & ${p0}${v0}, const ${t1} * ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {
         return in;
      };
"
	
	
	
	
	comment "/ Input empty stream"
      end

      operation 362672 "TopologyChange"
	cpp_inline protected explicit_return_type ""
	nparams 1
	  param in name "changeType" type class_ref 196016 // TopologyChangeType
	    defaultvalue "BASE "
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw} : m_changeType(changeType)
		{};
"
	
	
	
	
      end

      classrelation 178096 // m_changeType (<directional composition>)
	relation 178096 *-->
	  a role_name "m_changeType" protected
	    comment "/< A code that tells the nature of the Topology modification event (could be an enum)."
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	    classrelation_ref 178096 // m_changeType (<directional composition>)
	  b parent class_ref 196016 // TopologyChangeType
      end
    end

    class 195120 "TopologyContainer"
      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 class that contains a description of the topology (set of edges, triangles, adjacency information, ...) "
      classrelation 176432 // <generalisation>
	relation 176432 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 176432 // <generalisation>
	  b parent class_ref 194864 // BaseTopologyObject
      end

      classrelation 176560 // <generalisation>
	relation 176560 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 176560 // <generalisation>
	  b parent class_ref 132272 // BaseMeshTopology
      end

      operation 356784 "TopologyContainer"
	cpp_inline protected explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "* \\brief Constructor.
		*"
      end

      operation 356912 "~TopologyContainer"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "// TopologyContainer implementation

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

      operation 357040 "init"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 357168 "getEdges"
	cpp_virtual cpp_inline public explicit_return_type "SeqEdges"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { static SeqEdges     empty; return empty; };
"
	
	
	
	
	comment "/ BaseMeshTopology API
/ @{"
      end

      operation 357296 "getTriangles"
	cpp_virtual cpp_inline public explicit_return_type "SeqTriangles"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { static SeqTriangles empty; return empty; };
"
	
	
	
	
      end

      operation 357424 "getQuads"
	cpp_virtual cpp_inline public explicit_return_type "SeqQuads"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { static SeqQuads     empty; return empty; };
"
	
	
	
	
      end

      operation 357552 "getTetrahedra"
	cpp_virtual cpp_inline public explicit_return_type "SeqTetrahedra"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { static SeqTetrahedra    empty; return empty; };
"
	
	
	
	
      end

      operation 357680 "getHexahedra"
	cpp_virtual cpp_inline public explicit_return_type "SeqHexahedra"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { static SeqHexahedra     empty; return empty; };
"
	
	
	
	
      end

      operation 357808 "getChangeList"
	const cpp_inline public explicit_return_type "sofa::helper::list<const TopologyChange *>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_changeList.getValue(); };
"
	
	
	
	
	comment "/ @}
/ TopologyChange interactions
/ @{"
      end

      operation 357936 "getStateChangeList"
	const cpp_inline public explicit_return_type "sofa::helper::list<const TopologyChange *>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_stateChangeList.getValue(); };
"
	
	
	
	
      end

      operation 358064 "getDataChangeList"
	const cpp_inline public explicit_return_type "Data<sofa::helper::list<const TopologyChange *> >"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_changeList; };
"
	
	
	
	
      end

      operation 358192 "getDataStateChangeList"
	const cpp_inline public explicit_return_type "Data<sofa::helper::list<const TopologyChange *> >"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_stateChangeList; };
"
	
	
	
	
      end

      operation 358320 "addTopologyChange"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "topologyChange" type class_ref 194992 // TopologyChange
	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 "* \\brief Adds a TopologyChange to the list.
		*
		* Needed by topologies linked to this one to know what happened and what to do to take it into account.
		*"
      end

      operation 358448 "addStateChange"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 1
	  param in name "topologyChange" type class_ref 194992 // TopologyChange
	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 "* \\brief Adds a StateChange to the list.
		*
		* Needed by topologies linked to this one to know what happened and what to do to take it into account.
		*"
      end

      operation 358576 "beginChange"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the first element in the list of TopologyChange objects."
      end

      operation 358704 "endChange"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of TopologyChange objects."
      end

      operation 358832 "beginStateChange"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the first element in the list of StateChange objects."
      end

      operation 358960 "endStateChange"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<const TopologyChange *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of StateChange objects."
      end

      operation 359088 "resetTopologyChangeList"
	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 "* \\brief Free each Topology changes in the list and remove them from the list
		*"
      end

      operation 359216 "resetStateChangeList"
	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 "* \\brief Free each State changes in the list and remove them from the list
		*"
      end

      operation 359344 "getTopologyEngineList"
	const cpp_inline public explicit_return_type "sofa::helper::list<TopologyEngine *>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m_topologyEngineList; };
"
	
	
	
	
	comment "/@}
/ TopologyEngine interactions
/@{"
      end

      operation 359472 "addTopologyEngine"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "_topologyEngine" type class_ref 194608 // TopologyEngine
	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 "* \\brief Adds a TopologyEngine to the list."
      end

      operation 359600 "beginTopologyEngine"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<TopologyEngine *>::const_iterator"
	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 "* \\brief Provides an iterator on the first element in the list of TopologyEngine objects."
      end

      operation 359728 "endTopologyEngine"
	preserve_cpp_body_indent const public explicit_return_type "sofa::helper::list<TopologyEngine *>::const_iterator"
	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 "* \\brief Provides an iterator on the last element in the list of TopologyEngine objects."
      end

      operation 359856 "resetTopologyEngineList"
	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 "* \\brief Free each Topology changes in the list and remove them from the list
      *"
      end

      attribute 166192 "m_changeList"
	protected explicit_type "sofa::helper::list<const TopologyChange *> "
	stereotype "Data"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 166320 "m_stateChangeList"
	protected explicit_type "sofa::helper::list<const TopologyChange *> "
	stereotype "Data"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      classrelation 176688 // m_topologyEngineList (<unidirectional association>)
	relation 176688 --->
	  stereotype "sofa::helper::list"
	  a role_name "m_topologyEngineList" protected
	    cpp default "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}*> ${name}${value};
"
	    classrelation_ref 176688 // m_topologyEngineList (<unidirectional association>)
	  b parent class_ref 194608 // TopologyEngine
      end
    end

    class 195248 "GeometryAlgorithms"
      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 class that contains a set of methods that describes the geometry of the object "
      classrelation 176048 // <generalisation>
	relation 176048 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 176048 // <generalisation>
	  b parent class_ref 194864 // BaseTopologyObject
      end

      operation 355248 "GeometryAlgorithms"
	cpp_inline protected explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "* \\brief Constructor.
		*"
      end

      operation 355376 "~GeometryAlgorithms"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment "/ Destructor "
      end

      operation 355504 "init"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// GeometryAlgorithms implementation

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

    class 195376 "TopologyModifier"
      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 class that contains a set of low-level methods that perform topological changes "
      classrelation 176176 // <generalisation>
	relation 176176 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 176176 // <generalisation>
	  b parent class_ref 194864 // BaseTopologyObject
      end

      operation 355632 "TopologyModifier"
	cpp_inline protected explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} : m_topologyContainer(NULL)
		{ };
"
	
	
	
	
	comment "* \\brief Constructor.
		*"
      end

      operation 355760 "~TopologyModifier"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} { };
"
	
	
	
	
	comment "/ Destructor "
      end

      operation 355888 "init"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// TopologyModifier implementation

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

      operation 356016 "propagateStateChanges"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* \\brief Called by a topology to warn the Mechanical Object component that points have been added or will be removed.
		*
		* StateChangeList should contain all TopologyChange objects corresponding to vertex changes in this topology
		* that just happened (in the case of creation) or are about to happen (in the case of destruction) since
		* last call to propagateTopologicalChanges.
		*
		* @sa firstChange()
		* @sa lastChange()"
      end

      operation 356144 "propagateTopologicalChanges"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* \\brief Called by a topology to warn specific topologies linked to it that TopologyChange objects happened.
		*
		* ChangeList should contain all TopologyChange objects corresponding to changes in this topology
		* that just happened (in the case of creation) or are about to happen (in the case of destruction) since
		* last call to propagateTopologicalChanges.
		*
		* @sa firstChange()
		* @sa lastChange()"
      end

      operation 356272 "notifyEndingEvent"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* \\notify the end for the current sequence of topological change events."
      end

      operation 356400 "removeItems"
	preserve_cpp_body_indent cpp_virtual public explicit_return_type "void"
	nparams 1
	  param inout name "" explicit_type "sofa::helper::vector< unsigned int >"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment "* \\brief Generic method to remove a list of items."
      end

      operation 356528 "addTopologyChange"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "topologyChange" type class_ref 194992 // TopologyChange
	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 "* \\brief Adds a TopologyChange object to the list of the topology this object describes."
      end

      operation 356656 "addStateChange"
	preserve_cpp_body_indent protected explicit_return_type "void"
	nparams 1
	  param in name "topologyChange" type class_ref 194992 // TopologyChange
	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 "* \\brief Adds a StateChange object to the list of the topology this object describes."
      end

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

    class 195504 "typedef20"
      visibility package stereotype "typedef" explicit_base_type "virtual"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end

    class 195632 "TopologicalMapping"
      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 "*
*  \\brief This Interface is a new kind of Mapping, called TopologicalMapping, which converts an INPUT TOPOLOGY to an OUTPUT TOPOLOGY (both topologies are of type BaseTopology)
*
* It first initializes the mesh of the output topology from the mesh of the input topology, 
* and it creates the two Index Maps that maintain the correspondence between the indices of their common elements.
*
* Then, at each propagation of topological changes, it translates the topological change events that are propagated from the INPUT topology 
* into specific actions that call element adding or element removal methods on the OUTPUT topology, and it updates the Index Maps.
*
* So, at each time step, the geometrical and adjacency information are consistent in both topologies.
*"
      classrelation 177072 // <generalisation>
	relation 177072 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 177072 // <generalisation>
	  b parent class_ref 195504 // typedef20
      end

      classrelation 177200 // <generalisation>
	relation 177200 ---|>
	  a private
	    cpp default "${type}"
	    classrelation_ref 177200 // <generalisation>
	  b parent class_ref 128304 // BaseObject
      end

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

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

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

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

      operation 359984 "TopologicalMapping"
	cpp_inline public explicit_return_type ""
	nparams 2
	  param inout name "from" type class_ref 195760 // In
	  param inout name "to" type class_ref 195888 // Out
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}, ${t1} * ${p1}${v1}${)}${volatile}${throw} : m_inputTopology(initData(&m_inputTopology, \"input\", \"Input topology to map\"))
		, m_outputTopology(initData(&m_outputTopology, \"output\", \"Output topology to map\"))
		, fromModel(from), toModel(to)

	{};
"
	
	
	
	
      end

      operation 360112 "~TopologicalMapping"
	cpp_virtual cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw} { };
"
	
	
	
	
      end

      operation 360240 "getFrom"
	cpp_inline public return_type class_ref 195760 // In
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} {return fromModel;};
"
	
	
	
	
	comment "/ Specify the input and output topologies.
	void setModels(In* from, Out* to)
{
	fromModel = from;
	toModel = to;
}
/ Accessor to the INPUT topology of the TopologicalMapping :"
      end

      operation 360368 "getTo"
	cpp_inline public return_type class_ref 195888 // Out
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract} {return toModel;};
"
	
	
	
	
	comment "/ Accessor to the OUTPUT topology of the TopologicalMapping :"
      end

      operation 360496 "updateTopologicalMappingTopDown"
	abstract cpp_virtual public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	
	
	
	
	comment "/ Method called at each topological changes propagation which comes from the INPUT topology to adapt the OUTPUT topology :"
      end

      operation 360624 "updateTopologicalMappingBottomUp"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
	comment "/ Method called at each topological changes propagation which comes from the OUTPUT topology to adapt the INPUT topology :"
      end

      operation 360752 "propagateFromInputToOutputModel"
	cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return true; };
"
	
	
	
	
	comment "/ Return true if this mapping is able to propagate topological changes from input to output model"
      end

      operation 360880 "propagateFromOutputToInputModel"
	cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return false; };
"
	
	
	
	
	comment "/ Return true if this mapping is able to propagate topological changes from output to input model"
      end

      operation 361008 "isTheOutputTopologySubdividingTheInputOne"
	cpp_virtual cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return true;};
"
	
	
	
	
	comment "/ return true if the output topology subdivide the input one. (the topology uses the Loc2GlobVec/Glob2LocMap/In2OutMap structs and share the same DOFs)"
      end

      operation 361136 "getGlob2LocMap"
	cpp_inline public explicit_return_type "std::map<unsigned int, unsigned int>"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return Glob2LocMap;};
"
	
	
	
	
	comment "/ Accessor to index maps :"
      end

      operation 361264 "getLoc2GlobVec"
	cpp_inline public explicit_return_type "Data<sofa::helper::vector<unsigned int> >"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} {return Loc2GlobDataVec;};
"
	
	
	
	
	comment "const sofa::helper::vector<unsigned int>& getLoc2GlobVec(){ return Loc2GlobVec.getValue();}"
      end

      operation 361392 "getGlobIndex"
	cpp_virtual cpp_inline public explicit_return_type "uint"
	nparams 1
	  param in name "ind" explicit_type "uint"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { 	
		if(ind< (Loc2GlobDataVec.getValue()).size()){
			return (Loc2GlobDataVec.getValue())[ind];
		}else{
			return 0;
		}
	};
"
	
	
	
	
      end

      operation 361520 "getFromIndex"
	cpp_virtual cpp_inline public explicit_return_type "uint"
	nparams 1
	  param in name "" explicit_type "uint"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} {
		return 0;
	};
"
	
	
	
	
      end

      operation 361648 "getFromIndex"
	const cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 2
	  param inout name "" explicit_type "vector<unsigned int>"
	  param in name "" explicit_type "uint"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} & ${p0}${v0}, const ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {};
"
	
	
	
	
	comment "* return all the from indices in the 'In' topology corresponding to the index in the 'Out' topology.
	*   This function is used instead of  the previous one when the function isTheOutputTopologySubdividingTheInputOne() returns false."
      end

      operation 361776 "getIn2OutMap"
	cpp_inline public explicit_return_type "std::map<unsigned int, sofa::helper::vector<unsigned int> >"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} & ${name}${(}${)}${const}${volatile}${throw}${abstract} { return In2OutMap;};
"
	
	
	
	
      end

      operation 361904 "canCreate"
	stereotype "template"
	class_operation cpp_inline public explicit_return_type "bool"
	nparams 3
	  param inout name "obj" explicit_type "T"
	  param inout name "context" type class_ref 141104 // BaseContext
	  param inout name "arg" type class_ref 141232 // BaseObjectDescription
	cpp_decl "    ${comment}template<class T>
  ${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * & ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract} {
		BaseMeshTopology* topoIn = NULL;
		BaseMeshTopology* topoOut = NULL;

#ifndef SOFA_DEPRECATE_OLD_API
		////Deprecated check
		Base* bobjInput = NULL;
		Base* bobjOutput = NULL;

		//Input
		if (arg->getAttribute(\"object1\",NULL) == NULL && arg->getAttribute(\"input\",NULL) == NULL)
			bobjInput = arg->findObject(\"../..\");

		if (arg->getAttribute(\"object1\",NULL) != NULL)
			bobjInput = sofa::core::objectmodel::ObjectRef::parseFromXMLPath(\"object1\", arg);

		if (BaseObject* bo = dynamic_cast< BaseObject* >(bobjInput))
			topoIn = dynamic_cast< BaseMeshTopology* >(bo);

		else if (core::objectmodel::BaseContext* bc = dynamic_cast< core::objectmodel::BaseContext* >(bobjInput))
			bc->get(topoIn);

		//Output
		if (arg->getAttribute(\"object2\",NULL) == NULL && arg->getAttribute(\"output\",NULL) == NULL)
			bobjOutput = arg->findObject(\"..\");

		if (arg->getAttribute(\"object2\",NULL) != NULL)
			bobjOutput = sofa::core::objectmodel::ObjectRef::parseFromXMLPath(\"object2\", arg);

		if (BaseObject* bo = dynamic_cast< BaseObject* >(bobjOutput))
			topoOut = dynamic_cast< BaseMeshTopology* >(bo);

		else if (core::objectmodel::BaseContext* bc = dynamic_cast< core::objectmodel::BaseContext* >(bobjOutput))
			bc->get(topoOut);
		/////

		if (topoIn == NULL || topoOut == NULL)
#endif // SOFA_DEPRECATE_OLD_API
		{
			topoIn = sofa::core::objectmodel::ObjectRef::parse< BaseMeshTopology >(\"input\", arg);
			topoOut = sofa::core::objectmodel::ObjectRef::parse< BaseMeshTopology >(\"output\", arg);
		}

		if (topoIn == NULL)
		{
			//context->serr << \"Cannot create \"<<className(obj)<<\" as object1 is missing or invalid.\" << context->sendl;
			return false;
		}

		if (topoOut == NULL)
		{
			//context->serr << \"Cannot create \"<<className(obj)<<\" as object2 is missing or invalid.\" << context->sendl;
			return false;
		}

		return BaseObject::canCreate(obj, context, arg);
	};
"
	
	
	
	
	comment "/ Pre-construction check method called by ObjectFactory.
/
/ This implementation read the object1 and object2 attributes and check
/ if they are compatible with the input and output topology types of this
/ mapping."
      end

      operation 362032 "create"
	stereotype "template"
	class_operation cpp_inline public explicit_return_type "void"
	nparams 3
	  param inout name "obj" explicit_type "T"
	  param inout name "context" type class_ref 141104 // BaseContext
	  param inout name "arg" type class_ref 141232 // BaseObjectDescription
	cpp_decl "    ${comment}template<class T>
  ${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} * & ${p0}${v0}, ${t1} * ${p1}${v1}, ${t2} * ${p2}${v2}${)}${const}${volatile}${throw}${abstract} {
		BaseMeshTopology* topoIn=NULL;
		BaseMeshTopology* topoOut=NULL;

#ifndef SOFA_DEPRECATE_OLD_API
		{
			////Deprecated check
			std::string object1Path;
			std::string object2Path;

			Base* bobjInput = NULL;
			Base* bobjOutput = NULL;

      if( arg != NULL )
      {
			  //Input
			  if(arg->getAttribute(\"object1\",NULL) == NULL && arg->getAttribute(\"input\",NULL) == NULL)
			  {
				  object1Path = \"..\";
				  context->serr << \"Deprecated use of implicit value for input\" << context->sendl;
				  context->serr << \"Use now : input=\\\"@\" << object1Path << \"\\\" \"<< context->sendl;
				  bobjInput = arg->findObject(\"../..\");
			  }

			  if(arg->getAttribute(\"object1\",NULL) != NULL)
			  {
				  object1Path = sofa::core::objectmodel::ObjectRef::convertFromXMLPathToSofaScenePath(arg->getAttribute(\"object1\",NULL));
				  context->serr << \"Deprecated use of attribute \" << \"object1\" << context->sendl;
				  context->serr << \"Use now : input=\\\"@\" 
					  << object1Path
					  << \"\\\"\"<< context->sendl;
				  bobjInput = sofa::core::objectmodel::ObjectRef::parseFromXMLPath(\"object1\", arg);
			  }

			  if (BaseObject* bo = dynamic_cast< BaseObject* >(bobjInput))
			  {
				  topoIn = dynamic_cast< BaseMeshTopology* >(bo);
			  }
			  else if (core::objectmodel::BaseContext* bc = dynamic_cast< core::objectmodel::BaseContext* >(bobjInput))
			  {
				  bc->get(topoIn);
			  }

			  //Output
			  if(arg->getAttribute(\"object2\",NULL) == NULL && arg->getAttribute(\"output\",NULL) == NULL)
			  {
				  object2Path = \".\";
				  context->serr << \"Deprecated use of implicit value for output\" << context->sendl;
				  context->serr << \"Use now : output=\\\"@\" << object2Path << \"\\\" \"<< context->sendl;
				  bobjOutput = arg->findObject(\"..\");
			  }

			  if(arg->getAttribute(\"object2\",NULL) != NULL)
			  {
				  object2Path = sofa::core::objectmodel::ObjectRef::convertFromXMLPathToSofaScenePath(arg->getAttribute(\"object2\",NULL));
				  context->serr << \"Deprecated use of attribute \" << \"object2\" << context->sendl;
				  context->serr << \"Use now : output=\\\"@\" 
					  << object2Path
					  << \"\\\"\"<< context->sendl;
				  bobjOutput = sofa::core::objectmodel::ObjectRef::parseFromXMLPath(\"object2\", arg);
			  }

			  if (BaseObject* bo = dynamic_cast< BaseObject* >(bobjOutput))
			  {
				  topoOut = dynamic_cast< BaseMeshTopology* >(bo);
			  }
			  else if (core::objectmodel::BaseContext* bc = dynamic_cast< core::objectmodel::BaseContext* >(bobjOutput))
			  {
				  bc->get(topoOut);
			  }

			  /////
      }

			if(topoIn == NULL && topoOut == NULL)
#endif // SOFA_DEPRECATE_OLD_API
			{
        if(arg)
        {
				  topoIn = sofa::core::objectmodel::ObjectRef::parse< BaseMeshTopology >(\"input\", arg);
				  topoOut = sofa::core::objectmodel::ObjectRef::parse< BaseMeshTopology >(\"output\", arg);
        }
			}

			obj = new T( (arg?topoIn:NULL), (arg?topoOut:NULL));
#ifndef SOFA_DEPRECATE_OLD_API
			if (!object1Path.empty())
				obj->m_inputTopology.setValue( object1Path );
			if (!object2Path.empty())
				obj->m_outputTopology.setValue( object2Path );
#endif // SOFA_DEPRECATE_OLD_API
		}

		if (context) 
			context->addObject(obj);

		if (arg)
			obj->parse(arg);
	};
"
	
	
	
	
	comment "/ Construction method called by ObjectFactory.
/
/ This implementation read the object1 and object2 attributes to
/ find the input and output topologies of this mapping."
      end

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

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

      attribute 166448 "Loc2GlobDataVec"
	protected explicit_type "sofa::helper::vector <unsigned int> "
	stereotype "Data"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 166576 "Glob2LocMap"
	protected explicit_type "unsigned int, unsigned int"
	stereotype "std::map"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
	comment "TODO put it in Data => Data allow map"
      end

      attribute 166704 "In2OutMap"
	protected explicit_type "unsigned int, sofa::helper::vector<unsigned int> "
	stereotype "std::map"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 196016 "TopologyChangeType"
      visibility package stereotype "enum"
      cpp_decl "${comment}enum ${name} {
${items}
};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "/ The enumeration used to give unique identifiers to TopologyChange objects."
      attribute 166832 "BASE"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 166960 "ENDING_EVENT"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167088 "POINTSINDICESSWAP"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167216 "POINTSADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167344 "POINTSREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167472 "POINTSMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167600 "POINTSRENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167728 "EDGESADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167856 "EDGESREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 167984 "EDGESMOVED_REMOVING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168112 "EDGESMOVED_ADDING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168240 "EDGESRENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168368 "TRIANGLESADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168496 "TRIANGLESREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168624 "TRIANGLESMOVED_REMOVING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168752 "TRIANGLESMOVED_ADDING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 168880 "TRIANGLESRENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169008 "TETRAHEDRAADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169136 "TETRAHEDRAREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169264 "TETRAHEDRARENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169392 "QUADSADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169520 "QUADSREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169648 "QUADSRENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169776 "HEXAHEDRAADDED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 169904 "HEXAHEDRAREMOVED"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170032 "HEXAHEDRARENUMBERING"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170160 "TOPOLOGYCHANGE_LASTID"
	public type class_ref 196016 // TopologyChangeType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 196144 "TopologyObjectType"
      visibility package stereotype "enum"
      cpp_decl "${comment}enum ${name} {
${items}
};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      comment "/< For TopologyChange class, should never be used.
/< To notify the end for the current sequence of topological change events
/< For PointsIndicesSwap class.
/< For PointsAdded class.
/< For PointsRemoved class.
/< For PointsMoved class.
/< For PointsRenumbering class.
/< For EdgesAdded class.
/< For EdgesRemoved class.
/< For EdgesMoved class (event before changing state).
/< For EdgesMoved class.
/< For EdgesRenumbering class.
/< For TrianglesAdded class.
/< For TrianglesRemoved class.
/< For TrianglesMoved class (event before changing state).
/< For TrianglesMoved class.
/< For TrianglesRenumbering class.
/< For TrianglesAdded class.
/< For TrianglesRemoved class.
/< For TrianglesRenumbering class.
/< For QuadsAdded class.
/< For QuadsRemoved class.
/< For QuadsRenumbering class.
/< For TrianglesAdded class.
/< For TrianglesRemoved class.
/< For TrianglesRenumbering class.
/< user defined topology changes can start here
/ The enumeration used to give unique identifiers to Topological objects."
      attribute 170288 "POINT"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170416 "EDGE"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170544 "TRIANGLE"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170672 "QUAD"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170800 "TETRAHEDRON"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 170928 "HEXAHEDRON"
	public type class_ref 196144 // TopologyObjectType
	cpp_decl "  ${name}${value},${comment}"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 196272 "EndingEvent"
      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 "* notifies the end for the current sequence of topological change events "
      classrelation 178224 // <generalisation>
	relation 178224 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 178224 // <generalisation>
	  b parent class_ref 194992 // TopologyChange
      end

      operation 362800 "EndingEvent"
	cpp_inline public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} : core::topology::TopologyChange(core::topology::ENDING_EVENT)
		{};
"
	
	
	
	
      end
    end

    class 196528 "DefaultMeshTopologyLoader"
      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 178864 // <generalisation>
	relation 178864 ---|>
	  a public
	    cpp default "${type}"
	    classrelation_ref 178864 // <generalisation>
	  b parent class_ref 196656 // typedef21
      end

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

      operation 364976 "DefaultMeshTopologyLoader"
	cpp_inline public explicit_return_type ""
	nparams 1
	  param inout name "dest" type class_ref 132272 // BaseMeshTopology
	cpp_decl "    ${comment}${inline}${name}${(}${t0} * ${p0}${v0}${)}${volatile}${throw} : dest(dest) {};
"
	
	
	
	
      end

      operation 365104 "addPoint"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 3
	  param in name "px" explicit_type "double"
	  param in name "py" explicit_type "double"
	  param in name "pz" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract} {
        dest->addPoint(px,py,pz);
    };
"
	
	
	
	
      end

      operation 365232 "addLine"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 2
	  param in name "p1" explicit_type "int"
	  param in name "p2" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract} {
        dest->addEdge(p1,p2);
    };
"
	
	
	
	
      end

      operation 365360 "addTriangle"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 3
	  param in name "p1" explicit_type "int"
	  param in name "p2" explicit_type "int"
	  param in name "p3" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract} {
        dest->addTriangle(p1,p2,p3);
    };
"
	
	
	
	
      end

      operation 365488 "addQuad"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 4
	  param in name "p1" explicit_type "int"
	  param in name "p2" explicit_type "int"
	  param in name "p3" explicit_type "int"
	  param in name "p4" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract} {
        dest->addQuad(p1,p2,p3,p4);
    };
"
	
	
	
	
      end

      operation 365616 "addTetra"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 4
	  param in name "p1" explicit_type "int"
	  param in name "p2" explicit_type "int"
	  param in name "p3" explicit_type "int"
	  param in name "p4" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract} {
        dest->addTetra(p1,p2,p3,p4);
    };
"
	
	
	
	
      end

      operation 365744 "addCube"
	cpp_virtual cpp_inline public explicit_return_type "void"
	nparams 8
	  param in name "p1" explicit_type "int"
	  param in name "p2" explicit_type "int"
	  param in name "p3" explicit_type "int"
	  param in name "p4" explicit_type "int"
	  param in name "p5" explicit_type "int"
	  param in name "p6" explicit_type "int"
	  param in name "p7" explicit_type "int"
	  param in name "p8" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, ${t3} ${p3}${v3}, ${t4} ${p4}${v4}, ${t5} ${p5}${v5}, ${t6} ${p6}${v6}, ${t7} ${p7}${v7}${)}${const}${volatile}${throw}${abstract} {
        dest->addHexa(p1,p2,p3,p4,p5,p6,p7,p8);
    };
"
	
	
	
	
      end
    end

    class 196656 "typedef21"
      visibility package stereotype "typedef" explicit_base_type "helper::io::MeshTopologyLoader"
      cpp_decl "${comment}typedef ${type} ${name};
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
    end
  end

  deploymentview 128944 "topology"
    //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 140720 "BaseMeshTopology"
      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 132272 // BaseMeshTopology
      end
    end

    artifact 140848 "BaseTopology"
      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 194736 // TopologyAlgorithms
	class_ref 195248 // GeometryAlgorithms
	class_ref 195376 // TopologyModifier
	class_ref 195120 // TopologyContainer
      end
    end

    artifact 140976 "BaseTopologyObject"
      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 195504 // typedef20
	class_ref 194864 // BaseTopologyObject
      end
    end

    artifact 141104 "TopologicalMapping"
      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 195632 // TopologicalMapping
      end
    end

    artifact 141232 "Topology"
      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 196016 // TopologyChangeType
	class_ref 196144 // TopologyObjectType
	class_ref 194992 // TopologyChange
	class_ref 196272 // EndingEvent
	class_ref 194608 // TopologyEngine
	class_ref 152496 // Topology
      end
    end

    artifact 141360 "typedef21"
      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 196656 // typedef21
      end
    end

    artifact 141488 "DefaultMeshTopologyLoader"
      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 196528 // DefaultMeshTopologyLoader
      end
    end
  end
end
