dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/image meta_writer.c,1.7,1.8


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/image meta_writer.c,1.7,1.8
Date: Wed, 19 Feb 2003 00:31:57 -0500

Update of /cvsroot/dotgnu-pnet/pnet/image
In directory subversions:/tmp/cvs-serv32017/image

Modified Files:
        meta_writer.c 
Log Message:


Output TypeSpec tokens for type parents and member reference
owners where required.


Index: meta_writer.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/image/meta_writer.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** meta_writer.c       18 Feb 2003 05:25:08 -0000      1.7
--- meta_writer.c       19 Feb 2003 05:31:54 -0000      1.8
***************
*** 143,146 ****
--- 143,178 ----
  
  /*
+  * Search the TypeSpec table for a particular type.
+  */
+ static ILToken TypeToToken(ILImage *image, ILType *type)
+ {
+       ILTypeSpec *spec = 0;
+       while((spec = (ILTypeSpec *)ILImageNextToken
+                               (image, IL_META_TOKEN_TYPE_SPEC, spec)) != 0)
+       {
+               if(ILTypeIdentical(ILTypeSpec_Type(spec), type))
+               {
+                       return ILTypeSpec_Token(spec);
+               }
+       }
+       return 0;
+ }
+ 
+ /*
+  * Convert an ILClass into a TypeRef, TypeDef, or TypeSpec token.
+  */
+ static ILToken ClassToToken(ILImage *image, ILClass *info)
+ {
+       if(!(info->synthetic))
+       {
+               return info->programItem.token;
+       }
+       else
+       {
+               return TypeToToken(image, info->synthetic);
+       }
+ }
+ 
+ /*
   * Format a TypeDef token.
   */
***************
*** 161,165 ****
        if(info->parent)
        {
!               values[IL_OFFSET_TYPEDEF_PARENT] = 
info->parent->programItem.token;
        }
        else
--- 193,197 ----
        if(info->parent)
        {
!               values[IL_OFFSET_TYPEDEF_PARENT] = ClassToToken(image, 
info->parent);
        }
        else
***************
*** 294,298 ****
  {
        values[IL_OFFSET_INTERFACE_TYPE] = impl->implement->programItem.token;
!       values[IL_OFFSET_INTERFACE_INTERFACE] = 
impl->interface->programItem.token;
  }
  
--- 326,331 ----
  {
        values[IL_OFFSET_INTERFACE_TYPE] = impl->implement->programItem.token;
!       values[IL_OFFSET_INTERFACE_INTERFACE] =
!                       ClassToToken(image, impl->interface);
  }
  
***************
*** 310,319 ****
                ref = (ILMemberRef *)member;
                values[IL_OFFSET_MEMBERREF_PARENT] =
!                               ref->ref->owner->programItem.token;
        }
        else
        {
                values[IL_OFFSET_MEMBERREF_PARENT] =
!                               member->owner->programItem.token;
        }
  }
--- 343,352 ----
                ref = (ILMemberRef *)member;
                values[IL_OFFSET_MEMBERREF_PARENT] =
!                               ClassToToken(image, ref->ref->owner);
        }
        else
        {
                values[IL_OFFSET_MEMBERREF_PARENT] =
!                               ClassToToken(image, member->owner);
        }
  }
***************
*** 425,429 ****
        else
        {
!               values[IL_OFFSET_EVENT_TYPE] = 0;
        }
  }
--- 458,463 ----
        else
        {
!               values[IL_OFFSET_EVENT_TYPE] =
!                               TypeToToken(image, event->member.signature);
        }
  }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]