#N canvas 3 53 659 639 12; #X obj 61 34 loadbang; #N canvas 107 123 756 233 load_hcs/folder_list 0; #X obj 357 47 inlet; #X obj 357 155 s pd-\$0-hcs/folder_list; #N canvas 288 225 450 300 \$0-hcs/folder_list 0; #X restore 43 113 pd \$0-hcs/folder_list; #X obj 43 47 inlet; #X obj 43 76 s \$0-fl-in; #X obj 43 149 r \$0-fl-out; #X obj 43 180 outlet; #X msg 357 90 clear \, obj 5 5 receive \$0-fl-in \, obj 5 30 \$1/extra/hcs/folder_list \, obj 5 55 send \$0-fl-out \, connect 0 0 1 0 \, connect 1 0 2 0; #X connect 0 0 7 0; #X connect 3 0 4 0; #X connect 5 0 6 0; #X connect 7 0 1 0; #X restore 164 429 pd load_hcs/folder_list; #X text 304 45 \$0-libdir - directory containing doc and extra; #N canvas 44 204 956 472 list_of_libdirs 0; #X obj 24 9 inlet; #X msg 24 150 libdir cyclone zexy creb cxc iemlib list-abs mapping markex maxlib memento mjlib motex osx pddp pdogg pixeltango pmpd rradical sigpack smlib unauthorized vbap pan freeverb~ hcs jmmmp ext13 ggee iem_anything ekext hexloader disis lyonpotpourri; #X text 70 128 libraries that are loaded at startup in Purr Data; #X text 49 267 Gem is currently excluded because it doesn't run on all platforms; #X obj 24 408 outlet; #X text 510 128 legacy libraries that are not loaded at startup; #X text 511 315 iem_tab: 45 classes that refuse to create without args ; #X text 511 338 tof: param class is too complex to easily give default args; #X text 585 293 Missing:; #X text 84 245 Missing:; #X obj 24 376 list append; #X obj 24 35 trigger bang bang; #X msg 489 150 adaptive arraysize autotune~ bassemu~ bob~ boids bonk~ bsaylor choice comport controctopus fluid~ hid iem16 iem_adaptfilt iem_ambi iem_bin_ambi iem_delay iemgui iemmatrix iem_roomsim iem_spec2 iemxmlrpc jasch_lib K12 la-kitchen loop~ lrshift~ memento-p mjlib moocow moonlib motex mrpeach nsend pan pd~ pdcontainer pd-wavelet pique plugin~ pmpd purepd rjlib rradical rtc sfruit sigmund~ stdout timestretch windowing ; #X connect 0 0 11 0; #X connect 1 0 10 0; #X connect 10 0 4 0; #X connect 11 0 1 0; #X connect 11 1 12 0; #X connect 12 0 10 1; #X restore 132 124 pd list_of_libdirs; #N canvas 245 192 382 392 list_drip 0; #X obj 67 30 inlet; #X obj 102 83 list length; #X obj 102 108 until; #X obj 102 163 f; #X obj 102 188 + 1; #X msg 274 263 set; #X msg 66 307 \$1 \, \$2 \,; #X obj 66 263 list; #X msg 102 263 adddollar \$1 \, addcomma; #X msg 150 126 0; #X obj 66 332 symbol; #X obj 66 357 outlet; #X obj 67 55 trigger anything anything bang; #X obj 144 224 b; #X connect 0 0 12 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 3 1; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 6 0; #X connect 9 0 3 1; #X connect 10 0 11 0; #X connect 12 0 7 0; #X connect 12 1 1 0; #X connect 12 2 5 0; #X connect 12 2 9 0; #X connect 12 2 13 0; #X connect 13 0 7 1; #X restore 132 154 pd list_drip; #N canvas 389 65 533 579 get_extensions 0; #X obj 17 44 inlet; #X obj 17 70 bang; #X msg 17 105 platform; #X obj 17 131 pdinfo; #X obj 49 289 pdinfo; #X msg 49 261 arch; #X msg 17 205 .pd_linux; #X obj 17 156 select linux freebsd darwin win32; #X msg 355 205 .so; #X obj 399 205 print warning: unknown platform; #X obj 17 231 t a b; #X obj 49 315 sel ia32 x64 arm; #X msg 49 352 .l_i386; #X msg 119 352 .l_ia64; #X msg 195 352 .l_arm; #X obj 17 397 list; #X msg 106 205 .pd_darwin .d_fat; #X obj 299 397 list; #X msg 246 205 .dll .m_i386; #X obj 17 460 list append .pd; #X text 131 459 add ".pd" extension for abstractions; #X obj 17 485 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 7 0; #X connect 4 0 11 0; #X connect 5 0 4 0; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 7 1 6 0; #X connect 7 2 16 0; #X connect 7 3 18 0; #X connect 7 4 8 0; #X connect 7 4 9 0; #X connect 8 0 17 0; #X connect 10 0 15 0; #X connect 10 1 5 0; #X connect 11 0 12 0; #X connect 11 1 13 0; #X connect 11 2 14 0; #X connect 12 0 15 1; #X connect 13 0 15 1; #X connect 14 0 15 1; #X connect 15 0 19 0; #X connect 16 0 17 0; #X connect 17 0 19 0; #X connect 18 0 17 0; #X connect 19 0 21 0; #X restore 310 184 pd get_extensions; #X obj 164 275 list; #N canvas 245 192 382 392 list_drip 0; #X obj 67 30 inlet; #X obj 102 83 list length; #X obj 102 108 until; #X obj 102 163 f; #X obj 102 188 + 1; #X msg 274 263 set; #X msg 66 307 \$1 \, \$2 \,; #X obj 66 263 list; #X msg 102 263 adddollar \$1 \, addcomma; #X msg 150 126 0; #X obj 66 332 symbol; #X obj 66 357 outlet; #X obj 67 55 trigger anything anything bang; #X obj 144 224 b; #X connect 0 0 12 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 3 1; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 6 0; #X connect 9 0 3 1; #X connect 10 0 11 0; #X connect 12 0 7 0; #X connect 12 1 1 0; #X connect 12 2 5 0; #X connect 12 2 9 0; #X connect 12 2 13 0; #X connect 13 0 7 1; #X restore 164 304 pd list_drip; #X text 304 65 \$0-current-libdir - current libdir being tested; #X obj 290 288 t a a; #X obj 164 369 pack s s s; #X text 249 369 ext current-libdir libdir; #X msg 164 394 list \$3/extra/\$2/*\$1; #N canvas 314 37 450 472 remove_help_patches 0; #X obj 40 14 inlet; #X obj 126 18 r \$0-ext; #X obj 126 43 sel .pd; #X msg 126 98 1; #X msg 169 98 0; #X obj 169 71 b; #X obj 40 136 list prepend; #X obj 40 161 route 0 1; #X obj 122 251 list fromsymbol; #X obj 122 276 t a a; #X obj 154 304 list length; #X obj 154 329 - 8; #X obj 122 363 list split; #X obj 155 394 list tosymbol; #X obj 155 419 sel -help.pd; #X msg 155 444 0; #X obj 116 485 spigot; #X obj 90 189 t a a b; #X msg 353 448 1; #X obj 40 526 symbol; #X obj 40 551 outlet; #X obj 117 218 symbol; #X connect 0 0 6 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 2 1 5 0; #X connect 3 0 6 1; #X connect 4 0 6 1; #X connect 5 0 4 0; #X connect 6 0 7 0; #X connect 7 0 19 0; #X connect 7 1 17 0; #X connect 8 0 9 0; #X connect 9 0 12 0; #X connect 9 1 10 0; #X connect 10 0 11 0; #X connect 11 0 12 1; #X connect 12 1 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 15 0 16 1; #X connect 16 0 19 0; #X connect 17 0 16 0; #X connect 17 1 21 0; #X connect 17 2 18 0; #X connect 18 0 16 1; #X connect 19 0 20 0; #X connect 21 0 8 0; #X restore 164 453 pd remove_help_patches; #N canvas 0 0 450 300 remove_ext 0; #X obj 28 30 inlet; #X obj 78 150 r \$0-ext; #X obj 78 205 list length; #X obj 28 55 list fromsymbol; #X obj 28 260 list split; #X obj 28 80 t a a; #X obj 60 115 list length; #X obj 60 230 -; #X obj 28 285 list tosymbol; #X obj 28 310 outlet; #X obj 78 175 list fromsymbol; #X connect 0 0 3 0; #X connect 1 0 10 0; #X connect 2 0 7 1; #X connect 3 0 5 0; #X connect 4 0 8 0; #X connect 5 0 4 0; #X connect 5 1 6 0; #X connect 6 0 7 0; #X connect 7 0 4 1; #X connect 8 0 9 0; #X connect 10 0 2 0; #X restore 164 479 pd remove_ext; #N canvas 70 66 589 509 test_load_with_declare 0; #X obj 64 21 inlet; #N canvas 0 0 450 300 \$0-load_declare 0; #X restore 153 319 pd \$0-load_declare; #X obj 153 161 f; #X obj 183 161 + 1; #X obj 153 186 * 30; #X obj 153 216 pack f s; #X obj 153 291 s pd-\$0-load_declare; #X obj 306 77 t b b; #X msg 171 132 0; #X msg 338 246 clear; #X msg 153 246 obj 5 \$1 declare -lib \$2; #X obj 64 56 trigger bang bang anything; #X msg 64 246 clear; #X text 59 354 Load each object by dynamically instantiating a [declare -lib libname]. We must clear the subpatch afterward as well to make sure we don't accidentally start with some loaded libs after editing this patch. Since Pd doesn't have any way to unload a library this works.; #X text 111 21 load a lib; #X obj 306 22 r \$0-current-libdir; #X text 361 49 reset for each libdir; #X connect 0 0 11 0; #X connect 2 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 1; #X connect 4 0 5 0; #X connect 5 0 10 0; #X connect 7 0 8 0; #X connect 7 1 9 0; #X connect 8 0 2 1; #X connect 9 0 6 0; #X connect 10 0 6 0; #X connect 11 0 12 0; #X connect 11 1 2 0; #X connect 11 2 5 1; #X connect 12 0 6 0; #X connect 15 0 7 0; #X restore 164 509 pd test_load_with_declare; #N canvas 464 46 450 650 get-creator-names 0; #X obj 41 22 inlet; #X obj 41 586 outlet; #X obj 141 54 r \$0-last-objectmaker-methodspace-length; #X obj 41 137 -; #X obj 41 107 classinfo objectmaker; #X msg 41 82 methods; #X obj 41 168 until; #X obj 41 209 f; #X obj 84 209 + 1; #X obj 41 244 classinfo objectmaker; #X obj 141 137 t a; #X obj 41 47 bang; #X obj 41 269 t a a; #X obj 210 241 r \$0-libdir; #X obj 210 296 list fromsymbol; #X obj 210 321 list length; #X obj 73 296 list split 1; #X obj 73 321 list fromsymbol; #X obj 73 356 list split; #X obj 179 425 select s; #X msg 179 450 1; #X obj 232 450 b; #X msg 232 475 0; #X obj 41 507 list prepend; #X obj 41 532 route 1; #X obj 41 557 list; #X text 110 532 filter out creators that aren't absolute paths; #X text 110 552 otherwise we get unmanageable namespace clashes; #X obj 210 271 trigger anything anything; #X obj 73 391 list tosymbol; #X connect 0 0 11 0; #X connect 2 0 3 1; #X connect 2 0 10 0; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 7 0 9 0; #X connect 8 0 7 1; #X connect 9 0 12 0; #X connect 10 0 7 1; #X connect 11 0 5 0; #X connect 12 0 23 0; #X connect 12 1 16 0; #X connect 13 0 28 0; #X connect 14 0 15 0; #X connect 15 0 18 1; #X connect 16 0 17 0; #X connect 17 0 18 0; #X connect 18 0 29 0; #X connect 18 2 29 0; #X connect 19 0 20 0; #X connect 19 1 21 0; #X connect 20 0 23 1; #X connect 21 0 22 0; #X connect 22 0 23 1; #X connect 23 0 24 0; #X connect 24 0 25 0; #X connect 25 0 1 0; #X connect 28 0 14 0; #X connect 28 1 19 1; #X connect 29 0 19 0; #X restore 132 543 pd get-creator-names; #N canvas 240 179 450 346 test-object 0; #X obj 26 36 inlet; #X text 72 34 creator_name argtype1 argtype2 etc.; #N canvas 372 37 649 659 right_outlet_for_aliases 0; #X obj 70 25 inlet; #X obj 70 50 t a a; #X obj 102 78 list split 1; #X obj 135 303 t b a; #X msg 135 328 0; #X obj 135 383 b; #X msg 135 408 0; #X msg 195 408 1; #X obj 70 448 list prepend; #X obj 70 473 route 0 1; #X obj 70 558 outlet; #X obj 121 558 outlet; #X obj 135 358 classinfo; #X obj 70 498 list; #X obj 107 498 list; #X text 196 23 Check if we're a lone creator name with no corresponding class name. If so \, we are an alias and should skip any class-based tests; #X obj 102 133 list fromsymbol; #X obj 329 89 r \$0-libdir; #X obj 439 87 r \$0-current-libdir; #X obj 290 140 symbol; #X obj 400 140 symbol; #X obj 102 103 trigger anything bang bang; #X obj 290 165 pack s s; #X msg 290 190 symbol \$1/\$2/; #X obj 290 215 list fromsymbol; #X obj 290 240 list length; #X obj 102 273 list split; #X obj 171 328 list tosymbol; #X connect 0 0 1 0; #X connect 1 0 8 0; #X connect 1 1 2 0; #X connect 2 0 21 0; #X connect 3 0 4 0; #X connect 3 1 27 0; #X connect 4 0 12 0; #X connect 5 0 6 0; #X connect 6 0 8 1; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 13 0; #X connect 9 1 14 0; #X connect 12 0 5 0; #X connect 12 1 7 0; #X connect 13 0 10 0; #X connect 14 0 11 0; #X connect 16 0 26 0; #X connect 17 0 19 1; #X connect 18 0 20 1; #X connect 19 0 22 0; #X connect 20 0 22 1; #X connect 21 0 16 0; #X connect 21 1 19 0; #X connect 21 2 20 0; #X connect 22 0 23 0; #X connect 23 0 24 0; #X connect 24 0 25 0; #X connect 25 0 26 1; #X connect 26 1 3 0; #X connect 27 0 12 1; #X restore 194 79 pd right_outlet_for_aliases; #N canvas 3 25 740 694 load_the_object 0; #X obj 22 13 inlet; #X obj 86 115 list split 1; #N canvas 238 121 613 490 set_args 0; #X obj 36 20 inlet; #N canvas 245 192 382 392 drip 0; #X obj 67 30 inlet; #X obj 102 83 list length; #X obj 102 108 until; #X obj 102 163 f; #X obj 102 188 + 1; #X msg 274 263 set; #X msg 66 307 \$1 \,; #X obj 66 263 list; #X msg 102 263 adddollar \$1 \, addcomma; #X msg 150 126 0; #X obj 66 332 symbol; #X obj 66 357 outlet; #X obj 67 55 trigger anything anything bang; #X obj 144 224 b; #X connect 0 0 12 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 3 1; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 6 0; #X connect 9 0 3 1; #X connect 10 0 11 0; #X connect 12 0 7 0; #X connect 12 1 1 0; #X connect 12 2 5 0; #X connect 12 2 9 0; #X connect 12 2 13 0; #X connect 13 0 7 1; #X restore 139 78 pd drip; #X msg 239 157 add2 \$0-test-array; #X msg 139 158 add2 1e+06; #X msg 518 157 set; #X msg 139 203; #X obj 36 45 trigger bang anything anything; #X obj 139 248 outlet; #X text 359 226 With A_GIMME we have no way to figure out the proper args \, so we just stay blank here and hope the external author made sane defaults that at least allow the object to create with no arguments given., f 22; #X obj 139 103 select A_FLOAT A_SYMBOL A_GIMME A_DEFSYM A_DEFFLOAT ; #X text 358 400 Same with A_DEFSYM and A_DEFFLOAT; #X text 31 307 Unforunately some externals don't have sane defaults-- they require arguments just to instantiate. Here we fill in some dummy arguments in order to continue the tests, f 45; #X msg 388 157 add2; #X obj 518 104 t b b; #X obj 550 248 outlet; #X connect 0 0 6 0; #X connect 1 0 9 0; #X connect 2 0 5 0; #X connect 3 0 5 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 5 0; #X connect 6 1 1 0; #X connect 6 2 13 0; #X connect 9 0 3 0; #X connect 9 1 2 0; #X connect 9 2 12 0; #X connect 9 3 12 0; #X connect 9 4 12 0; #X connect 12 0 5 0; #X connect 13 0 4 0; #X connect 13 1 14 0; #X restore 193 168 pd set_args; #X obj 126 140 route bang; #X obj 86 213 list; #X obj 86 351 s pd-\$0-load_the_object_subpatch; #X obj 86 238 t a b; #X msg 118 264 clear; #X text 216 107 Try to instantiate the object and connect up the primary inlet and outlet; #X msg 54 400 find \$1; #X msg 86 291 obj 5 30 \$@ \, obj 5 100 r \$0-load_canvasinfo_input \, obj 5 130 canvasinfo \, obj 5 160 s \$0-load_canvasinfo_output \, connect 1 0 2 0 \, connect 2 0 3 0; #X obj 54 425 s \$0-load_canvasinfo_input; #X obj 54 450 r \$0-load_canvasinfo_output; #X obj 54 475 list split 1; #X text 261 399 <-- find the object by box text-- it was the first one on the canvas to get created so it will get returned first if there are any duplicate matches; #X text 149 475 <-- filter out any duplicate matches from our "helper" object chain; #X obj 54 500 t b a; #X msg 54 525 class; #X obj 54 550 objectinfo; #X obj 54 575 select text; #X text 140 574 <-- the "text" class is an internal class that essentially represents an object box that currently holds no object. So if we query our object and get "text" here \, it means Pd couldn't load the object. ; #X obj 54 376 trigger anything anything; #N canvas 365 98 450 323 fail 0; #X obj 41 34 inlet; #X obj 112 34 inlet; #X text 153 34 creator name; #X obj 41 98 symbol; #X obj 41 175 s \$0-fail; #X obj 112 59 list split 1; #X msg 41 150 couldn't create object '\$1'; #X connect 0 0 3 0; #X connect 1 0 5 0; #X connect 3 0 6 0; #X connect 5 0 3 1; #X connect 6 0 4 0; #X restore 54 600 pd fail; #X obj 22 625 outlet; #N canvas 436 87 569 401 plain_then_with_libdir_prefix 0; #X obj 35 26 inlet; #X text 128 26 try both the lone creator name and the libdir prefix: e.g. \, foo and libdir/foo; #X text 128 156 we could probably add an absolute path here as well if we want to test that \, too.; #X text 128 66 This extra test was added because it appears miXed/cyclone is doing strange things with the libdir prefixes. For example-- maxtrix~ requires two float args while cyclone/matrix~ just segfaults. There may be other oddities in external libs with regard to libdir prefixes. ; #X obj 88 246 r \$0-current-libdir-name; #X obj 35 281 pack s s; #X obj 35 391 outlet; #X msg 35 306 symbol \$1 \, symbol \$2/\$1; #X obj 35 201 list split 1; #X obj 330 246 t a; #X obj 35 358 list append; #X connect 0 0 8 0; #X connect 4 0 5 1; #X connect 5 0 7 0; #X connect 7 0 10 0; #X connect 8 0 5 0; #X connect 8 1 9 0; #X connect 9 0 10 1; #X connect 10 0 6 0; #X restore 128 57 pd plain_then_with_libdir_prefix; #X obj 22 38 t a a; #X obj 54 89 t a a; #X connect 0 0 25 0; #X connect 1 0 4 0; #X connect 1 1 3 0; #X connect 2 0 4 1; #X connect 2 1 4 1; #X connect 3 0 4 1; #X connect 3 1 2 0; #X connect 4 0 6 0; #X connect 6 0 10 0; #X connect 6 1 7 0; #X connect 7 0 5 0; #X connect 9 0 11 0; #X connect 10 0 5 0; #X connect 12 0 13 0; #X connect 13 0 16 0; #X connect 16 0 17 0; #X connect 16 1 18 1; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 22 0; #X connect 21 0 9 0; #X connect 21 1 22 1; #X connect 25 0 23 0; #X connect 25 1 24 0; #X connect 25 1 26 0; #X connect 26 0 21 0; #X connect 26 1 1 0; #X restore 26 156 pd load_the_object; #N canvas 268 243 450 346 \$0-load_the_object_subpatch 0; #X restore 171 157 pd \$0-load_the_object_subpatch; #X msg 26 241 clear; #X obj 26 266 s pd-\$0-load_the_object_subpatch; #N canvas 99 25 704 622 check_for_namespace_collisions 0; #X obj 42 26 inlet; #X obj 42 51 t a a; #X obj 74 83 list split 1; #X obj 74 215 f; #X obj 114 215 + 1; #X obj 74 149 until; #X obj 74 283 classinfo objectmaker; #X obj 74 321 route bang; #X obj 9 182 bang; #X obj 141 385 select; #X obj 141 349 list split 1; #X obj 74 108 trigger bang bang anything; #X obj 163 149 f 0; #N canvas 337 184 583 424 fail 0; #X obj 106 16 inlet; #X obj 334 56 r \$0-current-libdir-name; #X obj 243 56 r \$0-libdir; #X obj 204 101 symbol; #X obj 270 100 symbol; #X msg 204 161 symbol \$1/extra/\$2; #X obj 204 136 pack s s; #X obj 106 41 t a a b b; #X obj 106 293 s \$0-fail; #X obj 106 66 unpack f s; #X obj 106 213 pack f s s s; #X msg 106 248 \$3: \$2: externdir mismatch: expected \$4 but found another objectmaker method at index \$1; #X connect 0 0 7 0; #X connect 1 0 4 1; #X connect 2 0 3 1; #X connect 2 0 10 2; #X connect 3 0 6 0; #X connect 4 0 6 1; #X connect 5 0 10 3; #X connect 6 0 5 0; #X connect 7 0 9 0; #X connect 7 2 3 0; #X connect 7 3 4 0; #X connect 9 0 10 0; #X connect 9 1 10 1; #X connect 10 0 11 0; #X connect 11 0 8 0; #X restore 141 590 pd fail; #X obj 163 174 trigger anything anything; #X obj 141 420 f; #X obj 181 420 + 1; #X obj 74 250 trigger anything anything; #X obj 141 445 select 1 0; #X obj 228 476 f; #X obj 141 504 f; #X obj 38 568 outlet; #X obj 141 560 pack f s; #X obj 344 337 r \$0-last-objectmaker-methodspace-length; #X obj 141 532 moses; #X text 264 475 Many libraries ship with backup abstractions that have the same name as the binary library. We check for those here-- if the nameclash is in the current library we're testing then we ignore it. ; #X connect 0 0 1 0; #X connect 1 0 21 0; #X connect 1 1 2 0; #X connect 2 0 11 0; #X connect 3 0 4 0; #X connect 3 0 17 0; #X connect 4 0 3 1; #X connect 5 0 3 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 7 1 10 0; #X connect 8 0 5 1; #X connect 9 0 15 0; #X connect 10 0 9 0; #X connect 11 0 5 0; #X connect 11 1 12 0; #X connect 11 2 9 1; #X connect 11 2 22 1; #X connect 12 0 14 0; #X connect 14 0 3 1; #X connect 14 1 15 1; #X connect 15 0 16 0; #X connect 15 0 18 0; #X connect 16 0 15 1; #X connect 17 0 6 0; #X connect 17 1 19 1; #X connect 18 0 20 0; #X connect 18 1 19 0; #X connect 19 0 20 1; #X connect 20 0 24 0; #X connect 22 0 13 0; #X connect 23 0 24 1; #X connect 24 0 22 0; #X restore 194 114 pd check_for_namespace_collisions; #X obj 49 128 print testing; #X obj 49 103 list split 1; #X obj 26 61 t a a b; #X obj 96 69 s \$0-object-test; #X connect 0 0 10 0; #X connect 2 0 7 0; #X connect 2 1 7 0; #X connect 3 0 5 0; #X connect 5 0 6 0; #X connect 9 0 8 0; #X connect 10 0 3 0; #X connect 10 2 11 0; #X restore 132 574 pd test-object; #X obj 164 239 trigger bang anything anything; #X msg 371 263 methods; #X obj 371 288 classinfo objectmaker; #X obj 371 313 s \$0-last-objectmaker-methodspace-length; #X text 304 85 \$0-last-objectmaker-methodspace-length; #X text 304 105 \$0-ext; #N canvas 1 53 554 595 set_\$0-libdir 1; #X obj 49 48 inlet; #X obj 49 317 pdinfo; #X obj 49 78 b; #X msg 49 288 libdir; #X obj 49 567 outlet; #X text 97 48 get the directory where extra/ and doc/ live; #X obj 49 541 trigger anything anything; #X obj 221 567 s \$0-libdir; #X obj 49 131 pdinfo; #X msg 49 106 platform; #X obj 49 156 select darwin; #X msg 49 181 1; #X obj 137 181 b; #X msg 137 206 0; #X obj 49 246 select 0 1; #X text 171 160 Unfortunately Pd on OSX has a bug that causes the; #X text 171 180 libdir to not be normalized-- e.g. \, it can have; #X text 171 200 "foo/../bar" within the path. This breaks our; #X text 171 220 attempt to create objects with absolute paths. So; #X text 171 240 we instead use the Pd executable dir and shave off ; #X text 171 260 the "/bin" at the end...; #X obj 119 317 pdinfo; #X obj 119 342 list fromsymbol; #X obj 119 367 t a a; #X obj 151 398 list length; #X obj 151 423 - 3; #X obj 119 452 list split; #X obj 119 477 list tosymbol; #X text 245 414 <- filter out "/ b i n"; #X msg 119 288 dir; #X connect 0 0 2 0; #X connect 1 0 6 0; #X connect 2 0 9 0; #X connect 3 0 1 0; #X connect 6 0 4 0; #X connect 6 1 7 0; #X connect 8 0 10 0; #X connect 9 0 8 0; #X connect 10 0 11 0; #X connect 10 1 12 0; #X connect 11 0 14 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 3 0; #X connect 14 1 29 0; #X connect 21 0 22 0; #X connect 22 0 23 0; #X connect 23 0 26 0; #X connect 23 1 24 0; #X connect 24 0 25 0; #X connect 25 0 26 1; #X connect 26 0 27 0; #X connect 27 0 6 0; #X connect 29 0 21 0; #X restore 61 66 pd set_\$0-libdir; #N canvas 246 217 382 392 set_\$0-current_libdir 0; #X obj 67 30 inlet; #X obj 67 55 trigger anything anything; #X obj 67 80 outlet; #X obj 202 81 s \$0-current-libdir; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X restore 132 184 pd set_\$0-current_libdir; #N canvas 0 0 450 300 set_\$0-ext 0; #X obj 78 44 inlet; #X obj 78 69 trigger anything anything; #X obj 78 94 outlet; #X obj 250 94 s \$0-ext; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X restore 164 329 pd set_\$0-ext; #N canvas 35 53 672 572 results 0; #X obj 62 25 inlet; #X obj 235 33 r \$0-current-libdir-name; #X obj 146 33 r \$0-fail; #X obj 146 86 list prepend; #X msg 235 58 \$1:; #X obj 146 187 print error; #X text 251 141 add counter; #X obj 156 214 b; #X obj 156 239 f; #X obj 196 239 + 1; #X floatatom 196 316 5 0 0 0 failures - -, f 5; #X obj 63 298 f; #X msg 95 367 gui; #X obj 95 392 pdinfo; #X obj 63 424 list prepend; #X msg 180 459 all tests succeeded!; #X obj 180 484 print info; #X obj 180 364 sel 0 1; #X msg 343 419 1 test failed; #X msg 356 389 \$1 tests failed; #X obj 63 450 route 0; #X obj 63 475 != 0; #X obj 63 525 s pd; #X msg 63 500 quit \$1; #X obj 343 444 print error; #X obj 146 112 list prepend add; #X obj 146 137 list trim; #X obj 146 162 textfile; #X obj 79 90 t b b; #X msg 22 153 rewind; #X obj 22 113 until; #X obj 335 194 bang; #X obj 335 237 f; #X obj 414 157 f; #X obj 414 182 + 1; #X obj 414 125 r \$0-object-test; #X obj 402 292 print total_objects_tested; #X obj 335 345 s \$0-fail; #X obj 63 212 t b b b; #X obj 63 323 t a b a; #X obj 335 262 moses 2405; #X msg 335 320 only counted \$1 objects. Need 2405 to succeed; #X connect 0 0 38 0; #X connect 1 0 4 0; #X connect 2 0 3 0; #X connect 2 0 7 0; #X connect 3 0 25 0; #X connect 4 0 3 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 8 1; #X connect 9 0 10 0; #X connect 9 0 11 1; #X connect 11 0 39 0; #X connect 12 0 13 0; #X connect 13 0 14 1; #X connect 14 0 20 0; #X connect 15 0 16 0; #X connect 17 0 15 0; #X connect 17 1 18 0; #X connect 17 2 19 0; #X connect 18 0 24 0; #X connect 19 0 24 0; #X connect 20 0 21 0; #X connect 21 0 23 0; #X connect 23 0 22 0; #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 5 0; #X connect 27 1 30 1; #X connect 28 0 30 0; #X connect 28 1 29 0; #X connect 29 0 27 0; #X connect 30 0 27 0; #X connect 31 0 32 0; #X connect 32 0 40 0; #X connect 33 0 34 0; #X connect 34 0 33 1; #X connect 34 0 32 1; #X connect 35 0 33 0; #X connect 38 0 11 0; #X connect 38 1 28 0; #X connect 38 2 31 0; #X connect 39 0 14 0; #X connect 39 1 12 0; #X connect 39 2 17 0; #X connect 40 0 41 0; #X connect 40 1 36 0; #X connect 41 0 37 0; #X restore 61 601 pd results; #X obj 132 209 t a a; #X obj 61 94 trigger bang bang bang anything; #X connect 0 0 24 0; #X connect 1 0 13 0; #X connect 3 0 4 0; #X connect 4 0 25 0; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 0 26 0; #X connect 9 0 10 2; #X connect 9 1 1 1; #X connect 10 0 12 0; #X connect 12 0 1 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 16 0 17 0; #X connect 18 0 6 0; #X connect 18 1 10 1; #X connect 18 2 19 0; #X connect 19 0 20 0; #X connect 20 0 21 0; #X connect 24 0 29 0; #X connect 25 0 28 0; #X connect 26 0 10 0; #X connect 28 0 16 0; #X connect 28 1 18 0; #X connect 29 0 27 0; #X connect 29 1 3 0; #X connect 29 2 5 0; #X connect 29 3 9 0;