Prechádzať zdrojové kódy

* PEAPI.cs: Add IExternRef interface and modify sigs so it can be
used. So we can easily add stuff to modules and assemblies. Fix
the nometadata flag, it should be set when there is NO metadata
not when there is metadata.

svn path=/trunk/mcs/; revision=29562

Jackson Harper 21 rokov pred
rodič
commit
03abbb0d27
2 zmenil súbory, kde vykonal 19 pridanie a 7 odobranie
  1. 7 0
      mcs/class/PEAPI/ChangeLog
  2. 12 7
      mcs/class/PEAPI/PEAPI.cs

+ 7 - 0
mcs/class/PEAPI/ChangeLog

@@ -1,3 +1,10 @@
+2004-06-14  Jackson Harper  <[email protected]>
+
+	* PEAPI.cs: Add IExternRef interface and modify sigs so it can be
+	used. So we can easily add stuff to modules and assemblies. Fix
+	the nometadata flag, it should be set when there is NO metadata
+	not when there is metadata.
+	
 2004-06-14  Jackson Harper  <[email protected]>
 
 	* PEAPI.cs: Add new constructor so we can explicitly set the

+ 12 - 7
mcs/class/PEAPI/PEAPI.cs

@@ -381,10 +381,16 @@ namespace PEAPI
 
   }     
   /**************************************************************************/  
+
+        public interface IExternRef  {
+                ClassRef AddClass(string nsName, string name);
+                ClassRef AddValueClass(string nsName, string name);
+        }
+        
         /// <summary>
         /// A reference to an external assembly (.assembly extern)
         /// </summary>
-        public class AssemblyRef : ResolutionScope
+        public class AssemblyRef : ResolutionScope, IExternRef
         {
     private ushort major, minor, build, revision;
     uint flags, keyIx, hashIx, cultIx;
@@ -3648,13 +3654,13 @@ if (rsrc != null)
         /// </summary>
         public class FileRef : MetaDataElement
         {
-    private static readonly uint HasMetaData = 0x1;
+    private static readonly uint NoMetaData = 0x1;
     uint nameIx = 0, hashIx = 0;
     uint flags = 0;
 
     internal FileRef(string name, byte[] hashBytes, bool metaData,
                       bool entryPoint, MetaData md) {
-      if (metaData) flags = HasMetaData;
+      if (!metaData) flags = NoMetaData;
       if (entryPoint) md.SetEntryPoint(this);
       nameIx = md.AddToStringsHeap(name);
       hashIx = md.AddToBlobHeap(hashBytes);
@@ -5587,13 +5593,12 @@ if (rsrc != null)
                         }
                         return 0;
     }
-
-        }
+
   /**************************************************************************/  
         /// <summary>
         /// Descriptor for another module in THIS assembly
         /// </summary>
-  public class ModuleRef : ResolutionScope
+        public class ModuleRef : ResolutionScope, IExternRef
         {
 
                 internal ModuleRef(MetaData md, string name) : base(name,md) {
@@ -5607,7 +5612,7 @@ if (rsrc != null)
     /// <param name="nsName">name space name</param>
     /// <param name="name">class name</param>
     /// <returns>a descriptor for this class in another module</returns>
-    public ClassRef AddClass(string nsName, string name, bool exportClass) {
+    public ClassRef AddClass(string nsName, string name) {
       ClassRef aClass = new ClassRef(nsName,name,metaData);
       metaData.AddToTable(MDTable.TypeRef,aClass);
       aClass.SetParent(this);