getModifiers() private method

private getModifiers ( ) : int
return int
 public static void registerStaticWidget(Class clazz)
 {
   if (Modifier.isAbstract(clazz.getModifiers()))
     return;
   DisplayElementRegistry.staticWidgets.add((object) clazz);
 }
    public static void registerWidget(Class clazz)
    {
      if (Modifier.isAbstract(clazz.getModifiers()))
        return;
      DataType[] dataTypeArray1 = (DataType[]) null;
      SecurityException securityException;
      try
      {
        try
        {
          try
          {
            try
            {
              try
              {
                Field declaredField = clazz.getDeclaredField("TYPES", DisplayElementRegistry.__\u003CGetCallerID\u003E());
                int modifiers = declaredField.getModifiers();
                if (!Modifier.isStatic(modifiers))
                {
                  string str = "TYPES must be static";
                  Throwable.__\u003CsuppressFillInStackTrace\u003E();
                  throw new RuntimeException(str);
                }
                else if (!Modifier.isFinal(modifiers))
                {
                  string str = "TYPES must be final";
                  Throwable.__\u003CsuppressFillInStackTrace\u003E();
                  throw new RuntimeException(str);
                }
                else
                {
                  dataTypeArray1 = (DataType[]) declaredField.get((object) null, DisplayElementRegistry.__\u003CGetCallerID\u003E());
                  DisplayElementRegistry.declaredTypes.put((object) clazz, (object) dataTypeArray1);
                  goto label_22;
                }
              }
              catch (IllegalArgumentException ex)
              {
              }
            }
            catch (IllegalAccessException ex)
            {
              goto label_15;
            }
          }
          catch (NoSuchFieldException ex)
          {
            goto label_16;
          }
        }
        catch (SecurityException ex)
        {
          int num = 1;
          securityException = (SecurityException) ByteCodeHelper.MapException<SecurityException>((Exception) ex, (ByteCodeHelper.MapFlags) num);
          goto label_17;
        }
      }
      catch (Exception ex)
      {
        int num = 2;
        if (ByteCodeHelper.MapException<ClassCastException>(ex, (ByteCodeHelper.MapFlags) num) == null)
          throw;
        else
          goto label_18;
      }
      if (!DisplayElementRegistry.\u0024assertionsDisabled)
      {
        Throwable.__\u003CsuppressFillInStackTrace\u003E();
        throw new AssertionError();
      }
      else
        goto label_22;
label_15:
      string str1 = "TYPES must be public";
      Throwable.__\u003CsuppressFillInStackTrace\u003E();
      throw new RuntimeException(str1);
label_16:
      string str2 = "Every ValueBasedDisplayElement must have a TYPES static field of type DataType[]";
      Throwable.__\u003CsuppressFillInStackTrace\u003E();
      throw new RuntimeException(str2);
label_17:
      Throwable.instancehelper_printStackTrace((Exception) securityException);
      return;
label_18:
      string str3 = "TYPES must be of type Type[]";
      Throwable.__\u003CsuppressFillInStackTrace\u003E();
      throw new RuntimeException(str3);
label_22:
      if (dataTypeArray1 == null)
      {
        string str4 = "TYPES must not be null";
        Throwable.__\u003CsuppressFillInStackTrace\u003E();
        throw new RuntimeException(str4);
      }
      else
      {
        DataType[] dataTypeArray2 = dataTypeArray1;
        int length = dataTypeArray2.Length;
        for (int index = 0; index < length; ++index)
        {
          DataType dataType = dataTypeArray2[index];
          object obj1 = (object) (Set) DisplayElementRegistry.map.get((object) dataType);
          if ((Set) obj1 == null)
            DisplayElementRegistry.map.put((object) dataType, (object) (LinkedHashSet) (obj1 = (object) new LinkedHashSet()));
          object obj2 = obj1;
          object obj3 = (object) clazz;
          Set set1;
          if (obj2 != null)
          {
            Set set2 = obj2 as Set;
            if (set2 == null)
              throw new IncompatibleClassChangeError();
            set1 = set2;
          }
          else
            set1 = (Set) null;
          object obj4 = obj3;
          set1.add(obj4);
        }
      }
    }
