示例#1
0
 /**
  * @attribute syn
  * @aspect GenericsSubtype
  * @declaredat
  *     /Users/eric/Documents/workspaces/clara-soot/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:212
  */
 @SuppressWarnings({"unchecked", "cast"})
 public boolean sameStructure(TypeDecl t) {
   Object _parameters = t;
   if (sameStructure_TypeDecl_values == null)
     sameStructure_TypeDecl_values = new java.util.HashMap(4);
   ASTNode$State.CircularValue _value;
   if (sameStructure_TypeDecl_values.containsKey(_parameters)) {
     Object _o = sameStructure_TypeDecl_values.get(_parameters);
     if (!(_o instanceof ASTNode$State.CircularValue)) {
       return ((Boolean) _o).booleanValue();
     } else _value = (ASTNode$State.CircularValue) _o;
   } else {
     _value = new ASTNode$State.CircularValue();
     sameStructure_TypeDecl_values.put(_parameters, _value);
     _value.value = Boolean.valueOf(true);
   }
   ASTNode$State state = state();
   if (!state.IN_CIRCLE) {
     state.IN_CIRCLE = true;
     int num = state.boundariesCrossed;
     boolean isFinal = this.is$Final();
     boolean new_sameStructure_TypeDecl_value;
     do {
       _value.visited = new Integer(state.CIRCLE_INDEX);
       state.CHANGE = false;
       new_sameStructure_TypeDecl_value = sameStructure_compute(t);
       if (new_sameStructure_TypeDecl_value != ((Boolean) _value.value).booleanValue()) {
         state.CHANGE = true;
         _value.value = Boolean.valueOf(new_sameStructure_TypeDecl_value);
       }
       state.CIRCLE_INDEX++;
     } while (state.CHANGE);
     if (isFinal && num == state().boundariesCrossed) {
       sameStructure_TypeDecl_values.put(_parameters, new_sameStructure_TypeDecl_value);
     } else {
       sameStructure_TypeDecl_values.remove(_parameters);
       state.RESET_CYCLE = true;
       sameStructure_compute(t);
       state.RESET_CYCLE = false;
     }
     state.IN_CIRCLE = false;
     return new_sameStructure_TypeDecl_value;
   }
   if (!new Integer(state.CIRCLE_INDEX).equals(_value.visited)) {
     _value.visited = new Integer(state.CIRCLE_INDEX);
     boolean new_sameStructure_TypeDecl_value = sameStructure_compute(t);
     if (state.RESET_CYCLE) {
       sameStructure_TypeDecl_values.remove(_parameters);
     } else if (new_sameStructure_TypeDecl_value != ((Boolean) _value.value).booleanValue()) {
       state.CHANGE = true;
       _value.value = new_sameStructure_TypeDecl_value;
     }
     return new_sameStructure_TypeDecl_value;
   }
   return ((Boolean) _value.value).booleanValue();
 }
示例#2
0
 private void stor(int addr, int value) {
   if (addr == CO) {
     System.out.print((char) value);
     return;
   }
   if (addr == AU) {
     abuffer[apointer] = (byte) value;
     if (apointer < abuffer.length - 1) {
       apointer++;
     }
   }
   if (addr == XO) {
     if (xo.containsKey(m[XA])) {
       try {
         xo.get(m[XA]).write(value);
       } catch (IOException e) {
         e.printStackTrace();
       }
     }
   }
   if (addr == XS) {
     try {
       if (value == X_CLOSE) {
         if (xi.containsKey(m[XA])) {
           xi.get(m[XA]).close();
         }
         if (xo.containsKey(m[XA])) {
           xo.get(m[XA]).close();
         }
         xi.remove(m[XA]);
         xo.remove(m[XA]);
       }
       if (value == X_OPEN_READ) {
         xi.put(xc, new PushbackInputStream(new FileInputStream(extractString(m[XA]))));
         m[XA] = xc++;
       }
       if (value == X_OPEN_WRITE) {
         xo.put(xc, new FileOutputStream(extractString(m[XA])));
         m[XA] = xc++;
       }
     } catch (IOException e) {
       m[XA] = -1;
     }
   }
   m[addr] = value;
 }