Index: doc/uC++toCFA/uC++toCFA.tex
===================================================================
--- doc/uC++toCFA/uC++toCFA.tex	(revision 489d3ba602f6e02e57ae61a5328cf048be74914a)
+++ doc/uC++toCFA/uC++toCFA.tex	(revision e255902b6c478f509fbc1f45806a5de70f2dfb35)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Wed Nov 13 18:09:58 2024
-%% Update Count     : 6207
+%% Last Modified On : Fri Nov 15 09:55:34 2024
+%% Update Count     : 6249
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -357,4 +357,51 @@
 
 
+\section{Constructor / Destructor}
+
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
+\begin{uC++}
+
+struct S {
+	int i, j;
+
+	@S@( int i, int j ) { S::i = i; S::j = j; }
+	@~S@() {}
+};
+S s1 = { 1, 2 };
+
+S * s2 = new S{ 1, 2 };
+delete s2;
+s2 = new S{ 1, 2 };
+delete s2;
+S & s3 = *new S{ 1, 2 };
+delete &s3;
+s3 = *new S{ 1, 2 };
+delete &s3;
+\end{uC++}
+&
+\begin{cfa}
+#include <stdlib.hfa> // new (malloc)
+struct S {
+	int i, j;
+};
+void @?{}@( S & s, int i, int j ) { s.i = i; s.j = j; }
+void @^?{}@( S & s ) { s.i = 0; s.j = 0; }	
+
+S s1 = { 1, 2 };
+// cannot use 0/1 (zero_t/one_t) with "new"
+S * s2 = new( 1@n@, 2 ); // n => (int) 
+delete( s2 );
+s2 = new( 1n, 2 );
+delete( s2 );
+S & s3 = *new( 1n, 2 );
+delete( s3 );
+&s3 = &*new( 1n, 2 );
+delete( s3 );
+\end{cfa}
+\end{tabular}
+\end{cquote}
+
+
 \section{\texorpdfstring{Structures (object-oriented \protect\vs routine style)}{Structures (object-oriented vs. routine style)}}
 
@@ -381,35 +428,4 @@
 setter( @s,@ 3 );  // normal calls
 int k = getter( @s@ );
-\end{cfa}
-\end{tabular}
-\end{cquote}
-
-
-\section{Constructor / Destructor}
-
-\begin{cquote}
-\begin{tabular}{@{}l|l@{}}
-\begin{uC++}
-
-struct S {
-	int i, j;
-	@S@( int i, int j ) { S::i = i; S::j = j; }
-	@~S@() {}
-};
-S s = { 1, 2 }, s2{ 1, 2 };
-S * s3 = new S{ 1, 2 };
-S & s4 = *new S{ 1, 2 };
-\end{uC++}
-&
-\begin{cfa}
-#include <stdlib.hfa> // malloc
-struct S {
-	int i, j;
-};
-void @?{}( S & s@, int i, int j ) { s.[i, j] = [i, j]; }
-void @^?{}( S & s@ ) {}
-S s = { 1, 2 }, s2{ 1, 2 };
-S * s3 = &(*malloc()){ 1, 2 };
-S & s4 = (*malloc()){ 1, 2 }; // fails
 \end{cfa}
 \end{tabular}
@@ -734,4 +750,5 @@
 		: @public uBarrier@ { // inheritance
 	int total;
+	void @last@() { cout << total << endl; }
   public:
 	Barrier( unsigned int group ) :
@@ -740,9 +757,9 @@
 	}
 	void @block@( int subtotal ) {
+
+
 		total += subtotal;
 		@uBarrier::block();@
 	}
-  private:
-	void @last@() { cout << total << endl; }
 };
 enum { N = 3 };
@@ -770,4 +787,5 @@
 	@barrier b;@			// containment
 	int total;
+
 };
 void ?{}( Barrier & B, unsigned int group ) with(B) {
@@ -776,10 +794,10 @@
 }
 unsigned int block( Barrier & B, int subtotal ) with(B) {
-	@mutex( b )@ {	total += subtotal; } // use barrier's mutual exclusion
 	void @last@() { sout | total; }	// called by Gth arriving thread
-	@block@( b, last ); // wait for barrier trigger
-}
-
-
+	@mutex( b )@ {  // use barrier's mutual exclusion
+		total += subtotal;
+		return @block@( b, last ); // wait for barrier trigger
+	}
+}
 enum { N = 3 };
 Barrier b{ N };
@@ -871,4 +889,5 @@
 \enlargethispage{1000pt}
 
+\noindent
 External Scheduling
 \begin{cquote}
