| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'instr-to-kodkod/src/VHDLPredicate.java')
| -rw-r--r-- | instr-to-kodkod/src/VHDLPredicate.java | 22 | 
1 files changed, 21 insertions, 1 deletions
| diff --git a/instr-to-kodkod/src/VHDLPredicate.java b/instr-to-kodkod/src/VHDLPredicate.java index a94e5ec..210dd7e 100644 --- a/instr-to-kodkod/src/VHDLPredicate.java +++ b/instr-to-kodkod/src/VHDLPredicate.java @@ -14,6 +14,7 @@ public class VHDLPredicate     private final String name;     private final int arity;     private final Relation as_relation; +   private boolean is_used;     public VHDLPredicate (final String name, final VHDLType[] signature)     { @@ -22,6 +23,7 @@ public class VHDLPredicate        signatures = new ArrayList<VHDLType[]>();        members = new ArrayList<String[]>(); +      is_used = false;        as_relation = Relation.nary(name, arity); @@ -33,6 +35,11 @@ public class VHDLPredicate        members.add(tuple);     } +   public boolean is_used () +   { +      return is_used; +   } +     public int get_arity ()     {        return arity; @@ -40,13 +47,26 @@ public class VHDLPredicate     public Relation get_as_relation ()     { +      if (!is_used) +      { +         for (final VHDLType[] sig: signatures) +         { +            for (final VHDLType t: sig) +            { +               t.flag_as_used(); +            } +         } + +         is_used = true; +      } +        return as_relation;     }     /* pre: i < get_arity() */     public boolean accepts_as_nth_param (final int i, final String id)     { -      for (VHDLType[] sig: signatures) +      for (final VHDLType[] sig: signatures)        {           if (sig[i].get_member_as_relation(id) != null)           { | 


