Re: cvs commit: parrot/dynclasses pybuiltin.pmc pyclass.pmc pyfunc.pmc pylist.pmc pynone.pmc
Leopold Toetsch wrote: Sam Ruby wrote: Leopold Toetsch wrote: What is the rational for this pythonism in Parrot core? +The line of code in test case t/pie/b3 that motivates this is: + + print "using", cmp.__name__ + +Where cmp may be a NCI subroutine. Python's builtin "cmp" is basially a Sub PMC. Parrot Sub's have already a name: At the moment, Python's builtin "cmp" is implemented thus: enter_nci_method(interp, my_enum_class_PyBuiltin, F2DPTR(Parrot_PyBuiltin_cmp), "cmp", "PIOPP"); .sub main .const .Sub c = "cmp" print c .end .sub "cmp" .end So I think, you could translate access to the "__name__" attribute directly to VTABLE_name(). WRT NCI: The b3.py test doesn't need it, but I can imagine that the method name of Parrots "cmp" method is just "__cmp" and available with VTABE_name(). For this test to pass, the __name__ must be "cmp". As this issue is obviously very important to you, I'll drop what I am doing make creating a new subclass of NCI for my purposes my top priority. - Sam Ruby
Re: cvs commit: parrot/dynclasses pybuiltin.pmc pyclass.pmc pyfunc.pmc pylist.pmc pynone.pmc
Sam Ruby wrote: Leopold Toetsch wrote: What is the rational for this pythonism in Parrot core? +The line of code in test case t/pie/b3 that motivates this is: + + print "using", cmp.__name__ + +Where cmp may be a NCI subroutine. Python's builtin "cmp" is basially a Sub PMC. Parrot Sub's have already a name: .sub main .const .Sub c = "cmp" print c .end .sub "cmp" .end So I think, you could translate access to the "__name__" attribute directly to VTABLE_name(). WRT NCI: The b3.py test doesn't need it, but I can imagine that the method name of Parrots "cmp" method is just "__cmp" and available with VTABE_name(). leo
Re: cvs commit: parrot/dynclasses pybuiltin.pmc pyclass.pmc pyfunc.pmc pylist.pmc pynone.pmc
Leopold Toetsch wrote: Sam Ruby <[EMAIL PROTECTED]> wrote: --- nci.pmc7 May 2004 10:33:26 - 1.27 +++ nci.pmc20 Dec 2004 22:27:11 - 1.28 +=item C + +Return attribute named C. + +=cut + +*/ + +PMC* get_attr_str(STRING* idx) { +return VTABLE_getprop(INTERP, SELF, idx); +} + } What is the rational for this pythonism in Parrot core? Good catch. I've added the following directly to nci.pmc both to capture the rationale and to record a TODO. --- nci.pmc 20 Dec 2004 22:27:11 - 1.28 +++ nci.pmc 21 Dec 2004 11:50:16 - @@ -159,6 +159,16 @@ =cut +TODO: refactor into a separate subclass, and either modify Pmc2c.pm and +enter_nci_method to directly build this subclass, or add code to morph +NCI instances into the correct subclass later. + +The line of code in test case t/pie/b3 that motivates this is: + + print "using", cmp.__name__ + +Where cmp may be a NCI subroutine. + */ PMC* get_attr_str(STRING* idx) {
Re: cvs commit: parrot/dynclasses pybuiltin.pmc pyclass.pmc pyfunc.pmc pylist.pmc pynone.pmc
Sam Ruby <[EMAIL PROTECTED]> wrote: > --- nci.pmc 7 May 2004 10:33:26 - 1.27 > +++ nci.pmc 20 Dec 2004 22:27:11 - 1.28 > +=item C > + > +Return attribute named C. > + > +=cut > + > +*/ > + > +PMC* get_attr_str(STRING* idx) { > +return VTABLE_getprop(INTERP, SELF, idx); > +} > + >} What is the rational for this pythonism in Parrot core? leo