Exemplo n.º 1
0
 internal override void Resolve(PEReader buff)
 {
     buff.currentClassScope = this;
     superType = (Class)buff.GetCodedElement(CIx.TypeDefOrRef, extendsIx);
     if ((superType != null) && superType.isValueType())
         typeIndex = (byte)ElementType.ValueType;
     for (int i = 0; fieldIx < fieldEndIx; i++, fieldIx++)
     {
         FieldDef field = (FieldDef)buff.GetElement(MDTable.Field, fieldIx);
         field.SetParent(this);
         fields.Add(field);
     }
     for (int i = 0; methodIx < methodEndIx; i++, methodIx++)
     {
         MethodDef meth = (MethodDef)buff.GetElement(MDTable.Method, methodIx);
         if (Diag.DiagOn) Console.WriteLine("Adding method " + meth.Name() + " to class " + Name);
         meth.SetParent(this);
         methods.Add(meth);
     }
     buff.currentClassScope = null;
 }
Exemplo n.º 2
0
 internal override sealed void Resolve(PEReader buff)
 {
     field = (FieldDef)buff.GetElement(MDTable.Field, fieldIx);
     field.SetOffset(offset);
 }
Exemplo n.º 3
0
 private void DoPars(PEReader buff, bool resolvePars)
 {
     if (sig == null) sig = buff.ReadMethSig(this, sigIx);
     sig.name = name;
     parList = new Param[sig.numPars];
     if (parIx > buff.GetTableSize(MDTable.Param))
     {
         // EXPERIMENTAL kjg 19 November 2007
         //  It is actually allowed that a method def does not
         //  have corresponding Param metadata, provided the
         //  parameter types may be constructed from the sig.
         for (uint i = 0; i < sig.numPars; i++)
         {
             parList[i] = Param.DefaultParam();
             parList[i].SetParType(sig.parTypes[i]);
         }
     }
     else
     {
         for (uint i = 0; i < sig.numPars; i++)
         {
             parList[i] = (Param)buff.GetElement(MDTable.Param, i + parIx);
             if (resolvePars) parList[i].Resolve(buff, i + parIx, sig.parTypes[i]);
             else parList[i].SetParType(sig.parTypes[i]);
         }
     }
 }
Exemplo n.º 4
0
 internal override void Resolve(PEReader buff)
 {
     parent = (ClassDef)buff.GetElement(MDTable.TypeDef, parentIx);
     if (parent != null) parent.Layout = this;
 }
Exemplo n.º 5
0
 internal override void Resolve(PEReader buff)
 {
     theClass = (ClassDef)buff.GetElement(MDTable.TypeDef, classIx);
     theInterface = (Class)buff.GetCodedElement(CIx.TypeDefOrRef, interfacesIndex);
     theClass.AddImplementedInterface(this);
 }
Exemplo n.º 6
0
 internal override void Resolve(PEReader buff)
 {
     meth = (MethodDef)buff.GetCodedElement(CIx.MemberForwarded, memForIndex);
     importScope = (ModuleRef)buff.GetElement(MDTable.ModuleRef, scopeIx);
     if (meth != null) meth.AddPInvokeInfo(this);
 }
Exemplo n.º 7
0
 internal override void Resolve(PEReader buff)
 {
     parent = (GenericParam)buff.GetElement(MDTable.GenericParam, parentIx);
     parent.AddConstraint((Type)buff.GetCodedElement(CIx.TypeDefOrRef, constraintIx));
 }
Exemplo n.º 8
0
 internal override sealed void Resolve(PEReader buff)
 {
     field = (FieldDef)buff.GetElement(MDTable.Field, fieldIx);
     field.AddDataValue(buff.GetDataConstant(rva, field.GetFieldType()));
 }