/**
 */
package org.gravity.hulk.antipatterngraph.antipattern;

import org.gravity.hulk.antipatterngraph.HAntiPattern;

import org.gravity.hulk.antipatterngraph.codesmells.HIntenseFieldUsageCodeSmell;

import org.gravity.hulk.antipatterngraph.metrics.HAverageOverloadingInClassMetric;
import org.gravity.hulk.antipatterngraph.metrics.HAverageParametersMetric;
import org.gravity.hulk.antipatterngraph.metrics.HDepthOfInheritanceMetric;
import org.gravity.hulk.antipatterngraph.metrics.HNumberOfChildMetric;
// <-- [user defined imports]
// [user defined imports] -->

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>HSpaghetti Code Anti Pattern</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHDepthOfInheritanceMetric <em>HDepth Of Inheritance Metric</em>}</li>
 *   <li>{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHIntenseFieldUsageCodeSmell <em>HIntense Field Usage Code Smell</em>}</li>
 *   <li>{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHAverageOverloadingInClassMetric <em>HAverage Overloading In Class Metric</em>}</li>
 *   <li>{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHAverageParametersMetric <em>HAverage Parameters Metric</em>}</li>
 *   <li>{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHNumberOfChild <em>HNumber Of Child</em>}</li>
 * </ul>
 *
 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern()
 * @model
 * @generated
 */
public interface HSpaghettiCodeAntiPattern extends HAntiPattern {
	/**
	 * Returns the value of the '<em><b>HDepth Of Inheritance Metric</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>HDepth Of Inheritance Metric</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>HDepth Of Inheritance Metric</em>' reference.
	 * @see #setHDepthOfInheritanceMetric(HDepthOfInheritanceMetric)
	 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern_HDepthOfInheritanceMetric()
	 * @model
	 * @generated
	 */
	HDepthOfInheritanceMetric getHDepthOfInheritanceMetric();

	/**
	 * Sets the value of the '{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHDepthOfInheritanceMetric <em>HDepth Of Inheritance Metric</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>HDepth Of Inheritance Metric</em>' reference.
	 * @see #getHDepthOfInheritanceMetric()
	 * @generated
	 */
	void setHDepthOfInheritanceMetric(HDepthOfInheritanceMetric value);

	/**
	 * Returns the value of the '<em><b>HIntense Field Usage Code Smell</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>HIntense Field Usage Code Smell</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>HIntense Field Usage Code Smell</em>' reference.
	 * @see #setHIntenseFieldUsageCodeSmell(HIntenseFieldUsageCodeSmell)
	 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern_HIntenseFieldUsageCodeSmell()
	 * @model
	 * @generated
	 */
	HIntenseFieldUsageCodeSmell getHIntenseFieldUsageCodeSmell();

	/**
	 * Sets the value of the '{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHIntenseFieldUsageCodeSmell <em>HIntense Field Usage Code Smell</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>HIntense Field Usage Code Smell</em>' reference.
	 * @see #getHIntenseFieldUsageCodeSmell()
	 * @generated
	 */
	void setHIntenseFieldUsageCodeSmell(HIntenseFieldUsageCodeSmell value);

	/**
	 * Returns the value of the '<em><b>HAverage Overloading In Class Metric</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>HAverage Overloading In Class Metric</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>HAverage Overloading In Class Metric</em>' reference.
	 * @see #setHAverageOverloadingInClassMetric(HAverageOverloadingInClassMetric)
	 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern_HAverageOverloadingInClassMetric()
	 * @model
	 * @generated
	 */
	HAverageOverloadingInClassMetric getHAverageOverloadingInClassMetric();

	/**
	 * Sets the value of the '{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHAverageOverloadingInClassMetric <em>HAverage Overloading In Class Metric</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>HAverage Overloading In Class Metric</em>' reference.
	 * @see #getHAverageOverloadingInClassMetric()
	 * @generated
	 */
	void setHAverageOverloadingInClassMetric(HAverageOverloadingInClassMetric value);

	/**
	 * Returns the value of the '<em><b>HAverage Parameters Metric</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>HAverage Parameters Metric</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>HAverage Parameters Metric</em>' reference.
	 * @see #setHAverageParametersMetric(HAverageParametersMetric)
	 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern_HAverageParametersMetric()
	 * @model
	 * @generated
	 */
	HAverageParametersMetric getHAverageParametersMetric();

	/**
	 * Sets the value of the '{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHAverageParametersMetric <em>HAverage Parameters Metric</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>HAverage Parameters Metric</em>' reference.
	 * @see #getHAverageParametersMetric()
	 * @generated
	 */
	void setHAverageParametersMetric(HAverageParametersMetric value);

	/**
	 * Returns the value of the '<em><b>HNumber Of Child</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>HNumber Of Child</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>HNumber Of Child</em>' reference.
	 * @see #setHNumberOfChild(HNumberOfChildMetric)
	 * @see org.gravity.hulk.antipatterngraph.antipattern.AntipatternPackage#getHSpaghettiCodeAntiPattern_HNumberOfChild()
	 * @model
	 * @generated
	 */
	HNumberOfChildMetric getHNumberOfChild();

	/**
	 * Sets the value of the '{@link org.gravity.hulk.antipatterngraph.antipattern.HSpaghettiCodeAntiPattern#getHNumberOfChild <em>HNumber Of Child</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>HNumber Of Child</em>' reference.
	 * @see #getHNumberOfChild()
	 * @generated
	 */
	void setHNumberOfChild(HNumberOfChildMetric value);
	// <-- [user code injected with eMoflon]

	// [user code injected with eMoflon] -->
} // HSpaghettiCodeAntiPattern
