[pypy-dev] adding support for Generic classes in the "/module/clr"

amit regmi.amit at gmail.com
Wed Dec 12 02:11:52 CET 2007


Support for generic classes

---IronPythonic way---------
from System.Collections.Generic import *
l = List[str]()
l.Add("Hello")
l.Add("Hi")
l.Add(3)        # fails with ValueError:  

d = Dictionary[str, int]()
d.Add('abc', 1)
d.Add('def', 2)
for i in d.Keys:
    print d[i]

So here in pypy-clr what we'd like to do is

    import System.Collections.Generic.LinkedList<str>
    l= System.Collections.Generic.LinkedList<str>()
    l.Add("hello")
    l.Add("hi")
    l.Add(3)        # throw ValueError exception

the import is to be analysed if its an import for a Generic Class and 
loaded as

    
clr.load_cli_generic_class('System.Collections.Generic','LinkedList<str>')

The implementation of load_cli_generic_class is a BlackBox to me as of now.

 From the import line we can check if the class is a "generic" and then 
reflection can be used to determine:
a) Generic type
b) type arguments
c) Parameter attributes
.... and more

I hope somehow the existing build_wrapper could be used after putting 
some checks but I am not sure how.

-AmitReg





More information about the Pypy-dev mailing list