Search in sources :

Example 6 with PrototypeBinding

use of org.osate.aadl2.PrototypeBinding in project osate2 by osate.

the class SubprogramPrototypeHolderImpl method setPrototypeBinding.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public void setPrototypeBinding(PrototypeBinding newPrototypeBinding) {
    PrototypeBinding oldPrototypeBinding = prototypeBinding;
    prototypeBinding = newPrototypeBinding;
    if (eNotificationRequired())
        eNotify(new ENotificationImpl(this, Notification.SET, AadlBaPackage.SUBPROGRAM_PROTOTYPE_HOLDER__PROTOTYPE_BINDING, oldPrototypeBinding, prototypeBinding));
}
Also used : ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl) PrototypeBinding(org.osate.aadl2.PrototypeBinding)

Example 7 with PrototypeBinding

use of org.osate.aadl2.PrototypeBinding in project osate2 by osate.

the class GroupPrototypeHolderImpl method setPrototypeBinding.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public void setPrototypeBinding(PrototypeBinding newPrototypeBinding) {
    PrototypeBinding oldPrototypeBinding = prototypeBinding;
    prototypeBinding = newPrototypeBinding;
    if (eNotificationRequired())
        eNotify(new ENotificationImpl(this, Notification.SET, AadlBaPackage.GROUP_PROTOTYPE_HOLDER__PROTOTYPE_BINDING, oldPrototypeBinding, prototypeBinding));
}
Also used : ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl) PrototypeBinding(org.osate.aadl2.PrototypeBinding)

Example 8 with PrototypeBinding

use of org.osate.aadl2.PrototypeBinding in project osate2 by osate.

the class AadlBaUtils method getDataClassifier.

/**
 * Returns the DataClassifier object associated to the given List of PrototypeBinging objects.
 *
 * @param prototypeBindings the list of PrototypeBinging object
 * @param dp the DataPrototype searched for in prototypeBindings
 * @return the DataClassifier object (null if not found)
 */
private static DataClassifier getDataClassifier(List<PrototypeBinding> prototypeBindings, DataPrototype dp) {
    for (PrototypeBinding pb : prototypeBindings) {
        if (pb instanceof ComponentPrototypeBinding && pb.getFormal().equals(dp)) {
            ComponentPrototypeBinding cpb = (ComponentPrototypeBinding) pb;
            ComponentPrototypeActual cpa = cpb.getActuals().get(cpb.getActuals().size() - 1);
            if (cpa.getSubcomponentType() instanceof DataClassifier) {
                return (DataClassifier) cpa.getSubcomponentType();
            }
        }
    }
    return null;
}
Also used : ComponentPrototypeActual(org.osate.aadl2.ComponentPrototypeActual) DataClassifier(org.osate.aadl2.DataClassifier) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) PrototypeBinding(org.osate.aadl2.PrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding)

Example 9 with PrototypeBinding

use of org.osate.aadl2.PrototypeBinding in project osate2 by osate.

the class AadlBaUtils method prototypeResolver.

/**
 * Resolves the given prototype by returning the binded classifier
 * or if there is no binded classifier, the constraining classifier.
 * It returns {@code null} if the given prototype is not defined.
 *
 * @param prototype the given prototype
 * @param parentContainer the element's parent component
 * @return the binded classifier at first then the constraining classifier or
 * {@code null}
 */
