On 12/10/12 14:10, Jamie Bullock wrote:
Has anyone written a script to parse a .pd files and get its full tree of 
dependencies (externals and abstractions)?

Vaguely started something like this in 2008, attached are some almost-trivial bash scripts etc. Not very robust, but it's a start. Doesn't work recursively yet (so no dependency tree). Feel free to modify/extend/etc, consider it under the same license as Pd itself.


Claude
--
http://mathr.co.uk

Attachment: abstractions.sh
Description: application/shellscript

Attachment: externals.sh
Description: application/shellscript

accumrotate
alpha
ambient
ambientRGB
camera
circle
color
colorRGB
colorSquare
colour
colourRGB
cone
cube
cuboid
curve
curve3d
cylinder
depth
diffuse
diffuseRGB
disk
emission
emissionRGB
fragment_program
Gem
gemframebuffer
GEMglAccum
GEMglActiveTextureARB
GEMglAlphaFunc
GEMglAreTexturesResident
GEMglArrayElement
GEMglBegin
GEMglBindProgramARB
GEMglBindTexture
GEMglBitmap
GEMglBlendEquation
GEMglBlendFunc
GEMglCallList
GEMglClear
GEMglClearAccum
GEMglClearColor
GEMglClearDepth
GEMglClearIndex
GEMglClearStencil
GEMglClipPlane
GEMglColor3b
GEMglColor3bv
GEMglColor3d
GEMglColor3dv
GEMglColor3f
GEMglColor3fv
GEMglColor3i
GEMglColor3iv
GEMglColor3s
GEMglColor3sv
GEMglColor3ub
GEMglColor3ubv
GEMglColor3ui
GEMglColor3uiv
GEMglColor3us
GEMglColor3usv
GEMglColor4b
GEMglColor4bv
GEMglColor4d
GEMglColor4dv
GEMglColor4f
GEMglColor4fv
GEMglColor4i
GEMglColor4iv
GEMglColor4s
GEMglColor4sv
GEMglColor4ub
GEMglColor4ubv
GEMglColor4ui
GEMglColor4uiv
GEMglColor4us
GEMglColor4usv
GEMglColorMask
GEMglColorMaterial
GEMglCopyPixels
GEMglCopyTexImage1D
GEMglCopyTexImage2D
GEMglCopyTexSubImage1D
GEMglCopyTexSubImage2D
GEMglCullFace
GEMglDeleteTextures
GEMglDepthFunc
GEMglDepthMask
GEMglDepthRange
GEMglDisable
GEMglDisableClientState
GEMglDrawArrays
GEMglDrawBuffer
GEMglDrawElements
GEMglEdgeFlag
GEMglEnable
GEMglEnableClientState
GEMglEnd
GEMglEndList
GEMglEvalCoord1d
GEMglEvalCoord1dv
GEMglEvalCoord1f
GEMglEvalCoord1fv
GEMglEvalCoord2d
GEMglEvalCoord2dv
GEMglEvalCoord2f
GEMglEvalCoord2fv
GEMglEvalMesh1
GEMglEvalMesh2
GEMglEvalPoint1
GEMglEvalPoint2
GEMglFeedbackBuffer
GEMglFinish
GEMglFlush
GEMglFogf
GEMglFogfv
GEMglFogi
GEMglFogiv
GEMglFrontFace
GEMglFrustum
GEMglGenLists
GEMglGenProgramsARB
GEMglGenTextures
GEMglGetError
GEMglGetFloatv
GEMglGetMapdv
GEMglGetMapfv
GEMglGetMapiv
GEMglGetPointerv
GEMglGetString
GEMglHint
GEMglIndexd
GEMglIndexdv
GEMglIndexf
GEMglIndexfv
GEMglIndexi
GEMglIndexiv
GEMglIndexMask
GEMglIndexs
GEMglIndexsv
GEMglIndexub
GEMglIndexubv
GEMglInitNames
GEMglIsEnabled
GEMglIsList
GEMglIsTexture
GEMglLightf
GEMglLighti
GEMglLightModelf
GEMglLightModeli
GEMglLineStipple
GEMglLineWidth
GEMglLoadIdentity
GEMglLoadMatrixd
GEMglLoadMatrixf
GEMglLoadName
GEMglLoadTransposeMatrixd
GEMglLoadTransposeMatrixf
GEMglLogicOp
GEMglMap1d
GEMglMap1f
GEMglMap2d
GEMglMap2f
GEMglMapGrid1d
GEMglMapGrid1f
GEMglMapGrid2d
GEMglMapGrid2f
GEMglMaterialf
GEMglMateriali
GEMglMatrixMode
GEMglMultiTexCoord2fARB
GEMglMultMatrixd
GEMglMultMatrixf
GEMglMultTransposeMatrixd
GEMglMultTransposeMatrixf
GEMglNewList
GEMglNormal3b
GEMglNormal3bv
GEMglNormal3d
GEMglNormal3dv
GEMglNormal3f
GEMglNormal3fv
GEMglNormal3i
GEMglNormal3iv
GEMglNormal3s
GEMglNormal3sv
GEMglOrtho
GEMglPassThrough
GEMglPixelStoref
GEMglPixelStorei
GEMglPixelTransferf
GEMglPixelTransferi
GEMglPixelZoom
GEMglPointSize
GEMglPolygonMode
GEMglPolygonOffset
GEMglPopAttrib
GEMglPopClientAttrib
GEMglPopMatrix
GEMglPopName
GEMglPrioritizeTextures
GEMglProgramEnvParameter4dARB
GEMglProgramEnvParameter4fvARB
GEMglProgramLocalParameter4fvARB
GEMglProgramStringARB
GEMglPushAttrib
GEMglPushClientAttrib
GEMglPushMatrix
GEMglPushName
GEMglRasterPos2d
GEMglRasterPos2dv
GEMglRasterPos2f
GEMglRasterPos2fv
GEMglRasterPos2i
GEMglRasterPos2iv
GEMglRasterPos2s
GEMglRasterPos2sv
GEMglRasterPos3d
GEMglRasterPos3dv
GEMglRasterPos3f
GEMglRasterPos3fv
GEMglRasterPos3i
GEMglRasterPos3iv
GEMglRasterPos3s
GEMglRasterPos3sv
GEMglRasterPos4d
GEMglRasterPos4dv
GEMglRasterPos4f
GEMglRasterPos4fv
GEMglRasterPos4i
GEMglRasterPos4iv
GEMglRasterPos4s
GEMglRasterPos4sv
GEMglRectd
GEMglRectf
GEMglRecti
GEMglRects
GEMglRenderMode
GEMglRotated
GEMglRotatef
GEMglScaled
GEMglScalef
GEMglScissor
GEMglSelectBuffer
GEMglShadeModel
GEMglStencilFunc
GEMglStencilMask
GEMglStencilOp
GEMglTexCoord1d
GEMglTexCoord1dv
GEMglTexCoord1f
GEMglTexCoord1fv
GEMglTexCoord1i
GEMglTexCoord1iv
GEMglTexCoord1s
GEMglTexCoord1sv
GEMglTexCoord2d
GEMglTexCoord2dv
GEMglTexCoord2f
GEMglTexCoord2fv
GEMglTexCoord2i
GEMglTexCoord2iv
GEMglTexCoord2s
GEMglTexCoord2sv
GEMglTexCoord3d
GEMglTexCoord3dv
GEMglTexCoord3f
GEMglTexCoord3fv
GEMglTexCoord3i
GEMglTexCoord3iv
GEMglTexCoord3s
GEMglTexCoord3sv
GEMglTexCoord4d
GEMglTexCoord4dv
GEMglTexCoord4f
GEMglTexCoord4fv
GEMglTexCoord4i
GEMglTexCoord4iv
GEMglTexCoord4s
GEMglTexCoord4sv
GEMglTexEnvf
GEMglTexEnvi
GEMglTexGend
GEMglTexGenf
GEMglTexGenfv
GEMglTexGeni
GEMglTexParameterf
GEMglTexParameteri
GEMglTexSubImage1D
GEMglTexSubImage2D
GEMglTranslated
GEMglTranslatef
GEMglUniform1fARB
GEMgluPerspective
GEMglUseProgramObjectARB
GEMglVertex2d
GEMglVertex2dv
GEMglVertex2f
GEMglVertex2fv
GEMglVertex2i
GEMglVertex2iv
GEMglVertex2s
GEMglVertex2sv
GEMglVertex3d
GEMglVertex3dv
GEMglVertex3f
GEMglVertex3fv
GEMglVertex3i
GEMglVertex3iv
GEMglVertex3s
GEMglVertex3sv
GEMglVertex4d
GEMglVertex4dv
GEMglVertex4f
GEMglVertex4fv
GEMglVertex4i
GEMglVertex4iv
GEMglVertex4s
GEMglVertex4sv
GEMglViewport
gemhead
gemkeyboard
gemkeyname
gemlist
gemlist_info
gemlist_matrix
gemmouse
GemSplash
gemwin
GLdefine
glsl_fragment
glsl_program
glsl_vertex
imageVert
light
linear_path
mesh_square
model
multimodel
newWave
ortho
part_color
part_damp
part_draw
part_follow
part_gravity
part_head
part_info
part_killold
part_killslow
part_orbitpoint
part_render
part_sink
part_size
part_source
part_targetcolor
part_targetsize
part_velcone
part_velocity
part_velsphere
part_vertex
pix_2gray
pix_2grey
pix_a_2gray
pix_a_2grey
pix_add
pix_aging
pix_alpha
pix_artoolkit
pix_background
pix_backlight
pix_biquad
pix_bitmask
pix_blob
pix_blur
pix_buf
pix_buffer
pix_buffer_read
pix_buffer_write
pix_chroma_key
pix_clearblock
pix_color
pix_coloralpha
pix_colormatrix
pix_colorreduce
pix_colour
pix_colouralpha
pix_colourmatrix
pix_colourreduce
pix_compare
pix_composite
pix_contrast
pix_convert
pix_convolve
pix_coordinate
pix_crop
pix_curve
pix_data
pix_deinterlace
pix_delay
pix_depot
pix_diff
pix_dot
pix_draw
pix_dump
pix_duotone
pix_emboss
pix_fiducialtrack
pix_film
pix_film
pix_filmNEW
pix_filmQT
pix_filmQT
pix_flip
pix_freeframe
pix_gain
pix_get
pix_gray
pix_grey
pix_halftone
pix_histo
pix_hit
pix_hsv2rgb
pix_image
pix_imageInPlace
pix_info
pix_invert
pix_kaleidoscope
pix_levels
pix_lumaoffset
pix_mask
pix_mean_color
pix_metaimage
pix_mix
pix_motionblur
pix_movement
pix_movement2
pix_movie
pix_movieNEW
pix_multiblob
pix_multiimage
pix_multiply
pix_multitexture
pix_normalize
pix_offset
pix_pix2sig
pix_pix2sig~
pix_posterize
pix_put
pix_puzzle
pix_rds
pix_record
pix_rectangle
pix_refraction
pix_resize
pix_rgb2hsv
pix_rgba
pix_roll
pix_rtx
pix_scanline
pix_separator
pix_set
pix_share_read
pix_share_write
pix_sig2pix
pix_sig2pix~
pix_snap
pix_snap2tex
pix_subtract
pix_takealpha
pix_test
pix_texture
pix_texture2
pix_threshold
pix_threshold_bernsen
pix_tIIR
pix_video
pix_videoNEW
pix_vpaint
pix_write
pix_yuv
pix_zoom
polygon
polygon_smooth
pqtorusknots
primTri
rectangle
render_trigger
ripple
rotate
rotateXYZ
rubber
scale
scaleXYZ
scopeXYZ
scopeXYZ~
separator
shearXY
shearXZ
shearYX
shearYZ
shearZX
shearZY
shininess
slideSquares
specular
specularRGB
sphere
sphere3d
spline_path
spot_light
square
teapot
text2d
text3d
textextruded
textoutline
torus
translate
translateXYZ
triangle
tube
vertex_add
vertex_combine
vertex_draw
vertex_grid
vertex_info
vertex_model
vertex_mul
vertex_offset
vertex_program
vertex_quad
vertex_scale
vertex_set
vertex_tabread
world_light

