Mono.CSharp.ModifiersExtensions.Check C# (CSharp) Method

Check() public static method

Checks the object @mod modifiers to be in @allowed. Returns the new mask. Side effect: reports any incorrect attributes.
public static Check ( Mono.CSharp.Modifiers allowed, Mono.CSharp.Modifiers mod, Mono.CSharp.Modifiers def_access, Mono.CSharp.Location l, Report Report ) : Mono.CSharp.Modifiers
allowed Mono.CSharp.Modifiers
mod Mono.CSharp.Modifiers
def_access Mono.CSharp.Modifiers
l Mono.CSharp.Location
Report Report
return Mono.CSharp.Modifiers
		public static Modifiers Check (Modifiers allowed, Modifiers mod, Modifiers def_access, Location l, Report Report)
		{
			int invalid_flags = (~(int) allowed) & ((int) mod & ((int) Modifiers.TOP - 1));
			int i;

			if (invalid_flags == 0){
				//
				// If no accessibility bits provided
				// then provide the defaults.
				//
				if ((mod & Modifiers.AccessibilityMask) == 0) {
					mod |= def_access;
					if (def_access != 0)
						mod |= Modifiers.DEFAULT_ACCESS_MODIFER;
					return mod;
				}

				return mod;
			}

			for (i = 1; i <= (int) Modifiers.TOP; i <<= 1) {
				if ((i & invalid_flags) == 0)
					continue;

				Error_InvalidModifier ((Modifiers)i, l, Report);
			}

			return allowed & mod;
		}

Usage Example

Example #1
0
File: enum.cs Project: sagood/mono
        public Enum(TypeContainer parent, FullNamedExpression type, Modifiers mod_flags, MemberName name, Attributes attrs)
            : base(parent, name, attrs, MemberKind.Enum)
        {
            underlying_type_expr = type;
            var accmods = IsTopLevel ? Modifiers.INTERNAL : Modifiers.PRIVATE;

            ModFlags = ModifiersExtensions.Check(AllowedModifiers, mod_flags, accmods, Location, Report);
            spec     = new EnumSpec(null, this, null, null, ModFlags);
        }
All Usage Examples Of Mono.CSharp.ModifiersExtensions::Check