public static Classifier prototypeResolver(Prototype prototype, Classifier parentContainer) {
    Classifier result = null;
    // First find a prototype bind as prototype may be binded several times.
    PrototypeBinding pb = Aadl2Visitors.findPrototypeBindingInComponent(parentContainer, prototype.getName());
    if (pb != null) {
        result = prototypeBindingResolver(pb);
    } else {
        if (prototype instanceof ComponentPrototype) {
            result = ((ComponentPrototype) prototype).getConstrainingClassifier();
        } else if (prototype instanceof FeaturePrototype) {
            result = ((FeaturePrototype) prototype).getConstrainingClassifier();
        } else if (prototype instanceof FeatureGroupPrototype) {
            result = ((FeatureGroupPrototype) prototype).getConstrainingFeatureGroupType();
        } else {
            // Reports error.
            String errorMsg = "prototypeResolver : " + prototype.getClass().getSimpleName() + " is not supported yet.";
            System.err.println(errorMsg);
            throw new UnsupportedOperationException(errorMsg);
        }
    }
    return result;
}
Also used : FeatureGroupPrototype(org.osate.aadl2.FeatureGroupPrototype) FeaturePrototype(org.osate.aadl2.FeaturePrototype) SubprogramClassifier(org.osate.aadl2.SubprogramClassifier) ComponentClassifier(org.osate.aadl2.ComponentClassifier) Classifier(org.osate.aadl2.Classifier) ProcessClassifier(org.osate.aadl2.ProcessClassifier) DataClassifier(org.osate.aadl2.DataClassifier) ProcessorClassifier(org.osate.aadl2.ProcessorClassifier) AadlString(org.osate.aadl2.AadlString) PrototypeBinding(org.osate.aadl2.PrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) ComponentPrototype(org.osate.aadl2.ComponentPrototype)

Example 10 with PrototypeBinding

use of org.osate.aadl2.PrototypeBinding in project osate2 by osate.

the class AadlBaUtils method getClassifier.

/**
 * Returns the given Element object's classifier.
 * If the Element object is a prototype, it will try to resolve it as
 * follow: returns the data prototype binded classifier at first withing the
 * element's parent container otherwise the constraining classifier.
 * It returns {@code null} if the prototype is not defined.
 * <BR><BR>
 * This method support instances of:<BR>
 * <BR>_Feature (port, data access, subprogram access, parameter, etc.)
 * <BR>_Subcomponent (data subcomponent, subprogram subcomponent, etc.)
 * <BR>_BehaviorVariable
 * <BR>_IterativeVariable (for/forall's iterative variable)
 * <BR>_Prototype (all excepted FeatureGroupPrototype)
 * <BR>_PrototypeBinding (all excepted FeatureGroupPrototypeBinding)
 * <BR>_ClassifierValue (struct or union data subcomponent)
 * <BR><BR>
 * If the given Element object is not one of those types, an
 * UnsupportedOperationException is thrown.
 *
 * @param el the given Element object
 * @param parentContainer the element's parent component.
 * @return the given element's classifier or {@code null} if the prototype is
 * not defined
 * @exception UnsupportedOperationException for unsupported element
 * object types.
 */