Attachment: internals.sh
Description: application/shellscript

Attachment: objs.sh
Description: application/shellscript

<
<<
<=
==
>
>=
>>
|
||
-
-~
!=
/
/~
*
*~
&
&&
%
+
+~
abs
adc~
append
array
atan
atan2
b
bag
bang
bang~
bendin
bendout
bindlist
biquad~
block~
bng
bp~
canvas
catch~
change
classes
classmaker
clip
clip~
cnv
cos
cos~
cpole~
cputime
ctlin
ctlout
czero~
czero_rev~
dac~
dbtopow
dbtopow~
dbtorms
dbtorms~
declare
del
delay
delread~
delwrite~
div
drawcurve
drawnumber
drawpolygon
drawsymbol
element
env~
exp
f
fft~
filledcurve
filledpolygon
float
framp~
fswap
ftom
ftom~
gatom
get
getsize
gfxstub
guiconnect
hdl
hip~
hradio
hsl
hslider
i
ifft~
inlet
inlet~
int
key
keyname
keyup
line
line~
list
list append
list inlet
list length
list prepend
list split
list trim
loadbang
log
lop~
makefilename
makenote
max
max~
message
messresponder
metro
midiclkin
midiin
midiout
midirealtimein
min
min~
mod
moses
mtof
mtof~
my_canvas
my_numbox
namecanvas
nbx
netreceive
netsend
noise~
notein
noteout
objectmaker
openpanel
osc~
outlet
outlet~
pack
page
pd
pgmin
pgmout
phasor~
pipe
plot
pointer
poly
polytouchin
polytouchout
pow
powtodb
powtodb~
print
print~
q8_rsqrt~
q8_sqrt~
qlist
r
r~
radiobut
radiobutton
random
rdb
readsf~
realtime
receive
receive~
rfft~
rifft~
rmstodb
rmstodb~
route
rpole~
rsqrt~
rzero~
rzero_rev~
s
s~
samphold~
samplerate~
savepanel
scalar
sel
select
send
send~
serial
set
setsize
sig~
sin
snapshot~
soundfiler
spigot
sqrt
sqrt~
stripnote
struct
sublist
swap
switch~
symbol
sysexin
t
table
tabosc4~
tabplay~
tabread
tabread~
tabread4
tabread4~
tabreceive~
tabsend~
tabwrite
tabwrite~
tan
template
text
textfile
tgl
threshold~
throw~
timer
toggle
touchin
touchout
trigger
unpack
until
v
value
vcf~
vd~
vdl
vline~
vradio
vsl
vslider
vsnapshot~
vu
wrap~
writesf~
--- pd-0.41-4/src/s_loader.c.orig	2008-05-13 10:09:24.000000000 +0100
+++ pd-0.41-4/src/s_loader.c	2008-05-13 10:41:55.000000000 +0100
@@ -235,8 +235,10 @@
     int dspstate = canvas_suspend_dsp();
     int ok = 0;
     loader_queue_t *q;
