[PD-dev] strings
Martin Peach
martin.peach at sympatico.ca
Sun Dec 17 21:44:08 CET 2006
Mathieu Bouchard wrote:
> On Sat, 16 Dec 2006, Martin Peach wrote:
>
>> Yes, and it's also easier to limit strings to word (16-bit) lengths,
>> while 8-bit is too short. So a t_string would look like:
>> typedef struct _string /* pointer to a string */
>> {
>> unsigned short s_length; /* length of string in bytes */
>> unsigned char *s_data; /* pointer to 1st byte of string */
>> } t_string;
>
> If you're not compiling in 16-bit mode, then there will be 2 or 6
> bytes between the first and second field, so that the second field can
> be aligned to a word boundary, supposing that the struct as a whole is
> itself aligned to a word boundary. (By word, I strictly mean something
> that is the same size as a pointer.)
>
> What I mean is that it's useless to not use the whole a length field
> that is not the same size as the pointer field, if you have only those
> two fields. If you have more than two fields, then you can put several
> short fields in the space of a word (2 or 4).
I suppose we could do like Apple or Microsoft and have something like:
typedef struct _string /* pointer to a string */
{
unsigned short s_length; /* length of string in bytes */
unsigned short s_reserved; /* filler */
unsigned char *s_data; /* pointer to 1st byte of string */
} t_string;
but in the long term it would be best to just use long lengths for when
we all have teraflop laptops:
typedef struct _string /* pointer to a string */
{
unsigned long s_length; /* length of string in bytes */
unsigned char *s_data; /* pointer to 1st byte of string */
} t_string;
...but restrict the maximum string length using a #define
MAX_STRING_LENGTH so that pd doesn't bite off more than it can chew...
Martin
More information about the Pd-dev
mailing list