[PD] declare vs. namespaces - current best practice
christof.ressi at gmx.at
Tue Jan 2 16:37:20 CET 2018
what do you mean by [declare cyclone]?
in case you mean [declare -stdpath cyclone]:
a) this would only work if cyclone is in the user's stdpath (which you can't know as a library writer)
b) it only adds the cyclone folder to the search path. writing [gate] is a gamble because iemlib could be earlier in the search path (or the single binary library could've been loaded).
Gesendet: Dienstag, 02. Januar 2018 um 15:58 Uhr
Von: "Alexandre Torres Porres" <porres at gmail.com>
An: "Christof Ressi" <christof.ressi at gmx.at>
Cc: "João Pais" <jmmmpais at gmail.com>, pd-list at mail.iem.at
Betreff: Re: [PD] declare vs. namespaces - current best practice
2018-01-02 8:02 GMT-03:00 Christof Ressi <christof.ressi at gmx.at[mailto:christof.ressi at gmx.at]>:Hi, I think in your case you shouldn't need [declare] at all. [declare -stdlib somelib] makes the assumption that 'somelib' is installed in one of Pd's standard paths. This was maybe true for Pd extended where all libraries were in the /extra folder but actually it could be any other folder (which the user added to their search paths).
IMHO, best practice is to explicitly list your dependencies and have the user set them up correctly.
In an abstraction library I would always use them if I can (unfortunately it's not possible with externals which are part of a single binary library). It eliminates the possibility that a wrong abstraction/external is called. My favourite example:
Say that for some weird reason you're using [gate] from cyclone. If a users happens to have iemlib earlier in their search path, all your abstractions will have iemlib's [gate] object instead - which works exactly the other way around! This actually happened to a friend of mine :-D.
won't [declare cyclone] force a priority of it over iemlib? If not, shouldn't it?
now, for related discussions on declare/standard paths, see https://github.com/pure-data/pure-data/pull/205[https://github.com/pure-data/pure-data/pull/205] & https://github.com/pure-data/pure-data/pull/183[https://github.com/pure-data/pure-data/pull/183]
More information about the Pd-list