From 67cb498b618d98fbd13f46491ba4059ba395ad85 Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Sun, 9 Dec 2012 12:22:26 -0500
Subject: [PATCH] reworked how default hub and node now are given context via
 null global symbol s_ to make things more streamlined.

---
 pd/doc/5.reference/preset_hub-help.pd  | 103 +++++++++++++------------
 pd/doc/5.reference/preset_node-help.pd |  86 +++++++++++----------
 pd/src/x_preset.c                      |   9 ++-
 3 files changed, 106 insertions(+), 92 deletions(-)

diff --git a/pd/doc/5.reference/preset_hub-help.pd b/pd/doc/5.reference/preset_hub-help.pd
index 2d2fcf854..eab69bced 100644
--- a/pd/doc/5.reference/preset_hub-help.pd
+++ b/pd/doc/5.reference/preset_hub-help.pd
@@ -1,5 +1,7 @@
 #N canvas 138 24 555 517 10;
-#X obj 183 295 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
+#X obj 109 282 cnv 15 60 39 empty empty empty 20 12 0 14 -261234 -66577
+0;
+#X obj 183 294 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
 0;
 #X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
 14 -228856 -66577 0;
@@ -40,21 +42,16 @@ to conform to the PDDP template for Pd version 0.42.;
 0 15 %node% 1 10 %preset% 1 2.24 nlah 1 %preset% 0 a b c 4 3 2 1 %node%
 3 13 0 0 %preset% 1 1.02 %preset% 0 0.01 %node% 2 20 0 %preset% 1 two
 %preset% 0 zero %node% 1 25 %node% 2 44 0 %node% 1 48 %node% 3 73 0
-0 %node% 2 54 0 %node% 1 20 %preset% 1 99 %preset% 2 23 %preset% 3
-1001 %preset% 0 3 %node% 2 36 1 %preset% 1 problems %preset% 2 skidoo
-%preset% 3 nights %preset% 0 stooges %node% 1 39 %node% 2 45 0;
+0 %node% 2 54 0 %node% 1 21 %preset% 1 99 %preset% 2 23 %preset% 3
+1001 %preset% 0 3 %node% 2 31 1 %preset% 1 problems %preset% 2 skidoo
+%preset% 3 nights %preset% 0 stooges %node% 1 33 %node% 2 39 0 %node%
+1 65;
 #X msg 80 125 store \$1;
 #X msg 80 74 recall \$1;
 #X msg 30 73 purge;
 #X msg 20 51 reset;
 #X msg 80 174 clear \$1;
 #X obj 20 231 print hub_test_says;
-#X obj 188 271 preset_node test;
-#X floatatom 188 300 5 0 0 0 - - -;
-#X msg 197 238 purge;
-#X msg 188 216 reset;
-#X msg 248 237 clearall \$1;
-#X floatatom 248 216 5 0 0 0 - - -;
 #X obj 376 50 cnv 15 159 290 empty empty empty 20 12 0 14 -228856 -66577
 0;
 #X msg 447 139 store \$1;
@@ -68,11 +65,10 @@ to conform to the PDDP template for Pd version 0.42.;
 24 0 %node% 1 26 %node% 3 14 0 3 %preset% 0 -17 %preset% 1 382 %preset%
 2 1234 %node% 1 25 %preset% 0 -4 %preset% 1 54 %preset% 2 -999 %node%
 3 2 0 3 %node% 1 6 %node% 3 1 0 3 %node% 1 5 %node% 1 23 %node% 1 45
-%node% 3 73 0 3 %node% 2 54 2 %node% 1 37 %node% 2 45 2;
+%node% 3 73 0 3 %node% 2 54 2 %node% 1 32 %node% 2 39 2;
 #X obj 386 244 print hub_another_says;
 #X obj 20 268 hub_node_abs;
 #X obj 386 270 preset_node another;
-#X obj 237 300 print middle_node;
 #X obj 188 51 preset_node test;
 #X obj 188 135 list;
 #X msg 226 71 aaa 32 1;
