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 CPMC* get_attr_str(STRING *name) + +Return attribute named Cname. + +=cut + +*/ + +PMC* get_attr_str(STRING* idx) { +return VTABLE_getprop(INTERP, SELF, idx); +} + } What is the rational for this pythonism in Parrot core? 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 CPMC* get_attr_str(STRING *name) + +Return attribute named Cname. + +=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 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 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