Exemplo n.º 1
0
        public static IEnumerable <AnnotatedItem> GetAnnotations(this  AndroidAnnotationsSupport api, ManagedApiQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            if (query.TypeName == null)
            {
                throw new ArgumentNullException("TypeName must not be null");
            }

            IList <AnnotatedItem> l;
            var qt = api.Data.TryGetValue(query.TypeName, out l) ? l : new AnnotatedItem [0];

            if (query.MemberName == null)             // type
            {
                return(qt);
            }

            var qmbr = qt.Where(a => a.ManagedInfo.MemberName == query.MemberName);

            if (query.Arguments == null)             // field, property (from managed signature), or method match without arguments.
            {
                return(qmbr.Concat(qt.Where(a => IsProperty(a, query.MemberName))));
            }

            var qmth = qmbr.Where(a => AreArgumentsEqual(a.ManagedInfo.Arguments, query.Arguments));

            // method (idx < 0) or parameter (idx >= 0)
            return(qmth.Where(a => a.ParameterIndex == query.ParameterIndex || a.ParameterIndex < 0 && query.ParameterIndex < 0));
        }
Exemplo n.º 2
0
 public static AnnotationData GetIntDef(this AndroidAnnotationsSupport api, ManagedApiQuery query)
 {
     return(api.GetAnnotations(query).Data().FirstOrDefault(is_intdef));
 }