[PD] c++ objects?

Mathieu Bouchard matju at artengine.ca
Thu Aug 12 20:51:58 CEST 2010

On Thu, 12 Aug 2010, IOhannes m zmoelnig wrote:
> On 2010-08-11 22:57, Mathieu Bouchard wrote:
>> On Wed, 11 Aug 2010, padovani wrote:
>>> I would like to know if there are any Pd objects out there written in
>>> C++...
>> There are three C++ interfaces to Pd that are currently in use :
>>  * GridFlow's
>>  * GEM's
>>  * Flext
> there are more.

I mean generic interfacing tools that make the pd interface more "native" 
to C++. For example, the three above have some system that allows to use 
inheritance and virtual functions (?). But some make more steps to hide 
some long C boilerplate code. For example, GF has a preprocessor that 
allows the C++ code to just get to the point, as all the class_addmethod 
stuff is automated, and even simple data conversions are :

   \decl 2 symbol (string a) {your code goes here}

automatically sets a = std::string($1->s_name); and takes care of 
registering the method name 'symbol' in inlet 2.

> e.g. georg holzmann's "PDContainer" (externals/grh/PDContainer) is 
> written in C++ (it's a wrapper around the C++ STL) and uses it's own 
> interface. georg's interface has no dependencies (apart from c++ and 
> pd), whereas flext, gem and gf need to be installed if you use them 
> (unless you are just cloning the code)

You mean every C++ thing is wrapped using custom plain C code written for 
each separate occasion, no macros, no shortcuts, no actual framework for 
generalising the use of C++ features in relationship with pd. IMHO, it 
just uses <m_pd.h> and nothing else. That's why it has "no dependencies".

But ok, that was not the original question. Well, if you are just looking 
for something that is compiled as C++, there is tclpd, pix_opencv, 
pdp_opencv, ... but they hardly use any C++ features at all. Then there 
are C externals that use a bit of C++, such as pdoctave, and then there 
are externals made with Flext, such as msd and sc4pd.

To find an exhaustive list of them in the pd svn, it's probably sufficient 
to do :

   find externals -iname '*.cpp' -o -iname '*.cc' -o -iname '*.cxx'

and then sort out those that really use C++, from those that use 
essentially C plus one C++ feature out of 1000.

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard, Montréal, Québec. téléphone: +1.514.383.3801

More information about the Pd-list mailing list