예제 #1
0
        static MethodMapEntry FromElement(XElement element, string parameterName)
        {
            var entry = new MethodMapEntry {
                JavaPackage   = element.Parent.Parent.XGetAttribute("name")?.Replace('.', '/'),
                JavaType      = element.Parent.XGetAttribute("name")?.Replace('.', '$'),
                JavaName      = element.XGetAttribute("name"),
                ParameterName = parameterName,
                ApiLevel      = NamingConverter.ParseApiLevel(element),
                IsInterface   = element.Parent.Name == "interface"
            };

            if (element.Name == "constructor")
            {
                entry.JavaName = "ctor";
            }

            return(entry);
        }
예제 #2
0
        static MethodMapEntry FromVersion1String(CsvParser parser)
        {
            var entry = new MethodMapEntry {
                Action        = MethodAction.Enumify,
                ApiLevel      = parser.GetFieldAsInt(0),
                JavaPackage   = parser.GetField(1),
                JavaType      = parser.GetField(2),
                JavaName      = parser.GetField(3),
                ParameterName = parser.GetField(4),
                EnumFullType  = parser.GetField(5)
            };

            if (entry.JavaType.StartsWith("[Interface]", StringComparison.Ordinal))
            {
                entry.IsInterface = true;
                entry.JavaType    = entry.JavaType.Substring("[Interface]".Length);
            }

            return(entry);
        }
        public static List <MethodMapEntry> FromMethodMapCsv(TextReader reader)
        {
            var entries = new List <MethodMapEntry> ();

            string s;

            // Read the enum csv file
            while ((s = reader.ReadLine()) != null)
            {
                // Skip empty lines and comments
                if (string.IsNullOrEmpty(s) || s.StartsWith("//", StringComparison.Ordinal))
                {
                    continue;
                }

                entries.Add(MethodMapEntry.FromString(s));
            }

            return(entries);
        }
        public static List <MethodMapEntry> FromApiXml(XDocument doc)
        {
            var results = new List <MethodMapEntry> ();

            // Methods that return int or have an int parameter
            results.AddRange(doc.XPathSelectElements("//method[@return='int'] | //method[parameter/@type='int']").SelectMany(x => MethodMapEntry.FromXml(x)));

            // Constructors with an int parameter
            results.AddRange(doc.XPathSelectElements("//constructor[parameter/@type='int']").SelectMany(x => MethodMapEntry.FromXml(x)));

            // Fields that are a non-constant int
            results.AddRange(doc.XPathSelectElements("//field[@type='int' and @final='false']").SelectMany(x => MethodMapEntry.FromXml(x)));

            return(results);
        }