+    if (sys_verbose) post("loader: BEGIN(%s)", classname);
     for(q = &loaders; q; q = q->next)
         if (ok = q->loader(canvas, classname)) break;
+    if (sys_verbose) post("loader: END(%s)", classname);
     canvas_resume_dsp(dspstate);
     return ok;
 }
--- pd-0.41-4/src/m_class.c.orig	2008-05-13 10:35:13.000000000 +0100
+++ pd-0.41-4/src/m_class.c	2008-05-13 10:38:56.000000000 +0100
@@ -219,6 +219,7 @@
 #if 0 
     post("class: %s", c->c_name->s_name);
 #endif
+    if (sys_verbose) post("class_new(%s)", c->c_name->s_name);
     return (c);
 }
 
@@ -249,6 +250,7 @@
         *vp = va_arg(ap, t_atomtype);
     } 
     va_end(ap);
+    if (sys_verbose) post("class_addcreator(%s)", s->s_name);
     class_addmethod(pd_objectmaker, (t_method)newmethod, s,
         vec[0], vec[1], vec[2], vec[3], vec[4], vec[5]);
 }
Some little scripts for info extraction from Pd patches.


Make a list of internal objects:

 ./internals.sh ~/src/pd-0.41-4 >pd-0.41-4.txt

Get a list of objects used by a patch:

./objs.sh <mypatch.pd >mypatch.txt

Get a list of externals used by a patch:

./objs.sh <mypatch.pd | ./externals.sh pd-0.41-4.txt

Ignore abstractions found in a directory:

./objs.sh <patch/my.pd | ./abstractions.sh patch/


Ride the pipeline:

cat *.pd | ./objs.sh | ./externals.sh pd-0.41-4.txt | ./externals.sh Gem.txt | 
./abstractions.sh ./
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to