On Sun, 11 Nov 2001, Alex Gough wrote: (but not quite enough...)
> On Sat, 10 Nov 2001, Jeff wrote: > > > string.pasm patches the operators mentioned > > The other file, 'parrot.pasm', is a miniature Parrot compiler, written > > in Parrot. > > > > The patches in the string.diff file are required to make this work. > > ook, cool, but string_length returns an INTVAL, not an int. Remember that people who say "negative" usually mean "positive", they just don't know it yet. Always look on the bright si-ide of life, de do, de do de do de do. Yes, also this doesn't follow the style of the rest of string.c (s->strlen is your friend) and I'm not sure that (char*)[index] is the right way to get ord for $encoding. Have we actually worked out what ord should do yet? string_ord should be more like this anyhow: INTVAL string_ord(STRING* s, INTVAL index) { if(s==NULL) { INTERNAL_EXCEPTION(ORD_OUT_OF_STRING, "Cannot get character from empty string"); } else { if (index < 0 ) { index = s->strlen + index; /* zero based */ } if (index > (s->strlen - 1) || index < 0) { INTERNAL_EXCEPTION(ORD_OUT_OF_STRING, "Cannot get character outside string"); } else { /* WORK OUT WHAT ORD SHOULD BE */ } } return -1; } Also, is it wise to be #defining every one of our errors to be 1, aren't these better being an enum, or is there merely not yet a plan for exceptions that works? (The general gist of the patch is damn good, btw) Alex Gough