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 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

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 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

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 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