[PD-dev] strings

Mathieu Bouchard matju at artengine.ca
Sun Dec 17 07:36:45 CET 2006


On Sat, 16 Dec 2006, Martin Peach wrote:

>> What if strings could be automatically cast to symbols for externals that 
>> would rather have symbols, and vice-versa?
> I have written an external asc2sym that takes lists of bytes and splits them 
> into symbols based on the argument(s) which are characters.
> But it seems important to avoid symbols as much as possible to avoid filling 
> up the symbol table with symbols that are referenced only once..

Yes, but my reason for wanting this, is that all externals currently 
available understand symbols but not strings. So, what if you want to make 
strings as widely used as possible, as easily as possible, and working 
with all externals currently available in Pd?

You make them work as strings when they can, and
You make them work as symbols when they must.

> A string could be considered unused when its length is set to 0.

If you want to use a string as a mutable buffer, then you want to be 
able to have 0-length strings, as a boundary condition: you start with 
nothing and then add to it. You don't want to have to start with 
something just because setting the length to 0 would delete it.

It seems that you are suggesting that the deallocation would be 
user-controlled? Then how do you prevent the user from crashing pd?
If you use a weak-pointer as an intermediate (like t_gpointer or 
t_gfxstub), then you still have to manage reference counts. Whatever you 
do for the user, you have to know more about externals' behaviour than 
what they tell you now, because right now they don't deallocate atoms 
explicitly.

But if strings are going to be deallocated explicitly and there is not 
going to be any checks, why not instead make something that will allow 
users to deallocate symbols. It's about as safe as that and you don't need 
to introduce a string type.

> Memory would need to be dynamically allocated in small blocks.

What do you mean "in small blocks" ?

> The API should return "no method for string" if the external doesn't 
> implement strings.

That's aiming low. Why shouldn't there be any automatic casts between the 
two?

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
| Freelance Digital Arts Engineer, Montréal QC Canada


More information about the Pd-dev mailing list