Exemplo n.º 3
0
        internal static GType RegisterClass(Class clazz, TypeRegistration registration)
        {
            if (knownClasses.ContainsKey(clazz))
            {
                GType known = knownClasses[clazz];
                if (registration != null)
                {
                    known.Registration = registration;
                }
                return known;
            }
            var res = new GType();
            if (clazz.isArray())
            {
                res.ArrayElement = RegisterClass(clazz.getComponentType(), null);
                res.IsArray = true;
                string array = "[]";
                Class comp = clazz.getComponentType();
                while (comp.isArray())
                {
                    array += "[]";
                    comp = comp.getComponentType();
                }
                res.LowerName = ((string) comp.getName()).ToLowerInvariant() + array;
            }
            else
            {
                res.LowerName = ((string) clazz.getName()).ToLowerInvariant();
            }

            res.Attributes = 0;
            var classModifiers = (ModifierFlags) clazz.getModifiers();
            if ((classModifiers & ModifierFlags.Abstract) != 0)
            {
                res.IsAbstract = true;
                res.Attributes |= TypeAttributes.Abstract;
            }
            if ((classModifiers & ModifierFlags.Final) != 0)
            {
                res.IsFinal = true;
            }
            if ((classModifiers & ModifierFlags.Public) != 0)
            {
                res.Attributes |= TypeAttributes.Public;
            }
            else if ((classModifiers & ModifierFlags.Private) != 0)
            {
                res.Attributes |= TypeAttributes.NotPublic;
            }
            //TODO internal ?
            if (knownNames.ContainsKey(res.LowerName))
            {
                res = knownNames[res.LowerName];
            }
            if (res.Registration == null && registration != null)
            {
                res.Registration = registration;
            }
            res.JVMType = clazz;
            res.JVMFullName = clazz.getName();
            if (res.IsArray)
            {
                string array = "[]";
                Class comp = clazz.getComponentType();
                while (comp.isArray())
                {
                    array += "[]";
                    comp = comp.getComponentType();
                }
                res.JVMFullName = comp.getName() + array;
            }
            else
            {
                res.JVMFullName = clazz.getName();
            }
            res.IsJVMType = true;
            res.IsPrimitive = clazz.isPrimitive();
            res.IsException = Throwable._class.isAssignableFrom(clazz);
            res.IsInterface = clazz.isInterface();
            res.IsCLRProxy = clrProxyClass != null && clrProxyClass.isAssignableFrom(clazz);
            if (!res.IsCLRProxy)
            {
                res.IsJVMRealType = true;
            }
            Class superclass = clazz.getSuperclass();
            var isBaseClassPublic = superclass == null || ((ModifierFlags)superclass.getModifiers() & ModifierFlags.Public) != 0;
            if (superclass != null && res.Base == null
                && clazz != Object._class
                && clazz != Throwable._class
                && res.JVMFullName != "system.Object"
                && res.JVMFullName != "system.Exception"
                && isBaseClassPublic)
            {
                res.Base = RegisterClass(superclass);
            }
            List<Class> interfaces = new List<Class>(clazz.getInterfaces());
            if (!isBaseClassPublic)
            {
                interfaces.AddRange(superclass.getInterfaces());
                res.Base = RegisterClass(superclass.getSuperclass());
            }
            foreach (Class ifc in interfaces)
            {
                GType gifc = RegisterClass(ifc);
                if (!res.Interfaces.Contains(gifc))
                {
                    if (res.IsInterface && res.Base == null)
                    {
                        res.Base = gifc;
                    }
                    res.Interfaces.Add(gifc);
                    res.AllInterfaces.Add(gifc);
                }
            }
            Register(res);
            return res;
        }