/**
 */
package ua.ansymo.hintco;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Input Port Instance</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link ua.ansymo.hintco.InputPortInstance#getInternalValueTo <em>Internal Value To</em>}</li>
 *   <li>{@link ua.ansymo.hintco.InputPortInstance#getValueFrom <em>Value From</em>}</li>
 * </ul>
 *
 * @see ua.ansymo.hintco.HintcoPackage#getInputPortInstance()
 * @model
 * @generated
 */
public interface InputPortInstance extends PortInstance {
	/**
	 * Returns the value of the '<em><b>Internal Value To</b></em>' reference list.
	 * The list contents are of type {@link ua.ansymo.hintco.OutputPortInstance}.
	 * It is bidirectional and its opposite is '{@link ua.ansymo.hintco.OutputPortInstance#getInternalValueFrom <em>Internal Value From</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Internal Value To</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Internal Value To</em>' reference list.
	 * @see ua.ansymo.hintco.HintcoPackage#getInputPortInstance_InternalValueTo()
	 * @see ua.ansymo.hintco.OutputPortInstance#getInternalValueFrom
	 * @model opposite="internalValueFrom"
	 * @generated
	 */
	EList<OutputPortInstance> getInternalValueTo();

	/**
	 * Returns the value of the '<em><b>Value From</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link ua.ansymo.hintco.OutputPortInstance#getValueTo <em>Value To</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Value From</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Value From</em>' reference.
	 * @see #setValueFrom(OutputPortInstance)
	 * @see ua.ansymo.hintco.HintcoPackage#getInputPortInstance_ValueFrom()
	 * @see ua.ansymo.hintco.OutputPortInstance#getValueTo
	 * @model opposite="valueTo"
	 * @generated
	 */
	OutputPortInstance getValueFrom();

	/**
	 * Sets the value of the '{@link ua.ansymo.hintco.InputPortInstance#getValueFrom <em>Value From</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Value From</em>' reference.
	 * @see #getValueFrom()
	 * @generated
	 */
	void setValueFrom(OutputPortInstance value);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model kind="operation" unique="false"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _xifexpression = null;\n&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _valueFrom = this.getValueFrom();\nif ((_valueFrom instanceof &lt;%ua.ansymo.hintco.HierarchicalUnitPort%&gt;))\n{\n\t&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _valueFrom_1 = this.getValueFrom();\n\t_xifexpression = ((&lt;%ua.ansymo.hintco.HierarchicalUnitPort%&gt;) _valueFrom_1).getRealValueFrom();\n}\nelse\n{\n\t_xifexpression = this.getValueFrom();\n}\nreturn _xifexpression;'"
	 * @generated
	 */
	OutputPortInstance getRealValueFrom();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model unique="false" pUnique="false"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _valueFrom = this.getValueFrom();\nboolean _tripleEquals = (_valueFrom == p);\nif (_tripleEquals)\n{\n\treturn true;\n}\nelse\n{\n\t&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _valueFrom_1 = this.getValueFrom();\n\tif ((_valueFrom_1 instanceof &lt;%ua.ansymo.hintco.InputPortInstance%&gt;))\n\t{\n\t\t&lt;%ua.ansymo.hintco.OutputPortInstance%&gt; _valueFrom_2 = this.getValueFrom();\n\t\treturn ((&lt;%ua.ansymo.hintco.InputPortInstance%&gt;) _valueFrom_2).getsValueFrom(p);\n\t}\n\telse\n\t{\n\t\treturn false;\n\t}\n}'"
	 * @generated
	 */
	boolean getsValueFrom(PortInstance p);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model kind="operation" unique="false"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='return true;'"
	 * @generated
	 */
	boolean isInput();

} // InputPortInstance