@@ -89,11 +85,10 @@ to conform to the PDDP template for Pd version 0.42.;
 #X connect 1 0 0 0;
 #X connect 2 0 3 0;
 #X connect 3 0 2 0;
-#X restore 119 268 pd sub;
+#X restore 119 292 pd sub;
 #X text 98 418 reset;
 #X text 99 472 anything;
-#X obj 474 3 preset_hub default %hidden% %node% 2 9 1;
-#X obj 430 21 pddp/pddplink http://wiki.puredata.info/en/preset_hub
+#X obj 425 21 pddp/pddplink http://wiki.puredata.info/en/preset_hub
 -text pdpedia: preset_hub;
 #X text 99 376 purge;
 #X text 98 397 recall;
@@ -141,36 +136,48 @@ same canvas as the abstraction:;
 #X text 168 356 - clears preset n for all nodes;
 #X text 171 515 - OPTIONAL context for this preset (defaults to "default")
 ;
-#X connect 13 0 19 0;
-#X connect 14 0 13 0;
-#X connect 15 0 13 0;
-#X connect 16 0 13 0;
-#X connect 17 0 13 0;
-#X connect 18 0 13 0;
-#X connect 20 0 21 0;
-#X connect 20 0 38 0;
-#X connect 21 0 20 0;
-#X connect 22 0 20 0;
-#X connect 23 0 20 0;
-#X connect 24 0 20 0;
-#X connect 25 0 24 0;
-#X connect 27 0 34 0;
-#X connect 28 0 34 0;
-#X connect 29 0 27 0;
-#X connect 30 0 34 0;
-#X connect 31 0 34 0;
-#X connect 32 0 34 0;
-#X connect 33 0 32 0;
-#X connect 34 0 35 0;
-#X connect 37 0 55 0;
-#X connect 39 0 40 0;
-#X connect 40 0 39 0;
-#X connect 40 0 43 0;
-#X connect 41 0 40 0;
-#X connect 42 0 40 0;
-#X connect 44 0 40 0;
-#X connect 55 0 37 0;
-#X connect 56 0 15 0;
-#X connect 57 0 14 0;
-#X connect 58 0 18 0;
-#X connect 59 0 28 0;
+#X obj 479 3 preset_hub %hidden% %hidden%;
+#X obj 189 271 preset_node test;
+#X floatatom 189 299 5 0 0 0 - - -;
+#X msg 198 211 purge;
+#X msg 189 189 reset;
+#X msg 249 210 clearall \$1;
+#X floatatom 249 189 5 0 0 0 - - -;
+#X obj 233 300 print middle_node;
+#X msg 232 244 set another;
+#X msg 311 244 set test;
+#X connect 14 0 20 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 18 0 14 0;
+#X connect 19 0 14 0;
+#X connect 22 0 29 0;
+#X connect 23 0 29 0;
+#X connect 24 0 22 0;
+#X connect 25 0 29 0;
+#X connect 26 0 29 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 0;
+#X connect 29 0 30 0;
+#X connect 32 0 48 0;
+#X connect 33 0 34 0;
+#X connect 34 0 33 0;
+#X connect 34 0 37 0;
+#X connect 35 0 34 0;
+#X connect 36 0 34 0;
+#X connect 38 0 34 0;
+#X connect 48 0 32 0;
+#X connect 49 0 16 0;
+#X connect 50 0 15 0;
+#X connect 51 0 19 0;
+#X connect 52 0 23 0;
+#X connect 65 0 66 0;
+#X connect 65 0 71 0;
+#X connect 66 0 65 0;
+#X connect 67 0 65 0;
+#X connect 68 0 65 0;
+#X connect 69 0 65 0;
+#X connect 70 0 69 0;
+#X connect 72 0 65 0;
+#X connect 73 0 65 0;
diff --git a/pd/doc/5.reference/preset_node-help.pd b/pd/doc/5.reference/preset_node-help.pd
index 6fc792e50..937589d9d 100644
--- a/pd/doc/5.reference/preset_node-help.pd
+++ b/pd/doc/5.reference/preset_node-help.pd
@@ -1,5 +1,7 @@
 #N canvas 438 24 555 517 10;
