mit-scheme-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MIT-Scheme-devel] SUBSTRING and SET-STRING-MAXIMUM-LENGTH!


From: Joe Marshall
Subject: Re: [MIT-Scheme-devel] SUBSTRING and SET-STRING-MAXIMUM-LENGTH!
Date: Sat, 5 Sep 2009 16:03:48 -0700

Would this work?

DEFINE_PRIMITIVE ("STRING-HEAD!", Prim_set_string_maximum_length, 2, 2, 0)
{
  PRIMITIVE_HEADER (2);
  CHECK_ARG (1, STRING_P);
  {
    SCHEME_OBJECT string = (ARG_REF (1));
    long length
      = (arg_index_integer (2, ((MAXIMUM_STRING_LENGTH (string)) + 1)));
    if (length < (STRING_LENGTH (string)))
      SET_STRING_LENGTH (string, length);
    MEMORY_SET
      (string,
       STRING_HEADER,
       (MAKE_OBJECT
        (TC_MANIFEST_NM_VECTOR, ((BYTES_TO_WORDS (length + 1)) + 1))));
    PRIMITIVE_RETURN (string);
  }
}


On Sat, Sep 5, 2009 at 4:01 PM, Joe Marshall<address@hidden> wrote:
> I can write it, but I can't test it.
>
> On Sat, Sep 5, 2009 at 3:51 PM, Chris Hanson<address@hidden> wrote:
>> Agreed, though it should be called STRING-HEAD! and take only two arguments.
>>
>> On Sat, Sep 5, 2009 at 3:20 PM, Taylor R Campbell<address@hidden> wrote:
>>> Rather than changing each instance of SET-STRING-MAXIMUM-LENGTH! to
>>> check whether it worked and to use SUBSTRING if it failed, perhaps it
>>> would be better to add a SUBSTRING! procedure to do this.
>>>
>>>
>>> _______________________________________________
>>> MIT-Scheme-devel mailing list
>>> address@hidden
>>> http://lists.gnu.org/mailman/listinfo/mit-scheme-devel
>>>
>>
>>
>> _______________________________________________
>> MIT-Scheme-devel mailing list
>> address@hidden
>> http://lists.gnu.org/mailman/listinfo/mit-scheme-devel
>>
>
>
>
> --
> ~jrm
>



-- 
~jrm




reply via email to

[Prev in Thread] Current Thread [Next in Thread]