static ConstantEntry FromVersion1String(CsvParser parser, bool transientMode) { var entry = new ConstantEntry { Action = ConstantAction.Enumify, ApiLevel = parser.GetFieldAsInt(0), EnumFullType = parser.GetField(1), EnumMember = parser.GetField(2), JavaSignature = parser.GetField(3), Value = parser.GetField(4), IsFlags = parser.GetField(5).ToLowerInvariant() == "flags", FieldAction = transientMode ? FieldAction.Remove : FieldAction.Keep }; if (!entry.EnumNamespace.HasValue()) { // This is a line that only deletes a const, not maps it to an enum entry.Action = ConstantAction.Remove; entry.FieldAction = FieldAction.Remove; } else if (!entry.JavaSignature.HasValue()) { // This is a line that adds an unmapped enum member entry.Action = ConstantAction.Add; entry.FieldAction = transientMode ? FieldAction.Remove : FieldAction.None; } entry.NormalizeJavaSignature(); return(entry); }
public static List <ConstantEntry> FromEnumMapCsv(TextReader reader) { var constants = new List <ConstantEntry> (); var transient = false; 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; } // Transient mode means remove the original field if (s == "- ENTER TRANSIENT MODE -") { transient = true; continue; } constants.Add(ConstantEntry.FromString(s, transient)); } return(constants); }
static ConstantEntry FromVersion2String(CsvParser parser) { var entry = new ConstantEntry { Action = FromConstantActionString(parser.GetField(0)), ApiLevel = parser.GetFieldAsInt(1), JavaSignature = parser.GetField(2), Value = parser.GetField(3), EnumFullType = parser.GetField(4), EnumMember = parser.GetField(5), FieldAction = FromFieldActionString(parser.GetField(6)), IsFlags = parser.GetField(7).ToLowerInvariant() == "flags" }; entry.NormalizeJavaSignature(); return(entry); }
public static ConstantEntry FromElement(XElement elem) { var entry = new ConstantEntry { Action = ConstantAction.None, ApiLevel = NamingConverter.ParseApiLevel(elem.Attribute("merge.SourceFile")?.Value), JavaSignature = elem.Parent.Parent.Attribute("name").Value, Value = elem.Attribute("value")?.Value, }; var java_package = elem.Parent.Parent.Attribute("name").Value.Replace('.', '/'); var java_type = elem.Parent.Attribute("name").Value.Replace('.', '$'); var java_member = elem.Attribute("name").Value; entry.JavaSignature = $"{java_package}/{java_type}.{java_member}".TrimStart('/'); // Interfaces get an "I:" prefix if (elem.Parent.Name.LocalName == "interface") { entry.JavaSignature = "I:" + entry.JavaSignature; } return(entry); }
public static List <ConstantEntry> FromApiXml(XDocument doc) { var int_fields = doc.XPathSelectElements("//field[@type='int']"); return(int_fields.Select(f => ConstantEntry.FromElement(f)).Where(c => c.Value.HasValue()).ToList()); }