-#X obj 113 279 cnv 15 60 39 empty empty empty 20 12 0 14 -261234 -66577
+#X obj 180 291 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
+0;
+#X obj 107 279 cnv 15 60 39 empty empty empty 20 12 0 14 -261234 -66577
 0;
 #X obj 0 655 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
 14 -228856 -66577 0;
@@ -43,7 +45,7 @@ to conform to the PDDP template for Pd version 0.42.;
 0 15 %node% 1 10 %preset% 1 2.24 nlah 1 %preset% 0 a b c 4 3 2 1 %node%
 3 13 0 0 %preset% 1 1.02 %preset% 0 0.01 %node% 2 20 0 %preset% 1 two
 %preset% 0 zero %node% 1 27 %node% 2 46 0 %node% 1 48 %node% 3 73 0
-0 %node% 2 54 0 %node% 2 44 1 %node% 1 25 %node% 2 42 1 %node% 1 46
+0 %node% 2 54 0 %node% 2 44 1 %node% 1 26 %node% 2 43 1 %node% 1 46
 %node% 2 52 0;
 #X msg 80 74 store \$1;
 #X msg 80 124 recall \$1;
@@ -54,12 +56,12 @@ to conform to the PDDP template for Pd version 0.42.;
 #X msg 81 174 clear \$1;
 #X floatatom 81 150 5 0 0 0 - - -;
 #X obj 20 231 print hub_test_says;
-#X obj 188 279 preset_node test;
-#X floatatom 188 302 5 0 0 0 - - -;
-#X msg 197 213 purge;
-#X msg 188 191 reset;
-#X msg 248 212 clearall \$1;
-#X floatatom 248 191 5 0 0 0 - - -;
+#X obj 186 267 preset_node test;
+#X floatatom 186 295 5 0 0 0 - - -;
+#X msg 195 213 purge;
+#X msg 186 191 reset;
+#X msg 246 212 clearall \$1;
+#X floatatom 246 191 5 0 0 0 - - -;
 #X obj 376 50 cnv 15 156 279 empty empty empty 20 12 0 14 -233017 -66577
 0;
 #X msg 447 83 store \$1;
@@ -74,12 +76,11 @@ to conform to the PDDP template for Pd version 0.42.;
 24 0 %node% 1 26 %node% 3 14 0 3 %preset% 0 -17 %preset% 1 382 %preset%
 2 1234 %node% 1 25 %preset% 0 -4 %preset% 1 54 %preset% 2 -999 %node%
 3 2 0 3 %node% 1 6 %node% 3 1 0 3 %node% 1 5 %node% 1 23 %node% 1 45
-%node% 3 73 0 3 %node% 2 54 2 %node% 1 43 %node% 2 52 2;
+%node% 3 73 0 3 %node% 2 54 2 %node% 1 44 %node% 2 52 2;
 #X obj 386 244 print hub_another_says;
 #X obj 20 263 hub_node_abs;
-#X obj 386 276 preset_node another;
-#X floatatom 386 298 5 0 0 0 - - -;
-#X obj 227 302 print middle_node;
+#X obj 386 270 preset_node another;
+#X obj 231 295 print middle_node;
 #X obj 185 55 preset_node test;
 #X obj 185 139 list;
 #X msg 223 75 aaa 32 1;
@@ -96,7 +97,7 @@ to conform to the PDDP template for Pd version 0.42.;
 #X connect 1 0 0 0;
 #X connect 2 0 3 0;
 #X connect 3 0 2 0;
-#X restore 123 289 pd sub;
+#X restore 117 289 pd sub;
 #X text 98 366 clearall;
 #X text 99 386 purge;
 #X text 99 502 anything;
@@ -147,40 +148,43 @@ hub);
 ;
 #X text 98 447 set;
 #X text 168 447 - change context (hub) node is paired with;
