Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #97959

Re: Counted strings

Newsgroups comp.lang.c
Date 2016-12-03 15:40 -0800
References <o1viji$9d6$1@dont-email.me>
Message-ID <98bfd39e-46e7-48db-834b-7d3df7e40af2@googlegroups.com> (permalink)
Subject Re: Counted strings
From supercat@casperkitty.com

Show all headers | View raw


On Saturday, December 3, 2016 at 4:58:20 PM UTC-6, jacobnavia wrote:
> Instead of prefixing a string with its count, we could do a variable 
> length encoding, like in utf8.
> 
> Strings of length 0 to 254 would be prefixed by a byte containing the 
> length. If the value of that byte is 255 (0xff, all ones) it means that 
> the length is encoded in the next two bytes.

I'd be inclined to use a scheme where the botom two bits of the first byte
select among:

- String of length 0-63 (two lower bits 00)
- Empty buffer of length 1-63 (two lower bits 01)
- Partially-full buffer of length 1-63 (two lower bits 10)
- Something bigger (two lower bits 11)
- A special string-descriptor object (00000001 or 00000010)

For the "something bigger" case, the byte would be shifted right and the
next byte would be scaled up 64x and added to it, whereupon the the first
four choices would then apply.  If the two lower bits were still 11 (i.e.
the bottom four bits were all set) the next byte would be scaled up 4096x
and added.

For the partially-full buffer case, the last byte of the buffer would
indicate that the string was 1-255 bytes shorter than the buffer (using
values 0-254), or that the preceding four bytes indicate how much shorter
the string is than the buffer.

Using that approach, an empty string buffer could be initialized by merely
encoding the length at the start; after that, string-handling routines could
then perform automatic bounds-checking to ensure that strings could not
overrun their bounds.

For the string-header case, I would use one of the special values to
indicate a header of the form:

    struct string_descriptor {
      unsigned char descriptor_flag, descriptor_type;
      unsigned char *dat;
      size_t length;
      size_t size;
    }

