Re: cvs commit: parrot/dynclasses pybuiltin.pmc pyclass.pmc pyfunc.pmc pylist.pmc pynone.pmc

2004-12-21 Thread Sam Ruby
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

2004-12-21 Thread Leopold Toetsch
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

2004-12-21 Thread Sam Ruby
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

2004-12-21 Thread Leopold Toetsch
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