[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/ilalink link_class.c,1.10,1.11 link_met
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/ilalink link_class.c,1.10,1.11 link_method.c,1.23,1.24 |
Date: |
Tue, 18 Feb 2003 02:23:53 -0500 |
Update of /cvsroot/dotgnu-pnet/pnet/ilalink
In directory subversions:/tmp/cvs-serv15423/ilalink
Modified Files:
link_class.c link_method.c
Log Message:
Handle generic parameters while linking classes and methods.
Index: link_class.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/link_class.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -r1.10 -r1.11
*** link_class.c 24 Dec 2002 01:25:18 -0000 1.10
--- link_class.c 18 Feb 2003 07:23:49 -0000 1.11
***************
*** 44,47 ****
--- 44,52 ----
ILMember *member;
ILLibraryFind find;
+ ILUInt32 genericNum;
+ ILGenericPar *genPar;
+ ILGenericPar *newGenPar;
+ ILProgramItem *constraint;
+ ILTypeSpec *spec;
/* Convert the parent class reference */
***************
*** 224,227 ****
--- 229,272 ----
return 0;
}
+ }
+
+ /* Convert the generic parameters, if any */
+ genericNum = 0;
+ while((genPar = ILGenericParGetFromOwner
+ (ILToProgramItem(classInfo), genericNum)) != 0)
+ {
+ newGenPar = ILGenericParCreate
+ (linker->image, 0, ILToProgramItem(newClass),
genericNum);
+ if(!newGenPar)
+ {
+ _ILLinkerOutOfMemory(linker);
+ return 0;
+ }
+ if(!ILGenericParSetName(newGenPar, ILGenericPar_Name(genPar)))
+ {
+ _ILLinkerOutOfMemory(linker);
+ return 0;
+ }
+ constraint = ILGenericPar_Constraint(genPar);
+ if(constraint)
+ {
+ spec = ILProgramItemToTypeSpec(constraint);
+ if(spec)
+ {
+ constraint = ILToProgramItem
+ (_ILLinkerConvertTypeSpec(linker,
ILTypeSpec_Type(spec)));
+ }
+ else
+ {
+ constraint = ILToProgramItem
+ (_ILLinkerConvertClassRef(linker,
(ILClass *)constraint));
+ }
+ if(!constraint)
+ {
+ return 0;
+ }
+ ILGenericParSetConstraint(newGenPar, constraint);
+ }
+ ++genericNum;
}
Index: link_method.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/link_method.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -r1.23 -r1.24
*** link_method.c 15 Feb 2003 01:57:52 -0000 1.23
--- link_method.c 18 Feb 2003 07:23:49 -0000 1.24
***************
*** 143,146 ****
--- 143,153 ----
break;
+ case IL_META_TOKEN_METHOD_SPEC:
+ {
+ /* Convert a generic method specification */
+ /* TODO */
+ }
+ break;
+
default:
{
***************
*** 574,577 ****
--- 581,589 ----
ILUInt32 numParams;
char *newName = 0;
+ ILUInt32 genericNum;
+ ILGenericPar *genPar;
+ ILGenericPar *newGenPar;
+ ILProgramItem *constraint;
+ ILTypeSpec *spec;
/* Rename the method if it is within the "<Module>" class and private */
***************
*** 787,790 ****
--- 799,842 ----
}
}
+ }
+
+ /* Convert the generic parameters, if any */
+ genericNum = 0;
+ while((genPar = ILGenericParGetFromOwner
+ (ILToProgramItem(method), genericNum)) != 0)
+ {
+ newGenPar = ILGenericParCreate(linker->image, 0,
+
ILToProgramItem(newMethod), genericNum);
+ if(!newGenPar)
+ {
+ _ILLinkerOutOfMemory(linker);
+ return 0;
+ }
+ if(!ILGenericParSetName(newGenPar, ILGenericPar_Name(genPar)))
+ {
+ _ILLinkerOutOfMemory(linker);
+ return 0;
+ }
+ constraint = ILGenericPar_Constraint(genPar);
+ if(constraint)
+ {
+ spec = ILProgramItemToTypeSpec(constraint);
+ if(spec)
+ {
+ constraint = ILToProgramItem
+ (_ILLinkerConvertTypeSpec(linker,
ILTypeSpec_Type(spec)));
+ }
+ else
+ {
+ constraint = ILToProgramItem
+ (_ILLinkerConvertClassRef(linker,
(ILClass *)constraint));
+ }
+ if(!constraint)
+ {
+ return 0;
+ }
+ ILGenericParSetConstraint(newGenPar, constraint);
+ }
+ ++genericNum;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/ilalink link_class.c,1.10,1.11 link_method.c,1.23,1.24,
Rhys Weatherley <address@hidden> <=