Overview Schemas Index

VARIATIONAL_REPRESENTATION_SCHEMA (jsdai.SVariational_representation_schema)


FUNCTION invalidate_vrep_item
          (item : variational_representation_item) : BOOLEAN;

LOCAL
    reps    : SET[1:?] OF  representation := using_representations(item);
    svri    : SET[1:?] OF variational_representation_item;
    iar     : instance_attribute_reference;
    i       : INTEGER;
    n       : INTEGER := HIINDEX(reps);
  END_LOCAL;

  IF  ('PARAMETERIZATION_SCHEMA.BOUND_VARIATIONAL_PARAMETER' IN  TYPEOF(item))
  THEN
    IF  'PARAMETERIZATION_SCHEMA.INSTANCE_ATTRIBUTE_REFERENCE' 
      IN  TYPEOF(item\generic_variable.interpretation\environment.semantics)
    THEN
      BEGIN
        iar := item\generic_variable.interpretation\environment.semantics;
        IF  (reps <> using_representations(iar\instance_attribute_reference.owning_instance))
        THEN
          RETURN(TRUE);
        END_IF;
      END;
    ELSE RETURN(TRUE); -- parameter NOT attached TO  an instance attribute
    END_IF;
  END_IF;

  IF  ('PARAMETERIZATION_SCHEMA.UNBOUND_VARIATIONAL_PARAMETER' IN  TYPEOF(item))
  THEN
    BEGIN  
      REPEAT  i := 1 TO  n;
        svri := QUERY(q <* reps[i]\representation.items | 
          'EXPLICIT_CONSTRAINT_SCHEMA.FREE_FORM_CONSTRAINT' IN  TYPEOF(q));
        IF  SIZEOF(QUERY(r <* svri | 
          item IN  (r\free_form_constraint.reference_elements + r\free_form_constraint.constrained_elements))) = 0
        THEN 
          RETURN(TRUE);
        END_IF;
      END_REPEAT;
    END;
  END_IF;

  IF  ('PARAMETERIZATION_SCHEMA.FIXED_INSTANCE_ATTRIBUTE_SET' 
    IN  TYPEOF(item))
  THEN
    REPEAT  i := 1 TO  SIZEOF(item\fixed_instance_attribute_set.fixed_attributes);
--next line is previous
--      IF  (reps <> using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]))
--is this intent?
      IF  (reps <> using_representations(item\fixed_instance_attribute_set.fixed_attributes[i]\instance_attribute_reference.owning_instance))
      THEN
        RETURN(TRUE);
      END_IF;
    END_REPEAT;
  END_IF;

  IF  ('EXPLICIT_CONSTRAINT_SCHEMA.EXPLICIT_CONSTRAINT' IN  TYPEOF(item))
  THEN
    IF  SIZEOF(QUERY(q <* 
      (item\explicit_constraint.reference_elements + item\explicit_constraint.constrained_elements) |
      reps <> using_representations(q))) > 0
    THEN
      RETURN(TRUE);
    END_IF;
  END_IF;

  IF  ('VARIATIONAL_REPRESENTATION_SCHEMA.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN  TYPEOF(item))
  THEN
    BEGIN 
      REPEAT i := 1 TO n;
        svri := QUERY(q <* reps[i]\representation.items | 
          'EXPLICIT_GEOMETRIC_CONSTRAINT_SCHEMA.EXPLICIT_GEOMETRIC_CONSTRAINT' IN  TYPEOF(q));
        IF SIZEOF(QUERY(r <* svri | 
          item IN r\explicit_geometric_constraint.reference_elements)) = 0
        THEN
          RETURN(TRUE);
        END_IF;
      END_REPEAT;
    END;
  END_IF;

  RETURN(FALSE);

END_FUNCTION; -- invalidate_vrep_item

public class FInvalidate_vrep_item
          public static Value run(SdaiContext _context, Value item)