Exemplo n.º 1
0
 /** evaluate the link function */
 public static Data link(VMethod m, Object[] o) throws VisADException {
   Data ans = null;
   if (o != null) {
     for (int i = 0; i < o.length; i++) {
       // convert VRealTypes to RealTypes
       if (o[i] instanceof VRealType) {
         o[i] = ((VRealType) o[i]).getRealType();
       }
     }
   }
   try {
     ans = (Data) FormulaUtil.invokeMethod(m.getMethod(), o);
   } catch (ClassCastException exc) {
     if (FormulaVar.DEBUG) exc.printStackTrace();
     throw new VisADException("Link error: invalid linked method");
   } catch (IllegalAccessException exc) {
     if (FormulaVar.DEBUG) exc.printStackTrace();
     throw new VisADException("Link error: cannot access linked method");
   } catch (IllegalArgumentException exc) {
     if (FormulaVar.DEBUG) exc.printStackTrace();
     throw new VisADException("Link error: bad method argument");
   } catch (InvocationTargetException exc) {
     if (FormulaVar.DEBUG) exc.getTargetException().printStackTrace();
     throw new VisADException("Link error: linked method threw an exception");
   }
   if (ans == null) {
     throw new VisADException("Link error: linked method returned null data");
   }
   return ans;
 }
Exemplo n.º 2
0
  public static void renaming(VClassLoader loader) {
    String name = loader.getName();
    loader.setName(name.replace('-', '_').replace('.', '$'));

    for (VClass v : loader.classes) {
      if (v.alias == null) v.alias = v.fullName;
      v.fullName =
          v.fullName.replace('.', '_')
              + "_"
              + Long.toString(++classNameIterator, Character.MAX_RADIX);

      for (VField f : v.fields) {
        if (f.alias == null) f.alias = f.name;
        f.name = "f" + Integer.toString(++fieldIterator, Character.MAX_RADIX);
      }

      for (VMethod m : v.methods) {
        if (m.alias == null) m.alias = m.getRunTimeName();
        int argIterator = 0;
        for (VArgument a : m.arguments) {
          a.name = a.name + "_" + Integer.toString(++argIterator, Character.MAX_RADIX);
        }
        if (m.getReplace() == null)
          m.setRuntimeName(
              m.getRunTimeName() + "_" + Long.toString(++methodNameIterator, Character.MAX_RADIX));
      }

      int constructIterator = 0;

      for (VConstructor m : v.constructors) {
        m.setRuntimeName("c" + Integer.toString(++constructIterator, Character.MAX_RADIX));
        int argIterator = 0;
        for (VArgument a : m.arguments) {
          a.name = "a" + Integer.toString(++argIterator, Character.MAX_RADIX);
        }
      }
    }

    for (VClassLoader cl : loader.parents) renaming(cl);
  }