-#X msg 231 246 set another;
-#X msg 310 246 set test;
-#X connect 15 0 24 0;
-#X connect 16 0 15 0;
-#X connect 17 0 15 0;
+#X msg 229 242 set another;
+#X msg 308 242 set test;
+#X obj 380 293 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
+0;
+#X floatatom 386 298 5 0 0 0 - - -;
+#X connect 16 0 25 0;
+#X connect 17 0 16 0;
 #X connect 18 0 16 0;
 #X connect 19 0 17 0;
-#X connect 20 0 15 0;
-#X connect 21 0 15 0;
-#X connect 22 0 15 0;
-#X connect 23 0 22 0;
-#X connect 25 0 26 0;
-#X connect 25 0 45 0;
-#X connect 26 0 25 0;
-#X connect 27 0 25 0;
-#X connect 28 0 25 0;
-#X connect 29 0 25 0;
-#X connect 30 0 29 0;
-#X connect 32 0 40 0;
-#X connect 33 0 40 0;
-#X connect 34 0 32 0;
+#X connect 20 0 18 0;
+#X connect 21 0 16 0;
+#X connect 22 0 16 0;
+#X connect 23 0 16 0;
+#X connect 24 0 23 0;
+#X connect 26 0 27 0;
+#X connect 26 0 45 0;
+#X connect 27 0 26 0;
+#X connect 28 0 26 0;
+#X connect 29 0 26 0;
+#X connect 30 0 26 0;
+#X connect 31 0 30 0;
+#X connect 33 0 41 0;
+#X connect 34 0 41 0;
 #X connect 35 0 33 0;
-#X connect 36 0 40 0;
-#X connect 37 0 40 0;
-#X connect 38 0 40 0;
-#X connect 39 0 38 0;
-#X connect 40 0 41 0;
-#X connect 43 0 44 0;
-#X connect 44 0 43 0;
+#X connect 36 0 34 0;
+#X connect 37 0 41 0;
+#X connect 38 0 41 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 42 0;
+#X connect 44 0 77 0;
 #X connect 46 0 47 0;
 #X connect 47 0 46 0;
 #X connect 47 0 50 0;
 #X connect 48 0 47 0;
 #X connect 49 0 47 0;
 #X connect 51 0 47 0;
-#X connect 74 0 25 0;
-#X connect 75 0 25 0;
+#X connect 74 0 26 0;
+#X connect 75 0 26 0;
+#X connect 77 0 44 0;
diff --git a/pd/src/x_preset.c b/pd/src/x_preset.c
index 3564b96bf..23a48183c 100644
--- a/pd/src/x_preset.c
+++ b/pd/src/x_preset.c
@@ -547,7 +547,10 @@ static void preset_node_set(t_preset_node *x, t_symbol *s)
 {
 	if(PH_DEBUG) fprintf(stderr,"preset_node_set %s\n", s->s_name);
 
-	x->pn_hub_name = s;
+	if (!strcmp(s->s_name, "default"))
+		x->pn_hub_name = &s_;
+	else
+		x->pn_hub_name = s;
 	
 	if (x->pn_hub) {
 		preset_hub_delete_a_node(x->pn_hub, x);
@@ -573,7 +576,7 @@ static void *preset_node_new(t_symbol *s, int argc, t_atom *argv)
 
 	// read creation arguments and substitute "default" for objects without optional arguments
     if (!(argc > 0 && argv[0].a_type == A_SYMBOL))
-		x->pn_hub_name = gensym("default");
+		x->pn_hub_name = &s_;
 	else
 		x->pn_hub_name = (t_symbol *)atom_getsymbol(&argv[0]);
 
@@ -1165,7 +1168,7 @@ static void *preset_hub_new(t_symbol *s, int argc, t_atom *argv)
 
 	// read creation arguments and substitute "default" for objects without optional arguments
     if (!(argc > 0 && argv[0].a_type == A_SYMBOL))
-		name = gensym("default");
+		name = &s_;
 	else
 		name = (t_symbol *)atom_getsymbol(&argv[0]);
 
-- 
GitLab