Inazuma.PetitClr.Core.Structure.MethodTableBuilder.InitializeFieldDescs C# (CSharp) Метод

InitializeFieldDescs() приватный Метод

private InitializeFieldDescs ( ) : void
Результат void
        private void InitializeFieldDescs()
        {
            var numStaticFields = 0;
            var numThreadStaticFields = 0;
            var currentDeclaredField = 0;

            var fieldDescs = new List<FieldDesc>();
            for (var i = 0; i < _typeDefinition.Fields.Count; i++)
            {
                var fieldDef = _typeDefinition.Fields[i];

                // We don't store static final primitive fields in the class layout
                if (fieldDef.IsLiteral)
                {
                    continue;
                }

                if (!fieldDef.IsPublic)
                {
                    HalfBakedClass.HasNonPublicFields = true;
                }

                if (fieldDef.IsStatic)
                {
                    if (false)
                    {
                        // TODO: ThreadStatic attr
                        // TODO: not implemented yet
                    }
                    else
                    {
                        fieldDescs.Add(new FieldDesc(fieldDef) { Offset = -1 /* FIELD_OFFSET_UNPLACED */ });
                        numStaticFields++;
                    }
                }
                else
                {
                    fieldDescs.Add(new FieldDesc(fieldDef) { Offset = -1 /* FIELD_OFFSET_UNPLACED */ });
                    currentDeclaredField++;
                }
            }

            HalfBakedClass.FieldDescList = fieldDescs.ToArray();
            HalfBakedClass.NumInstanceFields = HasParent ? ParentMethodTable.EEClass.NumInstanceFields + currentDeclaredField : 0;
            HalfBakedClass.NumStaticFields = numStaticFields;
            HalfBakedClass.NumThreadStaticFields = numThreadStaticFields;

            // Cache Field descriptors
            _classLoader.RegisterFieldDescRange(HalfBakedClass.FieldDescList);
        }