[Top][All Lists]
[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);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/image meta_writer.c,1.7,1.8,
Rhys Weatherley <address@hidden> <=