File: Internal\Reflection\Execution\FieldAccessors\RegularStaticFieldAccessor.cs
Web Access
Project: src\src\runtime\src\coreclr\nativeaot\System.Private.Reflection.Execution\src\System.Private.Reflection.Execution.csproj (System.Private.Reflection.Execution)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;

using Internal.Runtime;

namespace Internal.Reflection.Execution.FieldAccessors
{
    internal abstract class RegularStaticFieldAccessor : WritableStaticFieldAccessor
    {
        protected RegularStaticFieldAccessor(IntPtr cctorContext, IntPtr staticsBase, int fieldOffset, FieldTableFlags fieldBase, RuntimeTypeHandle fieldTypeHandle)
            : base(cctorContext, fieldTypeHandle)
        {
            StaticsBase = staticsBase;
            _fieldFlags = fieldBase;
            FieldOffset = fieldOffset;
        }

        protected IntPtr StaticsBase { get; }
        private readonly FieldTableFlags _fieldFlags;
        protected int FieldOffset { get; }
        protected FieldTableFlags FieldBase => _fieldFlags & FieldTableFlags.StorageClass;
        protected sealed override bool IsFieldInitOnly => (_fieldFlags & FieldTableFlags.IsInitOnly) == FieldTableFlags.IsInitOnly;
    }
}