Index: src/examples/Attributes.c
===================================================================
--- src/examples/Attributes.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Attributes.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,92 @@
+// I Compile-time resolution
+// =========================
+// 
+// 1. an isolated name, where the argument is implicitly determined by the result context
+// 
+//    @max
+// 
+// 2. a direct application to a manifest otype
+// 
+//    @max( int )
+// 
+// 3. constraining a otype variable; the application is implicitly performed at the call site as in (2)
+// 
+//    forall( otype T | { T @max( T ); } ) T x( T t );
+// 
+// 
+// II Run-time resolution
+// ======================
+// 
+// 1. an indirect reference, where the argument is implicitly determined by the result context
+// 
+//    attr_var = &@max;
+//    x = (*attr_var);
+// 
+// 2. an indirect application to a manifest otype
+// 
+//    (*attr_var)( int )
+// 
+// 3. a direct application to a otype variable
+// 
+//    @max( T )
+// 
+// Under what circumstances can this be done at compile/link time?
+// 
+// 
+// III Declaration forms
+// =====================
+// 
+// 1. monomorphic with implicit argument
+// 
+//    int @max;
+// 
+// 2. monomorphic with explicit argument
+// 
+//    int @max( int );
+// 
+// 3. polymorphic
+// 
+//    forall( otype T | constraint( T ) ) int @attr( T );
+
+int @max = 3;
+
+int main() {
+    int x;
+    otype @otype(otype t);									// compiler intrinsic
+    otype @widest(otype t);
+    @otype(x) *y;										// gcc: otypeof(x) *y;
+//    const @widest(double) *w;							// gcc: const otypeof(x) *w;
+//    * @otype(3 + 4) z;									// cfa declaration syntax
+    y = @max;		
+    z = @max(x) + @size(int);
+    y = @min(3 + 4);
+    if ( @const(x) ) { }
+    if ( @volatile(y) ) { }
+    if ( @extern(y) ) { }
+    if ( @static(y) ) { }
+    @max;
+}
+
+int @foo(int) {
+    return 7;
+}
+
+int @voon;
+double @voon;
+
+int @bort(int);
+int @bort(double);
+
+void g( int );
+
+void f() {
+	float x;
+	double x;
+	@bort(x);
+	@bort(int);
+	g( @voon );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/Initialization.c
===================================================================
--- src/examples/Initialization.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Initialization.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,41 @@
+// Cforall extensions
+
+int * x11 = 0, x12 = 0;
+int * x21 = 0, x22 = 0;
+
+[20] int y1, y2 = { 1, 2, 3 };
+
+// designators
+
+struct {
+	[int] w;
+} a = { .w : [2] };
+
+struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 3, [1].a[0] : 2 };
+
+struct {
+	int f1, f2, f3;
+	struct { int g1, g2, g3; } f4[4];
+} v7 = {
+  .f1 : 4,
+  f2 : 3,
+  .f4[2] : {
+	  .g1 : 3,
+	  g3 : 0,
+	},
+  .f4[3].g3 : 7,
+};
+
+struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
+struct quintet { int v, w, x, y, z;};
+
+int main() {
+	struct point p1 = { x : 3 };
+	struct point p2 = { 3, 4 };
+	struct point p3 = { .[x,z] : 5, y : { .[y3,y1] : 6, 17 } };
+	struct point p4 = { w : 5, 4 };
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/Initialization2.c
===================================================================
--- src/examples/Initialization2.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Initialization2.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,15 @@
+int a = 3;
+struct { int x; int y; } z = { 3, 7 };      /* OK */
+struct { int x; int y; } z1 = { .[x,y]:3 }; /* OK */
+struct { int x; int y; } z2 = { y:3, x:4 }; /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:3, y:{y1:4, y2:5} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { y:{y2:9, y1:8}, x:7 };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:7, {y2:9, y1:8} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { 3, {4, 5} };   /* OK */
+//struct { int x; struct { int y1; int y2; } } z3 = {4, {5,6}};
+//struct { int x; struct { int y1; int y2; } y; } z4 = { y:{4,5}, a:3 };
+//struct { int x; struct { int y1; int y2; } y; } z5 = { a:3, {4,5}};
+//int x[20] = { [10]: 4 };
+struct t { int a, b; };
+struct t x = { b:4, a:3 };
+struct { int x; int y; } z6= {5,6,4};  /* (should be an) error */
Index: src/examples/Makefile.am
===================================================================
--- src/examples/Makefile.am	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/Makefile.am	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -6,5 +6,5 @@
 ## file "LICENCE" distributed with Cforall.
 ##
-## Makefile.am -- 
+## Makefile.am --
 ##
 ## Author           : Peter A. Buhr
@@ -19,5 +19,6 @@
 CC = @CFA_BINDIR@/cfa
 
-noinst_PROGRAMS = fstream_test vector_test # build but do not install
+noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
 fstream_test_SOURCES = fstream_test.c
 vector_test_SOURCES = vector_int.c array.c vector_test.c
+avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
Index: src/examples/Makefile.example
===================================================================
--- src/examples/Makefile.example	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Makefile.example	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,42 @@
+CFA ?= ../driver/cfa-cpp
+CFAOPT ?= -a
+OUTPUT ?= Output
+EXPECT ?= Expect
+OUTPUTDIR ?= ${OUTPUT}${CFAOPT}
+EXPECTDIR ?= ${EXPECT}${CFAOPT}
+EXAMPLES = ${wildcard *.c}
+OUTPUTS = ${addprefix ${OUTPUTDIR}/,${EXAMPLES:.c=.txt}}
+
+#.SILENT :
+
+all :
+	+for opt in -a -e -f -r -s -v ; do \
+	    make test CFAOPT=$${opt} ; \
+	done ; \
+	rm -f core
+
+test : ${OUTPUTS} ${OUTPUTDIR}/report
+
+${OUTPUTDIR}/%.txt : %.c ${CFA} Makefile
+	-${CFA} -n ${CFAOPT} $< > $@ 2>&1
+
+${OUTPUTDIR}/report : ${OUTPUTS} ${EXPECTDIR}
+	rm -f $@
+	echo "===== regression test using cfa-cpp flag ${CFAOPT} ====="
+	@for i in ${OUTPUTS} ; do \
+	     echo "---"`basename $$i`"---" | tee -a $@; \
+	     diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
+	done
+
+${OUTPUTS} : | ${OUTPUTDIR}		# order only prerequisite
+
+${OUTPUTDIR} :
+	mkdir -p $@
+
+# remove the expected results directories to generate new ones from the current output
+
+${EXPECTDIR} : | ${OUTPUTS}		# new Expected results ?
+	cp -pr ${OUTPUTDIR} $@
+
+clean :
+	rm -rf ${OUTPUT}-* core
Index: src/examples/Makefile.in
===================================================================
--- src/examples/Makefile.in	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/Makefile.in	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -36,5 +36,6 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
+noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
+	avl_test$(EXEEXT)
 subdir = src/examples
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -48,4 +49,9 @@
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
+am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
+	avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
+	avl-private.$(OBJEXT)
+avl_test_OBJECTS = $(am_avl_test_OBJECTS)
+avl_test_LDADD = $(LDADD)
 am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
 fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
@@ -59,10 +65,27 @@
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
-DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
+	$(vector_test_SOURCES)
+DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
+	$(vector_test_SOURCES)
 ETAGS = etags
 CTAGS = ctags
@@ -71,4 +94,5 @@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -78,4 +102,5 @@
 CC = @CFA_BINDIR@/cfa
 CCDEPMODE = @CCDEPMODE@
+CFA_BACKEND_CC = @CFA_BACKEND_CC@
 CFA_BINDIR = @CFA_BINDIR@
 CFA_INCDIR = @CFA_INCDIR@
@@ -98,5 +123,4 @@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-GCC_PATH = @GCC_PATH@
 GREP = @GREP@
 INSTALL = @INSTALL@
@@ -176,4 +200,5 @@
 fstream_test_SOURCES = fstream_test.c
 vector_test_SOURCES = vector_int.c array.c vector_test.c
+avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
 all: all-am
 
@@ -213,10 +238,13 @@
 clean-noinstPROGRAMS:
 	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES) 
