private static UnifiedSet <UnifiedModifier> LookupModifiers(Modifiers mods) { Contract.Ensures( Contract.Result <UnifiedSet <UnifiedModifier> >() != null); var pairs = new[] { new { Mod = Modifiers.Public, Name = "public" }, new { Mod = Modifiers.Protected, Name = "protected" }, new { Mod = Modifiers.Internal, Name = "internal" }, new { Mod = Modifiers.Abstract, Name = "abstract" }, new { Mod = Modifiers.Private, Name = "private" }, new { Mod = Modifiers.Partial, Name = "partial" }, new { Mod = Modifiers.Static, Name = "static" }, new { Mod = Modifiers.Sealed, Name = "sealed" }, new { Mod = Modifiers.Const, Name = "const" }, new { Mod = Modifiers.Readonly, Name = "readonly" }, new { Mod = Modifiers.New, Name = "new" }, new { Mod = Modifiers.Override, Name = "override" }, new { Mod = Modifiers.Virtual, Name = "virtual" }, new { Mod = Modifiers.Extern, Name = "extern" }, new { Mod = Modifiers.Async, Name = "async" }, new { Mod = Modifiers.Unsafe, Name = "unsafe" }, new { Mod = Modifiers.Volatile, Name = "volatile" }, }; var uMods = from pair in pairs where (mods & pair.Mod) != 0 select UnifiedModifier.Create(pair.Name); return(UnifiedSet <UnifiedModifier> .Create(uMods)); }
public static UnifiedModifier CreateTypeQualifier(XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "type_qualifier"); /* type_qualifier * : 'const' * | 'volatile' */ return(UnifiedModifier.Create(node.FirstElement().Name())); }
private static UnifiedModifier LookupModifier(FieldDirection dir) { switch (dir) { case FieldDirection.Out: return(UnifiedModifier.Create("out")); case FieldDirection.Ref: return(UnifiedModifier.Create("ref")); } return(null); }
public static UnifiedModifier CreateStorageClassSpecifier(XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "storage_class_specifier"); /* * storage_class_specifier * : 'extern' * | 'static' * | 'auto' * | 'register' */ return(UnifiedModifier.Create(node.FirstElement().Value)); }
private static UnifiedModifier LookupModifier(ParameterModifier mod) { switch (mod) { case ParameterModifier.Out: return(UnifiedModifier.Create("out")); case ParameterModifier.Params: return(UnifiedModifier.Create("params")); case ParameterModifier.Ref: return(UnifiedModifier.Create("ref")); case ParameterModifier.This: return(UnifiedModifier.Create("this")); } return(null); }
public UnifiedElement VisitTypeParameterDeclaration( TypeParameterDeclaration dec, object data) { var type = UnifiedType.Create(dec.Name); var modifiers = null as UnifiedSet <UnifiedModifier>; switch (dec.Variance) { case VarianceModifier.Contravariant: modifiers = UnifiedModifier.Create("in").ToSet(); break; case VarianceModifier.Covariant: modifiers = UnifiedModifier.Create("out").ToSet(); break; } return(UnifiedGenericParameter.Create( type, /*constraint*/ null, modifiers)); }
public static UnifiedSet <UnifiedParameter> CreateParameterTypeList( XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "parameter_type_list"); /* * parameter_type_list * : parameter_list (',' '...')? */ var parameters = CreateParameterList(node.Element("parameter_list")); // TODO 可変長引数はmodifierなのか確認 if (node.LastElement().Value == "...") { parameters.Add( UnifiedParameter.Create( modifiers: UnifiedSet <UnifiedModifier> .Create( UnifiedModifier.Create("...")))); } return(parameters); }
public override bool Visit(UnifiedModifier element, VisitorArgument arg) { Writer.Write(element.Name); return false; }
//修飾子 : JavaScriptでは出現しない public override bool Visit(UnifiedModifier element, VisitorArgument arg) { return false; }
public override bool Visit(UnifiedModifier element, VisitorArgument arg) { Writer.Write(element.Name); return(false); }
//修飾子 : JavaScriptでは出現しない public override bool Visit(UnifiedModifier element, VisitorArgument arg) { return(false); }