public static Classifier getClassifier(Element el, Classifier parentContainer) {
    Classifier result = null;
    if (el instanceof Feature) {
        Feature f = (Feature) el;
        if (el instanceof FeatureGroup) {
            org.osate.aadl2.FeatureType ft = ((FeatureGroup) el).getFeatureType();
            if (ft != null) {
                if (ft instanceof FeatureGroupType) {
                    result = (FeatureGroupType) ft;
                } else // FeatureGroupPrototype case
                {
                    result = getClassifier((FeatureGroupPrototype) ft, parentContainer);
                }
            }
        } else {
            // Feature case.
            result = f.getClassifier();
            // Feature without classifier returns null.
            if (result == null && f.getPrototype() != null) {
                result = prototypeResolver(f.getPrototype(), parentContainer);
            }
        }
    } else if (el instanceof Subcomponent) {
        Subcomponent sub = (Subcomponent) el;
        if (el instanceof SubprogramGroupSubcomponent) {
            result = ((SubprogramGroupSubcomponent) el).getClassifier();
        } else {
            // Subcomponent case.
            result = sub.getClassifier();
            // Subcomponent without classifier returns null.
            if (result == null && sub.getPrototype() != null) {
                result = prototypeResolver(sub.getPrototype(), parentContainer);
            }
        }
    } else if (el instanceof BehaviorVariable) {
        // Local variable case (BehaviorVariable).
        BehaviorVariable bv = (BehaviorVariable) el;
        result = bv.getDataClassifier();
    } else if (el instanceof IterativeVariable) {
        // Iterative variable case.
        result = ((IterativeVariable) el).getDataClassifier();
    } else if (el instanceof Prototype) {
        result = prototypeResolver((Prototype) el, parentContainer);
    } else if (el instanceof PrototypeBinding) {
        // Prototype binding case.
        result = prototypeBindingResolver((PrototypeBinding) el);
    } else if (el instanceof ClassifierValue) {
        // struct or union member case (ClassifierValue).
        result = ((ClassifierValue) el).getClassifier();
    } else if (el instanceof StructUnionElement) {
        return ((StructUnionElement) el).getDataClassifier();
    } else {
        // Reports error.
        String errorMsg = "getClassifier : " + el.getClass().getSimpleName() + " is not supported yet.";
        System.err.println(errorMsg);
        throw new UnsupportedOperationException(errorMsg);
    }
    return result;
}
Also used : IterativeVariable(org.osate.ba.aadlba.IterativeVariable) FeatureGroup(org.osate.aadl2.FeatureGroup) Prototype(org.osate.aadl2.Prototype) DataPrototype(org.osate.aadl2.DataPrototype) FeatureGroupPrototype(org.osate.aadl2.FeatureGroupPrototype) FeaturePrototype(org.osate.aadl2.FeaturePrototype) ComponentPrototype(org.osate.aadl2.ComponentPrototype) ClassifierValue(org.osate.aadl2.ClassifierValue) BehaviorVariable(org.osate.ba.aadlba.BehaviorVariable) FeatureGroupType(org.osate.aadl2.FeatureGroupType) SubprogramGroupSubcomponent(org.osate.aadl2.SubprogramGroupSubcomponent) SubprogramClassifier(org.osate.aadl2.SubprogramClassifier) ComponentClassifier(org.osate.aadl2.ComponentClassifier) Classifier(org.osate.aadl2.Classifier) ProcessClassifier(org.osate.aadl2.ProcessClassifier) DataClassifier(org.osate.aadl2.DataClassifier) ProcessorClassifier(org.osate.aadl2.ProcessorClassifier) AadlString(org.osate.aadl2.AadlString) StructUnionElement(org.osate.ba.aadlba.StructUnionElement) Feature(org.osate.aadl2.Feature) AbstractFeature(org.osate.aadl2.AbstractFeature) DirectedFeature(org.osate.aadl2.DirectedFeature) FeatureGroupPrototype(org.osate.aadl2.FeatureGroupPrototype) Subcomponent(org.osate.aadl2.Subcomponent) SubprogramSubcomponent(org.osate.aadl2.SubprogramSubcomponent) SubprogramGroupSubcomponent(org.osate.aadl2.SubprogramGroupSubcomponent) SystemSubcomponent(org.osate.aadl2.SystemSubcomponent) DataSubcomponent(org.osate.aadl2.DataSubcomponent) PrototypeBinding(org.osate.aadl2.PrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding)

Aggregations

PrototypeBinding (org.osate.aadl2.PrototypeBinding)26 ComponentPrototypeBinding (org.osate.aadl2.ComponentPrototypeBinding)15 FeatureGroupPrototypeBinding (org.osate.aadl2.FeatureGroupPrototypeBinding)13 FeaturePrototypeBinding (org.osate.aadl2.FeaturePrototypeBinding)13 ComponentClassifier (org.osate.aadl2.ComponentClassifier)8 Classifier (org.osate.aadl2.Classifier)7 DataClassifier (org.osate.aadl2.DataClassifier)7 ComponentPrototype (org.osate.aadl2.ComponentPrototype)6 ComponentPrototypeActual (org.osate.aadl2.ComponentPrototypeActual)6 FeatureGroupPrototype (org.osate.aadl2.FeatureGroupPrototype)6 Prototype (org.osate.aadl2.Prototype)6 Subcomponent (org.osate.aadl2.Subcomponent)6 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)5 ProcessorClassifier (org.osate.aadl2.ProcessorClassifier)5 AadlString (org.osate.aadl2.AadlString)4 AbstractFeature (org.osate.aadl2.AbstractFeature)4 AccessSpecification (org.osate.aadl2.AccessSpecification)4 FeatureGroupPrototypeActual (org.osate.aadl2.FeatureGroupPrototypeActual)4 PortSpecification (org.osate.aadl2.PortSpecification)4 ArrayList (java.util.ArrayList)3