public override void VisitLiteralExpression(LiteralExpression literalExpression) { switch (literalExpression.Value) { case "NoMac": case "NoMacAttribute": VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.MacOSX"); break; case "NoiOS": case "NoiOSAttribute": VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.iOS"); break; case "NoWatch": case "NoWatchAttribute": VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.WatchOS"); break; case "NoTV": case "NoTVAttribute": VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.TvOS"); break; case "Lion": case "LionAttribute": VisitMacNamedIntroducedAttribute (literalExpression, "7"); break; case "MountainLion": case "MountainLionAttribute": VisitMacNamedIntroducedAttribute (literalExpression, "8"); break; case "Mavericks": case "MavericksAttribute": VisitMacNamedIntroducedAttribute (literalExpression, "9"); break; default: base.VisitLiteralExpression (literalExpression); break; } }
public void VisitLiteralExpression(LiteralExpression literalExpression) { writer.Write (literalExpression.Value); }
public override void VisitLiteralExpression(LiteralExpression literalExpression) { var parts = literalExpression?.Value?.Split ('_'); if (parts == null || parts.Length < 2) return; string platformName; switch (parts [0]) { case "Platform.Mac": platformName = "PlatformName.MacOSX"; break; case "Platform.iOS": platformName = "PlatformName.iOS"; break; default: return; } if (currentAvailability == null) { switch (originalArgIndex) { case 0: currentAvailability = "Introduced"; break; case 1: currentAvailability = "Deprecated"; break; case 2: currentAvailability = "Obsoleted"; break; case 3: currentAvailability = "Unavailable"; break; } } var attr = new InvocationExpression (currentAvailability); attr.AddArgument (new LiteralExpression (platformName)); if (parts.Length == 2) { switch (parts [1]) { case "Version": break; case "Arch32": attr.AddArgument (new LiteralExpression ("PlatformArchitecture.Arch32")); break; case "Arch64": attr.AddArgument (new LiteralExpression ("PlatformArchitecture.Arch64")); break; } } else { for (int i = 1; i < parts.Length; i++) attr.AddArgument (new LiteralExpression (parts [i])); } invocations.Add (attr); }
static void VisitShorthandUnavailableAttribute(LiteralExpression oldAttr, string platformName) { var newAttr = new InvocationExpression ("Unavailable"); newAttr.AddArgument (new LiteralExpression (platformName)); oldAttr.Parent.InsertChildBefore (oldAttr, newAttr); oldAttr.Remove (); }
static void VisitMacNamedIntroducedAttribute(LiteralExpression oldAttr, string macMinorVersion) { var newAttr = new InvocationExpression ("Introduced"); newAttr.AddArgument (new LiteralExpression ("PlatformName.MacOSX")); newAttr.AddArgument (new LiteralExpression ("10")); newAttr.AddArgument (new LiteralExpression (macMinorVersion)); oldAttr.Parent.InsertChildBefore (oldAttr, newAttr); oldAttr.Remove (); }
public InvocationExpression(string target) { Target = new LiteralExpression (target); }
public override void VisitLiteralExpression(LiteralExpression literalExpression) { string replacement; if (preprocessor.Profile.GlobalReplacements.Evaluate ( literalExpression.Value, out replacement)) literalExpression.Value = replacement; }