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

FieldAttr() public static method

public static FieldAttr ( Mono.CSharp.Modifiers mod_flags ) : FieldAttributes
mod_flags Mono.CSharp.Modifiers
return FieldAttributes
		public static FieldAttributes FieldAttr (Modifiers mod_flags)
		{
			FieldAttributes fa = 0;

			if ((mod_flags & Modifiers.PUBLIC) != 0)
				fa |= FieldAttributes.Public;
			if ((mod_flags & Modifiers.PRIVATE) != 0)
				fa |= FieldAttributes.Private;
			if ((mod_flags & Modifiers.PROTECTED) != 0) {
				if ((mod_flags & Modifiers.INTERNAL) != 0)
					fa |= FieldAttributes.FamORAssem;
				else 
					fa |= FieldAttributes.Family;
			} else {
				if ((mod_flags & Modifiers.INTERNAL) != 0)
					fa |= FieldAttributes.Assembly;
			}

			if ((mod_flags & Modifiers.STATIC) != 0)
				fa |= FieldAttributes.Static;
			if ((mod_flags & Modifiers.READONLY) != 0)
				fa |= FieldAttributes.InitOnly;

			return fa;
		}

Usage Example

Example #1
0
        public override bool Define()
        {
            if (!base.Define())
            {
                return(false);
            }
            // SYNC_MOD_CTRL
            if ((ModFlags & Modifiers.SYNC) == Modifiers.SYNC)
            {
                Report.Error(3661, Location, "A sync modifier cannot be used in field declaration. ");
            }

            MetaType[] required_modifier = null;
            if ((ModFlags & Modifiers.VOLATILE) != 0)
            {
                var mod = Module.PredefinedTypes.IsVolatile.Resolve();
                if (mod != null)
                {
                    required_modifier = new MetaType[] { mod.GetMetaInfo() }
                }
                ;
            }

            FieldBuilder = Parent.TypeBuilder.DefineField(
                Name, member_type.GetMetaInfo(), required_modifier, null, ModifiersExtensions.FieldAttr(ModFlags));

            spec = new FieldSpec(Parent.Definition, this, MemberType, FieldBuilder, ModFlags);

            //
            // Don't cache inaccessible fields except for struct where we
            // need them for definitive assignment checks
            //
            if ((ModFlags & Modifiers.BACKING_FIELD) == 0 || Parent.Kind == MemberKind.Struct)
            {
                Parent.MemberCache.AddMember(spec);
            }

            if (initializer != null)
            {
                Parent.RegisterFieldForInitialization(this, new FieldInitializer(this, initializer, TypeExpression.Location));
            }

            if (declarators != null)
            {
                foreach (var d in declarators)
                {
                    var f = new Field(Parent, d.GetFieldTypeExpression(this), ModFlags, new MemberName(d.Name.Value, d.Name.Location), OptAttributes);
                    if (d.Initializer != null)
                    {
                        f.initializer = d.Initializer;
                    }

                    f.Define();
                    Parent.PartialContainer.Members.Add(f);
                }
            }

            return(true);
        }
All Usage Examples Of Mono.CSharp.ModifiersExtensions::FieldAttr