If string routines start by building descriptors for passed-in strings,
code which needs to pass a fragment of a string could build a descriptor
for that fragment and pass that, and have code which expects the above
style of string treat it like any other.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-03 23:58 +0100
  Re: Counted strings supercat@casperkitty.com - 2016-12-03 15:40 -0800
  Counted stringsl Thiago Adams <thiago.adams@gmail.com> - 2016-12-03 15:40 -0800
  Re: Counted strings BartC <bc@freeuk.com> - 2016-12-04 00:20 +0000
  Re: Counted strings Richard Damon <Richard@Damon-Family.org> - 2016-12-03 21:26 -0500
    Re: Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-04 18:11 +0100
    Re: Counted strings Mark Storkamp <mstorkamp@yahoo.com> - 2016-12-04 19:25 -0600
  Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-03 18:57 -0800
  Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 16:33 +0100
    Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 07:52 -0800
      Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 17:10 +0100
        Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 10:14 -0800
          Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 20:20 +0100
            Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-04 16:49 -0800
              Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 10:40 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 05:51 -0800
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 16:10 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 07:38 -0800
                Re: Counted strings Melzzzzz <mel@zzzzz.com> - 2016-12-05 16:56 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 08:04 -0800
                Re: Counted strings Melzzzzz <mel@zzzzz.com> - 2016-12-05 17:16 +0100
                Re: Counted strings Jerry Stuckle <jstucklex@attglobal.net> - 2016-12-05 16:12 -0500
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:24 -0800
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 10:53 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 03:52 -0800
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 13:32 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 04:48 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 13:42 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:16 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 14:39 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:24 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:41 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:47 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 14:48 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 05:54 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 06:21 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 06:24 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 18:06 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 10:19 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 19:45 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 11:10 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 12:58 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 14:08 -0800
                Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-06 11:25 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 05:28 -0800
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 16:21 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 07:29 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 07:39 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 08:32 -0800
                Re: Counted strings fir <profesor.fir@gmail.com> - 2016-12-06 08:32 -0800
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 16:28 +0000
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 08:34 -0800
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 18:27 +0000
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 10:36 -0800
                Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:19 +1300
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 11:22 -0800
                Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:26 +1300
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 19:36 +0000
                Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 08:41 +1300
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 11:48 -0800
                Re: Counted strings Thiago Adams <thiago.adams@gmail.com> - 2016-12-05 11:59 -0800
                Re: Counted strings jameskuyper@verizon.net - 2016-12-05 12:12 -0800
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 12:18 -0800
                Re: Counted strings jameskuyper@verizon.net - 2016-12-05 13:17 -0800
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:29 -0800
                Re: Counted strings jameskuyper@verizon.net - 2016-12-05 15:37 -0800
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 15:43 -0800
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 13:40 +0100
                Re: Counted strings "James R. Kuyper" <jameskuyper@verizon.net> - 2016-12-06 12:00 -0500
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 10:09 -0800
                Re: Counted strings Jerry Stuckle <jstucklex@attglobal.net> - 2016-12-06 13:33 -0500
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-06 21:24 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-06 12:56 -0800
                Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-05 12:22 -0800
                Re: Counted strings supercat@casperkitty.com - 2016-12-05 08:36 -0800
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 17:31 +0000
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 22:07 +0100
                Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 10:14 +1300
                Re: Counted strings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-05 22:11 +0000
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-06 02:13 +0000
                Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-05 21:57 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 13:01 -0800
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 21:22 +0000
                Re: Counted strings Ian Collins <ian-news@hotmail.com> - 2016-12-06 10:25 +1300
                Re: Counted strings BartC <bc@freeuk.com> - 2016-12-05 21:36 +0000
                Re: Counted strings jacobnavia <jacob@jacob.remcomp.fr> - 2016-12-05 22:33 +0100
                Re: Counted strings "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-12-05 17:03 -0500
    Re: Counted strings supercat@casperkitty.com - 2016-12-04 08:57 -0800
    Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 20:19 +0100
      Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 20:24 +0100
        Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 20:37 +0100
          Re: Counted strings David Brown <david.brown@hesbynett.no> - 2016-12-04 21:04 +0100
            Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-04 21:22 +0100
              Re: Counted strings BartC <bc@freeuk.com> - 2016-12-04 22:37 +0000
              Re: Counted strings David Thompson <dave.thompson2@verizon.net> - 2016-12-10 22:42 -0500
                Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-10 23:17 -0800
                Re: Counted strings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-11 11:48 +0000
                Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-11 04:40 -0800
                Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-11 10:56 +0100
      Re: Counted strings Robert Wessel <robertwessel2@yahoo.com> - 2016-12-05 15:47 -0600
        Re: Counted strings Gareth Owen <gwowen@gmail.com> - 2016-12-05 22:01 +0000
          Re: Counted strings Robert Wessel <robertwessel2@yahoo.com> - 2016-12-05 22:28 -0600
        Re: Counted strings "Chris M. Thomasson" <invalid@invalid.invalid> - 2016-12-05 20:18 -0800
        Re: Counted strings Robert Spanjaard <spamtrap@arumes.com> - 2016-12-06 11:05 +0100
  Re: Counted strings luser droog <luser.droog@gmail.com> - 2016-12-04 13:13 -0800
  Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-05 09:30 -0800
    Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-05 09:41 -0800
      Re: Counted strings Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-12-06 11:19 -0800
        Re: Counted strings Keith Thompson <kst-u@mib.org> - 2016-12-06 11:44 -0800
  Re: Counted strings Tim Rentsch <txr@alumni.caltech.edu> - 2016-12-10 10:29 -0800
    Re: Counted strings supercat@casperkitty.com - 2016-12-10 11:08 -0800

csiph-web