<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="pseim" nsURI="http://www.irt-saintexupery.com/pseim/0.1" nsPrefix="pseim">
  <eAnnotations source="http://www.eclipse.org/OCL/Import">
    <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
    <details key="seim" value="seim.ecore#/"/>
  </eAnnotations>
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="seim.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="patterns" upperBound="-1"
        eType="#//Pattern" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Pattern" eSuperTypes="seim.ecore#//Model">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeHS" ordered="false"
        upperBound="-1" eType="#//PatternTypeHS"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeFailure" eType="#//PatternTypeFailureMode"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="alsoKnownAs" ordered="false"
        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="usedTactics" ordered="false"
        upperBound="-1" eType="#//SafetyTactic">
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="domain" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSingleChannel" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="interfaceElements" upperBound="-1"
        eType="ecore:EClass seim.ecore#//PropertyHolder"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cardinalityElements" upperBound="-1"
        eType="#//CardinalityElement" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PatternTypeHS">
    <eLiterals name="Hardware"/>
    <eLiterals name="Software" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PatternTypeFailureMode">
    <eLiterals name="Fail_safe"/>
    <eLiterals name="Fail_over" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SafetyTactic">
    <eLiterals name="Simplicity"/>
    <eLiterals name="Substitution" value="1"/>
    <eLiterals name="Sanity_Check" value="2"/>
    <eLiterals name="Condition_Monitoring" value="3"/>
    <eLiterals name="Comparison" value="4"/>
    <eLiterals name="Diverse_Redundancy" value="5"/>
    <eLiterals name="Replication_Redundancy" value="6"/>
    <eLiterals name="Repair" value="7"/>
    <eLiterals name="Degradation" value="8"/>
    <eLiterals name="Voting" value="9"/>
    <eLiterals name="Override" value="10"/>
    <eLiterals name="Barrier" value="11"/>
    <eLiterals name="Heartbeat" value="12"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CardinalityElement" eSuperTypes="seim.ecore#//PropertyHolder">
    <eStructuralFeatures xsi:type="ecore:EReference" name="calculatedVia" upperBound="-1"
        eType="ecore:EClass seim.ecore#//PropertyHolder"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="LinkType">
    <eLiterals name="TRANSPOSE" value="4"/>
    <eLiterals name="IDENTITY"/>
    <eLiterals name="SHIFTC" value="9"/>
    <eLiterals name="FIRST" value="1"/>
    <eLiterals name="ROTATE" value="3"/>
    <eLiterals name="JOINC" value="7"/>
    <eLiterals name="JOINP" value="8"/>
    <eLiterals name="FORKC" value="5"/>
    <eLiterals name="FORKP" value="6"/>
    <eLiterals name="SHIFTP" value="10"/>
    <eLiterals name="FLATTENC" value="11"/>
    <eLiterals name="LAST" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PatternComponent" eSuperTypes="#//MultiplicityElement #//IdentifiedElement seim.ecore#//Component">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="contentIsPatternContent"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="contentIsPatternContent" value="content->forAll(c | c.oclIsTypeOf(PatternComponent) or c.oclIsTypeOf(PatternPort) or c.oclIsTypeOf(PatternLink))"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mergeContent" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PatternPort" eSuperTypes="#//MultiplicityElement #//IdentifiedElement seim.ecore#//Port">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dir" lowerBound="1" eType="#//PatternPortDirection"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PatternLink" eSuperTypes="#//IdentifiedElement seim.ecore#//Link">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="srcIsPatternPort dstIsPatternPort"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="srcIsPatternPort" value="src.oclIsTypeOf(PatternLink)"/>
      <details key="dstIsPatternPort" value="dst.oclIsTypeOf(PatternLink)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="linkType" lowerBound="1"
        eType="#//LinkType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="#//CardinalityElement"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MultiplicityElement" abstract="true"
      interface="true">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="cardinalityAsElementOrMult"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="cardinalityAsElementOrMult" value="(not (cardinalityElement.oclIsUndefined())) implies multiplicityValue = 1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiplicityValue" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="1"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cardinalityElement" eType="#//CardinalityElement"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IdentifiedElement" abstract="true" interface="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="identifiedAs" eType="ecore:EClass seim.ecore#//PropertyHolder"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PatternPortDirection">
    <eLiterals name="UNSPECIFIED" value="3"/>
    <eLiterals name="IN"/>
    <eLiterals name="OUT" value="1"/>
    <eLiterals name="INOUT" value="2"/>
  </eClassifiers>
</ecore:EPackage>