+	@rm -f avl_test$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
 fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 
 	@rm -f fstream_test$(EXEEXT)
-	$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
 vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 
 	@rm -f vector_test$(EXEEXT)
-	$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
 
 mostlyclean-compile:
@@ -227,4 +255,11 @@
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
@@ -232,16 +267,114 @@
 
 .c.o:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+avl_test.o: avltree/avl_test.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.o -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
+
+avl_test.obj: avltree/avl_test.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl_test.obj -MD -MP -MF $(DEPDIR)/avl_test.Tpo -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl_test.obj `if test -f 'avltree/avl_test.c'; then $(CYGPATH_W) 'avltree/avl_test.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl_test.c'; fi`
+
+avl0.o: avltree/avl0.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.o -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
+
+avl0.obj: avltree/avl0.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl0.obj -MD -MP -MF $(DEPDIR)/avl0.Tpo -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
+
+avl1.o: avltree/avl1.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.o -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
+
+avl1.obj: avltree/avl1.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl1.obj -MD -MP -MF $(DEPDIR)/avl1.Tpo -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
+
+avl2.o: avltree/avl2.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.o -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
+
+avl2.obj: avltree/avl2.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl2.obj -MD -MP -MF $(DEPDIR)/avl2.Tpo -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
+
+avl3.o: avltree/avl3.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.o -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
+
+avl3.obj: avltree/avl3.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl3.obj -MD -MP -MF $(DEPDIR)/avl3.Tpo -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
+
+avl4.o: avltree/avl4.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.o -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
+
+avl4.obj: avltree/avl4.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl4.obj -MD -MP -MF $(DEPDIR)/avl4.Tpo -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
+
+avl-private.o: avltree/avl-private.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.o -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
+
+avl-private.obj: avltree/avl-private.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avl-private.obj -MD -MP -MF $(DEPDIR)/avl-private.Tpo -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avl-private.obj `if test -f 'avltree/avl-private.c'; then $(CYGPATH_W) 'avltree/avl-private.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl-private.c'; fi`
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
Index: src/examples/Members.c
===================================================================
--- src/examples/Members.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Members.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,72 @@
+char ?=?( char*, char );
+int ?=?( int*, int );
+float ?=?( float*, float );
+forall( dtype DT ) DT * ?=?( DT**, DT* );
+forall(otype T) lvalue T *?( T* );
+char *__builtin_memcpy();
+
+void a( char );
+void b( int );
+void c( int* );
+void d( float* );
+
+struct a_struct {
+	int a;
+	char a;
+	float a;
+};
+
+union b_struct {
+	int *a;
+	char *a;
+	float *a;
+};
+
+void f() {
+	struct a_struct the_struct;
+	union b_struct the_struct;
+  
+	a( the_struct.a );
+	b( the_struct.a );
+	c( the_struct.a );
+	d( the_struct.a );
+}
+
+struct c_struct {
+	int;
+	char;
+	float;
+};
+
+union d_struct {
+	int*;
+	char*;
+	float*;
+};
+
+void g() {
+	unsigned short x;
+	struct c_struct x;
+	union d_struct x;
+  
+	a( x );	// the 'a' and 'b' calls resolve to the ushort
+	b( x );	// it's debatable whether this is good
+	c( x );
+	d( x );
+}
+
+// make sure that forward declarations work
+
+struct forward;
+
+struct forward *q;
+
+struct forward { int y; };
+
+void h() {
+	q->y;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/Misc.c
===================================================================
--- src/examples/Misc.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Misc.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,19 @@
+// interesting corner cases
+
+int a;
+int b;
+float b;
+
+void g( int );
+void g( unsigned );
+
+void f( void ) {
+	g( (a, b) );
+	g( (a, a, b) );
+	g( sizeof a );
+	g( sizeof( int ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/MiscError.c
===================================================================
--- src/examples/MiscError.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/MiscError.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,16 @@
+int a;
+int b;
+float b;
+
+void g( int );
+
+void f( void ) {
+	g( (b, a) );
+	g( (b, a, b) );
+	g( (a, b, b) );
+	sizeof b;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/Rank2.c
===================================================================
--- src/examples/Rank2.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Rank2.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,20 @@
+int ?=?( int *, int );
+forall(dtype DT) DT * ?=?( DT **, DT * );
+
+void a() {
+	forall( otype T ) void f( T );
+	void g( forall( otype U ) void p( U ) );
+	g( f );
+}
+
+void g() {
+	void h( int *null );
+	forall( otype T ) T id( T );
+	forall( dtype T ) T *0;
+	int 0;
+	h( id( id( id( 0 ) ) ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/Tuple.c
===================================================================
--- src/examples/Tuple.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/Tuple.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,70 @@
+int f( int, int );
+int g( int, int, int );
+static [ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
+
+struct inner {
+	int f2, f3;
+};
+
+struct outer {
+	int f1;
+	struct inner i;
+	double f4;
+} s, *sp;
+
+const volatile [ int, int ] t1;
+static const [ int, const int ] t2;
+const static [ int, const int ] t3;
+
+[ int rc ] printf( * char fmt, ... );
+int printf( char *fmt, ... );
+
+[ short x, unsigned y ] f1( int w ) {
+	[ y, x ] = [ x, y ] = [ w, 23 ];
+}
+
+[ [ int, char, long, int ] r ] g1() {
+	short x, p;
+	unsigned int y;
+	[ int, int ] z;
+
+	[ x, y, z ] = [ p, f( 17 ), 3 ];
+	[ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17 ), 3 ]);
+	r = [ x, y, z ];
+}
+
+[ int rc ] main( int argc, ** char argv ) {
+	int a, b, c, d;
+	struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
+	f( [ 3,5 ] );
+	g( [ 3,5 ], 3 );
+	f( t1 );
+	g( t1, 3 );
+
+	[ , , , ];						/* empty tuple */
+	[ 3, 5 ];
+	[ a, b ] = 3;
+	[ a, b ] = [ 4.6 ];
+	[ a, b ] = [ c, d ] = [ 3, 5 ];
+	[ a, b, [ c ] ] = [ 2,[ a, b ] ];
+	[ a, b ] = 3 > 4 ? [ b, 6 ] : [ 7, 8 ];
+
+	t1 = [ a, b ];
+	t1 = t2 = [ a, b ];
+	[ a, b ] = [ c, d ] = d += c += 1;
+	[ a, b ] = [ c, d ] = t1;
+	[ a, b ] = t1 = [ c, d ];
+	[ a, b ] = t1 = t2 = [ c, d ];
+	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
+
+	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
+	s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
+	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
+	sp->[ f4,f1 ] = sp->[ f1, f4 ];
+	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
+	rc = 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/examples/abs.c
===================================================================
--- src/examples/abs.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// abs.c -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Thu Jan 28 18:26:16 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 15:07:26 2016
-// Update Count     : 51
-//
-
-#include <fstream>
-#include <stdlib>										// abs
-
-int main( void ) {
-	char ch = -65;
-	sout | "char\t\t\t"					| ch     | "\tabs " | abs( ch ) | endl;
-	sout | "signed int\t\t"				| -65    | "\tabs" | abs( -65 ) | endl;
-	sout | "signed long int\t\t" 		| -65l   | "\tabs" | abs( -65l ) | endl;
-	sout | "signed long long int\t"		| -65ll  | "\tabs" | abs( -65ll ) | endl;
-	sout | "float\t\t\t" 				| -65.0f | "\tabs" | abs( -65.0f ) | endl;
-	sout | "double\t\t\t"				| -65.0  | "\tabs" | abs( -65.0 ) | endl;
-	sout | "long double\t\t"			| -65.0l | "\tabs" | abs( -65.0l ) | endl;
-	sout | "float _Complex\t\t"			| -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF ) | endl;
-	sout | "double _Complex\t\t"		| -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD ) | endl;
-	sout | "long double _Complex\t"		| -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa abs.c" //
-// End: //
Index: src/examples/abstype.c
===================================================================
--- src/examples/abstype.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/abstype.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -10,9 +10,9 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:10:01 2015
-// Update Count     : 4
+// Last Modified On : Tue Jun 14 14:27:48 2016
+// Update Count     : 9
 //
 
-type T | { T x( T ); };
+otype T | { T x( T ); };
 
 T y( T t ) {
@@ -21,10 +21,10 @@
 }
 
-forall(type T) lvalue T	*?( T* );
-int ?++( int *);
-int ?=?( int*, int );
-forall(dtype DT) DT* ?=?( DT **, DT* );
+forall( otype T ) lvalue T *?( T * );
+int ?++( int * );
+int ?=?( int *, int );
+forall( dtype DT ) DT * ?=?( DT **, DT * );
 
-type U = int*;
+otype U = int *;
 
 U x( U u ) {
Index: src/examples/alloc.c
===================================================================
--- src/examples/alloc.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/alloc.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -11,8 +11,12 @@
 // Created On       : Wed Feb  3 07:56:22 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 17 11:43:23 2016
-// Update Count     : 40
+// Last Modified On : Fri Mar 11 17:42:08 2016
+// Update Count     : 59
 // 
 
+forall( otype T ) T * malloc( char fill );
+forall( dtype T ) T *?=?( T **, void * );
+void *malloc( unsigned long int );
+#if 0
 #include <fstream>
 #include <stdlib>
@@ -25,10 +29,14 @@
 int * bar( int * p, int c ) { return p; }
 int * baz( int * p, int c ) { return p; }
+#endif
 
 int main( void ) {
+#if 0
     size_t size = 10;
     int * p;
     struct S { int x; double y; } * s;
+#endif
 
+#if 0
     p = malloc( sizeof(*p) );							// C malloc, type unsafe
 	printf( "here1\n" );
@@ -37,5 +45,10 @@
 	printf( "here2\n" );
     free( p );
-    p = malloc( (char)'\0' );									// CFA malloc, type safe
+#endif
+//    int * p;
+//    p = malloc( (char)'\0' );									// CFA malloc, type safe
+    (int *)malloc( (char)'\0' );									// CFA malloc, type safe
+    (void *)malloc( (char)'\0' );									// CFA malloc, type safe
+#if 0
 	printf( "here3\n" );
     p = malloc( p, 1000 );								// CFA remalloc, type safe
@@ -60,5 +73,5 @@
 	printf( "here9\n" );
     free( p );
-#if 0
+
     float * fp = malloc() + 1;
     fprintf( stderr, "%p %p\n", fp, fp - 1 );
Index: src/examples/array.c
===================================================================
--- src/examples/array.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,41 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// array.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:13:52 2016
-// Update Count     : 3
-//
-
-#include "array.h"
-
-/// forall( otype array_type, elt_type | bounded_array( array_type, elt_type ) )
-/// [ array_iterator begin, array_iterator end ]
-/// get_iterators( array_type array )
-/// {
-///   begin = 0;
-///   end = last( array );
-/// }
-
-// The first element is always at index 0.
-forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type * begin( array_type array ) {
-	return &array[ 0 ];
-}
-
-// The end iterator should point one past the last element.
-forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type * end( array_type array ) {
-	return &array[ last( array ) ] + 1;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa array.c" //
-// End: //
Index: src/examples/array.h
===================================================================
--- src/examples/array.h	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,53 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// array.h -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:13:35 2016
-// Update Count     : 5
-//
-
-#ifndef ARRAY_H
-#define ARRAY_H
-
-//#include <iterator>
-
-// An array has contiguous elements accessible in any order using integer indicies. The first
-// element has index 0.
-trait array( otype array_type, otype elt_type ) {
-	lvalue elt_type ?[?]( array_type, int );
-};
-
-// A bounded array is an array that carries its maximum index with it.
-trait bounded_array( otype array_type, otype elt_type | array( array_type, elt_type ) ) {
-	int last( array_type );
-};
-
-// implement iterator_for
-
-typedef int array_iterator;
-
-/// forall( otype array_type, elt_type | bounded_array( array_type, elt_type ) )
-/// [ array_iterator begin, array_iterator end ] get_iterators( array_type );
-
-
-// A bounded array can be iterated over by using a pointer to the element type. These functions
-// return iterators corresponding to the first element and the one-past-the-end element, STL-style.
-forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type *begin( array_type );
-
-forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type *end( array_type );
-
-#endif // ARRAY_H
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa array.c" //
-// End: //
Index: src/examples/assert.c
===================================================================
--- src/examples/assert.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,23 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// assert.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:10:43 2015
-// Update Count     : 2
-//
-
-void f() {
-	(1) ? (void)(0) : (void)(0);
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa assert.c" //
-// End: //
Index: src/examples/ato.c
===================================================================
--- src/examples/ato.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//                               -*- Mode: C -*- 
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// ato.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Thu Feb  4 08:10:57 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 29 17:57:35 2016
-// Update Count     : 44
-// 
-
-#include <fstream>
-#include <stdlib>										// ato, strto
-extern "C" {
-#include <stdio.h>
-#include <float.h>
-}
-
-int main( void ) {
-	int i = ato( "-123" );
-	sout | i | "-123" | endl;
-	unsigned int ui = ato( "123" );
-	sout | ui | "123" | endl;
-	long int li = ato( "-123" );
-	sout | li | "-123" | endl;
-	unsigned long int uli = ato( "123" );
-	sout | uli | "123" | endl;
-	long long int lli = ato( "-123" );
-	sout | lli | "-123" | endl;
-	unsigned long long int ulli = ato( "123" );
-	sout | ulli | "123" | endl;
-	float f = ato( "-123.456" );
-	sout | f | "-123.456" | endl;
-	double d = ato( "-123.4567890123456" );
-	sout | d | "-123.4567890123456" | endl;
-	long double ld = ato( "-123.45678901234567890123456789" );
-	sout | ld | "-123.45678901234567890123456789" | endl;
-	float _Complex fc = ato( "-123.456-123.456i" );
-	sout | fc | "-123.456-123.456i" | endl;
-	double _Complex dc = ato( "-123.4567890123456+123.4567890123456i" );
-	sout | dc | "-123.4567890123456+123.4567890123456i" | endl;
-	long double _Complex ldc = ato( "123.45678901234567890123456789-123.45678901234567890123456789i" );
-	sout | ldc | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl;
-	long double _Complex ldc2 = ato( "123.45678901234-123.4567890i" );
-	sout | ldc2 | "123.45678901234-123.4567890i" | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa ato.c" //
-// End: //
Index: src/examples/constants.c
===================================================================
--- src/examples/constants.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// constants.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 11 16:27:38 2016
-// Update Count     : 81
-//
-
-int foo() {
-	1_234_Ul;
-	-0_177;
-	017_777_777_777;
-	037_777_777_777;
-	0x_7f_FF_ff_FF;
-	0x_ff_FF_ff_FF;
-	2_147_483_647;
-	4_294_967_295;
-	4_294_967_296;
-	4_294_967_296U;
-	0_777_777_777_777_777_777_777;
-	01_777_777_777_777_777_777_777;
-	0;
-	0L;
-	0LL;
-	1;
-	1L;
-	1LL;
-	10;
-	10L;
-	10LL;
-	2U;
-	2UL;
-	2ULL;
-	2LU;
-	2LLU;
-	0x_7f_FF_ff_FF_ff_FF_ff_FF;
-	0x_ff_FF_ff_FF_ff_FF_ff_FF;
-	9_223_372_036_854_775_807;
-	18_446_744_073_709_551_615UL;
-	3.141_59f;
-	3.14159;
-	12.123_333_E_27L;
-	0X_1.ff_ff_ff_ff_ff_fff_P_1023;
-	'\0';
-	'\1_2_3';
-	L'\x_ff_ee';
-	L_"\x_ff_ee";
-	L"a_b\r\vyc\u_00_40  x_y_z\xff_AA";
-	L_"a_b\r\vyc\u_00_40\
-  x_y_z\xff_AA";
-	"abc" "def" "ghi";
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa constants.c" //
-// End: //
Index: src/examples/control_structures.c
===================================================================
--- src/examples/control_structures.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// control_structures.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan  4 11:30:30 2016
-// Update Count     : 29
-//
-
-int main( void ) {
-	L1: {
-		L2:	switch ( 3_333_333 ) {						// underscores in constant
-		  case 1,2,3:									// CFA
-		  case 4~8:										// CFA
-		  case 9 ... 10:								// gcc, must have spaces
-				L3: for ( ;; ) {
-					L4: for ( ;; ) {
-						break L1;						// labelled break
-						break L2;
-						break L3;
-						break L4;
-						//continue L1;					// error: not enclosing loop
-						//continue L2;					// error: not enclosing loop
-						continue L3;
-						continue L4;
-					} // for
-				} // for
-				break;
-			default:
-				break L1;
-		} // switch
-		3;
-		int i, j;
-		choose ( 7 ) {
-		  case 1,2,3:
-			i = 3;
-			4;
-			fallthru;
-		  case 4,5,6:
-			j = 3;
-		  default: ;
-		} // choose
-	} // block
-
-#if 0
-	try {
-		int i = 3;
-	} catch( int ) {
-	} catch( double ) {
-	} catch( ... ) {
-	} finally {
-	} // try
-#endif
-
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa control_structures.c" //
-// End: //
Index: src/examples/ctxts.c
===================================================================
--- src/examples/ctxts.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// ctxts.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:10:21 2016
-// Update Count     : 3
-//
-
-trait has_f( type T ) {
-	T f( T );
-};
-
-trait has_g( type U | has_f( U ) ) {
-	U g( U );
-};
-
-forall( type V | has_g( V ) ) void h( V );
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa ctxts.c" //
-// End: //
Index: src/examples/esskaykay.c
===================================================================
--- src/examples/esskaykay.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// esskaykay.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:11:45 2015
-// Update Count     : 2
-//
-
-// forall (type A, type B, type C) C ess (C (*f) (A,B), B (*g) (A), A x) { return f(x,g(x)); }
-forall (type A, type B, type C) C ess (C (*(*f)(A))(B), B (*g)(A), A x) { return f(x)(g(x)); }
-
-// forall (type A, type B) A kay (A a, B b) { return a; }
-forall (type A, type B) A (*kay(A a))(B b);
-
-// Now is the following function well-typed, or not?
-
-forall (type A) A esskaykay (A x) { ess (kay, kay, x); }
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa esskaykay.c" //
-// End: //
Index: src/examples/fstream_test.c
===================================================================
--- src/examples/fstream_test.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,36 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fstream_test.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Mar  6 20:58:29 2016
-// Update Count     : 54
-//
-
-#include <fstream>
-
-int main( void ) {
-	int nombre;
-	sout | "Entrez un nombre, s'il vous plaît:" | endl;
-	sin  | &nombre;
-	sout | "Vous avez entré" | nombre | "stocké à l'adresse" | &nombre | endl;
-	sout | "nombre" | nombre | "est"
-		 | (nombre > 0 ? "plus grand que" : nombre == 0 ? "égal à" : "moins de")
-		 | "zéro" | endl;
-
-	sout | "Entrez trois nombres, s'il vous plaît: " | endl;
-	int i, j, k;
-	sin  | &i | &j | &k;
-	sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fstream_test.c" //
-// End: //
Index: src/examples/includes.c
===================================================================
--- src/examples/includes.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/includes.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 23:28:02 2016
-// Update Count     : 328
+// Last Modified On : Wed Apr 13 22:30:02 2016
+// Update Count     : 370
 //
 
@@ -24,14 +24,15 @@
 #if 1
 #define _GNU_SOURCE
-#include <aio.h>
-#include <a.out.h>
-#include <aliases.h>
-#include <alloca.h>
-#include <ansidecl.h>
-#include <ar.h>
-#include <argp.h>
+//#include <aio.h>
+//#include <a.out.h>
+//#include <aliases.h>
+//#include <alloca.h>
+//#include <ansidecl.h>
+//#include <ar.h>
+//#include <argp.h>
 #include <argz.h>
-#include <assert.h>
+//#include <assert.h>
 #include <bfd.h>
+#if 0
 #include <bfdlink.h>
 #include <byteswap.h>
@@ -56,11 +57,10 @@
 #include <err.h>
 #include <errno.h>
-#if 0
 #include <error.h>
-#endif
 #include <eti.h>
 #include <evdns.h>
 #include <event.h>
 #include <evhttp.h>
+#endif
 #if 0
 #include <evrpc.h>
@@ -129,5 +129,6 @@
 
 //#define _GNU_SOURCE
-#include <error.h>
+#include <bfd.h>
+//#include <error.h>
 
 #endif // 0
Index: src/examples/io.c
===================================================================
--- src/examples/io.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//                               -*- Mode: C -*- 
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// io.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Mar  2 16:56:02 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr  6 14:58:27 2016
-// Update Count     : 15
-// 
-
-#include <fstream>
-
-int main() {
-	char c;														// basic types
-	short int si;
-	unsigned short int usi;
-	int i;
-	unsigned int ui;
-	long int li;
-	unsigned long int uli;
-	long long int lli;
-	unsigned long long int ulli;
-	float f;
-	double d;
-	long double ld;
-	float _Complex fc;
-	double _Complex dc;
-	long double _Complex ldc;
-	char s1[10], s2[10];
-
-	ifstream in;												// create / open file
-	open( &in, "input.data", "r" );
-
-	&in | &c													// character
-		| &si | &usi | &i | &ui | &li | &uli | &lli | &ulli		// integral
-		| &f | &d | &ld											// floating point
-		| &fc | &dc | &ldc										// floating-point complex
-		| cstr( s1 ) | cstr( s2, 10 );							// C string, length unchecked and checked
-
-	sout | c | ' ' | endl										// character
-		 | si | usi | i | ui | li | uli | lli | ulli | endl		// integral
-		 | f | d | ld | endl									// floating point
-		 | fc | dc | ldc | endl;								// complex
-	sout | endl;
-	sout | f | "" | d | "" | ld | endl							// floating point without separator
-		 | sepDisable | fc | dc | ldc | sepEnable | endl		// complex without separator
-		 | sepOn | s1 | sepOff | s2 | endl						// local separator removal
-		 | s1 | "" | s2 | endl;									// C string withou separator
-	sout | endl;
-
-	sepSet( sout, ", $" );										// change separator, maximum of 15 characters
-	sout | f | d | ld | endl									// floating point without separator
-		 | fc | dc | ldc | endl									// complex without separator
-		 | s1 | s2 | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa io.c" //
-// End: //
Index: src/examples/io.data
===================================================================
--- src/examples/io.data	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,1 +1,0 @@
-A 1 2 3 4 5 6 7 8 1.1 1.2 1.3 1.1+2.3 1.1-2.3 1.1-2.3 abc xyz
Index: src/examples/limits.c
===================================================================
--- src/examples/limits.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,101 +1,0 @@
-#include <limits>
-
-int main() {
-// Integral Constants
-
-	short int m = MIN;
-	int m = MIN;
-	long int m = MIN;
-	long long int m = MIN;
-
-	short int M = MAX;
-	unsigned short int M = MAX;
-	int M = MAX;
-	unsigned int M = MAX;
-	long int M = MAX;
-	unsigned long int M = MAX;
-	long long int M = MAX;
-	unsigned long long int M = MAX;
-
-// Floating-Point Constants
-
-	float pi = PI;
-	float pi_2 = PI_2;
-	float pi_4 = PI_4;
-	float _1_pi = _1_PI;
-	float _2_pi = _2_PI;
-	float _2_sqrt_pi = _2_SQRT_PI;
-
-	double pi = PI;
-	double pi_2 = PI_2;
-	double pi_4 = PI_4;
-	double _1_pi = _1_PI;
-	double _2_pi = _2_PI;
-	double _2_SQRT_pi = _2_SQRT_PI;
-
-	long double pi = PI;
-	long double pi_2 = PI_2;
-	long double pi_4 = PI_4;
-	long double _1_pi = _1_PI;
-	long double _2_pi = _2_PI;
-	long double _2_sqrt_pi = _2_SQRT_PI;
-
-	_Complex pi = PI;
-	_Complex pi_2 = PI_2;
-	_Complex pi_4 = PI_4;
-	_Complex _1_pi = _1_PI;
-	_Complex _2_pi = _2_PI;
-	_Complex _2_sqrt_pi = _2_SQRT_PI;
-
-	long _Complex pi = PI;
-	long _Complex pi_2 = PI_2;
-	long _Complex pi_4 = PI_4;
-	long _Complex _1_pi = _1_PI;
-	long _Complex _2_pi = _2_PI;
-	long _Complex _2_sqrt_pi = _2_SQRT_PI;
-
-	float e = E;
-	float log2_e = LOG2_E;
-	float log10_e = LOG10_E;
-	float ln_2 = LN_2;
-	float ln_10 = LN_10;
-	float sqrt_2 = SQRT_2;
-	float _1_sqrt_2 = _1_SQRT_2;
-
-	double e = E;
-	double log2_e = LOG2_E;
-	double log10_e = LOG10_E;
-	double ln_2 = LN_2;
-	double ln_10 = LN_10;
-	double sqrt_2 = SQRT_2;
-	double _1_sqrt_2 = _1_SQRT_2;
-
-	long double e = E;
-	long double log2_e = LOG2_E;
-	long double log10_e = LOG10_E;
-	long double ln_2 = LN_2;
-	long double ln_10 = LN_10;
-	long double sqrt_2 = SQRT_2;
-	long double _1_sqrt_2 = _1_SQRT_2;
-
-	_Complex e = E;
-	_Complex log2_e = LOG2_E;
-	_Complex log10_e = LOG10_E;
-	_Complex ln_2 = LN_2;
-	_Complex ln_10 = LN_10;
-	_Complex sqrt_2 = SQRT_2;
-	_Complex _1_sqrt_2 = _1_SQRT_2;
-
-	long _Complex e = E;
-	long _Complex log2_e = LOG2_E;
-	long _Complex log10_e = LOG10_E;
-	long _Complex ln_2 = LN_2;
-	long _Complex ln_10 = LN_10;
-	long _Complex sqrt_2 = SQRT_2;
-	long _Complex _1_sqrt_2 = _1_SQRT_2;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa limits.c" //
-// End: //
Index: src/examples/minmax.c
===================================================================
--- src/examples/minmax.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,52 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// minmax.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 29 23:45:16 2016
-// Update Count     : 49
-//
-
-#include <fstream>
-#include <stdlib>										// min, max
-
-int main( void ) {
-	// char does not have less or greater than.
-	int ?<?( char op1, char op2 ) { return (int)op1 < (int)op2; }
-	int ?>?( char op1, char op2 ) { return (int)op1 > (int)op2; }
-
-	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl;
-	sout | "signed int\t\t"				| 4 | 3 | "\tmin" | min( 4, 3 ) | endl;
-	sout | "unsigned int\t\t"			| 4u | 3u | "\tmin" | min( 4u, 3u ) | endl;
-	sout | "signed long int\t\t" 		| 4l | 3l | "\tmin" | min( 4l, 3l ) | endl;
-	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;
-	sout | "signed long long int\t"		| 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;
-	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;
-	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;
-	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;
-	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;
-
-	sout | endl;
-
-	sout | "char\t\t\t"					| 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl;
-	sout | "signed int\t\t"				| 4 | 3 | "\tmax" | max( 4, 3 ) | endl;
-	sout | "unsigned int\t\t"			| 4u | 3u | "\tmax" | max( 4u, 3u ) | endl;
-	sout | "signed long int\t\t" 		| 4l | 3l | "\tmax" | max( 4l, 3l ) | endl;
-	sout | "unsigned long int\t" 		| 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;
-	sout | "signed long long int\t"		| 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;
-	sout | "unsigned long long int\t"	| 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;
-	sout | "float\t\t\t" 				| 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;
-	sout | "double\t\t\t"				| 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;
-	sout | "long double\t\t"			| 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa minmax.c" //
-// End: //
Index: src/examples/quoted_keyword.c
===================================================================
--- src/examples/quoted_keyword.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,38 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// quoted_keyword.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 17 12:19:45 2016
-// Update Count     : 9
-//
-
-#include <fstream>
-
-// test quoted keyword usage
-int `catch` = 10;
-
-struct {
-	int `type`;
-	int `struct`;
-} st = { 10, 10 };
-
-typedef int `forall`;
-`forall` `throw` = 10;
-
-int main() {
-	sout | `catch` + st.`type` + st.`struct` + `throw` | endl;
-}
-
-#include <math.h>	// has field name "type"
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa quoted_keyword.c" //
-// End: //
Index: src/examples/rational.c
===================================================================
--- src/examples/rational.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,93 +1,0 @@
-//                               -*- Mode: C -*- 
-// 
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// rational.c -- test rational number package
-// 
-// Author           : Peter A. Buhr
-// Created On       : Mon Mar 28 08:43:12 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  8 11:27:48 2016
-// Update Count     : 21
-// 
-
-#include <limits>
-#include <rational>
-#include <fstream>
-
-int main() {
-	Rational a, b, c;
-	sout | "constructor" | endl;
-	a = rational( 3 );
-	b = rational( 4 );
-	c = rational();
-	sout | a | b | c | endl;
-	a = rational( 4, 8 );
-	b = rational( 5, 7 );
-	sout | a | b | endl;
-	a = rational( -2, -3 );
-	b = rational( 3, -2 );
-	sout | a | b | endl;
-	a = rational( -2, 3 );
-	b = rational( 3, 2 );
-	sout | a | b | endl;
-
-	sout | "logical" | endl;
-	a = rational( -2 );
-	b = rational( -3, 2 );
-	sout | a | b | endl;
-	sout | a == 1 | endl;
-	sout | a != b | endl;
-	sout | a <  b | endl;
-	sout | a <= b | endl;
-	sout | a >  b | endl;
-	sout | a >= b | endl;
-
-	sout | "arithmetic" | endl;
-	sout | a | b | endl;
-	sout | a + b | endl;
-	sout | a - b | endl;
-	sout | a * b | endl;
-	sout | a / b | endl;
-
-	sout | "conversion" | endl;
-	a = rational( 3, 4 );
-	sout | widen( a ) | endl;
-	a = rational( 1, 7 );
-	sout | widen( a ) | endl;
-	a = rational( 355, 113 );
-	sout | widen( a ) | endl;
-	sout | narrow( 0.75, 4 ) | endl;
-	sout | narrow( 0.14285714285714, 16 ) | endl;
-	sout | narrow( 3.14159265358979, 256 ) | endl;
-
-	Rational x, y;
-	x = rational( 1, 2 );
-	y = rational( 2 );
-	sout | x - y | endl;
-	sout | x > y | endl;
-	sout | x | numerator( x, 2 ) | x | endl;
-	sout | y | denominator( y, -2 ) | y | endl;
-
-	Rational z;
-	z = rational( 0, 5 );
-	sout | z | endl;
-
-	sout | x | numerator( x, 0 ) | x | endl;
-
-	x = rational( 1, MAX ) + rational( 1, MAX );
-	sout | x | endl;
-	x = rational( 3, MAX ) + rational( 2, MAX );
-	sout | x | endl;
-
-	sin | &a | &b;
-	sout | a | b | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa rational.c" //
-// End: //
Index: src/examples/runTests.sh
===================================================================
--- src/examples/runTests.sh	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,59 +1,0 @@
-#!/bin/bash
-
-##############################################################################
-#
-# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-#
-# The contents of this file are covered under the licence agreement in the
-# file "LICENCE" distributed with Cforall.
-#
-# Runs integration tests for cfa-cc.
-#
-# Output of test run will be copied into $logfile (default: tests/log.txt).
-# Build failures for tests will be placed in tests/$test.make.txt, incorrect
-# output in tests/$test.run.txt.
-#
-# Author           : Aaron B. Moss
-# Created On       : Mon Nov 23 14:19:00 2015
-# Last Modified By : Aaron B. Moss
-# Last Modified On : Mon Nov 23 14:19:00 2015
-# Update Count     : 1
-#
-##############################################################################
-
-# list of tests to run;
-# Should be a make target for each test that generates an executable in the
-# current directory named the same; should also be an input file
-# tests/$test.in.txt and expected output tests/$test.out.txt
-tests="vector_test"
-
-# log file for test output;
-# reset at the beginning of each run
-logfile=tests/log.txt
-touch $logfile && rm $logfile
-
-# clean existing build artifacts before run
-make clean > /dev/null 2>&1
-
-for test in $tests; do
-	echo -n "    $test" | tee -a $logfile
-	
-	# build, skipping to next test on error
-	if ! make $test > tests/$test.make.txt 2>&1; then
-		echo -e "\tFAILED with build error:" | tee -a $logfile
-		cat tests/$test.make.txt | tee -a $logfile
-		continue
-	fi
-	rm tests/$test.make.txt
-
-	# run, testing against expected output
-	./$test < tests/$test.in.txt > tests/$test.run.txt 2>&1
-	if ! diff tests/$test.out.txt tests/$test.run.txt > tests/$test.diff.txt; then
-		echo -e "\tFAILED with output mismatch:" | tee -a $logfile
-		cat tests/$test.diff.txt | tee -a $logfile
-		continue
-	fi
-	rm tests/$test.run.txt tests/$test.diff.txt ./$test
-
-	echo -e "\tPASSED" | tee -a $logfile
-done
Index: src/examples/sum.c
===================================================================
--- src/examples/sum.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ src/examples/sum.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -5,11 +5,12 @@
 // file "LICENCE" distributed with Cforall.
 //
-// sum.c -- 
+// sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
+//    necessary to disambiguate overloaded variable names.
 //
 // Author           : Peter A. Buhr
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar  4 15:06:47 2016
-// Update Count     : 196
+// Last Modified On : Thu May 26 09:25:42 2016
+// Update Count     : 201
 //
 
@@ -48,5 +49,5 @@
 	} // for
 	sout | "sum from" | low | "to" | High | "is"
-		 | (int)sum( size, a ) | "" | ", check" | (int)s | endl;
+		 | (int)sum( size, a ) | ", check" | (int)s | endl;
 
 	int s = 0, a[size], v = low;
@@ -56,5 +57,5 @@
 	} // for
 	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (int *)a ) | "" | ", check" | (int)s | endl;
+		 | sum( size, (int *)a ) | ", check" | (int)s | endl;
 
 	float s = 0.0, a[size], v = low / 10.0;
@@ -64,5 +65,5 @@
 	} // for
 	sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
-		 | sum( size, (float *)a ) | "" | ", check" | (float)s | endl;
+		 | sum( size, (float *)a ) | ", check" | (float)s | endl;
 
 	double s = 0, a[size], v = low / 10.0;
@@ -72,8 +73,8 @@
 	} // for
 	sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
-		 | sum( size, (double *)a ) | "" | ", check" | (double)s | endl;
+		 | sum( size, (double *)a ) | ", check" | (double)s | endl;
 
 	struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 };
-	S ?+?( S t1, S t2 ) { S s = { t1.i + t2.i, t1.j + t2.j }; return s; }
+	S ?+?( S t1, S t2 ) { return (S){ t1.i + t2.i, t1.j + t2.j }; }
 	S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
 	S ++?( S *t ) { *t += 1; return *t; }
@@ -87,5 +88,5 @@
 	} // for
 	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (S *)a ) | "" | ", check" | (S)s | endl;
+		 | sum( size, (S *)a ) | ", check" | (S)s | endl;
 } // main
 
Index: src/examples/swap.c
===================================================================
--- src/examples/swap.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// swap.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 16:15:11 2016
-// Update Count     : 65
-//
-
-#include <fstream>
-#include <stdlib>										// swap
-
-int main( void ) {
-	char c1 = 'a', c2 = 'b';
-	sout | "char\t\t\t" | c1 | ' ' | c2 | "\t\t\tswap ";
-	swap( &c1, &c2 );
-	sout | '\t' | c1 | ' ' | c2 | endl;
-
-	signed int i1 = -1, i2 = -2;
-	sout | "signed int\t\t" | i1 | ' ' | i2 | "\t\t\tswap ";
-	swap( &i1, &i2 );
-	sout | '\t' | i1 | ' ' | i2 | endl;
-
-	unsigned int ui1 = 1, ui2 = 2;
-	sout | "unsigned int\t\t" | ui1 | ' ' | ui2 | "\t\t\tswap ";
-	swap( &ui1, &ui2 );
-	sout | '\t' | ui1 | ' ' | ui2 | endl;
-
-	signed long int li1 = -1, li2 = -2;
-	sout | "signed long int\t\t" | li1 | ' ' | li2 | "\t\t\tswap ";
-	swap( &li1, &li2 );
-	sout | '\t' | li1 | ' ' | li2 | endl;
-
-	unsigned long int uli1 = 1, uli2 = 2;
-	sout | "unsigned long int\t" | uli1 | ' ' | uli2 | "\t\t\tswap ";
-	swap( &uli1, &uli2 );
-	sout | '\t' | uli1 | ' ' | uli2 | endl;
-
-	signed long long int lli1 = -1, lli2 = -2;
-	sout | "signed long long int\t" | lli1 | ' ' | lli2 | "\t\t\tswap ";
-	swap( &lli1, &lli2 );
-	sout | '\t' | lli1 | ' ' | lli2 | endl;
-
-	unsigned long long int ulli1 = 1, ulli2 = 2;
-	sout | "unsigned long long int\t" | ulli1 | ' ' | ulli2 | "\t\t\tswap ";
-	swap( &ulli1, &ulli2 );
-	sout | '\t' | ulli1 | ' ' | ulli2 | endl;
-
-	float f1 = 1.5, f2 = 2.5;
-	sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\tswap ";
-	swap( &f1, &f2 );
-	sout | '\t' | f1 | ' ' | f2 | endl;
-
-	double d1 = 1.5, d2 = 2.5;
-	sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\tswap ";
-	swap( &d1, &d2 );
-	sout | '\t' | d1 | ' ' | d2 | endl;
-
-	long double ld1 = 1.5, ld2 = 2.5;
-	sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\tswap ";
-	swap( &ld1, &ld2 );
-	sout | '\t' | ld1 | ' ' | ld2 | endl;
-
-	float _Complex fc1 = 1.5f+1.5if, fc2 = 2.5f+2.5if;
-	sout | "float _Complex\t\t" | fc1 | ' ' | fc2 | "\tswap ";
-	swap( &fc1, &fc2 );
-	sout | '\t' | fc1 | ' ' | fc2 | endl;
-
-	double _Complex dc1 = 1.5d+1.5id, dc2 = 2.5d+2.5id;
-	sout | "double _Complex\t\t" | dc1 | ' ' | dc2 | "\tswap ";
-	swap( &dc1, &dc2 );
-	sout | '\t' | dc1 | ' ' | dc2 | endl;
-
-	long double _Complex ldc1 = 1.5d+1.5il, ldc2 = 2.5d+2.5il;
-	sout | "long double _Complex\t" | ldc1 | ' ' | ldc2 | "\tswap ";
-	swap( &ldc1, &ldc2 );
-	sout | '\t' | ldc1 | ' ' | ldc2 | endl;
-
-	struct S { int i, j; } s1 = { 1, 2 }, s2 = { 2, 1 };
-	ofstream * ?|?( ofstream * os, S s ) { return os | s.i | ' ' | s.j; }
-	sout | "struct S\t\t" | s1 | "  " | s2 | "\t\tswap ";
-	swap( &s1, &s2 );
-	sout | '\t' | s1 | "  " | s2 | endl;
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa swap.c" //
-// End: //
Index: src/examples/tests/vector_test.in.txt
===================================================================
--- src/examples/tests/vector_test.in.txt	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1 2 3 4 5
Index: src/examples/tests/vector_test.out.txt
===================================================================
--- src/examples/tests/vector_test.out.txt	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,5 +1,0 @@
-enter N elements and C-d on a separate line:
-Array elements:
-1 2 3 4 5
-Array elements reversed:
-5 4 3 2 1
Index: src/examples/vector_int.c
===================================================================
--- src/examples/vector_int.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,70 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector_int.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:38:05 2015
-// Update Count     : 3
-//
-
-#include "vector_int.h"
-extern "C" {
-#include <stdlib.h>
-#include <assert.h>
-}
-
-#define DEFAULT_CAPACITY 20
-
-vector_int vector_int_allocate() {
-	return vector_int_allocate( DEFAULT_CAPACITY );
-}
-
-vector_int vector_int_allocate( int reserve ) {
-	vector_int new_vector;
-	new_vector.last = -1;
-	new_vector.capacity = reserve;
-	new_vector.data = malloc( sizeof( int ) * reserve );
-	return new_vector;
-}
-
-void vector_int_deallocate( vector_int vec ) {
-	free( vec.data );
-}
-
-void reserve( vector_int *vec, int reserve ) {
-	if ( reserve > vec->capacity ) {
-		vec->data = realloc( vec->data, sizeof( int ) * reserve );
-		vec->capacity = reserve;
-	}
-}
-
-void append( vector_int *vec, int element ) {
-	vec->last++;
-	if ( vec->last == vec->capacity ) {
-		vec->capacity *= 2;
-		vec->data = realloc( vec->data, sizeof( int ) * vec->capacity );
-	}
-	vec->data[ vec->last ] = element;
-}
-
-// implement bounded_array
-
-lvalue int ?[?]( vector_int vec, int index ) {
-	return vec.data[ index ];
-}
-
-int last( vector_int vec ) {
-	return vec.last;
-}
-
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa vector_int.c" //
-// End: //
Index: src/examples/vector_int.h
===================================================================
--- src/examples/vector_int.h	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,44 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector_int.h -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:39:05 2015
-// Update Count     : 2
-//
-
-#ifndef VECTOR_INT_H
-#define VECTOR_INT_H
-
-// A flexible array, similar to a C++ vector, that holds integers and can be resized dynamically
-
-typedef struct vector_int {
-	int last;											// last used index
-	int capacity;										// last possible index before reallocation
-	int *data;											// array
-} vector_int;
-
-vector_int vector_int_allocate();						// allocate vector with default capacity
-vector_int vector_int_allocate( int reserve );			// allocate vector with specified capacity
-void vector_int_deallocate( vector_int );				// deallocate vector's storage
-
-void reserve( vector_int *vec, int reserve );			// reserve more capacity
-void append( vector_int *vec, int element );			// add element to end of vector, resizing as necessary
-
-// implement bounded_array
-
-lvalue int ?[?]( vector_int vec, int index );			// access to arbitrary element (does not resize)
-int last( vector_int vec );								// return last element
-
-#endif // VECTOR_INT_H
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa vector_int.c" //
-// End: //
Index: src/examples/vector_test.c
===================================================================
--- src/examples/vector_test.c	(revision 1b5c81eda8ac4fbd0dbf2cdca2786bc4e7f9cd93)
+++ 	(revision )
@@ -1,47 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// vector_test.c -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 17 12:23:55 2016
-// Update Count     : 18
-//
-
-#include <fstream>
-#include <iterator>
-#include "vector_int.h"
-#include "array.h"
-
-int main( void ) {
-	vector_int vec = vector_int_allocate();
-
-	// read in numbers until EOF or error
-	int num;
-
-	sout | "enter N elements and C-d on a separate line:" | endl;
-	for ( ;; ) {
-		sin | &num;
-	  if ( fail( sin ) || eof( sin ) ) break;
-		append( &vec, num );
-	}
-	// write out the numbers
-
-	sout | "Array elements:" | endl;
-	write( begin( vec ), end( vec ), sout );
-	sout | endl;
-
-	sout | "Array elements reversed:" | endl;
-	write_reverse( begin( vec ), end( vec ), sout );
-	sout | endl;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa vector_test.c vector_int.o array.o" //
-// End: //
Index: src/examples/wrapper/.gitignore
===================================================================
--- src/examples/wrapper/.gitignore	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/wrapper/.gitignore	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,3 @@
+.tags
+build/
+test
Index: src/examples/wrapper/premake4.lua
===================================================================
--- src/examples/wrapper/premake4.lua	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/wrapper/premake4.lua	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,79 @@
+#!lua
+
+-- Additional Linux libs: "X11", "Xxf86vm", "Xi", "Xrandr", "stdc++"
+
+includeDirList = {
+	"src/",
+	"../",
+}
+
+libDirectories = {
+
+}
+
+
+if os.get() == "linux" then
+    linkLibs = {
+	"bsd"
+    }
+end
+
+-- Build Options:
+buildOptions = {"\n  CC = cfa\n  CXX = cfa"}
+
+solution "strings"
+	configurations  { "debug", "release",
+				"cproc-debug", "cproc-release",
+				"cfa-debug", "cfa-release" }
+
+	project "test"
+		kind "ConsoleApp"
+		language "C"
+		location "build"
+		objdir "build"
+		targetdir "."
+		buildoptions (buildOptions)
+		defines {	"bool=_Bool",
+				"\"true=((_Bool)(const signed int)1)\"",
+				"\"false=((_Bool)(const signed int)0)\"",
+				"_GNU_SOURCE",
+				"__cforall",
+				"USE_BSD_LIB"
+			}
+		libdirs (libDirectories)
+		links (linkLibs)
+		linkoptions (linkOptionList)
+		includedirs (includeDirList)
+		files { "src/**.c" }
+
+	configuration "debug"
+		defines { "DEBUG" }
+		flags { "Symbols" }
+
+	configuration "release"
+		defines { "NDEBUG" }
+		flags { "Optimize" }
+
+	configuration "cproc-debug"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cproc-release"
+		buildoptions ({"-E"})
+		linkoptions ({"-E"})
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-debug"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
+
+	configuration "cfa-release"
+		linkoptions ({"-E"})
+		files { "build/cproc-debug/*.o" }
+	      defines { "DEBUG" }
+	      flags { "Symbols" }
Index: src/examples/wrapper/src/main.c
===================================================================
--- src/examples/wrapper/src/main.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/wrapper/src/main.c	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,25 @@
+#include "pointer.h"
+
+wrapper_t make_copy(wrapper_t copy)
+{
+	return copy;
+}
+
+int main(int argc, char const *argv[])
+{
+	wrapper_t p = wrap(6);
+
+	sout | endl | "test started" | endl;
+
+	wrapper_t p2 = p;
+
+	clear(&p);
+
+	p = p2;
+
+	wrapper_t p3 = make_copy(p2);
+
+	sout | endl | "test ended" | endl;
+
+	return 0;
+}
Index: src/examples/wrapper/src/pointer.h
===================================================================
--- src/examples/wrapper/src/pointer.h	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
+++ src/examples/wrapper/src/pointer.h	(revision f80e0218b8bdbe9f5f85bfa8c85ed2fc2c7645ce)
@@ -0,0 +1,122 @@
+#pragma once
+
+#include <fstream>
+#include <stddef.h>
+#include <stdlib>
+
+//==============================================================================
+// type safe malloc / free
+
+forall(otype T)
+T* new()
+{
+	T* p = malloc();
+	p{};
+	return p;
+}
+
+forall(otype T)
+void delete(T* p)
+{
+	^p{};
+	free(p);
+}
+
+//==============================================================================
+// ref counter content
+
+struct content_t
+{
+	int value;
+	size_t count;
+};
+
+void ?{}(content_t* this)
+{
+	sout | "Constructing content" | endl;
+	this->count = 0;
+}
+
+void ^?{}(content_t* this)
+{
+	sout | "Destroying content" | endl;
+}
+
+//==============================================================================
+// ref counter wrapper
+
+struct wrapper_t
+{
+	content_t* ptr;
+};
+
+void ?{}(wrapper_t* this)
+{
+	sout | "Constructing empty ref pointer" | endl | endl;
+	this->ptr = NULL;
+}
+
+void ?{}(wrapper_t* this, wrapper_t rhs)
+{
+	sout | "Constructing ref pointer from copy" | endl;
+	this->ptr = rhs.ptr;
+	this->ptr->count++;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void ^?{}(wrapper_t* this)
+{
+	if(this->ptr)
+	{
+		sout | "Destroying ref pointer" | endl;
+		this->ptr->count--;
+		sout | "Reference is " | this->ptr->count | endl | endl;
+		if(!this->ptr->count) delete(this->ptr);
+	}
+	else
+	{
+		sout | "Destroying empty ref pointer" | endl | endl;
+	}
+}
+
+wrapper_t ?=?(wrapper_t* this, wrapper_t rhs)
+{
+	sout | "Setting ref pointer" | endl;
+	if(this->ptr)
+	{
+		this->ptr->count--;
+		sout | "Reference is " | this->ptr->count | endl | endl;
+		if(!this->ptr->count) delete(this->ptr);
+	}
+	this->ptr = rhs.ptr;
+	this->ptr->count++;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void set(wrapper_t* this, content_t* c)
+{
+	this->ptr = c;
+	this->ptr->count++;
+	sout | "Setting ref pointer" | endl;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+}
+
+void clear(wrapper_t* this)
+{
+	sout | "Clearing ref pointer" | endl;
+	this->ptr->count--;
+	sout | "Reference is " | this->ptr->count | endl | endl;
+	if(!this->ptr->count) delete(this->ptr);
+	this->ptr = NULL;
+}
+
+
+wrapper_t wrap(int val)
+{
+	wrapper_t w;
+	content_t* c = malloc();
+	c{};
+	c->value = val;
+	set(&w, c);
+	return w;
+}
