コード例 #1
0
 private boolean nameMatches(
     String n, ElementDefn e, boolean throughChoice, Definitions definitions) {
   if (e.getName().equals(n)) return true;
   else if (!throughChoice || !e.getName().endsWith("[x]")) return false;
   else {
     String b = e.getName().substring(0, e.getName().indexOf("["));
     if (!n.startsWith(b)) return false;
     String tn = n.substring(b.length());
     if (e.typeCode().equals("*") && definitions != null) {
       for (TypeRef t : definitions.getKnownTypes()) {
         if (!definitions.getInfrastructure().containsKey(t.getName())
             && !definitions.getConstraints().containsKey(t.getName())) {
           if (t.getName().equalsIgnoreCase(tn)) return true;
         }
       }
     } else for (TypeRef t : e.getTypes()) if (t.getName().equalsIgnoreCase(tn)) return true;
     return false;
   }
 }
コード例 #2
0
 private boolean nameMatches(String n, ElementDefn e, boolean throughChoice) {
   if (e.getName().equals(n)) return true;
   else if (!throughChoice || !e.getName().endsWith("[x]")) return false;
   else {
     String b = e.getName().substring(0, e.getName().indexOf("["));
     if (!n.startsWith(b)) return false;
     String tn = n.substring(b.length());
     for (TypeRef t : e.getTypes()) if (t.getName().equalsIgnoreCase(tn)) return true;
     return false;
   }
 }
コード例 #3
0
 public String typeCode() {
   StringBuilder tn = new StringBuilder();
   boolean first = true;
   for (TypeRef t : types) {
     if (!first) tn.append("|");
     first = false;
     tn.append(t.getName());
     if (t.hasParams()) {
       tn.append("(");
       boolean f = true;
       for (String s : t.getParams()) {
         if (!f) tn.append("|");
         f = false;
         tn.append(s);
       }
       tn.append(")");
     }
   }
   return tn.toString();
 }
コード例 #4
0
 public boolean hasType(String name) {
   for (TypeRef t : types) {
     if (t.getName().equals(name)) return true;
   }
   return false;
 }