(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / ilasm / codegen / ExternFieldRef.cs
blobcc40ecd2edb24120ecceb5d08552aefff2b46af9
1 //
2 // Mono.ILASM.ExternFieldRef
3 //
4 // Author(s):
5 // Jackson Harper (Jackson@LatitudeGeo.com)
6 //
7 // (C) 2003 Jackson Harper, All rights reserved
8 //
11 using System;
13 namespace Mono.ILASM {
15 public class ExternFieldRef : IFieldRef {
17 private ExternTypeRef owner;
18 private ITypeRef type;
19 private string name;
21 private bool is_resolved;
22 private PEAPI.FieldRef peapi_field;
24 public ExternFieldRef (ExternTypeRef owner, ITypeRef type, string name)
26 this.owner = owner;
27 this.type = type;
28 this.name = name;
30 is_resolved = false;
33 public PEAPI.Field PeapiField {
34 get { return peapi_field; }
37 public void Resolve (CodeGen code_gen)
39 if (is_resolved)
40 return;
42 owner.Resolve (code_gen);
44 if (owner.UseTypeSpec) {
45 PEAPI.Type owner_ref = owner.PeapiType;
46 code_gen.PEFile.AddFieldToTypeSpec (owner_ref, name,
47 type.PeapiType);
48 } else {
49 PEAPI.ClassRef owner_ref;
50 owner_ref = (PEAPI.ClassRef) owner.PeapiType;
51 type.Resolve (code_gen);
52 peapi_field = owner_ref.AddField (name, type.PeapiType);
55 is_resolved = true;