Changes in / [208e5be:b1e63ac5]


Ignore:
Files:
2 added
6 deleted
51 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r208e5be rb1e63ac5  
    4242src/Parser/parser.cc
    4343src/Parser/parser.h
    44 src/Parser/parser.hh
    4544
    4645tools/prettyprinter/parser.output
     
    4847tools/prettyprinter/parser.cc
    4948tools/prettyprinter/parser.h
    50 tools/prettyprinter/parser.hh
    5149tools/prettyprinter/pretty
    5250tools/pretty
     
    5654doc/user/pointer1.tex
    5755doc/user/pointer2.tex
    58 doc/user/EHMHierarchy.tex
  • Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1819###############################################################################
    1920VPATH = @srcdir@
    20 am__is_gnu_make = { \
    21   if test -z '$(MAKELEVEL)'; then \
    22     false; \
    23   elif test -n '$(MAKE_HOST)'; then \
    24     true; \
    25   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    26     true; \
    27   else \
    28     false; \
    29   fi; \
    30 }
    31 am__make_running_with_option = \
    32   case $${target_option-} in \
    33       ?) ;; \
    34       *) echo "am__make_running_with_option: internal error: invalid" \
    35               "target option '$${target_option-}' specified" >&2; \
    36          exit 1;; \
    37   esac; \
    38   has_opt=no; \
    39   sane_makeflags=$$MAKEFLAGS; \
    40   if $(am__is_gnu_make); then \
    41     sane_makeflags=$$MFLAGS; \
    42   else \
    43     case $$MAKEFLAGS in \
    44       *\\[\ \   ]*) \
    45         bs=\\; \
    46         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    47           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    48     esac; \
    49   fi; \
    50   skip_next=no; \
    51   strip_trailopt () \
    52   { \
    53     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    54   }; \
    55   for flg in $$sane_makeflags; do \
    56     test $$skip_next = yes && { skip_next=no; continue; }; \
    57     case $$flg in \
    58       *=*|--*) continue;; \
    59         -*I) strip_trailopt 'I'; skip_next=yes;; \
    60       -*I?*) strip_trailopt 'I';; \
    61         -*O) strip_trailopt 'O'; skip_next=yes;; \
    62       -*O?*) strip_trailopt 'O';; \
    63         -*l) strip_trailopt 'l'; skip_next=yes;; \
    64       -*l?*) strip_trailopt 'l';; \
    65       -[dEDm]) skip_next=yes;; \
    66       -[JT]) skip_next=yes;; \
    67     esac; \
    68     case $$flg in \
    69       *$$target_option*) has_opt=yes; break;; \
    70     esac; \
    71   done; \
    72   test $$has_opt = yes
    73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7521pkgdatadir = $(datadir)/@PACKAGE@
    7622pkgincludedir = $(includedir)/@PACKAGE@
     
    9238host_triplet = @host@
    9339subdir = .
     40DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
     41        $(srcdir)/Makefile.in $(srcdir)/config.h.in \
     42        $(top_srcdir)/configure INSTALL automake/compile \
     43        automake/config.guess automake/config.sub automake/depcomp \
     44        automake/install-sh automake/missing automake/ylwrap
    9445ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9546am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9647am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9748        $(ACLOCAL_M4)
    98 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
    99         $(am__configure_deps) $(am__DIST_COMMON)
    10049am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
    10150 configure.lineno config.status.lineno
     
    10453CONFIG_CLEAN_FILES =
    10554CONFIG_CLEAN_VPATH_FILES =
    106 AM_V_P = $(am__v_P_@AM_V@)
    107 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    108 am__v_P_0 = false
    109 am__v_P_1 = :
    11055AM_V_GEN = $(am__v_GEN_@AM_V@)
    11156am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    112 am__v_GEN_0 = @echo "  GEN     " $@;
    113 am__v_GEN_1 =
     57am__v_GEN_0 = @echo "  GEN   " $@;
    11458AM_V_at = $(am__v_at_@AM_V@)
    11559am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    11660am__v_at_0 = @
    117 am__v_at_1 =
    11861SOURCES =
    11962DIST_SOURCES =
    120 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
    121         ctags-recursive dvi-recursive html-recursive info-recursive \
    122         install-data-recursive install-dvi-recursive \
    123         install-exec-recursive install-html-recursive \
    124         install-info-recursive install-pdf-recursive \
    125         install-ps-recursive install-recursive installcheck-recursive \
    126         installdirs-recursive pdf-recursive ps-recursive \
    127         tags-recursive uninstall-recursive
    128 am__can_run_installinfo = \
    129   case $$AM_UPDATE_INFO_DIR in \
    130     n|no|NO) false;; \
    131     *) (install-info --version) >/dev/null 2>&1;; \
    132   esac
     63RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
     64        html-recursive info-recursive install-data-recursive \
     65        install-dvi-recursive install-exec-recursive \
     66        install-html-recursive install-info-recursive \
     67        install-pdf-recursive install-ps-recursive install-recursive \
     68        installcheck-recursive installdirs-recursive pdf-recursive \
     69        ps-recursive uninstall-recursive
    13370RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
    13471  distclean-recursive maintainer-clean-recursive
    135 am__recursive_targets = \
    136   $(RECURSIVE_TARGETS) \
    137   $(RECURSIVE_CLEAN_TARGETS) \
    138   $(am__extra_recursive_targets)
    139 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
    140         cscope distdir dist dist-all distcheck
    141 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
    142         $(LISP)config.h.in
    143 # Read a list of newline-separated strings from the standard input,
    144 # and print each of them once, without duplicates.  Input order is
    145 # *not* preserved.
    146 am__uniquify_input = $(AWK) '\
    147   BEGIN { nonempty = 0; } \
    148   { items[$$0] = 1; nonempty = 1; } \
    149   END { if (nonempty) { for (i in items) print i; }; } \
    150 '
    151 # Make sure the list of sources is unique.  This is necessary because,
    152 # e.g., the same source file might be shared among _SOURCES variables
    153 # for different programs/libraries.
    154 am__define_uniq_tagged_files = \
    155   list='$(am__tagged_files)'; \
    156   unique=`for i in $$list; do \
    157     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    158   done | $(am__uniquify_input)`
     72AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
     73        $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
     74        distdir dist dist-all distcheck
    15975ETAGS = etags
    16076CTAGS = ctags
    161 CSCOPE = cscope
    16277DIST_SUBDIRS = $(SUBDIRS)
    163 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
    164         $(top_srcdir)/automake/compile \
    165         $(top_srcdir)/automake/config.guess \
    166         $(top_srcdir)/automake/config.sub \
    167         $(top_srcdir)/automake/install-sh \
    168         $(top_srcdir)/automake/missing INSTALL README automake/compile \
    169         automake/config.guess automake/config.sub automake/depcomp \
    170         automake/install-sh automake/missing automake/ylwrap
    17178DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    17279distdir = $(PACKAGE)-$(VERSION)
     
    17885      || { sleep 5 && rm -rf "$(distdir)"; }; \
    17986  else :; fi
    180 am__post_remove_distdir = $(am__remove_distdir)
    18187am__relativize = \
    18288  dir0=`pwd`; \
     
    206112DIST_ARCHIVES = $(distdir).tar.gz
    207113GZIP_ENV = --best
    208 DIST_TARGETS = dist-gzip
    209114distuninstallcheck_listfiles = find . -type f -print
    210115am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
     
    322227program_transform_name = @program_transform_name@
    323228psdir = @psdir@
    324 runstatedir = @runstatedir@
    325229sbindir = @sbindir@
    326230sharedstatedir = @sharedstatedir@
     
    354258        $(am__cd) $(top_srcdir) && \
    355259          $(AUTOMAKE) --foreign Makefile
     260.PRECIOUS: Makefile
    356261Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    357262        @case '$?' in \
     
    374279
    375280config.h: stamp-h1
    376         @test -f $@ || rm -f stamp-h1
    377         @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
     281        @if test ! -f $@; then rm -f stamp-h1; else :; fi
     282        @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
    378283
    379284stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
     
    389294
    390295# This directory's subdirectories are mostly independent; you can cd
    391 # into them and run 'make' without going through this Makefile.
    392 # To change the values of 'make' variables: instead of editing Makefiles,
    393 # (1) if the variable is set in 'config.status', edit 'config.status'
    394 #     (which will cause the Makefiles to be regenerated when you run 'make');
    395 # (2) otherwise, pass the desired values on the 'make' command line.
    396 $(am__recursive_targets):
    397         @fail=; \
    398         if $(am__make_keepgoing); then \
    399           failcom='fail=yes'; \
    400         else \
    401           failcom='exit 1'; \
    402         fi; \
     296# into them and run `make' without going through this Makefile.
     297# To change the values of `make' variables: instead of editing Makefiles,
     298# (1) if the variable is set in `config.status', edit `config.status'
     299#     (which will cause the Makefiles to be regenerated when you run `make');
     300# (2) otherwise, pass the desired values on the `make' command line.
     301$(RECURSIVE_TARGETS):
     302        @fail= failcom='exit 1'; \
     303        for f in x $$MAKEFLAGS; do \
     304          case $$f in \
     305            *=* | --[!k]*);; \
     306            *k*) failcom='fail=yes';; \
     307          esac; \
     308        done; \
    403309        dot_seen=no; \
    404310        target=`echo $@ | sed s/-recursive//`; \
    405         case "$@" in \
    406           distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
    407           *) list='$(SUBDIRS)' ;; \
    408         esac; \
    409         for subdir in $$list; do \
     311        list='$(SUBDIRS)'; for subdir in $$list; do \
    410312          echo "Making $$target in $$subdir"; \
    411313          if test "$$subdir" = "."; then \
     
    422324        fi; test -z "$$fail"
    423325
    424 ID: $(am__tagged_files)
    425         $(am__define_uniq_tagged_files); mkid -fID $$unique
    426 tags: tags-recursive
    427 TAGS: tags
    428 
    429 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     326$(RECURSIVE_CLEAN_TARGETS):
     327        @fail= failcom='exit 1'; \
     328        for f in x $$MAKEFLAGS; do \
     329          case $$f in \
     330            *=* | --[!k]*);; \
     331            *k*) failcom='fail=yes';; \
     332          esac; \
     333        done; \
     334        dot_seen=no; \
     335        case "$@" in \
     336          distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
     337          *) list='$(SUBDIRS)' ;; \
     338        esac; \
     339        rev=''; for subdir in $$list; do \
     340          if test "$$subdir" = "."; then :; else \
     341            rev="$$subdir $$rev"; \
     342          fi; \
     343        done; \
     344        rev="$$rev ."; \
     345        target=`echo $@ | sed s/-recursive//`; \
     346        for subdir in $$rev; do \
     347          echo "Making $$target in $$subdir"; \
     348          if test "$$subdir" = "."; then \
     349            local_target="$$target-am"; \
     350          else \
     351            local_target="$$target"; \
     352          fi; \
     353          ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
     354          || eval $$failcom; \
     355        done && test -z "$$fail"
     356tags-recursive:
     357        list='$(SUBDIRS)'; for subdir in $$list; do \
     358          test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
     359        done
     360ctags-recursive:
     361        list='$(SUBDIRS)'; for subdir in $$list; do \
     362          test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
     363        done
     364
     365ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     366        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     367        unique=`for i in $$list; do \
     368            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     369          done | \
     370          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     371              END { if (nonempty) { for (i in files) print i; }; }'`; \
     372        mkid -fID $$unique
     373tags: TAGS
     374
     375TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
     376                $(TAGS_FILES) $(LISP)
    430377        set x; \
    431378        here=`pwd`; \
     
    443390          fi; \
    444391        done; \
    445         $(am__define_uniq_tagged_files); \
     392        list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
     393        unique=`for i in $$list; do \
     394            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     395          done | \
     396          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     397              END { if (nonempty) { for (i in files) print i; }; }'`; \
    446398        shift; \
    447399        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    455407          fi; \
    456408        fi
    457 ctags: ctags-recursive
    458 
    459 CTAGS: ctags
    460 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    461         $(am__define_uniq_tagged_files); \
     409ctags: CTAGS
     410CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
     411                $(TAGS_FILES) $(LISP)
     412        list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
     413        unique=`for i in $$list; do \
     414            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     415          done | \
     416          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     417              END { if (nonempty) { for (i in files) print i; }; }'`; \
    462418        test -z "$(CTAGS_ARGS)$$unique" \
    463419          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    468424          && $(am__cd) $(top_srcdir) \
    469425          && gtags -i $(GTAGS_ARGS) "$$here"
    470 cscope: cscope.files
    471         test ! -s cscope.files \
    472           || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
    473 clean-cscope:
    474         -rm -f cscope.files
    475 cscope.files: clean-cscope cscopelist
    476 cscopelist: cscopelist-recursive
    477 
    478 cscopelist-am: $(am__tagged_files)
    479         list='$(am__tagged_files)'; \
    480         case "$(srcdir)" in \
    481           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    482           *) sdir=$(subdir)/$(srcdir) ;; \
    483         esac; \
    484         for i in $$list; do \
    485           if test -f "$$i"; then \
    486             echo "$(subdir)/$$i"; \
    487           else \
    488             echo "$$sdir/$$i"; \
    489           fi; \
    490         done >> $(top_builddir)/cscope.files
    491426
    492427distclean-tags:
    493428        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
    494         -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
    495429
    496430distdir: $(DISTFILES)
     
    528462        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
    529463          if test "$$subdir" = .; then :; else \
    530             $(am__make_dryrun) \
    531               || test -d "$(distdir)/$$subdir" \
    532               || $(MKDIR_P) "$(distdir)/$$subdir" \
    533               || exit 1; \
     464            test -d "$(distdir)/$$subdir" \
     465            || $(MKDIR_P) "$(distdir)/$$subdir" \
     466            || exit 1; \
     467          fi; \
     468        done
     469        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
     470          if test "$$subdir" = .; then :; else \
    534471            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
    535472            $(am__relativize); \
     
    560497dist-gzip: distdir
    561498        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
    562         $(am__post_remove_distdir)
     499        $(am__remove_distdir)
    563500
    564501dist-bzip2: distdir
    565502        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
    566         $(am__post_remove_distdir)
     503        $(am__remove_distdir)
    567504
    568505dist-lzip: distdir
    569506        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
    570         $(am__post_remove_distdir)
     507        $(am__remove_distdir)
     508
     509dist-lzma: distdir
     510        tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
     511        $(am__remove_distdir)
    571512
    572513dist-xz: distdir
    573514        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
    574         $(am__post_remove_distdir)
     515        $(am__remove_distdir)
    575516
    576517dist-tarZ: distdir
    577         @echo WARNING: "Support for distribution archives compressed with" \
    578                        "legacy program 'compress' is deprecated." >&2
    579         @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
    580518        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
    581         $(am__post_remove_distdir)
     519        $(am__remove_distdir)
    582520
    583521dist-shar: distdir
    584         @echo WARNING: "Support for shar distribution archives is" \
    585                        "deprecated." >&2
    586         @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
    587522        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
    588         $(am__post_remove_distdir)
     523        $(am__remove_distdir)
    589524
    590525dist-zip: distdir
    591526        -rm -f $(distdir).zip
    592527        zip -rq $(distdir).zip $(distdir)
    593         $(am__post_remove_distdir)
    594 
    595 dist dist-all:
    596         $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
    597         $(am__post_remove_distdir)
     528        $(am__remove_distdir)
     529
     530dist dist-all: distdir
     531        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
     532        $(am__remove_distdir)
    598533
    599534# This target untars the dist file and tries a VPATH configuration.  Then
     
    606541        *.tar.bz2*) \
    607542          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
     543        *.tar.lzma*) \
     544          lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
    608545        *.tar.lz*) \
    609546          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
     
    617554          unzip $(distdir).zip ;;\
    618555        esac
    619         chmod -R a-w $(distdir)
    620         chmod u+w $(distdir)
    621         mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
     556        chmod -R a-w $(distdir); chmod a+w $(distdir)
     557        mkdir $(distdir)/_build
     558        mkdir $(distdir)/_inst
    622559        chmod a-w $(distdir)
    623560        test -d $(distdir)/_build || exit 0; \
     
    625562          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
    626563          && am__cwd=`pwd` \
    627           && $(am__cd) $(distdir)/_build/sub \
    628           && ../../configure \
     564          && $(am__cd) $(distdir)/_build \
     565          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
    629566            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
    630567            $(DISTCHECK_CONFIGURE_FLAGS) \
    631             --srcdir=../.. --prefix="$$dc_install_base" \
    632568          && $(MAKE) $(AM_MAKEFLAGS) \
    633569          && $(MAKE) $(AM_MAKEFLAGS) dvi \
     
    652588          && cd "$$am__cwd" \
    653589          || exit 1
    654         $(am__post_remove_distdir)
     590        $(am__remove_distdir)
    655591        @(echo "$(distdir) archives ready for distribution: "; \
    656592          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
     
    787723uninstall-am:
    788724
    789 .MAKE: $(am__recursive_targets) all install-am install-strip
    790 
    791 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
    792         am--refresh check check-am clean clean-cscope clean-generic \
    793         cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
    794         dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
     725.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
     726        ctags-recursive install-am install-strip tags-recursive
     727
     728.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
     729        all all-am am--refresh check check-am clean clean-generic \
     730        ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
     731        dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
    795732        distcheck distclean distclean-generic distclean-hdr \
    796733        distclean-tags distcleancheck distdir distuninstallcheck dvi \
     
    802739        installcheck installcheck-am installdirs installdirs-am \
    803740        maintainer-clean maintainer-clean-generic mostlyclean \
    804         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
    805         uninstall-am
    806 
    807 .PRECIOUS: Makefile
     741        mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
     742        uninstall uninstall-am
    808743
    809744
  • aclocal.m4

    r208e5be rb1e63ac5  
    1 # generated automatically by aclocal 1.15 -*- Autoconf -*-
    2 
    3 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
    4 
     1# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
     2
     3# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
     4# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
     5# Inc.
    56# This file is free software; the Free Software Foundation
    67# gives unlimited permission to copy and/or distribute it,
     
    1213# PARTICULAR PURPOSE.
    1314
    14 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
    1515m4_ifndef([AC_AUTOCONF_VERSION],
    1616  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
    17 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
    18 [m4_warning([this file was generated for autoconf 2.69.
     17m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
     18[m4_warning([this file was generated for autoconf 2.68.
    1919You have another version of autoconf.  It may work, but is not guaranteed to.
    2020If you have problems, you may need to regenerate the build system entirely.
    21 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
    22 
    23 # Copyright (C) 2002-2014 Free Software Foundation, Inc.
    24 #
    25 # This file is free software; the Free Software Foundation
    26 # gives unlimited permission to copy and/or distribute it,
    27 # with or without modifications, as long as this notice is preserved.
     21To do so, use the procedure documented by the package, typically `autoreconf'.])])
     22
     23# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
     24# Foundation, Inc.
     25#
     26# This file is free software; the Free Software Foundation
     27# gives unlimited permission to copy and/or distribute it,
     28# with or without modifications, as long as this notice is preserved.
     29
     30# serial 1
    2831
    2932# AM_AUTOMAKE_VERSION(VERSION)
     
    3336# (This private macro should not be called outside this file.)
    3437AC_DEFUN([AM_AUTOMAKE_VERSION],
    35 [am__api_version='1.15'
     38[am__api_version='1.11'
    3639dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
    3740dnl require some minimum version.  Point them to the right macro.
    38 m4_if([$1], [1.15], [],
     41m4_if([$1], [1.11.3], [],
    3942      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
    4043])
     
    5255# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
    5356AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
    54 [AM_AUTOMAKE_VERSION([1.15])dnl
     57[AM_AUTOMAKE_VERSION([1.11.3])dnl
    5558m4_ifndef([AC_AUTOCONF_VERSION],
    5659  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
     
    5962# Figure out how to run the assembler.                      -*- Autoconf -*-
    6063
    61 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    62 #
    63 # This file is free software; the Free Software Foundation
    64 # gives unlimited permission to copy and/or distribute it,
    65 # with or without modifications, as long as this notice is preserved.
     64# Copyright (C) 2001, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
     65#
     66# This file is free software; the Free Software Foundation
     67# gives unlimited permission to copy and/or distribute it,
     68# with or without modifications, as long as this notice is preserved.
     69
     70# serial 5
    6671
    6772# AM_PROG_AS
     
    7984# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
    8085
    81 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    82 #
    83 # This file is free software; the Free Software Foundation
    84 # gives unlimited permission to copy and/or distribute it,
    85 # with or without modifications, as long as this notice is preserved.
     86# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
     87#
     88# This file is free software; the Free Software Foundation
     89# gives unlimited permission to copy and/or distribute it,
     90# with or without modifications, as long as this notice is preserved.
     91
     92# serial 1
    8693
    8794# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
    88 # $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
    89 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
     95# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
     96# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
    9097#
    9198# Of course, Automake must honor this variable whenever it calls a
     
    106113# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
    107114# are both prefixed by $srcdir.  In an in-source build this is usually
    108 # harmless because $srcdir is '.', but things will broke when you
     115# harmless because $srcdir is `.', but things will broke when you
    109116# start a VPATH build or use an absolute $srcdir.
    110117#
     
    124131
    125132AC_DEFUN([AM_AUX_DIR_EXPAND],
    126 [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
    127 # Expand $ac_aux_dir to an absolute path.
    128 am_aux_dir=`cd "$ac_aux_dir" && pwd`
     133[dnl Rely on autoconf to set up CDPATH properly.
     134AC_PREREQ([2.50])dnl
     135# expand $ac_aux_dir to an absolute path
     136am_aux_dir=`cd $ac_aux_dir && pwd`
    129137])
    130138
    131139# AM_COND_IF                                            -*- Autoconf -*-
    132140
    133 # Copyright (C) 2008-2014 Free Software Foundation, Inc.
    134 #
    135 # This file is free software; the Free Software Foundation
    136 # gives unlimited permission to copy and/or distribute it,
    137 # with or without modifications, as long as this notice is preserved.
     141# Copyright (C) 2008, 2010 Free Software Foundation, Inc.
     142#
     143# This file is free software; the Free Software Foundation
     144# gives unlimited permission to copy and/or distribute it,
     145# with or without modifications, as long as this notice is preserved.
     146
     147# serial 3
    138148
    139149# _AM_COND_IF
     
    145155m4_define([_AM_COND_ELSE])
    146156m4_define([_AM_COND_ENDIF])
     157
    147158
    148159# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
     
    168179# AM_CONDITIONAL                                            -*- Autoconf -*-
    169180
    170 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
    171 #
    172 # This file is free software; the Free Software Foundation
    173 # gives unlimited permission to copy and/or distribute it,
    174 # with or without modifications, as long as this notice is preserved.
     181# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
     182# Free Software Foundation, Inc.
     183#
     184# This file is free software; the Free Software Foundation
     185# gives unlimited permission to copy and/or distribute it,
     186# with or without modifications, as long as this notice is preserved.
     187
     188# serial 9
    175189
    176190# AM_CONDITIONAL(NAME, SHELL-CONDITION)
     
    178192# Define a conditional.
    179193AC_DEFUN([AM_CONDITIONAL],
    180 [AC_PREREQ([2.52])dnl
    181  m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
    182        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
     194[AC_PREREQ(2.52)dnl
     195 ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
     196        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
    183197AC_SUBST([$1_TRUE])dnl
    184198AC_SUBST([$1_FALSE])dnl
     
    199213fi])])
    200214
    201 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
    202 #
    203 # This file is free software; the Free Software Foundation
    204 # gives unlimited permission to copy and/or distribute it,
    205 # with or without modifications, as long as this notice is preserved.
    206 
    207 
    208 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
     215# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
     216# 2010, 2011 Free Software Foundation, Inc.
     217#
     218# This file is free software; the Free Software Foundation
     219# gives unlimited permission to copy and/or distribute it,
     220# with or without modifications, as long as this notice is preserved.
     221
     222# serial 12
     223
     224# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
    209225# written in clear, in which case automake, when reading aclocal.m4,
    210226# will think it sees a *use*, and therefore will trigger all it's
     
    216232# ----------------------
    217233# See how the compiler implements dependency checking.
    218 # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
     234# NAME is "CC", "CXX", "GCJ", or "OBJC".
    219235# We try a few techniques and use that to set a single cache variable.
    220236#
     
    229245AC_REQUIRE([AM_DEP_TRACK])dnl
    230246
    231 m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
    232       [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
    233       [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
    234       [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
    235       [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
    236       [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
    237                     [depcc="$$1"   am_compiler_list=])
     247ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
     248       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
     249       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
     250       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
     251       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
     252                   [depcc="$$1"   am_compiler_list=])
    238253
    239254AC_CACHE_CHECK([dependency style of $depcc],
     
    243258  # making bogus files that we don't know about and never remove.  For
    244259  # instance it was reported that on HP-UX the gcc test will end up
    245   # making a dummy file named 'D' -- because '-MD' means "put the output
    246   # in D".
     260  # making a dummy file named `D' -- because `-MD' means `put the output
     261  # in D'.
    247262  rm -rf conftest.dir
    248263  mkdir conftest.dir
     
    284299    for i in 1 2 3 4 5 6; do
    285300      echo '#include "conftst'$i'.h"' >> sub/conftest.c
    286       # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
    287       # Solaris 10 /bin/sh.
    288       echo '/* dummy */' > sub/conftst$i.h
     301      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
     302      # Solaris 8's {/usr,}/bin/sh.
     303      touch sub/conftst$i.h
    289304    done
    290305    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
    291306
    292     # We check with '-c' and '-o' for the sake of the "dashmstdout"
     307    # We check with `-c' and `-o' for the sake of the "dashmstdout"
    293308    # mode.  It turns out that the SunPro C++ compiler does not properly
    294     # handle '-M -o', and we need to detect this.  Also, some Intel
    295     # versions had trouble with output in subdirs.
     309    # handle `-M -o', and we need to detect this.  Also, some Intel
     310    # versions had trouble with output in subdirs
    296311    am__obj=sub/conftest.${OBJEXT-o}
    297312    am__minus_obj="-o $am__obj"
     
    302317      ;;
    303318    nosideeffect)
    304       # After this tag, mechanisms are not by side-effect, so they'll
    305       # only be used when explicitly requested.
     319      # after this tag, mechanisms are not by side-effect, so they'll
     320      # only be used when explicitly requested
    306321      if test "x$enable_dependency_tracking" = xyes; then
    307322        continue
     
    311326      ;;
    312327    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
    313       # This compiler won't grok '-c -o', but also, the minuso test has
     328      # This compiler won't grok `-c -o', but also, the minuso test has
    314329      # not run yet.  These depmodes are late enough in the game, and
    315330      # so weak that their functioning should not be impacted.
     
    359374# -------------
    360375# Choose a directory name for dependency files.
    361 # This macro is AC_REQUIREd in _AM_DEPENDENCIES.
     376# This macro is AC_REQUIREd in _AM_DEPENDENCIES
    362377AC_DEFUN([AM_SET_DEPDIR],
    363378[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
     
    369384# ------------
    370385AC_DEFUN([AM_DEP_TRACK],
    371 [AC_ARG_ENABLE([dependency-tracking], [dnl
    372 AS_HELP_STRING(
    373   [--enable-dependency-tracking],
    374   [do not reject slow dependency extractors])
    375 AS_HELP_STRING(
    376   [--disable-dependency-tracking],
    377   [speeds up one-time build])])
     386[AC_ARG_ENABLE(dependency-tracking,
     387[  --disable-dependency-tracking  speeds up one-time build
     388  --enable-dependency-tracking   do not reject slow dependency extractors])
    378389if test "x$enable_dependency_tracking" != xno; then
    379390  am_depcomp="$ac_aux_dir/depcomp"
     
    390401# Generate code to set up dependency tracking.              -*- Autoconf -*-
    391402
    392 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
    393 #
    394 # This file is free software; the Free Software Foundation
    395 # gives unlimited permission to copy and/or distribute it,
    396 # with or without modifications, as long as this notice is preserved.
    397 
     403# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
     404# Free Software Foundation, Inc.
     405#
     406# This file is free software; the Free Software Foundation
     407# gives unlimited permission to copy and/or distribute it,
     408# with or without modifications, as long as this notice is preserved.
     409
     410#serial 5
    398411
    399412# _AM_OUTPUT_DEPENDENCY_COMMANDS
     
    401414AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
    402415[{
    403   # Older Autoconf quotes --file arguments for eval, but not when files
     416  # Autoconf 2.62 quotes --file arguments for eval, but not when files
    404417  # are listed without --file.  Let's play safe and only enable the eval
    405418  # if we detect the quoting.
     
    414427    mf=`echo "$mf" | sed -e 's/:.*$//'`
    415428    # Check whether this is an Automake generated Makefile or not.
    416     # We used to match only the files named 'Makefile.in', but
     429    # We used to match only the files named `Makefile.in', but
    417430    # some people rename them; so instead we look at the file content.
    418431    # Grep'ing the first line is not enough: some people post-process
     
    426439    fi
    427440    # Extract the definition of DEPDIR, am__include, and am__quote
    428     # from the Makefile without running 'make'.
     441    # from the Makefile without running `make'.
    429442    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
    430443    test -z "$DEPDIR" && continue
    431444    am__include=`sed -n 's/^am__include = //p' < "$mf"`
    432     test -z "$am__include" && continue
     445    test -z "am__include" && continue
    433446    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     447    # When using ansi2knr, U may be empty or an underscore; expand it
     448    U=`sed -n 's/^U = //p' < "$mf"`
    434449    # Find all dependency output files, they are included files with
    435450    # $(DEPDIR) in their names.  We invoke sed twice because it is the
     
    438453    for file in `sed -n "
    439454      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
    440          sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
     455         sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
    441456      # Make sure the directory exists.
    442457      test -f "$dirpart/$file" && continue
     
    456471#
    457472# This code is only required when automatic dependency tracking
    458 # is enabled.  FIXME.  This creates each '.P' file that we will
     473# is enabled.  FIXME.  This creates each `.P' file that we will
    459474# need in order to bootstrap the dependency handling code.
    460475AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
     
    466481# Do all the work for Automake.                             -*- Autoconf -*-
    467482
    468 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
    469 #
    470 # This file is free software; the Free Software Foundation
    471 # gives unlimited permission to copy and/or distribute it,
    472 # with or without modifications, as long as this notice is preserved.
     483# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
     484# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
     485#
     486# This file is free software; the Free Software Foundation
     487# gives unlimited permission to copy and/or distribute it,
     488# with or without modifications, as long as this notice is preserved.
     489
     490# serial 16
    473491
    474492# This macro actually does too much.  Some checks are only needed if
    475493# your package does certain things.  But this isn't really a big deal.
    476 
    477 dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
    478 m4_define([AC_PROG_CC],
    479 m4_defn([AC_PROG_CC])
    480 [_AM_PROG_CC_C_O
    481 ])
    482494
    483495# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
     
    493505# release and drop the old call support.
    494506AC_DEFUN([AM_INIT_AUTOMAKE],
    495 [AC_PREREQ([2.65])dnl
     507[AC_PREREQ([2.62])dnl
    496508dnl Autoconf wants to disallow AM_ names.  We explicitly allow
    497509dnl the ones we care about.
     
    522534dnl Distinguish between old-style and new-style calls.
    523535m4_ifval([$2],
    524 [AC_DIAGNOSE([obsolete],
    525              [$0: two- and three-arguments forms are deprecated.])
    526 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
     536[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
    527537 AC_SUBST([PACKAGE], [$1])dnl
    528538 AC_SUBST([VERSION], [$2])],
    529539[_AM_SET_OPTIONS([$1])dnl
    530540dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
    531 m4_if(
    532   m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
    533   [ok:ok],,
     541m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
    534542  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
    535543 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
     
    537545
    538546_AM_IF_OPTION([no-define],,
    539 [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
    540  AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
     547[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
     548 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
    541549
    542550# Some tools Automake needs.
    543551AC_REQUIRE([AM_SANITY_CHECK])dnl
    544552AC_REQUIRE([AC_ARG_PROGRAM])dnl
    545 AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
    546 AM_MISSING_PROG([AUTOCONF], [autoconf])
    547 AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
    548 AM_MISSING_PROG([AUTOHEADER], [autoheader])
    549 AM_MISSING_PROG([MAKEINFO], [makeinfo])
     553AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
     554AM_MISSING_PROG(AUTOCONF, autoconf)
     555AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
     556AM_MISSING_PROG(AUTOHEADER, autoheader)
     557AM_MISSING_PROG(MAKEINFO, makeinfo)
    550558AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
    551559AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
    552 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
    553 # For better backward compatibility.  To be removed once Automake 1.9.x
    554 # dies out for good.  For more background, see:
    555 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
    556 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
    557 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
    558 # We need awk for the "check" target (and possibly the TAP driver).  The
    559 # system "awk" is bad on some platforms.
     560AC_REQUIRE([AM_PROG_MKDIR_P])dnl
     561# We need awk for the "check" target.  The system "awk" is bad on
     562# some platforms.
    560563AC_REQUIRE([AC_PROG_AWK])dnl
    561564AC_REQUIRE([AC_PROG_MAKE_SET])dnl
     
    566569_AM_IF_OPTION([no-dependencies],,
    567570[AC_PROVIDE_IFELSE([AC_PROG_CC],
    568                   [_AM_DEPENDENCIES([CC])],
    569                   [m4_define([AC_PROG_CC],
    570                              m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
     571                  [_AM_DEPENDENCIES(CC)],
     572                  [define([AC_PROG_CC],
     573                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
    571574AC_PROVIDE_IFELSE([AC_PROG_CXX],
    572                   [_AM_DEPENDENCIES([CXX])],
    573                   [m4_define([AC_PROG_CXX],
    574                              m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
     575                  [_AM_DEPENDENCIES(CXX)],
     576                  [define([AC_PROG_CXX],
     577                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
    575578AC_PROVIDE_IFELSE([AC_PROG_OBJC],
    576                   [_AM_DEPENDENCIES([OBJC])],
    577                   [m4_define([AC_PROG_OBJC],
    578                              m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
    579 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
    580                   [_AM_DEPENDENCIES([OBJCXX])],
    581                   [m4_define([AC_PROG_OBJCXX],
    582                              m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
    583 ])
    584 AC_REQUIRE([AM_SILENT_RULES])dnl
    585 dnl The testsuite driver may need to know about EXEEXT, so add the
    586 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
    587 dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
     579                  [_AM_DEPENDENCIES(OBJC)],
     580                  [define([AC_PROG_OBJC],
     581                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
     582])
     583_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
     584dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
     585dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
     586dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
    588587AC_CONFIG_COMMANDS_PRE(dnl
    589588[m4_provide_if([_AM_COMPILER_EXEEXT],
    590589  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
    591 
    592 # POSIX will say in a future version that running "rm -f" with no argument
    593 # is OK; and we want to be able to make that assumption in our Makefile
    594 # recipes.  So use an aggressive probe to check that the usage we want is
    595 # actually supported "in the wild" to an acceptable degree.
    596 # See automake bug#10828.
    597 # To make any issue more visible, cause the running configure to be aborted
    598 # by default if the 'rm' program in use doesn't match our expectations; the
    599 # user can still override this though.
    600 if rm -f && rm -fr && rm -rf; then : OK; else
    601   cat >&2 <<'END'
    602 Oops!
    603 
    604 Your 'rm' program seems unable to run without file operands specified
    605 on the command line, even when the '-f' option is present.  This is contrary
    606 to the behaviour of most rm programs out there, and not conforming with
    607 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
    608 
    609 Please tell bug-automake@gnu.org about your system, including the value
    610 of your $PATH and any error possibly output before this message.  This
    611 can help us improve future automake versions.
    612 
    613 END
    614   if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
    615     echo 'Configuration will proceed anyway, since you have set the' >&2
    616     echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
    617     echo >&2
    618   else
    619     cat >&2 <<'END'
    620 Aborting the configuration process, to ensure you take notice of the issue.
    621 
    622 You can download and install GNU coreutils to get an 'rm' implementation
    623 that behaves properly: <http://www.gnu.org/software/coreutils/>.
    624 
    625 If you want to complete the configuration process using your problematic
    626 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
    627 to "yes", and re-run configure.
    628 
    629 END
    630     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
    631   fi
    632 fi
    633 dnl The trailing newline in this macro's definition is deliberate, for
    634 dnl backward compatibility and to allow trailing 'dnl'-style comments
    635 dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
    636 ])
    637 
    638 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
     590])
     591
     592dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
    639593dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
    640594dnl mangled by Autoconf and run in a shell conditional statement.
    641595m4_define([_AC_COMPILER_EXEEXT],
    642596m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
     597
    643598
    644599# When config.status generates a header, we must update the stamp-h file.
     
    663618echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
    664619
    665 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    666 #
    667 # This file is free software; the Free Software Foundation
    668 # gives unlimited permission to copy and/or distribute it,
    669 # with or without modifications, as long as this notice is preserved.
     620# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
     621# Inc.
     622#
     623# This file is free software; the Free Software Foundation
     624# gives unlimited permission to copy and/or distribute it,
     625# with or without modifications, as long as this notice is preserved.
     626
     627# serial 1
    670628
    671629# AM_PROG_INSTALL_SH
     
    674632AC_DEFUN([AM_PROG_INSTALL_SH],
    675633[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
    676 if test x"${install_sh+set}" != xset; then
     634if test x"${install_sh}" != xset; then
    677635  case $am_aux_dir in
    678636  *\ * | *\     *)
     
    682640  esac
    683641fi
    684 AC_SUBST([install_sh])])
    685 
    686 # Copyright (C) 2003-2014 Free Software Foundation, Inc.
    687 #
    688 # This file is free software; the Free Software Foundation
    689 # gives unlimited permission to copy and/or distribute it,
    690 # with or without modifications, as long as this notice is preserved.
     642AC_SUBST(install_sh)])
     643
     644# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
     645#
     646# This file is free software; the Free Software Foundation
     647# gives unlimited permission to copy and/or distribute it,
     648# with or without modifications, as long as this notice is preserved.
     649
     650# serial 2
    691651
    692652# Check whether the underlying file-system supports filenames
     
    706666# From Jim Meyering
    707667
    708 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
    709 #
    710 # This file is free software; the Free Software Foundation
    711 # gives unlimited permission to copy and/or distribute it,
    712 # with or without modifications, as long as this notice is preserved.
     668# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
     669# 2011 Free Software Foundation, Inc.
     670#
     671# This file is free software; the Free Software Foundation
     672# gives unlimited permission to copy and/or distribute it,
     673# with or without modifications, as long as this notice is preserved.
     674
     675# serial 5
    713676
    714677# AM_MAINTAINER_MODE([DEFAULT-MODE])
    715678# ----------------------------------
    716679# Control maintainer-specific portions of Makefiles.
    717 # Default is to disable them, unless 'enable' is passed literally.
    718 # For symmetry, 'disable' may be passed as well.  Anyway, the user
     680# Default is to disable them, unless `enable' is passed literally.
     681# For symmetry, `disable' may be passed as well.  Anyway, the user
    719682# can override the default with the --enable/--disable switch.
    720683AC_DEFUN([AM_MAINTAINER_MODE],
     
    727690  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
    728691  AC_ARG_ENABLE([maintainer-mode],
    729     [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
    730       am_maintainer_other[ make rules and dependencies not useful
    731       (and sometimes confusing) to the casual installer])],
    732     [USE_MAINTAINER_MODE=$enableval],
    733     [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
     692[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
     693                          (and sometimes confusing) to the casual installer],
     694      [USE_MAINTAINER_MODE=$enableval],
     695      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
    734696  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
    735697  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
     
    739701)
    740702
     703AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
     704
    741705# Check to see how 'make' treats includes.                  -*- Autoconf -*-
    742706
    743 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    744 #
    745 # This file is free software; the Free Software Foundation
    746 # gives unlimited permission to copy and/or distribute it,
    747 # with or without modifications, as long as this notice is preserved.
     707# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
     708#
     709# This file is free software; the Free Software Foundation
     710# gives unlimited permission to copy and/or distribute it,
     711# with or without modifications, as long as this notice is preserved.
     712
     713# serial 4
    748714
    749715# AM_MAKE_INCLUDE()
     
    764730# First try GNU make style include.
    765731echo "include confinc" > confmf
    766 # Ignore all kinds of additional output from 'make'.
     732# Ignore all kinds of additional output from `make'.
    767733case `$am_make -s -f confmf 2> /dev/null` in #(
    768734*the\ am__doit\ target*)
     
    789755])
    790756
     757# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
     758# Free Software Foundation, Inc.
     759#
     760# This file is free software; the Free Software Foundation
     761# gives unlimited permission to copy and/or distribute it,
     762# with or without modifications, as long as this notice is preserved.
     763
     764# serial 6
     765
     766# AM_PROG_CC_C_O
     767# --------------
     768# Like AC_PROG_CC_C_O, but changed for automake.
     769AC_DEFUN([AM_PROG_CC_C_O],
     770[AC_REQUIRE([AC_PROG_CC_C_O])dnl
     771AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
     772AC_REQUIRE_AUX_FILE([compile])dnl
     773# FIXME: we rely on the cache variable name because
     774# there is no other way.
     775set dummy $CC
     776am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
     777eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
     778if test "$am_t" != yes; then
     779   # Losing compiler, so override with the script.
     780   # FIXME: It is wrong to rewrite CC.
     781   # But if we don't then we get into trouble of one sort or another.
     782   # A longer-term fix would be to have automake use am__CC in this case,
     783   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
     784   CC="$am_aux_dir/compile $CC"
     785fi
     786dnl Make sure AC_PROG_CC is never called again, or it will override our
     787dnl setting of CC.
     788m4_define([AC_PROG_CC],
     789          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
     790])
     791
    791792# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
    792793
    793 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
    794 #
    795 # This file is free software; the Free Software Foundation
    796 # gives unlimited permission to copy and/or distribute it,
    797 # with or without modifications, as long as this notice is preserved.
     794# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
     795# Free Software Foundation, Inc.
     796#
     797# This file is free software; the Free Software Foundation
     798# gives unlimited permission to copy and/or distribute it,
     799# with or without modifications, as long as this notice is preserved.
     800
     801# serial 6
    798802
    799803# AM_MISSING_PROG(NAME, PROGRAM)
     
    804808AC_SUBST($1)])
    805809
     810
    806811# AM_MISSING_HAS_RUN
    807812# ------------------
    808 # Define MISSING if not defined so far and test if it is modern enough.
    809 # If it is, set am_missing_run to use it, otherwise, to nothing.
     813# Define MISSING if not defined so far and test if it supports --run.
     814# If it does, set am_missing_run to use it, otherwise, to nothing.
    810815AC_DEFUN([AM_MISSING_HAS_RUN],
    811816[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
     
    820825fi
    821826# Use eval to expand $SHELL
    822 if eval "$MISSING --is-lightweight"; then
    823   am_missing_run="$MISSING "
     827if eval "$MISSING --run true"; then
     828  am_missing_run="$MISSING --run "
    824829else
    825830  am_missing_run=
    826   AC_MSG_WARN(['missing' script is too old or missing])
    827 fi
     831  AC_MSG_WARN([`missing' script is too old or missing])
     832fi
     833])
     834
     835# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
     836# Inc.
     837#
     838# This file is free software; the Free Software Foundation
     839# gives unlimited permission to copy and/or distribute it,
     840# with or without modifications, as long as this notice is preserved.
     841
     842# serial 1
     843
     844# AM_PROG_MKDIR_P
     845# ---------------
     846# Check for `mkdir -p'.
     847AC_DEFUN([AM_PROG_MKDIR_P],
     848[AC_PREREQ([2.60])dnl
     849AC_REQUIRE([AC_PROG_MKDIR_P])dnl
     850dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
     851dnl while keeping a definition of mkdir_p for backward compatibility.
     852dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
     853dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
     854dnl Makefile.ins that do not define MKDIR_P, so we do our own
     855dnl adjustment using top_builddir (which is defined more often than
     856dnl MKDIR_P).
     857AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
     858case $mkdir_p in
     859  [[\\/$]]* | ?:[[\\/]]*) ;;
     860  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
     861esac
    828862])
    829863
    830864# Helper functions for option handling.                     -*- Autoconf -*-
    831865
    832 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    833 #
    834 # This file is free software; the Free Software Foundation
    835 # gives unlimited permission to copy and/or distribute it,
    836 # with or without modifications, as long as this notice is preserved.
     866# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
     867# Foundation, Inc.
     868#
     869# This file is free software; the Free Software Foundation
     870# gives unlimited permission to copy and/or distribute it,
     871# with or without modifications, as long as this notice is preserved.
     872
     873# serial 5
    837874
    838875# _AM_MANGLE_OPTION(NAME)
     
    845882# Set option NAME.  Presently that only means defining a flag for this option.
    846883AC_DEFUN([_AM_SET_OPTION],
    847 [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
     884[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
    848885
    849886# _AM_SET_OPTIONS(OPTIONS)
     
    859896[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
    860897
    861 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
    862 #
    863 # This file is free software; the Free Software Foundation
    864 # gives unlimited permission to copy and/or distribute it,
    865 # with or without modifications, as long as this notice is preserved.
    866 
    867 # _AM_PROG_CC_C_O
    868 # ---------------
    869 # Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
    870 # to automatically call this.
    871 AC_DEFUN([_AM_PROG_CC_C_O],
    872 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
    873 AC_REQUIRE_AUX_FILE([compile])dnl
    874 AC_LANG_PUSH([C])dnl
    875 AC_CACHE_CHECK(
    876   [whether $CC understands -c and -o together],
    877   [am_cv_prog_cc_c_o],
    878   [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
    879   # Make sure it works both with $CC and with simple cc.
    880   # Following AC_PROG_CC_C_O, we do the test twice because some
    881   # compilers refuse to overwrite an existing .o file with -o,
    882   # though they will create one.
    883   am_cv_prog_cc_c_o=yes
    884   for am_i in 1 2; do
    885     if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
    886          && test -f conftest2.$ac_objext; then
    887       : OK
    888     else
    889       am_cv_prog_cc_c_o=no
    890       break
    891     fi
    892   done
    893   rm -f core conftest*
    894   unset am_i])
    895 if test "$am_cv_prog_cc_c_o" != yes; then
    896    # Losing compiler, so override with the script.
    897    # FIXME: It is wrong to rewrite CC.
    898    # But if we don't then we get into trouble of one sort or another.
    899    # A longer-term fix would be to have automake use am__CC in this case,
    900    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    901    CC="$am_aux_dir/compile $CC"
    902 fi
    903 AC_LANG_POP([C])])
    904 
    905 # For backward compatibility.
    906 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
    907 
    908 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    909 #
    910 # This file is free software; the Free Software Foundation
    911 # gives unlimited permission to copy and/or distribute it,
    912 # with or without modifications, as long as this notice is preserved.
    913 
    914 # AM_RUN_LOG(COMMAND)
    915 # -------------------
    916 # Run COMMAND, save the exit status in ac_status, and log it.
    917 # (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
    918 AC_DEFUN([AM_RUN_LOG],
    919 [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
    920    ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
    921    ac_status=$?
    922    echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    923    (exit $ac_status); }])
    924 
    925898# Check to make sure that the build environment is sane.    -*- Autoconf -*-
    926899
    927 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
    928 #
    929 # This file is free software; the Free Software Foundation
    930 # gives unlimited permission to copy and/or distribute it,
    931 # with or without modifications, as long as this notice is preserved.
     900# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
     901# Free Software Foundation, Inc.
     902#
     903# This file is free software; the Free Software Foundation
     904# gives unlimited permission to copy and/or distribute it,
     905# with or without modifications, as long as this notice is preserved.
     906
     907# serial 5
    932908
    933909# AM_SANITY_CHECK
     
    935911AC_DEFUN([AM_SANITY_CHECK],
    936912[AC_MSG_CHECKING([whether build environment is sane])
     913# Just in case
     914sleep 1
     915echo timestamp > conftest.file
    937916# Reject unsafe characters in $srcdir or the absolute working directory
    938917# name.  Accept space and tab only in the latter.
     
    945924case $srcdir in
    946925  *[[\\\"\#\$\&\'\`$am_lf\ \    ]]*)
    947     AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
     926    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
    948927esac
    949928
    950 # Do 'set' in a subshell so we don't clobber the current shell's
     929# Do `set' in a subshell so we don't clobber the current shell's
    951930# arguments.  Must try -L first in case configure is actually a
    952931# symlink; some systems play weird games with the mod time of symlinks
     
    954933# directory).
    955934if (
    956    am_has_slept=no
    957    for am_try in 1 2; do
    958      echo "timestamp, slept: $am_has_slept" > conftest.file
    959      set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    960      if test "$[*]" = "X"; then
    961         # -L didn't work.
    962         set X `ls -t "$srcdir/configure" conftest.file`
    963      fi
    964      if test "$[*]" != "X $srcdir/configure conftest.file" \
    965         && test "$[*]" != "X conftest.file $srcdir/configure"; then
    966 
    967         # If neither matched, then we have a broken ls.  This can happen
    968         # if, for instance, CONFIG_SHELL is bash and it inherits a
    969         # broken ls alias from the environment.  This has actually
    970         # happened.  Such a system could not be considered "sane".
    971         AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
    972   alias in your environment])
    973      fi
    974      if test "$[2]" = conftest.file || test $am_try -eq 2; then
    975        break
    976      fi
    977      # Just in case.
    978      sleep 1
    979      am_has_slept=yes
    980    done
     935   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
     936   if test "$[*]" = "X"; then
     937      # -L didn't work.
     938      set X `ls -t "$srcdir/configure" conftest.file`
     939   fi
     940   rm -f conftest.file
     941   if test "$[*]" != "X $srcdir/configure conftest.file" \
     942      && test "$[*]" != "X conftest.file $srcdir/configure"; then
     943
     944      # If neither matched, then we have a broken ls.  This can happen
     945      # if, for instance, CONFIG_SHELL is bash and it inherits a
     946      # broken ls alias from the environment.  This has actually
     947      # happened.  Such a system could not be considered "sane".
     948      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
     949alias in your environment])
     950   fi
     951
    981952   test "$[2]" = conftest.file
    982953   )
     
    988959Check your system clock])
    989960fi
    990 AC_MSG_RESULT([yes])
    991 # If we didn't sleep, we still need to ensure time stamps of config.status and
    992 # generated files are strictly newer.
    993 am_sleep_pid=
    994 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
    995   ( sleep 1 ) &
    996   am_sleep_pid=$!
    997 fi
    998 AC_CONFIG_COMMANDS_PRE(
    999   [AC_MSG_CHECKING([that generated files are newer than configure])
    1000    if test -n "$am_sleep_pid"; then
    1001      # Hide warnings about reused PIDs.
    1002      wait $am_sleep_pid 2>/dev/null
    1003    fi
    1004    AC_MSG_RESULT([done])])
    1005 rm -f conftest.file
    1006 ])
    1007 
    1008 # Copyright (C) 2009-2014 Free Software Foundation, Inc.
    1009 #
    1010 # This file is free software; the Free Software Foundation
    1011 # gives unlimited permission to copy and/or distribute it,
    1012 # with or without modifications, as long as this notice is preserved.
     961AC_MSG_RESULT(yes)])
     962
     963# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
     964#
     965# This file is free software; the Free Software Foundation
     966# gives unlimited permission to copy and/or distribute it,
     967# with or without modifications, as long as this notice is preserved.
     968
     969# serial 2
    1013970
    1014971# AM_SILENT_RULES([DEFAULT])
    1015972# --------------------------
    1016973# Enable less verbose build rules; with the default set to DEFAULT
    1017 # ("yes" being less verbose, "no" or empty being verbose).
     974# (`yes' being less verbose, `no' or empty being verbose).
    1018975AC_DEFUN([AM_SILENT_RULES],
    1019 [AC_ARG_ENABLE([silent-rules], [dnl
    1020 AS_HELP_STRING(
    1021   [--enable-silent-rules],
    1022   [less verbose build output (undo: "make V=1")])
    1023 AS_HELP_STRING(
    1024   [--disable-silent-rules],
    1025   [verbose build output (undo: "make V=0")])dnl
    1026 ])
    1027 case $enable_silent_rules in @%:@ (((
    1028   yes) AM_DEFAULT_VERBOSITY=0;;
    1029    no) AM_DEFAULT_VERBOSITY=1;;
    1030     *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
     976[AC_ARG_ENABLE([silent-rules],
     977[  --enable-silent-rules          less verbose build output (undo: `make V=1')
     978  --disable-silent-rules         verbose build output (undo: `make V=0')])
     979case $enable_silent_rules in
     980yes) AM_DEFAULT_VERBOSITY=0;;
     981no)  AM_DEFAULT_VERBOSITY=1;;
     982*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
    1031983esac
    1032984dnl
    1033 dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
     985dnl A few `make' implementations (e.g., NonStop OS and NextStep)
    1034986dnl do not support nested variable expansions.
    1035987dnl See automake bug#9928 and bug#10237.
     
    10491001fi])
    10501002if test $am_cv_make_support_nested_variables = yes; then
    1051   dnl Using '$V' instead of '$(V)' breaks IRIX make.
     1003  dnl Using `$V' instead of `$(V)' breaks IRIX make.
    10521004  AM_V='$(V)'
    10531005  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
     
    10661018])
    10671019
    1068 # Copyright (C) 2001-2014 Free Software Foundation, Inc.
    1069 #
    1070 # This file is free software; the Free Software Foundation
    1071 # gives unlimited permission to copy and/or distribute it,
    1072 # with or without modifications, as long as this notice is preserved.
     1020# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
     1021#
     1022# This file is free software; the Free Software Foundation
     1023# gives unlimited permission to copy and/or distribute it,
     1024# with or without modifications, as long as this notice is preserved.
     1025
     1026# serial 1
    10731027
    10741028# AM_PROG_INSTALL_STRIP
    10751029# ---------------------
    1076 # One issue with vendor 'install' (even GNU) is that you can't
     1030# One issue with vendor `install' (even GNU) is that you can't
    10771031# specify the program used to strip binaries.  This is especially
    10781032# annoying in cross-compiling environments, where the build's strip
    10791033# is unlikely to handle the host's binaries.
    10801034# Fortunately install-sh will honor a STRIPPROG variable, so we
    1081 # always use install-sh in "make install-strip", and initialize
     1035# always use install-sh in `make install-strip', and initialize
    10821036# STRIPPROG with the value of the STRIP variable (set by the user).
    10831037AC_DEFUN([AM_PROG_INSTALL_STRIP],
    10841038[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
    1085 # Installed binaries are usually stripped using 'strip' when the user
    1086 # run "make install-strip".  However 'strip' might not be the right
     1039# Installed binaries are usually stripped using `strip' when the user
     1040# run `make install-strip'.  However `strip' might not be the right
    10871041# tool to use in cross-compilation environments, therefore Automake
    1088 # will honor the 'STRIP' environment variable to overrule this program.
    1089 dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
     1042# will honor the `STRIP' environment variable to overrule this program.
     1043dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
    10901044if test "$cross_compiling" != no; then
    10911045  AC_CHECK_TOOL([STRIP], [strip], :)
     
    10941048AC_SUBST([INSTALL_STRIP_PROGRAM])])
    10951049
    1096 # Copyright (C) 2006-2014 Free Software Foundation, Inc.
    1097 #
    1098 # This file is free software; the Free Software Foundation
    1099 # gives unlimited permission to copy and/or distribute it,
    1100 # with or without modifications, as long as this notice is preserved.
     1050# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
     1051#
     1052# This file is free software; the Free Software Foundation
     1053# gives unlimited permission to copy and/or distribute it,
     1054# with or without modifications, as long as this notice is preserved.
     1055
     1056# serial 3
    11011057
    11021058# _AM_SUBST_NOTMAKE(VARIABLE)
     
    11131069# Check how to create a tarball.                            -*- Autoconf -*-
    11141070
    1115 # Copyright (C) 2004-2014 Free Software Foundation, Inc.
    1116 #
    1117 # This file is free software; the Free Software Foundation
    1118 # gives unlimited permission to copy and/or distribute it,
    1119 # with or without modifications, as long as this notice is preserved.
     1071# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
     1072#
     1073# This file is free software; the Free Software Foundation
     1074# gives unlimited permission to copy and/or distribute it,
     1075# with or without modifications, as long as this notice is preserved.
     1076
     1077# serial 2
    11201078
    11211079# _AM_PROG_TAR(FORMAT)
    11221080# --------------------
    11231081# Check how to create a tarball in format FORMAT.
    1124 # FORMAT should be one of 'v7', 'ustar', or 'pax'.
     1082# FORMAT should be one of `v7', `ustar', or `pax'.
    11251083#
    11261084# Substitute a variable $(am__tar) that is a command
     
    11321090# a tarball read from stdin.
    11331091#     $(am__untar) < result.tar
    1134 #
    11351092AC_DEFUN([_AM_PROG_TAR],
    11361093[# Always define AMTAR for backward compatibility.  Yes, it's still used
    11371094# in the wild :-(  We should find a proper way to deprecate it ...
    11381095AC_SUBST([AMTAR], ['$${TAR-tar}'])
    1139 
    1140 # We'll loop over all known methods to create a tar archive until one works.
     1096m4_if([$1], [v7],
     1097     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
     1098     [m4_case([$1], [ustar],, [pax],,
     1099              [m4_fatal([Unknown tar format])])
     1100AC_MSG_CHECKING([how to create a $1 tar archive])
     1101# Loop over all known methods to create a tar archive until one works.
    11411102_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
    1142 
    1143 m4_if([$1], [v7],
    1144   [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
    1145 
    1146   [m4_case([$1],
    1147     [ustar],
    1148      [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
    1149       # There is notably a 21 bits limit for the UID and the GID.  In fact,
    1150       # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
    1151       # and bug#13588).
    1152       am_max_uid=2097151 # 2^21 - 1
    1153       am_max_gid=$am_max_uid
    1154       # The $UID and $GID variables are not portable, so we need to resort
    1155       # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
    1156       # below are definitely unexpected, so allow the users to see them
    1157       # (that is, avoid stderr redirection).
    1158       am_uid=`id -u || echo unknown`
    1159       am_gid=`id -g || echo unknown`
    1160       AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
    1161       if test $am_uid -le $am_max_uid; then
    1162          AC_MSG_RESULT([yes])
    1163       else
    1164          AC_MSG_RESULT([no])
    1165          _am_tools=none
    1166       fi
    1167       AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
    1168       if test $am_gid -le $am_max_gid; then
    1169          AC_MSG_RESULT([yes])
    1170       else
    1171         AC_MSG_RESULT([no])
    1172         _am_tools=none
    1173       fi],
    1174 
    1175   [pax],
    1176     [],
    1177 
    1178   [m4_fatal([Unknown tar format])])
    1179 
    1180   AC_MSG_CHECKING([how to create a $1 tar archive])
    1181 
    1182   # Go ahead even if we have the value already cached.  We do so because we
    1183   # need to set the values for the 'am__tar' and 'am__untar' variables.
    1184   _am_tools=${am_cv_prog_tar_$1-$_am_tools}
    1185 
    1186   for _am_tool in $_am_tools; do
    1187     case $_am_tool in
    1188     gnutar)
    1189       for _am_tar in tar gnutar gtar; do
    1190         AM_RUN_LOG([$_am_tar --version]) && break
    1191       done
    1192       am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
    1193       am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
    1194       am__untar="$_am_tar -xf -"
    1195       ;;
    1196     plaintar)
    1197       # Must skip GNU tar: if it does not support --format= it doesn't create
    1198       # ustar tarball either.
    1199       (tar --version) >/dev/null 2>&1 && continue
    1200       am__tar='tar chf - "$$tardir"'
    1201       am__tar_='tar chf - "$tardir"'
    1202       am__untar='tar xf -'
    1203       ;;
    1204     pax)
    1205       am__tar='pax -L -x $1 -w "$$tardir"'
    1206       am__tar_='pax -L -x $1 -w "$tardir"'
    1207       am__untar='pax -r'
    1208       ;;
    1209     cpio)
    1210       am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
    1211       am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
    1212       am__untar='cpio -i -H $1 -d'
    1213       ;;
    1214     none)
    1215       am__tar=false
    1216       am__tar_=false
    1217       am__untar=false
    1218       ;;
    1219     esac
    1220 
    1221     # If the value was cached, stop now.  We just wanted to have am__tar
    1222     # and am__untar set.
    1223     test -n "${am_cv_prog_tar_$1}" && break
    1224 
    1225     # tar/untar a dummy directory, and stop if the command works.
    1226     rm -rf conftest.dir
    1227     mkdir conftest.dir
    1228     echo GrepMe > conftest.dir/file
    1229     AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
    1230     rm -rf conftest.dir
    1231     if test -s conftest.tar; then
    1232       AM_RUN_LOG([$am__untar <conftest.tar])
    1233       AM_RUN_LOG([cat conftest.dir/file])
    1234       grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
    1235     fi
    1236   done
     1103_am_tools=${am_cv_prog_tar_$1-$_am_tools}
     1104# Do not fold the above two line into one, because Tru64 sh and
     1105# Solaris sh will not grok spaces in the rhs of `-'.
     1106for _am_tool in $_am_tools
     1107do
     1108  case $_am_tool in
     1109  gnutar)
     1110    for _am_tar in tar gnutar gtar;
     1111    do
     1112      AM_RUN_LOG([$_am_tar --version]) && break
     1113    done
     1114    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
     1115    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
     1116    am__untar="$_am_tar -xf -"
     1117    ;;
     1118  plaintar)
     1119    # Must skip GNU tar: if it does not support --format= it doesn't create
     1120    # ustar tarball either.
     1121    (tar --version) >/dev/null 2>&1 && continue
     1122    am__tar='tar chf - "$$tardir"'
     1123    am__tar_='tar chf - "$tardir"'
     1124    am__untar='tar xf -'
     1125    ;;
     1126  pax)
     1127    am__tar='pax -L -x $1 -w "$$tardir"'
     1128    am__tar_='pax -L -x $1 -w "$tardir"'
     1129    am__untar='pax -r'
     1130    ;;
     1131  cpio)
     1132    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
     1133    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
     1134    am__untar='cpio -i -H $1 -d'
     1135    ;;
     1136  none)
     1137    am__tar=false
     1138    am__tar_=false
     1139    am__untar=false
     1140    ;;
     1141  esac
     1142
     1143  # If the value was cached, stop now.  We just wanted to have am__tar
     1144  # and am__untar set.
     1145  test -n "${am_cv_prog_tar_$1}" && break
     1146
     1147  # tar/untar a dummy directory, and stop if the command works
    12371148  rm -rf conftest.dir
    1238 
    1239   AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
    1240   AC_MSG_RESULT([$am_cv_prog_tar_$1])])
    1241 
     1149  mkdir conftest.dir
     1150  echo GrepMe > conftest.dir/file
     1151  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
     1152  rm -rf conftest.dir
     1153  if test -s conftest.tar; then
     1154    AM_RUN_LOG([$am__untar <conftest.tar])
     1155    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
     1156  fi
     1157done
     1158rm -rf conftest.dir
     1159
     1160AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
     1161AC_MSG_RESULT([$am_cv_prog_tar_$1])])
    12421162AC_SUBST([am__tar])
    12431163AC_SUBST([am__untar])
  • automake/config.guess

    r208e5be rb1e63ac5  
    1 /usr/share/automake-1.15/config.guess
     1/usr/share/automake-1.11/config.guess
  • automake/config.sub

    r208e5be rb1e63ac5  
    1 /usr/share/automake-1.15/config.sub
     1/usr/share/automake-1.11/config.sub
  • automake/missing

    r208e5be rb1e63ac5  
    11#! /bin/sh
    2 # Common wrapper for a few potentially missing GNU programs.
    3 
    4 scriptversion=2013-10-28.13; # UTC
    5 
    6 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
    7 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
     2# Common stub for a few missing GNU programs while installing.
     3
     4scriptversion=2012-01-06.13; # UTC
     5
     6# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
     7# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
     8# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
    89
    910# This program is free software; you can redistribute it and/or modify
     
    2627
    2728if test $# -eq 0; then
    28   echo 1>&2 "Try '$0 --help' for more information"
     29  echo 1>&2 "Try \`$0 --help' for more information"
    2930  exit 1
    3031fi
    3132
     33run=:
     34sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
     35sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
     36
     37# In the cases where this matters, `missing' is being run in the
     38# srcdir already.
     39if test -f configure.ac; then
     40  configure_ac=configure.ac
     41else
     42  configure_ac=configure.in
     43fi
     44
     45msg="missing on your system"
     46
    3247case $1 in
    33 
    34   --is-lightweight)
    35     # Used by our autoconf macros to check whether the available missing
    36     # script is modern enough.
    37     exit 0
    38     ;;
    39 
    40   --run)
    41     # Back-compat with the calling convention used by older automake.
    42     shift
    43     ;;
     48--run)
     49  # Try to run requested program, and just exit if it succeeds.
     50  run=
     51  shift
     52  "$@" && exit 0
     53  # Exit code 63 means version mismatch.  This often happens
     54  # when the user try to use an ancient version of a tool on
     55  # a file that requires a minimum version.  In this case we
     56  # we should proceed has if the program had been absent, or
     57  # if --run hadn't been passed.
     58  if test $? = 63; then
     59    run=:
     60    msg="probably too old"
     61  fi
     62  ;;
    4463
    4564  -h|--h|--he|--hel|--help)
     
    4766$0 [OPTION]... PROGRAM [ARGUMENT]...
    4867
    49 Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
    50 to PROGRAM being missing or too old.
     68Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
     69error status if there is no known handling for PROGRAM.
    5170
    5271Options:
    5372  -h, --help      display this help and exit
    5473  -v, --version   output version information and exit
     74  --run           try to run the given command, and emulate it if it fails
    5575
    5676Supported PROGRAM values:
    57   aclocal   autoconf  autoheader   autom4te  automake  makeinfo
    58   bison     yacc      flex         lex       help2man
    59 
    60 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
    61 'g' are ignored when checking the name.
     77  aclocal      touch file \`aclocal.m4'
     78  autoconf     touch file \`configure'
     79  autoheader   touch file \`config.h.in'
     80  autom4te     touch the output file, or create a stub one
     81  automake     touch all \`Makefile.in' files
     82  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
     83  flex         create \`lex.yy.c', if possible, from existing .c
     84  help2man     touch the output file
     85  lex          create \`lex.yy.c', if possible, from existing .c
     86  makeinfo     touch the output file
     87  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
     88
     89Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
     90\`g' are ignored when checking the name.
    6291
    6392Send bug reports to <bug-automake@gnu.org>."
     
    71100
    72101  -*)
    73     echo 1>&2 "$0: unknown '$1' option"
    74     echo 1>&2 "Try '$0 --help' for more information"
     102    echo 1>&2 "$0: Unknown \`$1' option"
     103    echo 1>&2 "Try \`$0 --help' for more information"
    75104    exit 1
    76105    ;;
     
    78107esac
    79108
    80 # Run the given program, remember its exit status.
    81 "$@"; st=$?
    82 
    83 # If it succeeded, we are done.
    84 test $st -eq 0 && exit 0
    85 
    86 # Also exit now if we it failed (or wasn't found), and '--version' was
    87 # passed; such an option is passed most likely to detect whether the
    88 # program is present and works.
    89 case $2 in --version|--help) exit $st;; esac
    90 
    91 # Exit code 63 means version mismatch.  This often happens when the user
    92 # tries to use an ancient version of a tool on a file that requires a
    93 # minimum version.
    94 if test $st -eq 63; then
    95   msg="probably too old"
    96 elif test $st -eq 127; then
    97   # Program was missing.
    98   msg="missing on your system"
    99 else
    100   # Program was found and executed, but failed.  Give up.
    101   exit $st
    102 fi
    103 
    104 perl_URL=http://www.perl.org/
    105 flex_URL=http://flex.sourceforge.net/
    106 gnu_software_URL=http://www.gnu.org/software
    107 
    108 program_details ()
    109 {
    110   case $1 in
    111     aclocal|automake)
    112       echo "The '$1' program is part of the GNU Automake package:"
    113       echo "<$gnu_software_URL/automake>"
    114       echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
    115       echo "<$gnu_software_URL/autoconf>"
    116       echo "<$gnu_software_URL/m4/>"
    117       echo "<$perl_URL>"
    118       ;;
    119     autoconf|autom4te|autoheader)
    120       echo "The '$1' program is part of the GNU Autoconf package:"
    121       echo "<$gnu_software_URL/autoconf/>"
    122       echo "It also requires GNU m4 and Perl in order to run:"
    123       echo "<$gnu_software_URL/m4/>"
    124       echo "<$perl_URL>"
    125       ;;
    126   esac
    127 }
    128 
    129 give_advice ()
    130 {
    131   # Normalize program name to check for.
    132   normalized_program=`echo "$1" | sed '
    133     s/^gnu-//; t
    134     s/^gnu//; t
    135     s/^g//; t'`
    136 
    137   printf '%s\n' "'$1' is $msg."
    138 
    139   configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
    140   case $normalized_program in
    141     autoconf*)
    142       echo "You should only need it if you modified 'configure.ac',"
    143       echo "or m4 files included by it."
    144       program_details 'autoconf'
    145       ;;
    146     autoheader*)
    147       echo "You should only need it if you modified 'acconfig.h' or"
    148       echo "$configure_deps."
    149       program_details 'autoheader'
    150       ;;
    151     automake*)
    152       echo "You should only need it if you modified 'Makefile.am' or"
    153       echo "$configure_deps."
    154       program_details 'automake'
    155       ;;
    156     aclocal*)
    157       echo "You should only need it if you modified 'acinclude.m4' or"
    158       echo "$configure_deps."
    159       program_details 'aclocal'
    160       ;;
    161    autom4te*)
    162       echo "You might have modified some maintainer files that require"
    163       echo "the 'autom4te' program to be rebuilt."
    164       program_details 'autom4te'
    165       ;;
    166     bison*|yacc*)
    167       echo "You should only need it if you modified a '.y' file."
    168       echo "You may want to install the GNU Bison package:"
    169       echo "<$gnu_software_URL/bison/>"
    170       ;;
    171     lex*|flex*)
    172       echo "You should only need it if you modified a '.l' file."
    173       echo "You may want to install the Fast Lexical Analyzer package:"
    174       echo "<$flex_URL>"
    175       ;;
    176     help2man*)
    177       echo "You should only need it if you modified a dependency" \
    178            "of a man page."
    179       echo "You may want to install the GNU Help2man package:"
    180       echo "<$gnu_software_URL/help2man/>"
    181     ;;
    182     makeinfo*)
    183       echo "You should only need it if you modified a '.texi' file, or"
    184       echo "any other file indirectly affecting the aspect of the manual."
    185       echo "You might want to install the Texinfo package:"
    186       echo "<$gnu_software_URL/texinfo/>"
    187       echo "The spurious makeinfo call might also be the consequence of"
    188       echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
    189       echo "want to install GNU make:"
    190       echo "<$gnu_software_URL/make/>"
    191       ;;
    192     *)
    193       echo "You might have modified some files without having the proper"
    194       echo "tools for further handling them.  Check the 'README' file, it"
    195       echo "often tells you about the needed prerequisites for installing"
    196       echo "this package.  You may also peek at any GNU archive site, in"
    197       echo "case some other package contains this missing '$1' program."
    198       ;;
    199   esac
    200 }
    201 
    202 give_advice "$1" | sed -e '1s/^/WARNING: /' \
    203                        -e '2,$s/^/         /' >&2
    204 
    205 # Propagate the correct exit status (expected to be 127 for a program
    206 # not found, 63 for a program that failed due to version mismatch).
    207 exit $st
     109# normalize program name to check for.
     110program=`echo "$1" | sed '
     111  s/^gnu-//; t
     112  s/^gnu//; t
     113  s/^g//; t'`
     114
     115# Now exit if we have it, but it failed.  Also exit now if we
     116# don't have it and --version was passed (most likely to detect
     117# the program).  This is about non-GNU programs, so use $1 not
     118# $program.
     119case $1 in
     120  lex*|yacc*)
     121    # Not GNU programs, they don't have --version.
     122    ;;
     123
     124  *)
     125    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
     126       # We have it, but it failed.
     127       exit 1
     128    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
     129       # Could not run --version or --help.  This is probably someone
     130       # running `$TOOL --version' or `$TOOL --help' to check whether
     131       # $TOOL exists and not knowing $TOOL uses missing.
     132       exit 1
     133    fi
     134    ;;
     135esac
     136
     137# If it does not exist, or fails to run (possibly an outdated version),
     138# try to emulate it.
     139case $program in
     140  aclocal*)
     141    echo 1>&2 "\
     142WARNING: \`$1' is $msg.  You should only need it if
     143         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
     144         to install the \`Automake' and \`Perl' packages.  Grab them from
     145         any GNU archive site."
     146    touch aclocal.m4
     147    ;;
     148
     149  autoconf*)
     150    echo 1>&2 "\
     151WARNING: \`$1' is $msg.  You should only need it if
     152         you modified \`${configure_ac}'.  You might want to install the
     153         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
     154         archive site."
     155    touch configure
     156    ;;
     157
     158  autoheader*)
     159    echo 1>&2 "\
     160WARNING: \`$1' is $msg.  You should only need it if
     161         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
     162         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
     163         from any GNU archive site."
     164    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
     165    test -z "$files" && files="config.h"
     166    touch_files=
     167    for f in $files; do
     168      case $f in
     169      *:*) touch_files="$touch_files "`echo "$f" |
     170                                       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
     171      *) touch_files="$touch_files $f.in";;
     172      esac
     173    done
     174    touch $touch_files
     175    ;;
     176
     177  automake*)
     178    echo 1>&2 "\
     179WARNING: \`$1' is $msg.  You should only need it if
     180         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
     181         You might want to install the \`Automake' and \`Perl' packages.
     182         Grab them from any GNU archive site."
     183    find . -type f -name Makefile.am -print |
     184           sed 's/\.am$/.in/' |
     185           while read f; do touch "$f"; done
     186    ;;
     187
     188  autom4te*)
     189    echo 1>&2 "\
     190WARNING: \`$1' is needed, but is $msg.
     191         You might have modified some files without having the
     192         proper tools for further handling them.
     193         You can get \`$1' as part of \`Autoconf' from any GNU
     194         archive site."
     195
     196    file=`echo "$*" | sed -n "$sed_output"`
     197    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     198    if test -f "$file"; then
     199        touch $file
     200    else
     201        test -z "$file" || exec >$file
     202        echo "#! /bin/sh"
     203        echo "# Created by GNU Automake missing as a replacement of"
     204        echo "#  $ $@"
     205        echo "exit 0"
     206        chmod +x $file
     207        exit 1
     208    fi
     209    ;;
     210
     211  bison*|yacc*)
     212    echo 1>&2 "\
     213WARNING: \`$1' $msg.  You should only need it if
     214         you modified a \`.y' file.  You may need the \`Bison' package
     215         in order for those modifications to take effect.  You can get
     216         \`Bison' from any GNU archive site."
     217    rm -f y.tab.c y.tab.h
     218    if test $# -ne 1; then
     219        eval LASTARG=\${$#}
     220        case $LASTARG in
     221        *.y)
     222            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
     223            if test -f "$SRCFILE"; then
     224                 cp "$SRCFILE" y.tab.c
     225            fi
     226            SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
     227            if test -f "$SRCFILE"; then
     228                 cp "$SRCFILE" y.tab.h
     229            fi
     230          ;;
     231        esac
     232    fi
     233    if test ! -f y.tab.h; then
     234        echo >y.tab.h
     235    fi
     236    if test ! -f y.tab.c; then
     237        echo 'main() { return 0; }' >y.tab.c
     238    fi
     239    ;;
     240
     241  lex*|flex*)
     242    echo 1>&2 "\
     243WARNING: \`$1' is $msg.  You should only need it if
     244         you modified a \`.l' file.  You may need the \`Flex' package
     245         in order for those modifications to take effect.  You can get
     246         \`Flex' from any GNU archive site."
     247    rm -f lex.yy.c
     248    if test $# -ne 1; then
     249        eval LASTARG=\${$#}
     250        case $LASTARG in
     251        *.l)
     252            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
     253            if test -f "$SRCFILE"; then
     254                 cp "$SRCFILE" lex.yy.c
     255            fi
     256          ;;
     257        esac
     258    fi
     259    if test ! -f lex.yy.c; then
     260        echo 'main() { return 0; }' >lex.yy.c
     261    fi
     262    ;;
     263
     264  help2man*)
     265    echo 1>&2 "\
     266WARNING: \`$1' is $msg.  You should only need it if
     267         you modified a dependency of a manual page.  You may need the
     268         \`Help2man' package in order for those modifications to take
     269         effect.  You can get \`Help2man' from any GNU archive site."
     270
     271    file=`echo "$*" | sed -n "$sed_output"`
     272    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     273    if test -f "$file"; then
     274        touch $file
     275    else
     276        test -z "$file" || exec >$file
     277        echo ".ab help2man is required to generate this page"
     278        exit $?
     279    fi
     280    ;;
     281
     282  makeinfo*)
     283    echo 1>&2 "\
     284WARNING: \`$1' is $msg.  You should only need it if
     285         you modified a \`.texi' or \`.texinfo' file, or any other file
     286         indirectly affecting the aspect of the manual.  The spurious
     287         call might also be the consequence of using a buggy \`make' (AIX,
     288         DU, IRIX).  You might want to install the \`Texinfo' package or
     289         the \`GNU make' package.  Grab either from any GNU archive site."
     290    # The file to touch is that specified with -o ...
     291    file=`echo "$*" | sed -n "$sed_output"`
     292    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     293    if test -z "$file"; then
     294      # ... or it is the one specified with @setfilename ...
     295      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
     296      file=`sed -n '
     297        /^@setfilename/{
     298          s/.* \([^ ]*\) *$/\1/
     299          p
     300          q
     301        }' $infile`
     302      # ... or it is derived from the source name (dir/f.texi becomes f.info)
     303      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
     304    fi
     305    # If the file does not exist, the user really needs makeinfo;
     306    # let's fail without touching anything.
     307    test -f $file || exit 1
     308    touch $file
     309    ;;
     310
     311  *)
     312    echo 1>&2 "\
     313WARNING: \`$1' is needed, and is $msg.
     314         You might have modified some files without having the
     315         proper tools for further handling them.  Check the \`README' file,
     316         it often tells you about the needed prerequisites for installing
     317         this package.  You may also peek at any GNU archive site, in case
     318         some other package would contain this missing \`$1' program."
     319    exit 1
     320    ;;
     321esac
     322
     323exit 0
    208324
    209325# Local variables:
  • config.h.in

    r208e5be rb1e63ac5  
    120120/* Define to 1 if the system has the type `_Bool'. */
    121121#undef HAVE__BOOL
     122
     123/* Define to 1 if your C compiler doesn't accept -c and -o together. */
     124#undef NO_MINUS_C_MINUS_O
    122125
    123126/* Name of package */
  • configure

    r208e5be rb1e63ac5  
    11#! /bin/sh
    22# Guess values for system-dependent variables and create Makefiles.
    3 # Generated by GNU Autoconf 2.69 for cfa-cc 1.0.0.0.
     3# Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.0.
    44#
    55# Report bugs to <cforall@plg.uwaterloo.ca>.
    66#
    77#
    8 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
     8# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
     9# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
     10# Foundation, Inc.
    911#
    1012#
     
    135137(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
    136138
    137 # Use a proper internal environment variable to ensure we don't fall
    138   # into an infinite loop, continuously re-executing ourselves.
    139   if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
    140     _as_can_reexec=no; export _as_can_reexec;
    141     # We cannot yet assume a decent shell, so we have to provide a
    142 # neutralization value for shells without unset; and this also
    143 # works around shells that cannot unset nonexistent variables.
    144 # Preserve -v and -x to the replacement shell.
    145 BASH_ENV=/dev/null
    146 ENV=/dev/null
    147 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
    148 case $- in # ((((
    149   *v*x* | *x*v* ) as_opts=-vx ;;
    150   *v* ) as_opts=-v ;;
    151   *x* ) as_opts=-x ;;
    152   * ) as_opts= ;;
    153 esac
    154 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
    155 # Admittedly, this is quite paranoid, since all the known shells bail
    156 # out after a failed `exec'.
    157 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
    158 as_fn_exit 255
    159   fi
    160   # We don't want this to propagate to other subprocesses.
    161           { _as_can_reexec=; unset _as_can_reexec;}
    162139if test "x$CONFIG_SHELL" = x; then
    163140  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
     
    193170  exitcode=1; echo positional parameters were not saved.
    194171fi
    195 test x\$exitcode = x0 || exit 1
    196 test -x / || exit 1"
     172test x\$exitcode = x0 || exit 1"
    197173  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
    198174  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
     
    239215
    240216      if test "x$CONFIG_SHELL" != x; then :
    241   export CONFIG_SHELL
    242              # We cannot yet assume a decent shell, so we have to provide a
    243 # neutralization value for shells without unset; and this also
    244 # works around shells that cannot unset nonexistent variables.
    245 # Preserve -v and -x to the replacement shell.
    246 BASH_ENV=/dev/null
    247 ENV=/dev/null
    248 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
    249 case $- in # ((((
    250   *v*x* | *x*v* ) as_opts=-vx ;;
    251   *v* ) as_opts=-v ;;
    252   *x* ) as_opts=-x ;;
    253   * ) as_opts= ;;
    254 esac
    255 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
    256 # Admittedly, this is quite paranoid, since all the known shells bail
    257 # out after a failed `exec'.
    258 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
    259 exit 255
     217  # We cannot yet assume a decent shell, so we have to provide a
     218        # neutralization value for shells without unset; and this also
     219        # works around shells that cannot unset nonexistent variables.
     220        # Preserve -v and -x to the replacement shell.
     221        BASH_ENV=/dev/null
     222        ENV=/dev/null
     223        (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
     224        export CONFIG_SHELL
     225        case $- in # ((((
     226          *v*x* | *x*v* ) as_opts=-vx ;;
     227          *v* ) as_opts=-v ;;
     228          *x* ) as_opts=-x ;;
     229          * ) as_opts= ;;
     230        esac
     231        exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
    260232fi
    261233
     
    360332
    361333} # as_fn_mkdir_p
    362 
    363 # as_fn_executable_p FILE
    364 # -----------------------
    365 # Test if FILE is an executable regular file.
    366 as_fn_executable_p ()
    367 {
    368   test -f "$1" && test -x "$1"
    369 } # as_fn_executable_p
    370334# as_fn_append VAR VALUE
    371335# ----------------------
     
    489453    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
    490454
    491   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
    492   # already done that, so ensure we don't try to do so again and fall
    493   # in an infinite loop.  This has already happened in practice.
    494   _as_can_reexec=no; export _as_can_reexec
    495455  # Don't try to exec as it changes $[0], causing all sort of problems
    496456  # (the dirname of $[0] is not the place where we might find the
     
    527487    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    528488    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    529     # In both cases, we have to default to `cp -pR'.
     489    # In both cases, we have to default to `cp -p'.
    530490    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
    531       as_ln_s='cp -pR'
     491      as_ln_s='cp -p'
    532492  elif ln conf$$.file conf$$ 2>/dev/null; then
    533493    as_ln_s=ln
    534494  else
    535     as_ln_s='cp -pR'
     495    as_ln_s='cp -p'
    536496  fi
    537497else
    538   as_ln_s='cp -pR'
     498  as_ln_s='cp -p'
    539499fi
    540500rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
     
    548508fi
    549509
    550 as_test_x='test -x'
    551 as_executable_p=as_fn_executable_p
     510if test -x / >/dev/null 2>&1; then
     511  as_test_x='test -x'
     512else
     513  if ls -dL / >/dev/null 2>&1; then
     514    as_ls_L_option=L
     515  else
     516    as_ls_L_option=
     517  fi
     518  as_test_x='
     519    eval sh -c '\''
     520      if test -d "$1"; then
     521        test -d "$1/.";
     522      else
     523        case $1 in #(
     524        -*)set "./$1";;
     525        esac;
     526        case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
     527        ???[sx]*):;;*)false;;esac;fi
     528    '\'' sh
     529  '
     530fi
     531as_executable_p=$as_test_x
    552532
    553533# Sed expression to map a string onto a valid CPP name.
     
    738718oldincludedir
    739719includedir
    740 runstatedir
    741720localstatedir
    742721sharedstatedir
     
    824803sharedstatedir='${prefix}/com'
    825804localstatedir='${prefix}/var'
    826 runstatedir='${localstatedir}/run'
    827805includedir='${prefix}/include'
    828806oldincludedir='/usr/include'
     
    10771055    silent=yes ;;
    10781056
    1079   -runstatedir | --runstatedir | --runstatedi | --runstated \
    1080   | --runstate | --runstat | --runsta | --runst | --runs \
    1081   | --run | --ru | --r)
    1082     ac_prev=runstatedir ;;
    1083   -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
    1084   | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
    1085   | --run=* | --ru=* | --r=*)
    1086     runstatedir=$ac_optarg ;;
    1087 
    10881057  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
    10891058    ac_prev=sbindir ;;
     
    12231192                datadir sysconfdir sharedstatedir localstatedir includedir \
    12241193                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
    1225                 libdir localedir mandir runstatedir
     1194                libdir localedir mandir
    12261195do
    12271196  eval ac_val=\$$ac_var
     
    12511220  if test "x$build_alias" = x; then
    12521221    cross_compiling=maybe
     1222    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
     1223    If a cross compiler is detected then cross compile mode will be used" >&2
    12531224  elif test "x$build_alias" != "x$host_alias"; then
    12541225    cross_compiling=yes
     
    13761347  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
    13771348  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
    1378   --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
    13791349  --libdir=DIR            object code libraries [EPREFIX/lib]
    13801350  --includedir=DIR        C header files [PREFIX/include]
     
    14151385  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    14161386  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
    1417   --enable-silent-rules   less verbose build output (undo: "make V=1")
    1418   --disable-silent-rules  verbose build output (undo: "make V=0")
    1419   --disable-maintainer-mode
    1420                           disable make rules and dependencies not useful (and
    1421                           sometimes confusing) to the casual installer
     1387  --enable-silent-rules          less verbose build output (undo: `make V=1')
     1388  --disable-silent-rules         verbose build output (undo: `make V=0')
     1389  --disable-maintainer-mode  disable make rules and dependencies not useful
     1390                          (and sometimes confusing) to the casual installer
    14221391  --enable-target-release Build and install the release target
    14231392  --enable-target-debug   Build and install the debug target
    14241393  --enable-threading      Build and install libcfa with threading support
    14251394                          (Enabled by default)
    1426   --enable-dependency-tracking
    1427                           do not reject slow dependency extractors
    1428   --disable-dependency-tracking
    1429                           speeds up one-time build
     1395  --disable-dependency-tracking  speeds up one-time build
     1396  --enable-dependency-tracking   do not reject slow dependency extractors
    14301397
    14311398Optional Packages:
     
    15221489  cat <<\_ACEOF
    15231490cfa-cc configure 1.0.0.0
    1524 generated by GNU Autoconf 2.69
    1525 
    1526 Copyright (C) 2012 Free Software Foundation, Inc.
     1491generated by GNU Autoconf 2.68
     1492
     1493Copyright (C) 2010 Free Software Foundation, Inc.
    15271494This configure script is free software; the Free Software Foundation
    15281495gives unlimited permission to copy, distribute and modify it.
     
    16381605       } && test -s conftest$ac_exeext && {
    16391606         test "$cross_compiling" = yes ||
    1640          test -x conftest$ac_exeext
     1607         $as_test_x conftest$ac_exeext
    16411608       }; then :
    16421609  ac_retval=0
     
    20041971{
    20051972static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
    2006 test_array [0] = 0;
    2007 return test_array [0];
     1973test_array [0] = 0
    20081974
    20091975  ;
     
    20211987static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
    20221988                 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
    2023 test_array [0] = 0;
    2024 return test_array [0];
     1989test_array [0] = 0
    20251990
    20261991  ;
     
    20792044{
    20802045static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
    2081 test_array [0] = 0;
    2082 return test_array [0];
     2046test_array [0] = 0
    20832047
    20842048  ;
     
    21132077
    21142078It was created by cfa-cc $as_me 1.0.0.0, which was
    2115 generated by GNU Autoconf 2.69.  Invocation command line was
     2079generated by GNU Autoconf 2.68.  Invocation command line was
    21162080
    21172081  $ $0 $@
     
    24972461fi
    24982462
    2499 case $enable_silent_rules in # (((
    2500   yes) AM_DEFAULT_VERBOSITY=0;;
    2501    no) AM_DEFAULT_VERBOSITY=1;;
    2502     *) AM_DEFAULT_VERBOSITY=1;;
     2463case $enable_silent_rules in
     2464yes) AM_DEFAULT_VERBOSITY=0;;
     2465no) AM_DEFAULT_VERBOSITY=1;;
     2466*)  AM_DEFAULT_VERBOSITY=1;;
    25032467esac
    25042468am_make=${MAKE-make}
     
    25322496
    25332497
    2534 am__api_version='1.15'
     2498am__api_version='1.11'
    25352499
    25362500# Find a good install program.  We prefer a C program (faster),
     
    25712535    for ac_prog in ginstall scoinst install; do
    25722536      for ac_exec_ext in '' $ac_executable_extensions; do
    2573         if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
     2537        if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
    25742538          if test $ac_prog = install &&
    25752539            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
     
    26292593{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
    26302594$as_echo_n "checking whether build environment is sane... " >&6; }
     2595# Just in case
     2596sleep 1
     2597echo timestamp > conftest.file
    26312598# Reject unsafe characters in $srcdir or the absolute working directory
    26322599# name.  Accept space and tab only in the latter.
     
    26392606case $srcdir in
    26402607  *[\\\"\#\$\&\'\`$am_lf\ \     ]*)
    2641     as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
     2608    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
    26422609esac
    26432610
    2644 # Do 'set' in a subshell so we don't clobber the current shell's
     2611# Do `set' in a subshell so we don't clobber the current shell's
    26452612# arguments.  Must try -L first in case configure is actually a
    26462613# symlink; some systems play weird games with the mod time of symlinks
     
    26482615# directory).
    26492616if (
    2650    am_has_slept=no
    2651    for am_try in 1 2; do
    2652      echo "timestamp, slept: $am_has_slept" > conftest.file
    2653      set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    2654      if test "$*" = "X"; then
    2655         # -L didn't work.
    2656         set X `ls -t "$srcdir/configure" conftest.file`
    2657      fi
    2658      if test "$*" != "X $srcdir/configure conftest.file" \
    2659         && test "$*" != "X conftest.file $srcdir/configure"; then
    2660 
    2661         # If neither matched, then we have a broken ls.  This can happen
    2662         # if, for instance, CONFIG_SHELL is bash and it inherits a
    2663         # broken ls alias from the environment.  This has actually
    2664         # happened.  Such a system could not be considered "sane".
    2665         as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
    2666   alias in your environment" "$LINENO" 5
    2667      fi
    2668      if test "$2" = conftest.file || test $am_try -eq 2; then
    2669        break
    2670      fi
    2671      # Just in case.
    2672      sleep 1
    2673      am_has_slept=yes
    2674    done
     2617   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
     2618   if test "$*" = "X"; then
     2619      # -L didn't work.
     2620      set X `ls -t "$srcdir/configure" conftest.file`
     2621   fi
     2622   rm -f conftest.file
     2623   if test "$*" != "X $srcdir/configure conftest.file" \
     2624      && test "$*" != "X conftest.file $srcdir/configure"; then
     2625
     2626      # If neither matched, then we have a broken ls.  This can happen
     2627      # if, for instance, CONFIG_SHELL is bash and it inherits a
     2628      # broken ls alias from the environment.  This has actually
     2629      # happened.  Such a system could not be considered "sane".
     2630      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
     2631alias in your environment" "$LINENO" 5
     2632   fi
     2633
    26752634   test "$2" = conftest.file
    26762635   )
     
    26842643{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
    26852644$as_echo "yes" >&6; }
    2686 # If we didn't sleep, we still need to ensure time stamps of config.status and
    2687 # generated files are strictly newer.
    2688 am_sleep_pid=
    2689 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
    2690   ( sleep 1 ) &
    2691   am_sleep_pid=$!
    2692 fi
    2693 
    2694 rm -f conftest.file
    2695 
    26962645test "$program_prefix" != NONE &&
    26972646  program_transform_name="s&^&$program_prefix&;$program_transform_name"
     
    27042653program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
    27052654
    2706 # Expand $ac_aux_dir to an absolute path.
    2707 am_aux_dir=`cd "$ac_aux_dir" && pwd`
     2655# expand $ac_aux_dir to an absolute path
     2656am_aux_dir=`cd $ac_aux_dir && pwd`
    27082657
    27092658if test x"${MISSING+set}" != xset; then
     
    27162665fi
    27172666# Use eval to expand $SHELL
    2718 if eval "$MISSING --is-lightweight"; then
    2719   am_missing_run="$MISSING "
     2667if eval "$MISSING --run true"; then
     2668  am_missing_run="$MISSING --run "
    27202669else
    27212670  am_missing_run=
    2722   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
    2723 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
    2724 fi
    2725 
    2726 if test x"${install_sh+set}" != xset; then
     2671  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
     2672$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
     2673fi
     2674
     2675if test x"${install_sh}" != xset; then
    27272676  case $am_aux_dir in
    27282677  *\ * | *\     *)
     
    27332682fi
    27342683
    2735 # Installed binaries are usually stripped using 'strip' when the user
    2736 # run "make install-strip".  However 'strip' might not be the right
     2684# Installed binaries are usually stripped using `strip' when the user
     2685# run `make install-strip'.  However `strip' might not be the right
    27372686# tool to use in cross-compilation environments, therefore Automake
    2738 # will honor the 'STRIP' environment variable to overrule this program.
     2687# will honor the `STRIP' environment variable to overrule this program.
    27392688if test "$cross_compiling" != no; then
    27402689  if test -n "$ac_tool_prefix"; then
     
    27552704  test -z "$as_dir" && as_dir=.
    27562705    for ac_exec_ext in '' $ac_executable_extensions; do
    2757   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     2706  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    27582707    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
    27592708    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    27952744  test -z "$as_dir" && as_dir=.
    27962745    for ac_exec_ext in '' $ac_executable_extensions; do
    2797   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     2746  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    27982747    ac_cv_prog_ac_ct_STRIP="strip"
    27992748    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    28462795    for ac_prog in mkdir gmkdir; do
    28472796         for ac_exec_ext in '' $ac_executable_extensions; do
    2848            as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
     2797           { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
    28492798           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
    28502799             'mkdir (GNU coreutils) '* | \
     
    28752824$as_echo "$MKDIR_P" >&6; }
    28762825
     2826mkdir_p="$MKDIR_P"
     2827case $mkdir_p in
     2828  [\\/$]* | ?:[\\/]*) ;;
     2829  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
     2830esac
     2831
    28772832for ac_prog in gawk mawk nawk awk
    28782833do
     
    28932848  test -z "$as_dir" && as_dir=.
    28942849    for ac_exec_ext in '' $ac_executable_extensions; do
    2895   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     2850  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    28962851    ac_cv_prog_AWK="$ac_prog"
    28972852    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    30072962MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
    30082963
    3009 # For better backward compatibility.  To be removed once Automake 1.9.x
    3010 # dies out for good.  For more background, see:
    3011 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
    3012 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
    3013 mkdir_p='$(MKDIR_P)'
    3014 
    3015 # We need awk for the "check" target (and possibly the TAP driver).  The
    3016 # system "awk" is bad on some platforms.
     2964# We need awk for the "check" target.  The system "awk" is bad on
     2965# some platforms.
    30172966# Always define AMTAR for backward compatibility.  Yes, it's still used
    30182967# in the wild :-(  We should find a proper way to deprecate it ...
    30192968AMTAR='$${TAR-tar}'
    30202969
    3021 
    3022 # We'll loop over all known methods to create a tar archive until one works.
    3023 _am_tools='gnutar  pax cpio none'
    3024 
    30252970am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
    30262971
     
    30282973
    30292974
    3030 
    3031 
    3032 # POSIX will say in a future version that running "rm -f" with no argument
    3033 # is OK; and we want to be able to make that assumption in our Makefile
    3034 # recipes.  So use an aggressive probe to check that the usage we want is
    3035 # actually supported "in the wild" to an acceptable degree.
    3036 # See automake bug#10828.
    3037 # To make any issue more visible, cause the running configure to be aborted
    3038 # by default if the 'rm' program in use doesn't match our expectations; the
    3039 # user can still override this though.
    3040 if rm -f && rm -fr && rm -rf; then : OK; else
    3041   cat >&2 <<'END'
    3042 Oops!
    3043 
    3044 Your 'rm' program seems unable to run without file operands specified
    3045 on the command line, even when the '-f' option is present.  This is contrary
    3046 to the behaviour of most rm programs out there, and not conforming with
    3047 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
    3048 
    3049 Please tell bug-automake@gnu.org about your system, including the value
    3050 of your $PATH and any error possibly output before this message.  This
    3051 can help us improve future automake versions.
    3052 
    3053 END
    3054   if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
    3055     echo 'Configuration will proceed anyway, since you have set the' >&2
    3056     echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
    3057     echo >&2
    3058   else
    3059     cat >&2 <<'END'
    3060 Aborting the configuration process, to ensure you take notice of the issue.
    3061 
    3062 You can download and install GNU coreutils to get an 'rm' implementation
    3063 that behaves properly: <http://www.gnu.org/software/coreutils/>.
    3064 
    3065 If you want to complete the configuration process using your problematic
    3066 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
    3067 to "yes", and re-run configure.
    3068 
    3069 END
    3070     as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
    3071   fi
    3072 fi
    30732975
    30742976
     
    32003102  test -z "$as_dir" && as_dir=.
    32013103    for ac_exec_ext in '' $ac_executable_extensions; do
    3202   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     3104  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    32033105    ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
    32043106    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    35283430  test -z "$as_dir" && as_dir=.
    35293431    for ac_exec_ext in '' $ac_executable_extensions; do
    3530   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     3432  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    35313433    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
    35323434    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    35723474  test -z "$as_dir" && as_dir=.
    35733475    for ac_exec_ext in '' $ac_executable_extensions; do
    3574   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     3476  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    35753477    ac_cv_prog_ac_ct_CXX="$ac_prog"
    35763478    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    40253927# First try GNU make style include.
    40263928echo "include confinc" > confmf
    4027 # Ignore all kinds of additional output from 'make'.
     3929# Ignore all kinds of additional output from `make'.
    40283930case `$am_make -s -f confmf 2> /dev/null` in #(
    40293931*the\ am__doit\ target*)
     
    40813983  # making bogus files that we don't know about and never remove.  For
    40823984  # instance it was reported that on HP-UX the gcc test will end up
    4083   # making a dummy file named 'D' -- because '-MD' means "put the output
    4084   # in D".
     3985  # making a dummy file named `D' -- because `-MD' means `put the output
     3986  # in D'.
    40853987  rm -rf conftest.dir
    40863988  mkdir conftest.dir
     
    41174019    for i in 1 2 3 4 5 6; do
    41184020      echo '#include "conftst'$i'.h"' >> sub/conftest.c
    4119       # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
    4120       # Solaris 10 /bin/sh.
    4121       echo '/* dummy */' > sub/conftst$i.h
     4021      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
     4022      # Solaris 8's {/usr,}/bin/sh.
     4023      touch sub/conftst$i.h
    41224024    done
    41234025    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
    41244026
    4125     # We check with '-c' and '-o' for the sake of the "dashmstdout"
     4027    # We check with `-c' and `-o' for the sake of the "dashmstdout"
    41264028    # mode.  It turns out that the SunPro C++ compiler does not properly
    4127     # handle '-M -o', and we need to detect this.  Also, some Intel
    4128     # versions had trouble with output in subdirs.
     4029    # handle `-M -o', and we need to detect this.  Also, some Intel
     4030    # versions had trouble with output in subdirs
    41294031    am__obj=sub/conftest.${OBJEXT-o}
    41304032    am__minus_obj="-o $am__obj"
     
    41354037      ;;
    41364038    nosideeffect)
    4137       # After this tag, mechanisms are not by side-effect, so they'll
    4138       # only be used when explicitly requested.
     4039      # after this tag, mechanisms are not by side-effect, so they'll
     4040      # only be used when explicitly requested
    41394041      if test "x$enable_dependency_tracking" = xyes; then
    41404042        continue
     
    41444046      ;;
    41454047    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
    4146       # This compiler won't grok '-c -o', but also, the minuso test has
     4048      # This compiler won't grok `-c -o', but also, the minuso test has
    41474049      # not run yet.  These depmodes are late enough in the game, and
    41484050      # so weak that their functioning should not be impacted.
     
    42204122  test -z "$as_dir" && as_dir=.
    42214123    for ac_exec_ext in '' $ac_executable_extensions; do
    4222   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4124  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    42234125    ac_cv_prog_CC="${ac_tool_prefix}gcc"
    42244126    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    42604162  test -z "$as_dir" && as_dir=.
    42614163    for ac_exec_ext in '' $ac_executable_extensions; do
    4262   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4164  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    42634165    ac_cv_prog_ac_ct_CC="gcc"
    42644166    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    43134215  test -z "$as_dir" && as_dir=.
    43144216    for ac_exec_ext in '' $ac_executable_extensions; do
    4315   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4217  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    43164218    ac_cv_prog_CC="${ac_tool_prefix}cc"
    43174219    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    43544256  test -z "$as_dir" && as_dir=.
    43554257    for ac_exec_ext in '' $ac_executable_extensions; do
    4356   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4258  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    43574259    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
    43584260       ac_prog_rejected=yes
     
    44124314  test -z "$as_dir" && as_dir=.
    44134315    for ac_exec_ext in '' $ac_executable_extensions; do
    4414   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4316  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    44154317    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
    44164318    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    44564358  test -z "$as_dir" && as_dir=.
    44574359    for ac_exec_ext in '' $ac_executable_extensions; do
    4458   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     4360  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    44594361    ac_cv_prog_ac_ct_CC="$ac_prog"
    44604362    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    46524554#include <stdarg.h>
    46534555#include <stdio.h>
    4654 struct stat;
     4556#include <sys/types.h>
     4557#include <sys/stat.h>
    46554558/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
    46564559struct buf { int x; };
     
    47374640ac_compiler_gnu=$ac_cv_c_compiler_gnu
    47384641
    4739 ac_ext=c
    4740 ac_cpp='$CPP $CPPFLAGS'
    4741 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    4742 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    4743 ac_compiler_gnu=$ac_cv_c_compiler_gnu
    4744 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
    4745 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
    4746 if ${am_cv_prog_cc_c_o+:} false; then :
    4747   $as_echo_n "(cached) " >&6
    4748 else
    4749   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
    4750 /* end confdefs.h.  */
    4751 
    4752 int
    4753 main ()
    4754 {
    4755 
    4756   ;
    4757   return 0;
    4758 }
    4759 _ACEOF
    4760   # Make sure it works both with $CC and with simple cc.
    4761   # Following AC_PROG_CC_C_O, we do the test twice because some
    4762   # compilers refuse to overwrite an existing .o file with -o,
    4763   # though they will create one.
    4764   am_cv_prog_cc_c_o=yes
    4765   for am_i in 1 2; do
    4766     if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
    4767    ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
    4768    ac_status=$?
    4769    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    4770    (exit $ac_status); } \
    4771          && test -f conftest2.$ac_objext; then
    4772       : OK
    4773     else
    4774       am_cv_prog_cc_c_o=no
    4775       break
    4776     fi
    4777   done
    4778   rm -f core conftest*
    4779   unset am_i
    4780 fi
    4781 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
    4782 $as_echo "$am_cv_prog_cc_c_o" >&6; }
    4783 if test "$am_cv_prog_cc_c_o" != yes; then
    4784    # Losing compiler, so override with the script.
    4785    # FIXME: It is wrong to rewrite CC.
    4786    # But if we don't then we get into trouble of one sort or another.
    4787    # A longer-term fix would be to have automake use am__CC in this case,
    4788    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    4789    CC="$am_aux_dir/compile $CC"
    4790 fi
    4791 ac_ext=c
    4792 ac_cpp='$CPP $CPPFLAGS'
    4793 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    4794 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    4795 ac_compiler_gnu=$ac_cv_c_compiler_gnu
    4796 
    4797 
    47984642depcc="$CC"   am_compiler_list=
    47994643
     
    48074651  # making bogus files that we don't know about and never remove.  For
    48084652  # instance it was reported that on HP-UX the gcc test will end up
    4809   # making a dummy file named 'D' -- because '-MD' means "put the output
    4810   # in D".
     4653  # making a dummy file named `D' -- because `-MD' means `put the output
     4654  # in D'.
    48114655  rm -rf conftest.dir
    48124656  mkdir conftest.dir
     
    48434687    for i in 1 2 3 4 5 6; do
    48444688      echo '#include "conftst'$i'.h"' >> sub/conftest.c
    4845       # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
    4846       # Solaris 10 /bin/sh.
    4847       echo '/* dummy */' > sub/conftst$i.h
     4689      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
     4690      # Solaris 8's {/usr,}/bin/sh.
     4691      touch sub/conftst$i.h
    48484692    done
    48494693    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
    48504694
    4851     # We check with '-c' and '-o' for the sake of the "dashmstdout"
     4695    # We check with `-c' and `-o' for the sake of the "dashmstdout"
    48524696    # mode.  It turns out that the SunPro C++ compiler does not properly
    4853     # handle '-M -o', and we need to detect this.  Also, some Intel
    4854     # versions had trouble with output in subdirs.
     4697    # handle `-M -o', and we need to detect this.  Also, some Intel
     4698    # versions had trouble with output in subdirs
    48554699    am__obj=sub/conftest.${OBJEXT-o}
    48564700    am__minus_obj="-o $am__obj"
     
    48614705      ;;
    48624706    nosideeffect)
    4863       # After this tag, mechanisms are not by side-effect, so they'll
    4864       # only be used when explicitly requested.
     4707      # after this tag, mechanisms are not by side-effect, so they'll
     4708      # only be used when explicitly requested
    48654709      if test "x$enable_dependency_tracking" = xyes; then
    48664710        continue
     
    48704714      ;;
    48714715    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
    4872       # This compiler won't grok '-c -o', but also, the minuso test has
     4716      # This compiler won't grok `-c -o', but also, the minuso test has
    48734717      # not run yet.  These depmodes are late enough in the game, and
    48744718      # so weak that their functioning should not be impacted.
     
    49424786  # making bogus files that we don't know about and never remove.  For
    49434787  # instance it was reported that on HP-UX the gcc test will end up
    4944   # making a dummy file named 'D' -- because '-MD' means "put the output
    4945   # in D".
     4788  # making a dummy file named `D' -- because `-MD' means `put the output
     4789  # in D'.
    49464790  rm -rf conftest.dir
    49474791  mkdir conftest.dir
     
    49764820    for i in 1 2 3 4 5 6; do
    49774821      echo '#include "conftst'$i'.h"' >> sub/conftest.c
    4978       # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
    4979       # Solaris 10 /bin/sh.
    4980       echo '/* dummy */' > sub/conftst$i.h
     4822      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
     4823      # Solaris 8's {/usr,}/bin/sh.
     4824      touch sub/conftst$i.h
    49814825    done
    49824826    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
    49834827
    4984     # We check with '-c' and '-o' for the sake of the "dashmstdout"
     4828    # We check with `-c' and `-o' for the sake of the "dashmstdout"
    49854829    # mode.  It turns out that the SunPro C++ compiler does not properly
    4986     # handle '-M -o', and we need to detect this.  Also, some Intel
    4987     # versions had trouble with output in subdirs.
     4830    # handle `-M -o', and we need to detect this.  Also, some Intel
     4831    # versions had trouble with output in subdirs
    49884832    am__obj=sub/conftest.${OBJEXT-o}
    49894833    am__minus_obj="-o $am__obj"
     
    49944838      ;;
    49954839    nosideeffect)
    4996       # After this tag, mechanisms are not by side-effect, so they'll
    4997       # only be used when explicitly requested.
     4840      # after this tag, mechanisms are not by side-effect, so they'll
     4841      # only be used when explicitly requested
    49984842      if test "x$enable_dependency_tracking" = xyes; then
    49994843        continue
     
    50034847      ;;
    50044848    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
    5005       # This compiler won't grok '-c -o', but also, the minuso test has
     4849      # This compiler won't grok `-c -o', but also, the minuso test has
    50064850      # not run yet.  These depmodes are late enough in the game, and
    50074851      # so weak that their functioning should not be impacted.
     
    50574901
    50584902
     4903if test "x$CC" != xcc; then
     4904  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
     4905$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
     4906else
     4907  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
     4908$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
     4909fi
     4910set dummy $CC; ac_cc=`$as_echo "$2" |
     4911                      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
     4912if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
     4913  $as_echo_n "(cached) " >&6
     4914else
     4915  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     4916/* end confdefs.h.  */
     4917
     4918int
     4919main ()
     4920{
     4921
     4922  ;
     4923  return 0;
     4924}
     4925_ACEOF
     4926# Make sure it works both with $CC and with simple cc.
     4927# We do the test twice because some compilers refuse to overwrite an
     4928# existing .o file with -o, though they will create one.
     4929ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
     4930rm -f conftest2.*
     4931if { { case "(($ac_try" in
     4932  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     4933  *) ac_try_echo=$ac_try;;
     4934esac
     4935eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     4936$as_echo "$ac_try_echo"; } >&5
     4937  (eval "$ac_try") 2>&5
     4938  ac_status=$?
     4939  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     4940  test $ac_status = 0; } &&
     4941   test -f conftest2.$ac_objext && { { case "(($ac_try" in
     4942  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     4943  *) ac_try_echo=$ac_try;;
     4944esac
     4945eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     4946$as_echo "$ac_try_echo"; } >&5
     4947  (eval "$ac_try") 2>&5
     4948  ac_status=$?
     4949  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     4950  test $ac_status = 0; };
     4951then
     4952  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
     4953  if test "x$CC" != xcc; then
     4954    # Test first that cc exists at all.
     4955    if { ac_try='cc -c conftest.$ac_ext >&5'
     4956  { { case "(($ac_try" in
     4957  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     4958  *) ac_try_echo=$ac_try;;
     4959esac
     4960eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     4961$as_echo "$ac_try_echo"; } >&5
     4962  (eval "$ac_try") 2>&5
     4963  ac_status=$?
     4964  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     4965  test $ac_status = 0; }; }; then
     4966      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
     4967      rm -f conftest2.*
     4968      if { { case "(($ac_try" in
     4969  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     4970  *) ac_try_echo=$ac_try;;
     4971esac
     4972eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     4973$as_echo "$ac_try_echo"; } >&5
     4974  (eval "$ac_try") 2>&5
     4975  ac_status=$?
     4976  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     4977  test $ac_status = 0; } &&
     4978         test -f conftest2.$ac_objext && { { case "(($ac_try" in
     4979  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
     4980  *) ac_try_echo=$ac_try;;
     4981esac
     4982eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
     4983$as_echo "$ac_try_echo"; } >&5
     4984  (eval "$ac_try") 2>&5
     4985  ac_status=$?
     4986  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
     4987  test $ac_status = 0; };
     4988      then
     4989        # cc works too.
     4990        :
     4991      else
     4992        # cc exists but doesn't like -o.
     4993        eval ac_cv_prog_cc_${ac_cc}_c_o=no
     4994      fi
     4995    fi
     4996  fi
     4997else
     4998  eval ac_cv_prog_cc_${ac_cc}_c_o=no
     4999fi
     5000rm -f core conftest*
     5001
     5002fi
     5003if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
     5004  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
     5005$as_echo "yes" >&6; }
     5006else
     5007  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     5008$as_echo "no" >&6; }
     5009
     5010$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
     5011
     5012fi
     5013
     5014# FIXME: we rely on the cache variable name because
     5015# there is no other way.
     5016set dummy $CC
     5017am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
     5018eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
     5019if test "$am_t" != yes; then
     5020   # Losing compiler, so override with the script.
     5021   # FIXME: It is wrong to rewrite CC.
     5022   # But if we don't then we get into trouble of one sort or another.
     5023   # A longer-term fix would be to have automake use am__CC in this case,
     5024   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
     5025   CC="$am_aux_dir/compile $CC"
     5026fi
     5027
    50595028        # deprecated
    50605029# These are often not installed and people miss seeing the "no", so stop the configure.
     
    50775046  test -z "$as_dir" && as_dir=.
    50785047    for ac_exec_ext in '' $ac_executable_extensions; do
    5079   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     5048  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    50805049    ac_cv_prog_YACC="$ac_prog"
    50815050    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    51225091  test -z "$as_dir" && as_dir=.
    51235092    for ac_exec_ext in '' $ac_executable_extensions; do
    5124   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     5093  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    51255094    ac_cv_prog_LEX="$ac_prog"
    51265095    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    51545123c { yymore (); }
    51555124d { yyless (1); }
    5156 e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
    5157     yyless ((input () != 0)); }
     5125e { yyless (input () != 0); }
    51585126f { unput (yytext[0]); }
    51595127. { BEGIN INITIAL; }
     
    53135281  test -z "$as_dir" && as_dir=.
    53145282    for ac_exec_ext in '' $ac_executable_extensions; do
    5315   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     5283  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    53165284    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
    53175285    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    53535321  test -z "$as_dir" && as_dir=.
    53545322    for ac_exec_ext in '' $ac_executable_extensions; do
    5355   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     5323  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    53565324    ac_cv_prog_ac_ct_RANLIB="ranlib"
    53575325    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     
    55465514    for ac_exec_ext in '' $ac_executable_extensions; do
    55475515      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
    5548       as_fn_executable_p "$ac_path_GREP" || continue
     5516      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
    55495517# Check for GNU ac_path_GREP and select it if it is found.
    55505518  # Check for GNU $ac_path_GREP
     
    56125580    for ac_exec_ext in '' $ac_executable_extensions; do
    56135581      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
    5614       as_fn_executable_p "$ac_path_EGREP" || continue
     5582      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
    56155583# Check for GNU ac_path_EGREP and select it if it is found.
    56165584  # Check for GNU $ac_path_EGREP
     
    59515919$ac_includes_default
    59525920int
    5953 find_stack_direction (int *addr, int depth)
     5921find_stack_direction ()
    59545922{
    5955   int dir, dummy = 0;
    5956   if (! addr)
    5957     addr = &dummy;
    5958   *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
    5959   dir = depth ? find_stack_direction (addr, depth - 1) : 0;
    5960   return dir + dummy;
     5923  static char *addr = 0;
     5924  auto char dummy;
     5925  if (addr == 0)
     5926    {
     5927      addr = &dummy;
     5928      return find_stack_direction ();
     5929    }
     5930  else
     5931    return (&dummy > addr) ? 1 : -1;
    59615932}
    59625933
    59635934int
    5964 main (int argc, char **argv)
     5935main ()
    59655936{
    5966   return find_stack_direction (0, argc + !argv + 20) < 0;
     5937  return find_stack_direction () < 0;
    59675938}
    59685939_ACEOF
     
    60095980/* end confdefs.h.  */
    60105981
    6011              #include <stdbool.h>
    6012              #ifndef bool
    6013               "error: bool is not defined"
    6014              #endif
    6015              #ifndef false
    6016               "error: false is not defined"
    6017              #endif
    6018              #if false
    6019               "error: false is not 0"
    6020              #endif
    6021              #ifndef true
    6022               "error: true is not defined"
    6023              #endif
    6024              #if true != 1
    6025               "error: true is not 1"
    6026              #endif
    6027              #ifndef __bool_true_false_are_defined
    6028               "error: __bool_true_false_are_defined is not defined"
    6029              #endif
    6030 
    6031              struct s { _Bool s: 1; _Bool t; } s;
    6032 
    6033              char a[true == 1 ? 1 : -1];
    6034              char b[false == 0 ? 1 : -1];
    6035              char c[__bool_true_false_are_defined == 1 ? 1 : -1];
    6036              char d[(bool) 0.5 == true ? 1 : -1];
    6037              /* See body of main program for 'e'.  */
    6038              char f[(_Bool) 0.0 == false ? 1 : -1];
    6039              char g[true];
    6040              char h[sizeof (_Bool)];
    6041              char i[sizeof s.t];
    6042              enum { j = false, k = true, l = false * true, m = true * 256 };
    6043              /* The following fails for
    6044                 HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
    6045              _Bool n[m];
    6046              char o[sizeof n == m * sizeof n[0] ? 1 : -1];
    6047              char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
    6048              /* Catch a bug in an HP-UX C compiler.  See
    6049                 http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
    6050                 http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
    6051               */
    6052              _Bool q = true;
    6053              _Bool *pq = &q;
     5982#include <stdbool.h>
     5983#ifndef bool
     5984 "error: bool is not defined"
     5985#endif
     5986#ifndef false
     5987 "error: false is not defined"
     5988#endif
     5989#if false
     5990 "error: false is not 0"
     5991#endif
     5992#ifndef true
     5993 "error: true is not defined"
     5994#endif
     5995#if true != 1
     5996 "error: true is not 1"
     5997#endif
     5998#ifndef __bool_true_false_are_defined
     5999 "error: __bool_true_false_are_defined is not defined"
     6000#endif
     6001
     6002        struct s { _Bool s: 1; _Bool t; } s;
     6003
     6004        char a[true == 1 ? 1 : -1];
     6005        char b[false == 0 ? 1 : -1];
     6006        char c[__bool_true_false_are_defined == 1 ? 1 : -1];
     6007        char d[(bool) 0.5 == true ? 1 : -1];
     6008        /* See body of main program for 'e'.  */
     6009        char f[(_Bool) 0.0 == false ? 1 : -1];
     6010        char g[true];
     6011        char h[sizeof (_Bool)];
     6012        char i[sizeof s.t];
     6013        enum { j = false, k = true, l = false * true, m = true * 256 };
     6014        /* The following fails for
     6015           HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
     6016        _Bool n[m];
     6017        char o[sizeof n == m * sizeof n[0] ? 1 : -1];
     6018        char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
     6019        /* Catch a bug in an HP-UX C compiler.  See
     6020           http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
     6021           http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
     6022        */
     6023        _Bool q = true;
     6024        _Bool *pq = &q;
    60546025
    60556026int
     
    60576028{
    60586029
    6059              bool e = &s;
    6060              *pq |= q;
    6061              *pq |= ! q;
    6062              /* Refer to every declared value, to avoid compiler optimizations.  */
    6063              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
    6064                      + !m + !n + !o + !p + !q + !pq);
     6030        bool e = &s;
     6031        *pq |= q;
     6032        *pq |= ! q;
     6033        /* Refer to every declared value, to avoid compiler optimizations.  */
     6034        return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
     6035                + !m + !n + !o + !p + !q + !pq);
    60656036
    60666037  ;
     
    60776048{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
    60786049$as_echo "$ac_cv_header_stdbool_h" >&6; }
    6079    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
     6050ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
    60806051if test "x$ac_cv_type__Bool" = xyes; then :
    60816052
     
    60866057
    60876058fi
    6088 
    60896059
    60906060if test $ac_cv_header_stdbool_h = yes; then
     
    63936363
    63946364
    6395 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
    6396 $as_echo_n "checking that generated files are newer than configure... " >&6; }
    6397    if test -n "$am_sleep_pid"; then
    6398      # Hide warnings about reused PIDs.
    6399      wait $am_sleep_pid 2>/dev/null
    6400    fi
    6401    { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
    6402 $as_echo "done" >&6; }
    64036365 if test -n "$EXEEXT"; then
    64046366  am__EXEEXT_TRUE=
     
    67436705    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    67446706    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    6745     # In both cases, we have to default to `cp -pR'.
     6707    # In both cases, we have to default to `cp -p'.
    67466708    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
    6747       as_ln_s='cp -pR'
     6709      as_ln_s='cp -p'
    67486710  elif ln conf$$.file conf$$ 2>/dev/null; then
    67496711    as_ln_s=ln
    67506712  else
    6751     as_ln_s='cp -pR'
     6713    as_ln_s='cp -p'
    67526714  fi
    67536715else
    6754   as_ln_s='cp -pR'
     6716  as_ln_s='cp -p'
    67556717fi
    67566718rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
     
    68126774fi
    68136775
    6814 
    6815 # as_fn_executable_p FILE
    6816 # -----------------------
    6817 # Test if FILE is an executable regular file.
    6818 as_fn_executable_p ()
    6819 {
    6820   test -f "$1" && test -x "$1"
    6821 } # as_fn_executable_p
    6822 as_test_x='test -x'
    6823 as_executable_p=as_fn_executable_p
     6776if test -x / >/dev/null 2>&1; then
     6777  as_test_x='test -x'
     6778else
     6779  if ls -dL / >/dev/null 2>&1; then
     6780    as_ls_L_option=L
     6781  else
     6782    as_ls_L_option=
     6783  fi
     6784  as_test_x='
     6785    eval sh -c '\''
     6786      if test -d "$1"; then
     6787        test -d "$1/.";
     6788      else
     6789        case $1 in #(
     6790        -*)set "./$1";;
     6791        esac;
     6792        case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
     6793        ???[sx]*):;;*)false;;esac;fi
     6794    '\'' sh
     6795  '
     6796fi
     6797as_executable_p=$as_test_x
    68246798
    68256799# Sed expression to map a string onto a valid CPP name.
     
    68436817ac_log="
    68446818This file was extended by cfa-cc $as_me 1.0.0.0, which was
    6845 generated by GNU Autoconf 2.69.  Invocation command line was
     6819generated by GNU Autoconf 2.68.  Invocation command line was
    68466820
    68476821  CONFIG_FILES    = $CONFIG_FILES
     
    69096883ac_cs_version="\\
    69106884cfa-cc config.status 1.0.0.0
    6911 configured by $0, generated by GNU Autoconf 2.69,
     6885configured by $0, generated by GNU Autoconf 2.68,
    69126886  with options \\"\$ac_cs_config\\"
    69136887
    6914 Copyright (C) 2012 Free Software Foundation, Inc.
     6888Copyright (C) 2010 Free Software Foundation, Inc.
    69156889This config.status script is free software; the Free Software Foundation
    69166890gives unlimited permission to copy, distribute and modify it."
     
    70036977cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
    70046978if \$ac_cs_recheck; then
    7005   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
     6979  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
    70066980  shift
    70076981  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
     
    76457619  case $ac_file$ac_mode in
    76467620    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
    7647   # Older Autoconf quotes --file arguments for eval, but not when files
     7621  # Autoconf 2.62 quotes --file arguments for eval, but not when files
    76487622  # are listed without --file.  Let's play safe and only enable the eval
    76497623  # if we detect the quoting.
     
    76587632    mf=`echo "$mf" | sed -e 's/:.*$//'`
    76597633    # Check whether this is an Automake generated Makefile or not.
    7660     # We used to match only the files named 'Makefile.in', but
     7634    # We used to match only the files named `Makefile.in', but
    76617635    # some people rename them; so instead we look at the file content.
    76627636    # Grep'ing the first line is not enough: some people post-process
     
    76927666    fi
    76937667    # Extract the definition of DEPDIR, am__include, and am__quote
    7694     # from the Makefile without running 'make'.
     7668    # from the Makefile without running `make'.
    76957669    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
    76967670    test -z "$DEPDIR" && continue
    76977671    am__include=`sed -n 's/^am__include = //p' < "$mf"`
    7698     test -z "$am__include" && continue
     7672    test -z "am__include" && continue
    76997673    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
     7674    # When using ansi2knr, U may be empty or an underscore; expand it
     7675    U=`sed -n 's/^U = //p' < "$mf"`
    77007676    # Find all dependency output files, they are included files with
    77017677    # $(DEPDIR) in their names.  We invoke sed twice because it is the
     
    77047680    for file in `sed -n "
    77057681      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
    7706          sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
     7682         sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
    77077683      # Make sure the directory exists.
    77087684      test -f "$dirpart/$file" && continue
  • configure.ac

    r208e5be rb1e63ac5  
    99AM_SILENT_RULES([no])
    1010
    11 AM_INIT_AUTOMAKE([subdir-objects])
     11AM_INIT_AUTOMAKE
    1212AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
    1313
  • doc/LaTeXmacros/lstlang.sty

    r208e5be rb1e63ac5  
    88%% Created On       : Sat May 13 16:34:42 2017
    99%% Last Modified By : Peter A. Buhr
    10 %% Last Modified On : Thu Jun 22 07:40:31 2017
    11 %% Update Count     : 10
     10%% Last Modified On : Fri May 26 12:47:09 2017
     11%% Update Count     : 8
    1212%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1313
     
    116116                _Atomic, coroutine, is_coroutine, is_monitor, is_thread, monitor, mutex, nomutex,
    117117                resume, suspend, thread, _Thread_local, yield},
    118         moredirectives={defined,include_next}%
    119118}
    120119
  • doc/generic_types/mail

    r208e5be rb1e63ac5  
    7878
    7979- OOPSLA'17 Submissions
    80 
    81 
    82 
    83 From: "OOPSLA'17 HotCRP" <noreply@oopsla17.hotcrp.com>
    84 Subject: [OOPSLA'17] Paper #20 "Generic and Tuple Types with Efficient..."
    85 To: Peter Buhr <pabuhr@uwaterloo.ca>
    86 Cc: jonathan.aldrich@cs.cmu.edu
    87 Reply-To: jonathan.aldrich@cs.cmu.edu
    88 Date: Wed,  7 Jun 2017 13:33:40 +0000 (UTC)
    89 
    90 Dear Peter Buhr,
    91 
    92 The author response period for OOPSLA has started, and will continue until
    93 the end of June 10th (Anywhere on Earth).  No email with a snapshot of your
    94 reviews will be sent: you can see the live version of reviews (including
    95 current updates) on the HotCRP system (links at the bottom).
    96 
    97 An author response should aim to:
    98  -correct reviewers' mistakes or misunderstandings
    99  -offer new information only when this addresses reviewers' concerns (e.g.,
    100 "I wonder if A might work better...";  "we tried that, but...")
    101  -answer explicit questions by the reviewers. The key questions will be in a
    102 designated "Questions for Author Response" entry of a review.
    103 
    104 Please keep in mind that an author response is *not* a "rebuttal". You are
    105 not rebutting an opponent's arguments with your own, in front of an
    106 audience that weighs both sets of arguments. Instead, your audience is the
    107 same reviewers who offered the comments in the first place, and their
    108 subjective weighing of different factors is very unlikely to change.
    109 
    110 During author response, please keep in mind that the reviewers are still
    111 unaware of author identity. If you need to refer to author-identifying
    112 information during your response, the ideal course of action is to place it
    113 at an external location and include a URL, with an explicit warning (e.g.,
    114 "WARNING: following this link will reveal author identity").
    115 
    116 As with all external resources, your response should be self-contained,
    117 without consulting them. That is, the author-visible external URL is just
    118 evidence, but the claim that this evidence supports should be clear in the
    119 response text. For instance:
    120 "we have received public feedback from the developers of X that confirm the
    121 issue [supporting URL] (WARNING: following this link will reveal author
    122 identity)"
    123 
    124 Your paper's access information is below:
    125 
    126        Title: Generic and Tuple Types with Efficient Dynamic Layout in C∀
    127   Paper site: https://oopsla17.hotcrp.com/paper/20
    128 
    129 Use the link below to sign in to the site.
    130 
    131 https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca
    132 
    133 Please contact me <jonathan.aldrich@cs.cmu.edu> with any questions or
    134 concerns.
    135 
    136 Best Regards and wishes for a constructive response,
    137 
    138 Jonathan Aldrich
    139 
    140 
    141 
    142 From: "OOPSLA'17 HotCRP" <noreply@oopsla17.hotcrp.com>
    143 Subject: [OOPSLA'17] Paper #20 "Generic and Tuple Types with Efficient..."
    144 To: Peter Buhr <pabuhr@uwaterloo.ca>
    145 Cc: jonathan.aldrich@cs.cmu.edu
    146 Reply-To: jonathan.aldrich@cs.cmu.edu
    147 Date: Tue, 20 Jun 2017 00:33:10 +0000 (UTC)
    148 
    149 Dear Peter Buhr,
    150 
    151 I regret to inform you that your submission to OOPSLA'17 listed below has not
    152 been selected for the second phase of the review process. I understand this is
    153 not welcome news but selection was very competitive: 157 of the 223 papers
    154 submitted did not advance to the second phase. For several of these, there was
    155 a clear impression that in the future they can evolve into some of the
    156 strongest results of our community.
    157 
    158        Title: Generic and Tuple Types with Efficient Dynamic Layout in C∀
    159   Paper site: https://oopsla17.hotcrp.com/paper/20
    160   Login link: https://oopsla17.hotcrp.com/?email=pabuhr%40uwaterloo.ca
    161 
    162 Below you will find reviews, as well as author-visible comments--the latter may
    163 include further communication. I hope you will find the reviewers' feedback
    164 useful.
    165 
    166 Best Regards,
    167 
    168 - Jonathan Aldrich <jonathan.aldrich@cs.cmu.edu>, for OOPSLA 2017
    169 Submissions
    170 
    171 
    172 
    173 ===========================================================================
    174                            OOPSLA'17 Review #20A
    175 ---------------------------------------------------------------------------
    176  Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀
    177 ---------------------------------------------------------------------------
    178 
    179                       Overall merit: C. Weak paper, though I will not fight
    180                                         strongly against it
    181                          Confidence: X. I am an expert in this area
    182 
    183                          ===== Paper summary =====
    184 
    185 This presents an extension of the C programming language that tries to preserve the character of the existing language, while adding tuples and generics. Unlike C++ templates, generics preserve separate compilation. Types are represented at runtime, if needed, by size and alignment values, along with pointers to the code for any needed operators. A microbenchmark performance comparison is provided.
    186 
    187                       ===== Comments for author =====
    188 
    189 This is an interesting extension to C, that may be of interest to some C programmers. It generally seems to be fairly well engineered, and mostly respects C's design goals.
    190 
    191 Unfortunately, there have been enough proposals for extended C dialects that this sort of design is tough to sell. And I don't think the evaluation really went far enough to make that case.
    192 
    193 The ideas in the paper don't appear to be fundamentally new. The idea of passing types as runtime objects has certainly been explored before. An additional ancient reference is http://dl.acm.org/citation.cfm?doid=13310.13330.
    194 
    195 There seems to be a new idea of minimally describing types using alignment and size attributes instead of (?) pointers to assignment operators and the like. But this scheme is not very well described. Notably, it is not clear how, say, a struct with atomic field or bit-fields would be described.
    196 
    197 I wasn't quite clear on the extent to which operator overloading is supported. The MAX example appears to me like it would be quite controversial among C programmers.
    198 
    199 It is not obvious that type inference here always converges. An outline of the algorithm would be useful.
    200 
    201 Above all, this needs experience results from a more complete implementation.
    202 
    203 Details:
    204 
    205 Relying on TIOBE here seems a bit dubious. Since it counts web pages, and C isn't exactly new and hot, it may actually understate your case.
    206 
    207 The print example seems a little simplistic, since it's not clear how it handles formatting.
    208 
    209 "does not using the return type"
    210 
    211               ===== Questions for authors’ response =====
    212 
    213 How are atomics, volatile, and bit-fields in structs handled?
    214 
    215 ===========================================================================
    216                            OOPSLA'17 Review #20B
    217 ---------------------------------------------------------------------------
    218  Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀
    219 ---------------------------------------------------------------------------
    220 
    221                       Overall merit: D. Reject
    222                          Confidence: X. I am an expert in this area
    223 
    224                          ===== Paper summary =====
    225 
    226 The authors present an extension to C, adding universal polymorphism and tuples. These features are described in prose. There is an implementation, though this is not described in depth in the paper. There is a benchmark evaluation.
    227 
    228                       ===== Comments for author =====
    229 
    230 The paper is well-written and the concepts explained well. It is nice to see work in the low-level/C space - I believe that it is an area that has not been well-served by the OOPSLA community. My concerns with the paper are that the contribution is rather small and the concepts are not well-evaluated; specifically this is a language design paper and there is no attempt to evaluate the actual language design.
    231 
    232 While it is reasonable to describe only a couple of features in a paper, I would then expect a detailed description of the implementation and/or a formalism with proven safety properties and a thorough evaluation of the design. For a paper which only describes the design of a language the bar is higher than two features - for example, a description of a 'large' language such as D or Rust, even then I would expect a stronger evaluation.
    233 
    234 ## On the design of C-forall
    235 
    236 There are some interesting points in the design of generics, notably the otype/dtype distinction. The design seems reasonable and follows what I would expect from other languages. The design for tuples is more unusual - the usual design of simple anonymous records with anonymous fields is extended with a mix of 'spread'ing, variadics, and implicit conversions. Importantly, the authors neither justify nor evaluate this departure - that is a severe omission for this paper. Furthermore, the only in-depth description of the implementation in the paper concerns tuples, and it seems to me that this is only interesting because of the unusual design - further reason for justifying it.
    237 
    238 ## Evaluation
    239 
    240 The paper evaluates the implementation of C-forall with (effectively) a single micro-benchmark. That benchmark seems to show that C-forall performs worse than C++ on every measure, but this is not really discussed.
    241 
    242 A better performance evaluation would consist of multiple tests, both micro-benchmarks and realistic code and would test C-forall compared to alternatives (D, Rust, Go, etc.) not just C/C++.
    243 
    244 However, performance is not the really interesting thing to test here. The authors propose a new language and while performance is an important consideration for systems languages, it is far from the most important. I would like to see the usability of the language tested with user studies of different kinds (various levels of skill-level and coding scenarios). The authors could also use case studies or programming idioms to compare programming in C-forall vs the alternatives (again, comparing with D, Rust, etc. is more interesting to me than C).
    245 
    246 Finally, in designing C-forall, the authors make several assumptions about why C programmers use C. These should be backed up either with evaluation or citation. Statements in the paper certainly do not reflect my experience discussing language design with C programmers, and I would like to see them verified.
    247 
    248 
    249 ## Related work
    250 
    251 The related work section is broad and gives good descriptions of other languages. However, the comparisons between languages focus more on the high-level goals of the language. It would be more interesting to focus on the details of the languages - the comparisons between Cyclone, C++, Java, and C-forall generics are good, I would like to see more of this with D and Rust, which are the more modern alternatives to C-forall (for example, Rust's notion of Sized and ?Sized types seems similar to otypes/dtypes).
    252 
    253 The related work is really missing any discussion of why the C-forall design choices are better than other languages. To clarify, I mean the specific design of generics and tuples, c.f., the suitability of the language in general because of garbage collection or learning difficulties.
    254 
    255 ===========================================================================
    256                            OOPSLA'17 Review #20C
    257 ---------------------------------------------------------------------------
    258  Paper #20: Generic and Tuple Types with Efficient Dynamic Layout in C∀
    259 ---------------------------------------------------------------------------
    260 
    261                       Overall merit: D. Reject
    262                          Confidence: Z. I am not an expert; my evaluation
    263                                         is that of an informed outsider
    264 
    265                          ===== Paper summary =====
    266 
    267 The paper presents two language features of "Cforall": generics and tuples.
    268 
    269                       ===== Comments for author =====
    270 
    271 The authors really need to talk about C++ as early as possible IMHO. That's the first thing that came to mind when reading the abstract: how is this different from C++?
    272 
    273 Comparison with C++:
    274 The main difference with C++ seems to be that Cforall favors separate compilation at the expense of runtime overhead while C++ systematically avoids any runtime overhead (at the expense of slow compilation times). C++ approach makes more sense IMHO. While it's true that people where using C for almost everything 30 years ago, that is just not true anymore. Most people writing C today are doing system programming, otherwise there would be using a higher level programming language (C#, Java etc ...).
    275 Now, when doing system programming, one needs very fine grain control over the resources: memory layout, etc ...
    276 It is pretty clear to me that the people writing that kind of code will favor generics that do not cost any overhead at runtime, otherwise they would be writing Java in the first place.
    277 The authors need to better justify the runtime overhead, or give escape hatches for those who don't want to pay that cost at runtime.
    278 They very often go back to the benefit of separate compilation, but that's not enough IMHO. Here is a proposal: why not have 2 modes, one called debug mode, used while developing the code, that would compile generics with a runtime overhead. Another, called production, that would unfold the world like C++ does?
    279 
    280 About Tuples:
    281 The section about tuples is too long. I would have spent more time explaining generics.
    282 
    283 Feedback:
    284 "This installation base"
    285 Unclear what you mean by that.
    286 
    287 "Prior projects ... but failed ..."
    288 Hummm ... What about C++.
    289 
    290 "... object-oriented or functional programming with garbage collection ..."
    291 You are really mixing apples and oranges here. Many C programmers have nothing agains object-oriented features, not even functional programming (C++ 11 adds
    292 a bunch of features proving my point), but it's clear that most of them feel very strongly against automated garbage collection.
    293 
    294 "In many cases, C++ is often ..."
    295 This sentence feels like it is coming out of nowhere.
    296 
    297 "... the polymorphic runtime-cost ..."
    298 Is there any way to avoid that overhead? It's true it will make the compiler faster, but there are cases where the user might not want to pay for
    299 the overhead at runtime. Is there a way to force the compiler to specialize the code?
    300 
    301 "... to write a type-safe Cforall wrapper malloc based ..."
    302 That cannot be true in general. Malloc produces a pointer (of any type), given an integer (the size).
    303 It looks like Cforall is assuming that the integer is the result of a call to sizeof (a good practice in C).
    304 However, if that's the case, it should be explained.
    305 
    306 "... allows variable overloading ..."
    307 How are conflict resolved? In other words, what happens when two variables could be used?
    308 
    309 "... reuses the generated structure declarations where appropriate."
    310 This is too vague.
    311 
    312 "... have multiple outcomes, some exceptional."
    313 Humm, I would say these two things are distinct. Let's just way that this way of presenting things is strange, I woulds ay that a function can either
    314 return one or multiple values or throw an exception. Not that some of the values returned are "exceptional".
    315 
    316 "The type-resolver ..."
    317 What's that? Type-checker? Type-inference?
    318 
    319 "... applies C conversions."
    320 Noooo! That's exactly what leads to very subtle bugs. Is there any way to stop those conversions from happening?
    321 
    322 "The minimal cost ..."
    323 In what regard? Runtime cost? How does the "resolver" know how expensive the conversions are?
    324 
    325 "z = 10 // mass assignments"
    326 That stuff is completely unreadable. Why not introduce a new operator?
    327 
    328 "... roughly equivalent time ..."
    329 Well, C++ looks faster to me.
    330 
    331 "... is restricted because the resolution does not using ..."
    332 Did you mean, does not use?
    333 
    334 "... D and go are garbage collected ..."
    335 Yes, but in D, the use of the GC is optional.
    336 
    337 "... while respecting the talent and skill of C programmers."
    338 Are you implying that other approaches are not?
    339 
    340 "On the surface, the project may appear as a rehash of similar mechanisms in C++."
    341 Absolutely.
    342 
    343 "... integration with C and its programmers ..."
    344 Bold claim. What makes you think you are integrated with programmers? Number of users?
    345 
    346 "... inline annotation at polymorphic function call sites to create a template-specialization ..."
    347 This should have been mentioned sooner. Plus conflating inlining and specialization is unfortunate.
    348 Does "inline" also inline the function? Or does it only specialize the code?
    349 If it also inline, that's a very unfortunate design. I might want to specialize the code, but without inlining ...
    350 How do I specialize a recursive function?
  • doc/proposals/references.md

    r208e5be rb1e63ac5  
    1717derived rvalue types such as pointer types may include qualifiers;
    1818`const int *` is a distinct type from `int *`, though the latter is safely
    19 convertible to the former.
     19convertable to the former.
    2020In general, any number of qualifiers can be safely added to the
    2121pointed-to-type of a pointer type, e.g. `int *` converts safely to
     
    2323`const volatile int *`.
    2424
    25 Since lvalues are precisely "addressable objects", in C, only lvalues can be
     25Since lvalues are precicely "addressable objects", in C, only lvalues can be
    2626used as the operand of the `&` address-of operator.
    2727Similarly, only modifiable lvalues may be used as the assigned-to
     
    147147call "lvalue of type `T`" as `T&`.
    148148There's also an obvious argument that lvalues of a (possibly-qualified) type
    149 `T` should be convertible to references of type `T`, where `T` is also
     149`T` should be convertable to references of type `T`, where `T` is also
    150150so-qualified (e.g. lvalue `int` to `int&`, lvalue `const char` to
    151151`const char&`).
    152152By similar arguments to pointer types, qualifiers should be addable to the
    153153referred-to type of a reference (e.g. `int&` to `const int&`).
    154 As a note, since pointer arithmetic is explicitly not defined on `T&`,
     154As a note, since pointer arithmetic is explictly not defined on `T&`,
    155155`restrict T&` should be allowable and would have alias-analysis rules that
    156156are actually comprehensible to mere mortals.
  • doc/user/Makefile

    r208e5be rb1e63ac5  
    1212
    1313FIGURES = ${addsuffix .tex, \
    14 EHMHierarchy \
    1514Cdecl \
    1615pointer1 \
  • doc/user/user.tex

    r208e5be rb1e63ac5  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Jul  2 09:49:56 2017
    14 %% Update Count     : 2503
     13%% Last Modified On : Fri Jun 16 12:00:01 2017
     14%% Update Count     : 2433
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    2525\usepackage{textcomp}
    2626\usepackage[latin1]{inputenc}
     27% Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore
     28% removes it as a variable-name character so keyworks in variables are highlighted
     29\DeclareTextCommandDefault{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}
     30
    2731
    2832\usepackage{fullpage,times,comment}
     
    4448\renewcommand{\UrlFont}{\small\sf}
    4549
    46 % Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore
    47 % removes it as a variable-name character so keywords in variables are highlighted. MUST APPEAR
    48 % AFTER HYPERREF.
    49 \renewcommand{\_}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.075ex}}}
    50 \renewcommand{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.075ex}}}
    51 
    5250\setlength{\topmargin}{-0.45in}                                                 % move running title into header
    5351\setlength{\headsep}{0.25in}
     
    112110\renewcommand{\subsectionmark}[1]{\markboth{\thesubsection\quad #1}{\thesubsection\quad #1}}
    113111\pagenumbering{roman}
    114 \linenumbers                                            % comment out to turn off line numbering
     112%\linenumbers                                            % comment out to turn off line numbering
    115113
    116114\maketitle
     
    479477#endif // ! otype
    480478
    481 #®include_next® <bfd.h>                 §\C{// must have internal check for multiple expansion}§
     479#include_next <bfd.h>                   §\C{// must have internal check for multiple expansion}§
    482480
    483481#if defined( otype ) && defined( __CFA_BFD_H__ )        §\C{// reset only if set}§
     
    489487\label{f:InterpositionHeaderFile}
    490488\end{figure}
     489
     490
     491\section{Declarations}
     492\label{s:Declarations}
     493
     494C declaration syntax is notoriously confusing and error prone.
     495For example, many C programmers are confused by a declaration as simple as:
     496\begin{quote2}
     497\begin{tabular}{@{}ll@{}}
     498\begin{cfa}
     499int * x[5]
     500\end{cfa}
     501&
     502\raisebox{-0.75\totalheight}{\input{Cdecl}}
     503\end{tabular}
     504\end{quote2}
     505Is this an array of 5 pointers to integers or a \Index{pointer} to an array of 5 integers?
     506The fact this declaration is unclear to many C programmers means there are \Index{productivity} and \Index{safety} issues even for basic programs.
     507Another example of confusion results from the fact that a routine name and its parameters are embedded within the return type, mimicking the way the return value is used at the routine's call site.
     508For example, a routine returning a \Index{pointer} to an array of integers is defined and used in the following way:
     509\begin{cfa}
     510int ®(*®f®())[®5®]® {...};                              §\C{definition}§
     511 ... ®(*®f®())[®3®]® += 1;                              §\C{usage}§
     512\end{cfa}
     513Essentially, the return type is wrapped around the routine name in successive layers (like an \Index{onion}).
     514While attempting to make the two contexts consistent is a laudable goal, it has not worked out in practice.
     515
     516\CFA provides its own type, variable and routine declarations, using a different syntax.
     517The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type.
     518In the following example, \R{red} is the base type and \B{blue} is qualifiers.
     519The \CFA declarations move the qualifiers to the left of the base type, \ie move the blue to the left of the red, while the qualifiers have the same meaning but are ordered left to right to specify a variable's type.
     520\begin{quote2}
     521\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     522\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     523\begin{cfa}
     524ß[5] *ß ®int® x1;
     525ß* [5]ß ®int® x2;
     526ß[* [5] int]ß f®( int p )®;
     527\end{cfa}
     528&
     529\begin{cfa}
     530®int® ß*ß x1 ß[5]ß;
     531®int® ß(*ßx2ß)[5]ß;
     532ßint (*ßf®( int p )®ß)[5]ß;
     533\end{cfa}
     534\end{tabular}
     535\end{quote2}
     536The only exception is \Index{bit field} specification, which always appear to the right of the base type.
     537% Specifically, the character ©*© is used to indicate a pointer, square brackets ©[©\,©]© are used to represent an array or function return value, and parentheses ©()© are used to indicate a routine parameter.
     538However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.
     539For instance, variables ©x© and ©y© of type \Index{pointer} to integer are defined in \CFA as follows:
     540\begin{quote2}
     541\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     542\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     543\begin{cfa}
     544®*® int x, y;
     545\end{cfa}
     546&
     547\begin{cfa}
     548int ®*®x, ®*®y;
     549\end{cfa}
     550\end{tabular}
     551\end{quote2}
     552The downside of this semantics is the need to separate regular and \Index{pointer} declarations:
     553\begin{quote2}
     554\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     555\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     556\begin{cfa}
     557®*® int x;
     558int y;
     559\end{cfa}
     560&
     561\begin{cfa}
     562int ®*®x, y;
     563
     564\end{cfa}
     565\end{tabular}
     566\end{quote2}
     567which is \Index{prescribing} a safety benefit.
     568Other examples are:
     569\begin{quote2}
     570\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     571\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
     572\begin{cfa}
     573[ 5 ] int z;
     574[ 5 ] * char w;
     575* [ 5 ] double v;
     576struct s {
     577        int f0:3;
     578        * int f1;
     579        [ 5 ] * int f2;
     580};
     581\end{cfa}
     582&
     583\begin{cfa}
     584int z[ 5 ];
     585char * w[ 5 ];
     586double (* v)[ 5 ];
     587struct s {
     588        int f0:3;
     589        int * f1;
     590        int * f2[ 5 ]
     591};
     592\end{cfa}
     593&
     594\begin{cfa}
     595// array of 5 integers
     596// array of 5 pointers to char
     597// pointer to array of 5 doubles
     598
     599// common bit field syntax
     600
     601
     602
     603\end{cfa}
     604\end{tabular}
     605\end{quote2}
     606
     607All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg:
     608\begin{quote2}
     609\begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
     610\multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\
     611\begin{cfa}
     612const * const int x;
     613const * [ 5 ] const int y;
     614\end{cfa}
     615&
     616\begin{cfa}
     617int const * const x;
     618const int (* const y)[ 5 ]
     619\end{cfa}
     620&
     621\begin{cfa}
     622// const pointer to const integer
     623// const pointer to array of 5 const integers
     624\end{cfa}
     625\end{tabular}
     626\end{quote2}
     627All declaration qualifiers, \eg ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
     628The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} \eg:
     629\begin{quote2}
     630\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
     631\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
     632\begin{cfa}
     633extern [ 5 ] int x;
     634static * const int y;
     635\end{cfa}
     636&
     637\begin{cfa}
     638int extern x[ 5 ];
     639const int static * y;
     640\end{cfa}
     641&
     642\begin{cfa}
     643// externally visible array of 5 integers
     644// internally visible pointer to constant int
     645\end{cfa}
     646\end{tabular}
     647\end{quote2}
     648
     649The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©:
     650\begin{quote2}
     651\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     652\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     653\begin{cfa}
     654y = (®* int®)x;
     655i = sizeof(®[ 5 ] * int®);
     656\end{cfa}
     657&
     658\begin{cfa}
     659y = (®int *®)x;
     660i = sizeof(®int * [ 5 ]®);
     661\end{cfa}
     662\end{tabular}
     663\end{quote2}
     664
     665Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.
     666Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.
     667Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.
     668
     669
     670\section{Pointer/Reference}
     671
     672C provides a \newterm{pointer type};
     673\CFA adds a \newterm{reference type}.
     674These types may be derived from an object or routine type, called the \newterm{referenced type}.
     675Objects of these types contain an \newterm{address}, which is normally a location in memory, but may also address memory-mapped registers in hardware devices.
     676An integer constant expression with the value 0, or such an expression cast to type ©void *©, is called a \newterm{null-pointer constant}.\footnote{
     677One way to conceptualize the null pointer is that no variable is placed at this address, so the null-pointer address can be used to denote an uninitialized pointer/reference object;
     678\ie the null pointer is guaranteed to compare unequal to a pointer to any object or routine.}
     679An address is \newterm{sound}, if it points to a valid memory location in scope, \ie within the program's execution-environment and has not been freed.
     680Dereferencing an \newterm{unsound} address, including the null pointer, is \Index{undefined}, often resulting in a \Index{memory fault}.
     681
     682A program \newterm{object} is a region of data storage in the execution environment, the contents of which can represent values.
     683In most cases, objects are located in memory at an address, and the variable name for an object is an implicit address to the object generated by the compiler and automatically dereferenced, as in:
     684\begin{quote2}
     685\begin{tabular}{@{}ll@{\hspace{2em}}l@{}}
     686\begin{cfa}
     687int x;
     688x = 3;
     689int y;
     690y = x;
     691\end{cfa}
     692&
     693\raisebox{-0.45\totalheight}{\input{pointer1}}
     694&
     695\begin{cfa}
     696int * ®const® x = (int *)100
     697*x = 3;                 // implicit dereference
     698int * ®const® y = (int *)104;
     699*y = *x;                // implicit dereference
     700\end{cfa}
     701\end{tabular}
     702\end{quote2}
     703where the right example is how the compiler logically interprets the variables in the left example.
     704Since a variable name only points to one address during its lifetime, it is an \Index{immutable} \Index{pointer};
     705hence, the implicit type of pointer variables ©x© and ©y© are constant pointers in the compiler interpretation.
     706In general, variable addresses are stored in instructions instead of loaded from memory, and hence may not occupy storage.
     707These approaches are contrasted in the following:
     708\begin{quote2}
     709\begin{tabular}{@{}l|l@{}}
     710\multicolumn{1}{c|}{explicit variable address} & \multicolumn{1}{c}{implicit variable address} \\
     711\hline
     712\begin{cfa}
     713lda             r1,100                  // load address of x
     714ld               r2,(r1)                  // load value of x
     715lda             r3,104                  // load address of y
     716st               r2,(r3)                  // store x into y
     717\end{cfa}
     718&
     719\begin{cfa}
     720
     721ld              r2,(100)                // load value of x
     722
     723st              r2,(104)                // store x into y
     724\end{cfa}
     725\end{tabular}
     726\end{quote2}
     727Finally, the immutable nature of a variable's address and the fact that there is no storage for the variable pointer means pointer assignment\index{pointer!assignment}\index{assignment!pointer} is impossible.
     728Therefore, the expression ©x = y© has only one meaning, ©*x = *y©, \ie manipulate values, which is why explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of \Index{instruction decoding}.
     729
     730A \Index{pointer}/\Index{reference} object is a generalization of an object variable-name, \ie a mutable address that can point to more than one memory location during its lifetime.
     731(Similarly, an integer variable can contain multiple integer literals during its lifetime versus an integer constant representing a single literal during its lifetime, and like a variable name, may not occupy storage if the literal is embedded directly into instructions.)
     732Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg:
     733\begin{quote2}
     734\begin{tabular}{@{}l@{\hspace{2em}}l@{}}
     735\begin{cfa}
     736int x, y, ®*® p1, ®*® p2, ®**® p3;
     737p1 = ®&®x;               // p1 points to x
     738p2 = p1;                 // p2 points to x
     739p1 = ®&®y;               // p1 points to y
     740p3 = &p2;               // p3 points to p2
     741\end{cfa}
     742&
     743\raisebox{-0.5\totalheight}{\input{pointer2.pstex_t}}
     744\end{tabular}
     745\end{quote2}
     746
     747Notice, an address has a \Index{duality}\index{address!duality}: a location in memory or the value at that location.
     748In many cases, a compiler might be able to infer the best meaning for these two cases.
     749For example, \Index*{Algol68}~\cite{Algol68} infers pointer dereferencing to select the best meaning for each pointer usage
     750\begin{cfa}
     751p2 = p1 + x;                                    §\C{// compiler infers *p2 = *p1 + x;}§
     752\end{cfa}
     753Algol68 infers the following dereferencing ©*p2 = *p1 + x©, because adding the arbitrary integer value in ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.
     754Unfortunately, automatic dereferencing does not work in all cases, and so some mechanism is necessary to fix incorrect choices.
     755
     756Rather than inferring dereference, most programming languages pick one implicit dereferencing semantics, and the programmer explicitly indicates the other to resolve address-duality.
     757In C, objects of pointer type always manipulate the pointer object's address:
     758\begin{cfa}
     759p1 = p2;                                                §\C{// p1 = p2\ \ rather than\ \ *p1 = *p2}§
     760p2 = p1 + x;                                    §\C{// p2 = p1 + x\ \ rather than\ \ *p2 = *p1 + x}§
     761\end{cfa}
     762even though the assignment to ©p2© is likely incorrect, and the programmer probably meant:
     763\begin{cfa}
     764p1 = p2;                                                §\C{// pointer address assignment}§
     765®*®p2 = ®*®p1 + x;                              §\C{// pointed-to value assignment / operation}§
     766\end{cfa}
     767The C semantics work well for situations where manipulation of addresses is the primary meaning and data is rarely accessed, such as storage management (©malloc©/©free©).
     768
     769However, in most other situations, the pointed-to value is requested more often than the pointer address.
     770\begin{cfa}
     771*p2 = ((*p1 + *p2) * (**p3 - *p1)) / (**p3 - 15);
     772\end{cfa}
     773In this case, it is tedious to explicitly write the dereferencing, and error prone when pointer arithmetic is allowed.
     774It is better to have the compiler generate the dereferencing and have no implicit pointer arithmetic:
     775\begin{cfa}
     776p2 = ((p1 + p2) * (p3 - p1)) / (p3 - 15);
     777\end{cfa}
     778
     779To support this common case, a reference type is introduced in \CFA, denoted by ©&©, which is the opposite dereference semantics to a pointer type, making the value at the pointed-to location the implicit semantics for dereferencing (similar but not the same as \CC \Index{reference type}s).
     780\begin{cfa}
     781int x, y, ®&® r1, ®&® r2, ®&&® r3;
     782®&®r1 = &x;                                             §\C{// r1 points to x}§
     783®&®r2 = &r1;                                    §\C{// r2 points to x}§
     784®&®r1 = &y;                                             §\C{// r1 points to y}§
     785®&&®r3 = ®&®&r2;                                §\C{// r3 points to r2}§
     786r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15); §\C{// implicit dereferencing}§
     787\end{cfa}
     788Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example.
     789Hence, a reference behaves like the variable name for the current variable it is pointing-to.
     790One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in a declaration, so the previous example becomes:
     791\begin{cfa}
     792®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15);
     793\end{cfa}
     794When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out.
     795However, in C, the cancellation always yields a value (\Index{rvalue}).\footnote{
     796The unary ©&© operator yields the address of its operand.
     797If the operand has type ``type'', the result has type ``pointer to type''.
     798If the operand is the result of a unary ©*© operator, neither that operator nor the ©&© operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue.~\cite[\S~6.5.3.2--3]{C11}}
     799For a \CFA reference type, the cancellation on the left-hand side of assignment leaves the reference as an address (\Index{lvalue}):
     800\begin{cfa}
     801(&®*®)r1 = &x;                                  §\C{// (\&*) cancel giving address in r1 not variable pointed-to by r1}§
     802\end{cfa}
     803Similarly, the address of a reference can be obtained for assignment or computation (\Index{rvalue}):
     804\begin{cfa}
     805(&(&®*®)®*®)r3 = &(&®*®)r2;             §\C{// (\&*) cancel giving address in r2, (\&(\&*)*) cancel giving address in r3}§
     806\end{cfa}
     807Cancellation\index{cancellation!pointer/reference}\index{pointer!cancellation} works to arbitrary depth.
     808
     809Fundamentally, pointer and reference objects are functionally interchangeable because both contain addresses.
     810\begin{cfa}
     811int x, *p1 = &x, **p2 = &p1, ***p3 = &p2,
     812                 &r1 = x,    &&r2 = r1,   &&&r3 = r2;
     813***p3 = 3;                                              §\C{// change x}§
     814r3 = 3;                                                 §\C{// change x, ***r3}§
     815**p3 = ...;                                             §\C{// change p1}§
     816&r3 = ...;                                              §\C{// change r1, (\&*)**r3, 1 cancellation}§
     817*p3 = ...;                                              §\C{// change p2}§
     818&&r3 = ...;                                             §\C{// change r2, (\&(\&*)*)*r3, 2 cancellations}§
     819&&&r3 = p3;                                             §\C{// change r3 to p3, (\&(\&(\&*)*)*)r3, 3 cancellations}§
     820\end{cfa}
     821Furthermore, both types are equally performant, as the same amount of dereferencing occurs for both types.
     822Therefore, the choice between them is based solely on whether the address is dereferenced frequently or infrequently, which dictates the amount of implicit dereferencing aid from the compiler.
     823
     824As for a pointer type, a reference type may have qualifiers:
     825\begin{cfa}
     826const int cx = 5;                                       §\C{// cannot change cx;}§
     827const int & cr = cx;                            §\C{// cannot change what cr points to}§
     828®&®cr = &cx;                                            §\C{// can change cr}§
     829cr = 7;                                                         §\C{// error, cannot change cx}§
     830int & const rc = x;                                     §\C{// must be initialized}§
     831®&®rc = &x;                                                     §\C{// error, cannot change rc}§
     832const int & const crc = cx;                     §\C{// must be initialized}§
     833crc = 7;                                                        §\C{// error, cannot change cx}§
     834®&®crc = &cx;                                           §\C{// error, cannot change crc}§
     835\end{cfa}
     836Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be the null pointer unless an arbitrary pointer is coerced\index{coercion} into the reference}:
     837\begin{cfa}
     838int & const cr = *0;                            §\C{// where 0 is the int * zero}§
     839\end{cfa}
     840Note, constant reference-types do not prevent \Index{addressing errors} because of explicit storage-management:
     841\begin{cfa}
     842int & const cr = *malloc();
     843cr = 5;
     844free( &cr );
     845cr = 7;                                                         §\C{// unsound pointer dereference}§
     846\end{cfa}
     847
     848The position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers.
     849The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations;
     850\CFA-style declarations (see \VRef{s:Declarations}) attempt to address this issue:
     851\begin{quote2}
     852\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     853\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     854\begin{cfa}
     855®const® * ®const® * const int ccp;
     856®const® & ®const® & const int ccr;
     857\end{cfa}
     858&
     859\begin{cfa}
     860const int * ®const® * ®const® ccp;
     861
     862\end{cfa}
     863\end{tabular}
     864\end{quote2}
     865where the \CFA declaration is read left-to-right.
     866
     867Finally, like pointers, references are usable and composable with other type operators and generators.
     868\begin{cfa}
     869int w, x, y, z, & ar[3] = { x, y, z }; §\C{// initialize array of references}§
     870&ar[1] = &w;                                            §\C{// change reference array element}§
     871typeof( ar[1] ) p;                                      §\C{// (gcc) is int, i.e., the type of referenced object}§
     872typeof( &ar[1] ) q;                                     §\C{// (gcc) is int \&, i.e., the type of reference}§
     873sizeof( ar[1] ) == sizeof( int );       §\C{// is true, i.e., the size of referenced object}§
     874sizeof( &ar[1] ) == sizeof( int *)      §\C{// is true, i.e., the size of a reference}§
     875\end{cfa}
     876
     877In contrast to \CFA reference types, \Index*[C++]{\CC{}}'s reference types are all ©const© references, preventing changes to the reference address, so only value assignment is possible, which eliminates half of the \Index{address duality}.
     878Also, \CC does not allow \Index{array}s\index{array!reference} of reference\footnote{
     879The reason for disallowing arrays of reference is unknown, but possibly comes from references being ethereal (like a textual macro), and hence, replaceable by the referant object.}
     880\Index*{Java}'s reference types to objects (all Java objects are on the heap) are like C pointers, which always manipulate the address, and there is no (bit-wise) object assignment, so objects are explicitly cloned by shallow or deep copying, which eliminates half of the address duality.
     881
     882
     883\subsection{Initialization}
     884
     885\Index{Initialization} is different than \Index{assignment} because initialization occurs on the empty (uninitialized) storage on an object, while assignment occurs on possibly initialized storage of an object.
     886There are three initialization contexts in \CFA: declaration initialization, argument/parameter binding, return/temporary binding.
     887Because the object being initialized has no value, there is only one meaningful semantics with respect to address duality: it must mean address as there is no pointed-to value.
     888In contrast, the left-hand side of assignment has an address that has a duality.
     889Therefore, for pointer/reference initialization, the initializing value must be an address not a value.
     890\begin{cfa}
     891int * p = &x;                                           §\C{// assign address of x}§
     892®int * p = x;®                                          §\C{// assign value of x}§
     893int & r = x;                                            §\C{// must have address of x}§
     894\end{cfa}
     895Like the previous example with C pointer-arithmetic, it is unlikely assigning the value of ©x© into a pointer is meaningful (again, a warning is usually given).
     896Therefore, for safety, this context requires an address, so it is superfluous to require explicitly taking the address of the initialization object, even though the type is incorrect.
     897Note, this is strictly a convenience and safety feature for a programmer.
     898Hence, \CFA allows ©r© to be assigned ©x© because it infers a reference for ©x©, by implicitly inserting a address-of operator, ©&©, and it is an error to put an ©&© because the types no longer match due to the implicit dereference.
     899Unfortunately, C allows ©p© to be assigned with ©&x© (address) or ©x© (value), but most compilers warn about the latter assignment as being potentially incorrect.
     900Similarly, when a reference type is used for a parameter/return type, the call-site argument does not require a reference operator for the same reason.
     901\begin{cfa}
     902int & f( int & r );                                     §\C{// reference parameter and return}§
     903z = f( x ) + f( y );                            §\C{// reference operator added, temporaries needed for call results}§
     904\end{cfa}
     905Within routine ©f©, it is possible to change the argument by changing the corresponding parameter, and parameter ©r© can be locally reassigned within ©f©.
     906Since operator routine ©?+?© takes its arguments by value, the references returned from ©f© are used to initialize compiler generated temporaries with value semantics that copy from the references.
     907\begin{cfa}
     908int temp1 = f( x ), temp2 = f( y );
     909z = temp1 + temp2;
     910\end{cfa}
     911This \Index{implicit referencing} is crucial for reducing the syntactic burden for programmers when using references;
     912otherwise references have the same syntactic  burden as pointers in these contexts.
     913
     914When a pointer/reference parameter has a ©const© value (immutable), it is possible to pass literals and expressions.
     915\begin{cfa}
     916void f( ®const® int & cr );
     917void g( ®const® int * cp );
     918f( 3 );                   g( ®&®3 );
     919f( x + y );             g( ®&®(x + y) );
     920\end{cfa}
     921Here, the compiler passes the address to the literal 3 or the temporary for the expression ©x + y©, knowing the argument cannot be changed through the parameter.
     922The ©&© before the constant/expression for the pointer-type parameter (©g©) is a \CFA extension necessary to type match and is a common requirement before a variable in C (\eg ©scanf©).
     923Importantly, ©&3© may not be equal to ©&3©, where the references occur across calls because the temporaries maybe different on each call.
     924
     925\CFA \emph{extends} this semantics to a mutable pointer/reference parameter, and the compiler implicitly creates the necessary temporary (copying the argument), which is subsequently pointed-to by the reference parameter and can be changed.\footnote{
     926If whole program analysis is possible, and shows the parameter is not assigned, \ie it is ©const©, the temporary is unnecessary.}
     927\begin{cfa}
     928void f( int & r );
     929void g( int * p );
     930f( 3 );                   g( ®&®3 );            §\C{// compiler implicit generates temporaries}§
     931f( x + y );             g( ®&®(x + y) );        §\C{// compiler implicit generates temporaries}§
     932\end{cfa}
     933Essentially, there is an implicit \Index{rvalue} to \Index{lvalue} conversion in this case.\footnote{
     934This conversion attempts to address the \newterm{const hell} problem, when the innocent addition of a ©const© qualifier causes a cascade of type failures, requiring an unknown number of additional ©const© qualifiers, until it is discovered a ©const© qualifier cannot be added and all the ©const© qualifiers must be removed.}
     935The implicit conversion allows seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.
     936
     937%\CFA attempts to handle pointers and references in a uniform, symmetric manner.
     938Finally, C handles \Index{routine object}s in an inconsistent way.
     939A routine object is both a pointer and a reference (\Index{particle and wave}).
     940\begin{cfa}
     941void f( int i );
     942void (*fp)( int );                                      §\C{// routine pointer}§
     943fp = f;                                                         §\C{// reference initialization}§
     944fp = &f;                                                        §\C{// pointer initialization}§
     945fp = *f;                                                        §\C{// reference initialization}§
     946fp(3);                                                          §\C{// reference invocation}§
     947(*fp)(3);                                                       §\C{// pointer invocation}§
     948\end{cfa}
     949While C's treatment of routine objects has similarity to inferring a reference type in initialization contexts, the examples are assignment not initialization, and all possible forms of assignment are possible (©f©, ©&f©, ©*f©) without regard for type.
     950Instead, a routine object should be referenced by a ©const© reference:
     951\begin{cfa}
     952®const® void (®&® fr)( int ) = f;       §\C{// routine reference}§
     953fr = ...                                                        §\C{// error, cannot change code}§
     954&fr = ...;                                                      §\C{// changing routine reference}§
     955fr( 3 );                                                        §\C{// reference call to f}§
     956(*fr)(3);                                                       §\C{// error, incorrect type}§
     957\end{cfa}
     958because the value of the routine object is a routine literal, \ie the routine code is normally immutable during execution.\footnote{
     959Dynamic code rewriting is possible but only in special circumstances.}
     960\CFA allows this additional use of references for routine objects in an attempt to give a more consistent meaning for them.
     961
     962
     963\subsection{Address-of Semantics}
     964
     965In C, ©&E© is an rvalue for any expression ©E©.
     966\CFA extends the ©&© (address-of) operator as follows:
     967\begin{itemize}
     968\item
     969if ©R© is an \Index{rvalue} of type ©T &$_1$...&$_r$© where $r \ge 1$ references (©&© symbols) than ©&R© has type ©T ®*®&$_{\color{red}2}$...&$_{\color{red}r}$©, \ie ©T© pointer with $r-1$ references (©&© symbols).
     970
     971\item
     972if ©L© is an \Index{lvalue} of type ©T &$_1$...&$_l$© where $l \ge 0$ references (©&© symbols) then ©&L© has type ©T ®*®&$_{\color{red}1}$...&$_{\color{red}l}$©, \ie ©T© pointer with $l$ references (©&© symbols).
     973\end{itemize}
     974The following example shows the first rule applied to different \Index{rvalue} contexts:
     975\begin{cfa}
     976int x, * px, ** ppx, *** pppx, **** ppppx;
     977int & rx = x, && rrx = rx, &&& rrrx = rrx ;
     978x = rrrx;               // rrrx is an lvalue with type int &&& (equivalent to x)
     979px = &rrrx;             // starting from rrrx, &rrrx is an rvalue with type int *&&& (&x)
     980ppx = &&rrrx;   // starting from &rrrx, &&rrrx is an rvalue with type int **&& (&rx)
     981pppx = &&&rrrx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (&rrx)
     982ppppx = &&&&rrrx; // starting from &&&rrrx, &&&&rrrx is an rvalue with type int **** (&rrrx)
     983\end{cfa}
     984The following example shows the second rule applied to different \Index{lvalue} contexts:
     985\begin{cfa}
     986int x, * px, ** ppx, *** pppx;
     987int & rx = x, && rrx = rx, &&& rrrx = rrx ;
     988rrrx = 2;               // rrrx is an lvalue with type int &&& (equivalent to x)
     989&rrrx = px;             // starting from rrrx, &rrrx is an rvalue with type int *&&& (rx)
     990&&rrrx = ppx;   // starting from &rrrx, &&rrrx is an rvalue with type int **&& (rrx)
     991&&&rrrx = pppx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (rrrx)
     992\end{cfa}
     993
     994
     995\subsection{Conversions}
     996
     997C provides a basic implicit conversion to simplify variable usage:
     998\begin{enumerate}
     999\setcounter{enumi}{-1}
     1000\item
     1001lvalue to rvalue conversion: ©cv T© converts to ©T©, which allows implicit variable dereferencing.
     1002\begin{cfa}
     1003int x;
     1004x + 1;                  // lvalue variable (int) converts to rvalue for expression
     1005\end{cfa}
     1006An rvalue has no type qualifiers (©cv©), so the lvalue qualifiers are dropped.
     1007\end{enumerate}
     1008\CFA provides three new implicit conversion for reference types to simplify reference usage.
     1009\begin{enumerate}
     1010\item
     1011reference to rvalue conversion: ©cv T &© converts to ©T©, which allows implicit reference dereferencing.
     1012\begin{cfa}
     1013int x, &r = x, f( int p );
     1014x = ®r® + f( ®r® );  // lvalue reference converts to rvalue
     1015\end{cfa}
     1016An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped.
     1017
     1018\item
     1019lvalue to reference conversion: \lstinline[deletekeywords={lvalue}]@lvalue-type cv1 T@ converts to ©cv2 T &©, which allows implicitly converting variables to references.
     1020\begin{cfa}
     1021int x, &r = ®x®, f( int & p ); // lvalue variable (int) convert to reference (int &)
     1022f( ®x® );               // lvalue variable (int) convert to reference (int &)
     1023\end{cfa}
     1024Conversion can restrict a type, where ©cv1© $\le$ ©cv2©, \eg passing an ©int© to a ©const volatile int &©, which has low cost.
     1025Conversion can expand a type, where ©cv1© $>$ ©cv2©, \eg passing a ©const volatile int© to an ©int &©, which has high cost (\Index{warning});
     1026furthermore, if ©cv1© has ©const© but not ©cv2©, a temporary variable is created to preserve the immutable lvalue.
     1027
     1028\item
     1029rvalue to reference conversion: ©T© converts to ©cv T &©, which allows binding references to temporaries.
     1030\begin{cfa}
     1031int x, & f( int & p );
     1032f( ®x + 3® );   // rvalue parameter (int) implicitly converts to lvalue temporary reference (int &)
     1033®&f®(...) = &x; // rvalue result (int &) implicitly converts to lvalue temporary reference (int &)
     1034\end{cfa}
     1035In both case, modifications to the temporary are inaccessible (\Index{warning}).
     1036Conversion expands the temporary-type with ©cv©, which is low cost since the temporary is inaccessible.
     1037\end{enumerate}
     1038
     1039
     1040\begin{comment}
     1041From: Richard Bilson <rcbilson@gmail.com>
     1042Date: Wed, 13 Jul 2016 01:58:58 +0000
     1043Subject: Re: pointers / references
     1044To: "Peter A. Buhr" <pabuhr@plg2.cs.uwaterloo.ca>
     1045
     1046As a general comment I would say that I found the section confusing, as you move back and forth
     1047between various real and imagined programming languages. If it were me I would rewrite into two
     1048subsections, one that specifies precisely the syntax and semantics of reference variables and
     1049another that provides the rationale.
     1050
     1051I don't see any obvious problems with the syntax or semantics so far as I understand them. It's not
     1052obvious that the description you're giving is complete, but I'm sure you'll find the special cases
     1053as you do the implementation.
     1054
     1055My big gripes are mostly that you're not being as precise as you need to be in your terminology, and
     1056that you say a few things that aren't actually true even though I generally know what you mean.
     1057
     105820 C provides a pointer type; CFA adds a reference type. Both types contain an address, which is normally a
     105921 location in memory.
     1060
     1061An address is not a location in memory; an address refers to a location in memory. Furthermore it
     1062seems weird to me to say that a type "contains" an address; rather, objects of that type do.
     1063
     106421 Special addresses are used to denote certain states or access co-processor memory. By
     106522 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value
     106623 or other special states.
     1067
     1068This isn't standard C at all. There has to be one null pointer representation, but it doesn't have
     1069to be a literal zero representation and there doesn't have to be more than one such representation.
     1070
     107123 Often dereferencing a special state causes a memory fault, so checking is necessary
     107224 during execution.
     1073
     1074I don't see the connection between the two clauses here. I feel like if a bad pointer will not cause
     1075a memory fault then I need to do more checking, not less.
     1076
     107724 If the programming language assigns addresses, a program's execution is sound, \ie all
     107825 addresses are to valid memory locations.
     1079
     1080You haven't said what it means to "assign" an address, but if I use my intuitive understanding of
     1081the term I don't see how this can be true unless you're assuming automatic storage management.
     1082
     10831 Program variables are implicit pointers to memory locations generated by the compiler and automatically
     10842 dereferenced, as in:
     1085
     1086There is no reason why a variable needs to have a location in memory, and indeed in a typical
     1087program many variables will not. In standard terminology an object identifier refers to data in the
     1088execution environment, but not necessarily in memory.
     1089
     109013 A pointer/reference is a generalization of a variable name, \ie a mutable address that can point to more
     109114 than one memory location during its lifetime.
     1092
     1093I feel like you're off the reservation here. In my world there are objects of pointer type, which
     1094seem to be what you're describing here, but also pointer values, which can be stored in an object of
     1095pointer type but don't necessarily have to be. For example, how would you describe the value denoted
     1096by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your
     1097definition.
     1098
     109916 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory
     110017 to store its current address, and the pointer's value is loaded by dereferencing, e.g.:
     1101
     1102As with my general objection regarding your definition of variables, there is no reason why a
     1103pointer variable (object of pointer type) needs to occupy memory.
     1104
     110521 p2 = p1 + x; // compiler infers *p2 = *p1 + x;
     1106
     1107What language are we in now?
     1108
     110924 pointer usage. However, in C, the following cases are ambiguous, especially with pointer arithmetic:
     111025 p1 = p2; // p1 = p2 or *p1 = *p2
     1111
     1112This isn't ambiguous. it's defined to be the first option.
     1113
     111426 p1 = p1 + 1; // p1 = p1 + 1 or *p1 = *p1 + 1
     1115
     1116Again, this statement is not ambiguous.
     1117
     111813 example. Hence, a reference behaves like the variable name for the current variable it is pointing-to. The
     111914 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before
     112015 the reference variable for each reference qualifier in a declaration, e.g.:
     1121
     1122It's hard for me to understand who the audience for this part is. I think a practical programmer is
     1123likely to be satisfied with "a reference behaves like the variable name for the current variable it
     1124is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than
     1125that. It feels like you're trying to provide a more precise definition for the semantics of
     1126references, but it isn't actually precise enough to be a formal specification. If you want to
     1127express the semantics of references using rewrite rules that's a great way to do it, but lay the
     1128rules out clearly, and when you're showing an example of rewriting keep your
     1129references/pointers/values separate (right now, you use \eg "r3" to mean a reference, a pointer,
     1130and a value).
     1131
     113224 Cancellation works to arbitrary depth, and pointer and reference values are interchangeable because both
     113325 contain addresses.
     1134
     1135Except they're not interchangeable, because they have different and incompatible types.
     1136
     113740 Interestingly, C++ deals with the address duality by making the pointed-to value the default, and prevent-
     113841 ing changes to the reference address, which eliminates half of the duality. Java deals with the address duality
     113942 by making address assignment the default and requiring field assignment (direct or indirect via methods),
     114043 \ie there is no builtin bit-wise or method-wise assignment, which eliminates half of the duality.
     1141
     1142I can follow this but I think that's mostly because I already understand what you're trying to
     1143say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining
     1144it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here
     1145feels incomplete. (If it were me I'd drop this paragraph rather than try to save it.)
     1146
     114711 Hence, for type & const, there is no pointer assignment, so &rc = &x is disallowed, and the address value
     114812 cannot be 0 unless an arbitrary pointer is assigned to the reference.
     1149
     1150Given the pains you've taken to motivate every little bit of the semantics up until now, this last
     1151clause ("the address value cannot be 0") comes out of the blue. It seems like you could have
     1152perfectly reasonable semantics that allowed the initialization of null references.
     1153
     115412 In effect, the compiler is managing the
     115513 addresses for type & const not the programmer, and by a programming discipline of only using references
     115614 with references, address errors can be prevented.
     1157
     1158Again, is this assuming automatic storage management?
     1159
     116018 rary binding. For reference initialization (like pointer), the initializing value must be an address (lvalue) not
     116119 a value (rvalue).
     1162
     1163This sentence appears to suggest that an address and an lvalue are the same thing.
     1164
     116520 int * p = &x; // both &x and x are possible interpretations
     1166
     1167Are you saying that we should be considering "x" as a possible interpretation of the initializer
     1168"&x"? It seems to me that this expression has only one legitimate interpretation in context.
     1169
     117021 int & r = x; // x unlikely interpretation, because of auto-dereferencing
     1171
     1172You mean, we can initialize a reference using an integer value? Surely we would need some sort of
     1173cast to induce that interpretation, no?
     1174
     117522 Hence, the compiler implicitly inserts a reference operator, &, before the initialization expression.
     1176
     1177But then the expression would have pointer type, which wouldn't be compatible with the type of r.
     1178
     117922 Similarly,
     118023 when a reference is used for a parameter/return type, the call-site argument does not require a reference
     118124 operator.
     1182
     1183Furthermore, it would not be correct to use a reference operator.
     1184
     118545 The implicit conversion allows
     11861 seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.
     11872 While C' attempts to handle pointers and references in a uniform, symmetric manner, C handles routine
     11883 variables in an inconsistent way: a routine variable is both a pointer and a reference (particle and wave).
     1189
     1190After all this talk of how expressions can have both pointer and value interpretations, you're
     1191disparaging C because it has expressions that have both pointer and value interpretations?
     1192
     1193On Sat, Jul 9, 2016 at 4:18 PM Peter A. Buhr <pabuhr@plg.uwaterloo.ca> wrote:
     1194> Aaron discovered a few places where "&"s are missing and where there are too many "&", which are
     1195> corrected in the attached updated. None of the text has changed, if you have started reading
     1196> already.
     1197\end{comment}
     1198
     1199
     1200\section{Routine Definition}
     1201
     1202\CFA also supports a new syntax for routine definition, as well as \Celeven and K\&R routine syntax.
     1203The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg:
     1204\begin{cfa}
     1205®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) {
     1206        §\emph{routine body}§
     1207}
     1208\end{cfa}
     1209where routine ©f© has three output (return values) and three input parameters.
     1210Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications.
     1211
     1212In detail, the brackets, ©[]©, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{
     1213\Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.}
     1214The value of each local return variable is automatically returned at routine termination.
     1215Declaration qualifiers can only appear at the start of a routine definition, \eg:
     1216\begin{cfa}
     1217®extern® [ int x ] g( int y ) {§\,§}
     1218\end{cfa}
     1219Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified;
     1220in both cases the type is assumed to be void as opposed to old style C defaults of int return type and unknown parameter types, respectively, as in:
     1221\begin{cfa}
     1222[§\,§] g();                                                     §\C{// no input or output parameters}§
     1223[ void ] g( void );                                     §\C{// no input or output parameters}§
     1224\end{cfa}
     1225
     1226Routine f is called as follows:
     1227\begin{cfa}
     1228[ i, j, ch ] = f( 3, 'a', ch );
     1229\end{cfa}
     1230The list of return values from f and the grouping on the left-hand side of the assignment is called a \newterm{return list} and discussed in Section 12.
     1231
     1232\CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity:
     1233\begin{cfa}
     1234int (*f(x))[ 5 ] int x; {}
     1235\end{cfa}
     1236The string ``©int (*f(x))[ 5 ]©'' declares a K\&R style routine of type returning a pointer to an array of 5 integers, while the string ``©[ 5 ] int x©'' declares a \CFA style parameter x of type array of 5 integers.
     1237Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string.
     1238As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity:
     1239\begin{cfa}
     1240typedef int foo;
     1241int f( int (* foo) );                           §\C{// foo is redefined as a parameter name}§
     1242\end{cfa}
     1243The string ``©int (* foo)©'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo.
     1244The redefinition of a type name in a parameter list is the only context in C where the character ©*© can appear to the left of a type name, and \CFA relies on all type qualifier characters appearing to the right of the type name.
     1245The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts.
     1246
     1247C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg:
     1248\begin{cfa}
     1249[ int ] f( * int, int * );                      §\C{// returns an integer, accepts 2 pointers to integers}§
     1250[ * int, int * ] f( int );                      §\C{// returns 2 pointers to integers, accepts an integer}§
     1251\end{cfa}
     1252The reason for allowing both declaration styles in the new context is for backwards compatibility with existing preprocessor macros that generate C-style declaration-syntax, as in:
     1253\begin{cfa}
     1254#define ptoa( n, d ) int (*n)[ d ]
     1255int f( ptoa( p, 5 ) ) ...                       §\C{// expands to int f( int (*p)[ 5 ] )}§
     1256[ int ] f( ptoa( p, 5 ) ) ...           §\C{// expands to [ int ] f( int (*p)[ 5 ] )}§
     1257\end{cfa}
     1258Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms.
     1259
     1260
     1261\subsection{Named Return Values}
     1262
     1263\Index{Named return values} handle the case where it is necessary to define a local variable whose value is then returned in a ©return© statement, as in:
     1264\begin{cfa}
     1265int f() {
     1266        int x;
     1267        ... x = 0; ... x = y; ...
     1268        return x;
     1269}
     1270\end{cfa}
     1271Because the value in the return variable is automatically returned when a \CFA routine terminates, the ©return© statement \emph{does not} contain an expression, as in:
     1272\newline
     1273\begin{minipage}{\linewidth}
     1274\begin{cfa}
     1275®[ int x, int y ]® f() {
     1276        int z;
     1277        ... x = 0; ... y = z; ...
     1278        ®return;®                                                       §\C{// implicitly return x, y}§
     1279}
     1280\end{cfa}
     1281\end{minipage}
     1282\newline
     1283When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine.
     1284As well, ``falling off the end'' of a routine without a ©return© statement is permitted, as in:
     1285\begin{cfa}
     1286[ int x, int y ] f() {
     1287        ...
     1288}                                                                               §\C{// implicitly return x, y}§
     1289\end{cfa}
     1290In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered.
     1291
     1292Named return values may be used in conjunction with named parameter values;
     1293specifically, a return and parameter can have the same name.
     1294\begin{cfa}
     1295[ int x, int y ] f( int, x, int y ) {
     1296        ...
     1297}                                                                               §\C{// implicitly return x, y}§
     1298\end{cfa}
     1299This notation allows the compiler to eliminate temporary variables in nested routine calls.
     1300\begin{cfa}
     1301[ int x, int y ] f( int, x, int y );    §\C{// prototype declaration}§
     1302int a, b;
     1303[a, b] = f( f( f( a, b ) ) );
     1304\end{cfa}
     1305While the compiler normally ignores parameters names in prototype declarations, here they are used to eliminate temporary return-values by inferring that the results of each call are the inputs of the next call, and ultimately, the left-hand side of the assignment.
     1306Hence, even without the body of routine ©f© (separate compilation), it is possible to perform a global optimization across routine calls.
     1307The compiler warns about naming inconsistencies between routine prototype and definition in this case, and behaviour is \Index{undefined} if the programmer is inconsistent.
     1308
     1309
     1310\subsection{Routine Prototype}
     1311
     1312The syntax of the new routine prototype declaration follows directly from the new routine definition syntax;
     1313as well, parameter names are optional, \eg:
     1314\begin{cfa}
     1315[ int x ] f ();                                                 §\C{// returning int with no parameters}§
     1316[ * int ] g (int y);                                    §\C{// returning pointer to int with int parameter}§
     1317[ ] h ( int, char );                                    §\C{// returning no result with int and char parameters}§
     1318[ * int, int ] j ( int );                               §\C{// returning pointer to int and int, with int parameter}§
     1319\end{cfa}
     1320This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).
     1321It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), \eg:
     1322\begin{quote2}
     1323\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     1324\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
     1325\begin{cfa}
     1326[ int ] f( int ), g;
     1327\end{cfa}
     1328&
     1329\begin{cfa}
     1330int f( int ), g( int );
     1331\end{cfa}
     1332\end{tabular}
     1333\end{quote2}
     1334Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg:
     1335\begin{cfa}
     1336extern [ int ] f ( int );
     1337static [ int ] g ( int );
     1338\end{cfa}
     1339
     1340
     1341\section{Routine Pointers}
     1342
     1343The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg:
     1344\begin{cfa}
     1345* [ int x ] () fp;                                              §\C{// pointer to routine returning int with no parameters}§
     1346* [ * int ] (int y) gp;                                 §\C{// pointer to routine returning pointer to int with int parameter}§
     1347* [ ] (int,char) hp;                                    §\C{// pointer to routine returning no result with int and char parameters}§
     1348* [ * int,int ] ( int ) jp;                             §\C{// pointer to routine returning pointer to int and int, with int parameter}§
     1349\end{cfa}
     1350While parameter names are optional, \emph{a routine name cannot be specified};
     1351for example, the following is incorrect:
     1352\begin{cfa}
     1353* [ int x ] f () fp;                                    §\C{// routine name "f" is not allowed}§
     1354\end{cfa}
     1355
     1356
     1357\section{Named and Default Arguments}
     1358
     1359Named\index{named arguments}\index{arguments!named} and default\index{default arguments}\index{arguments!default} arguments~\cite{Hardgrave76}\footnote{
     1360Francez~\cite{Francez77} proposed a further extension to the named-parameter passing style, which specifies what type of communication (by value, by reference, by name) the argument is passed to the routine.}
     1361are two mechanisms to simplify routine call.
     1362Both mechanisms are discussed with respect to \CFA.
     1363\begin{description}
     1364\item[Named (or Keyword) Arguments:]
     1365provide the ability to specify an argument to a routine call using the parameter name rather than the position of the parameter.
     1366For example, given the routine:
     1367\begin{cfa}
     1368void p( int x, int y, int z ) {...}
     1369\end{cfa}
     1370a positional call is:
     1371\begin{cfa}
     1372p( 4, 7, 3 );
     1373\end{cfa}
     1374whereas a named (keyword) call may be:
     1375\begin{cfa}
     1376p( z : 3, x : 4, y : 7 );       §\C{// rewrite $\Rightarrow$ p( 4, 7, 3 )}§
     1377\end{cfa}
     1378Here the order of the arguments is unimportant, and the names of the parameters are used to associate argument values with the corresponding parameters.
     1379The compiler rewrites a named call into a positional call.
     1380The advantages of named parameters are:
     1381\begin{itemize}
     1382\item
     1383Remembering the names of the parameters may be easier than the order in the routine definition.
     1384\item
     1385Parameter names provide documentation at the call site (assuming the names are descriptive).
     1386\item
     1387Changes can be made to the order or number of parameters without affecting the call (although the call must still be recompiled).
     1388\end{itemize}
     1389
     1390Unfortunately, named arguments do not work in C-style programming-languages because a routine prototype is not required to specify parameter names, nor do the names in the prototype have to match with the actual definition.
     1391For example, the following routine prototypes and definition are all valid.
     1392\begin{cfa}
     1393void p( int, int, int );                        §\C{// equivalent prototypes}§
     1394void p( int x, int y, int z );
     1395void p( int y, int x, int z );
     1396void p( int z, int y, int x );
     1397void p( int q, int r, int s ) {}        §\C{// match with this definition}§
     1398\end{cfa}
     1399Forcing matching parameter names in routine prototypes with corresponding routine definitions is possible, but goes against a strong tradition in C programming.
     1400Alternatively, prototype definitions can be eliminated by using a two-pass compilation, and implicitly creating header files for exports.
     1401The former is easy to do, while the latter is more complex.
     1402
     1403Furthermore, named arguments do not work well in a \CFA-style programming-languages because they potentially introduces a new criteria for type matching.
     1404For example, it is technically possible to disambiguate between these two overloaded definitions of ©f© based on named arguments at the call site:
     1405\begin{cfa}
     1406int f( int i, int j );
     1407int f( int x, double y );
     1408
     1409f( j : 3, i : 4 );                              §\C{// 1st f}§
     1410f( x : 7, y : 8.1 );                    §\C{// 2nd f}§
     1411f( 4, 5 );                                              §\C{// ambiguous call}§
     1412\end{cfa}
     1413However, named arguments compound routine resolution in conjunction with conversions:
     1414\begin{cfa}
     1415f( i : 3, 5.7 );                                §\C{// ambiguous call ?}§
     1416\end{cfa}
     1417Depending on the cost associated with named arguments, this call could be resolvable or ambiguous.
     1418Adding named argument into the routine resolution algorithm does not seem worth the complexity.
     1419Therefore, \CFA does \emph{not} attempt to support named arguments.
     1420
     1421\item[Default Arguments]
     1422provide the ability to associate a default value with a parameter so it can be optionally specified in the argument list.
     1423For example, given the routine:
     1424\begin{cfa}
     1425void p( int x = 1, int y = 2, int z = 3 ) {...}
     1426\end{cfa}
     1427the allowable positional calls are:
     1428\begin{cfa}
     1429p();                                                    §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§
     1430p( 4 );                                                 §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§
     1431p( 4, 4 );                                              §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§
     1432p( 4, 4, 4 );                                   §\C{// rewrite $\Rightarrow$ p( 4, 4, 4 )}§
     1433// empty arguments
     1434p(  , 4, 4 );                                   §\C{// rewrite $\Rightarrow$ p( 1, 4, 4 )}§
     1435p( 4,  , 4 );                                   §\C{// rewrite $\Rightarrow$ p( 4, 2, 4 )}§
     1436p( 4, 4,   );                                   §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§
     1437p( 4,  ,   );                                   §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§
     1438p(  , 4,   );                                   §\C{// rewrite $\Rightarrow$ p( 1, 4, 3 )}§
     1439p(  ,  , 4 );                                   §\C{// rewrite $\Rightarrow$ p( 1, 2, 4 )}§
     1440p(  ,  ,   );                                   §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§
     1441\end{cfa}
     1442Here the missing arguments are inserted from the default values in the parameter list.
     1443The compiler rewrites missing default values into explicit positional arguments.
     1444The advantages of default values are:
     1445\begin{itemize}
     1446\item
     1447Routines with a large number of parameters are often very generalized, giving a programmer a number of different options on how a computation is performed.
     1448For many of these kinds of routines, there are standard or default settings that work for the majority of computations.
     1449Without default values for parameters, a programmer is forced to specify these common values all the time, resulting in long argument lists that are error prone.
     1450\item
     1451When a routine's interface is augmented with new parameters, it extends the interface providing generalizability\footnote{
     1452``It should be possible for the implementor of an abstraction to increase its generality.
     1453So long as the modified abstraction is a generalization of the original, existing uses of the abstraction will not require change.
     1454It might be possible to modify an abstraction in a manner which is not a generalization without affecting existing uses, but, without inspecting the modules in which the uses occur, this possibility cannot be determined.
     1455This criterion precludes the addition of parameters, unless these parameters have default or inferred values that are valid for all possible existing applications.''~\cite[p.~128]{Cormack90}}
     1456(somewhat like the generalization provided by inheritance for classes).
     1457That is, all existing calls are still valid, although the call must still be recompiled.
     1458\end{itemize}
     1459The only disadvantage of default arguments is that unintentional omission of an argument may not result in a compiler-time error.
     1460Instead, a default value is used, which may not be the programmer's intent.
     1461
     1462Default values may only appear in a prototype versus definition context:
     1463\begin{cfa}
     1464void p( int x, int y = 2, int z = 3 );          §\C{// prototype: allowed}§
     1465void p( int, int = 2, int = 3 );                        §\C{// prototype: allowed}§
     1466void p( int x, int y = 2, int z = 3 ) {}        §\C{// definition: not allowed}§
     1467\end{cfa}
     1468The reason for this restriction is to allow separate compilation.
     1469Multiple prototypes with different default values is an error.
     1470\end{description}
     1471
     1472Ellipse (``...'') arguments present problems when used with default arguments.
     1473The conflict occurs because both named and ellipse arguments must appear after positional arguments, giving two possibilities:
     1474\begin{cfa}
     1475p( /* positional */, ... , /* named */ );
     1476p( /* positional */, /* named */, ... );
     1477\end{cfa}
     1478While it is possible to implement both approaches, the first possibly is more complex than the second, \eg:
     1479\begin{cfa}
     1480p( int x, int y, int z, ... );
     1481p( 1, 4, 5, 6, z : 3, y : 2 ); §\C{// assume p( /* positional */, ... , /* named */ );}§
     1482p( 1, z : 3, y : 2, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§
     1483\end{cfa}
     1484In the first call, it is necessary for the programmer to conceptually rewrite the call, changing named arguments into positional, before knowing where the ellipse arguments begin.
     1485Hence, this approach seems significantly more difficult, and hence, confusing and error prone.
     1486In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call.
     1487
     1488The problem is exacerbated with default arguments, \eg:
     1489\begin{cfa}
     1490void p( int x, int y = 2, int z = 3... );
     1491p( 1, 4, 5, 6, z : 3 );         §\C{// assume p( /* positional */, ... , /* named */ );}§
     1492p( 1, z : 3, 4, 5, 6 );         §\C{// assume p( /* positional */, /* named */, ... );}§
     1493\end{cfa}
     1494The first call is an error because arguments 4 and 5 are actually positional not ellipse arguments;
     1495therefore, argument 5 subsequently conflicts with the named argument z : 3.
     1496In the second call, the default value for y is implicitly inserted after argument 1 and the named arguments separate the positional and ellipse arguments, making it trivial to read the call.
     1497For these reasons, \CFA requires named arguments before ellipse arguments.
     1498Finally, while ellipse arguments are needed for a small set of existing C routines, like printf, the extended \CFA type system largely eliminates the need for ellipse arguments (see Section 24), making much of this discussion moot.
     1499
     1500Default arguments and overloading (see Section 24) are complementary.
     1501While in theory default arguments can be simulated with overloading, as in:
     1502\begin{quote2}
     1503\begin{tabular}{@{}l@{\hspace{3em}}l@{}}
     1504\multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}}   & \multicolumn{1}{c}{\textbf{overloading}}      \\
     1505\begin{cfa}
     1506void p( int x, int y = 2, int z = 3 ) {...}
     1507
     1508
     1509\end{cfa}
     1510&
     1511\begin{cfa}
     1512void p( int x, int y, int z ) {...}
     1513void p( int x ) { p( x, 2, 3 ); }
     1514void p( int x, int y ) { p( x, y, 3 ); }
     1515\end{cfa}
     1516\end{tabular}
     1517\end{quote2}
     1518the number of required overloaded routines is linear in the number of default values, which is unacceptable growth.
     1519In general, overloading should only be used over default arguments if the body of the routine is significantly different.
     1520Furthermore, overloading cannot handle accessing default arguments in the middle of a positional list, via a missing argument, such as:
     1521\begin{cfa}
     1522p( 1, /* default */, 5 );               §\C{// rewrite $\Rightarrow$ p( 1, 2, 5 )}§
     1523\end{cfa}
     1524
     1525Given the \CFA restrictions above, both named and default arguments are backwards compatible.
     1526\Index*[C++]{\CC{}} only supports default arguments;
     1527\Index*{Ada} supports both named and default arguments.
     1528
     1529
     1530\section{Unnamed Structure Fields}
     1531
     1532C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg:
     1533\begin{cfa}
     1534struct {
     1535        int f1;                                 §\C{// named field}§
     1536        int f2 : 4;                             §\C{// named field with bit field size}§
     1537        int : 3;                                §\C{// unnamed field for basic type with bit field size}§
     1538        int ;                                   §\C{// disallowed, unnamed field}§
     1539        int *;                                  §\C{// disallowed, unnamed field}§
     1540        int (*)( int );                 §\C{// disallowed, unnamed field}§
     1541};
     1542\end{cfa}
     1543This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed.
     1544As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size.
     1545A list of unnamed fields is also supported, \eg:
     1546\begin{cfa}
     1547struct {
     1548        int , , ;                               §\C{// 3 unnamed fields}§
     1549}
     1550\end{cfa}
     1551
     1552
     1553\section{Nesting}
     1554
     1555Nesting of types and routines is useful for controlling name visibility (\newterm{name hiding}).
     1556
     1557
     1558\subsection{Type Nesting}
     1559
     1560\CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
     1561\begin{figure}
     1562\centering
     1563\begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}
     1564\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}}      & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}}      & \multicolumn{1}{|c}{\textbf{\CFA}}    \\
     1565\hline
     1566\begin{cfa}
     1567struct S {
     1568        enum C { R, G, B };
     1569        struct T {
     1570                union U { int i, j; };
     1571                enum C c;
     1572                short int i, j;
     1573        };
     1574        struct T t;
     1575} s;
     1576
     1577int fred() {
     1578        s.t.c = R;
     1579        struct T t = { R, 1, 2 };
     1580        enum C c;
     1581        union U u;
     1582}
     1583\end{cfa}
     1584&
     1585\begin{cfa}
     1586enum C { R, G, B };
     1587union U { int i, j; };
     1588struct T {
     1589        enum C c;
     1590        short int i, j;
     1591};
     1592struct S {
     1593        struct T t;
     1594} s;
     1595       
     1596
     1597
     1598
     1599
     1600
     1601
     1602\end{cfa}
     1603&
     1604\begin{cfa}
     1605struct S {
     1606        enum C { R, G, B };
     1607        struct T {
     1608                union U { int i, j; };
     1609                enum C c;
     1610                short int i, j;
     1611        };
     1612        struct T t;
     1613} s;
     1614
     1615int fred() {
     1616        s.t.c = ®S.®R;  // type qualification
     1617        struct ®S.®T t = { ®S.®R, 1, 2 };
     1618        enum ®S.®C c;
     1619        union ®S.T.®U u;
     1620}
     1621\end{cfa}
     1622\end{tabular}
     1623\caption{Type Nesting / Qualification}
     1624\label{f:TypeNestingQualification}
     1625\end{figure}
     1626In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.
     1627In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does \Index*{Java}, rather than the \CC type-selection operator ``©::©''.
     1628
     1629
     1630\subsection{Routine Nesting}
     1631
     1632While \CFA does not provide object programming by putting routines into structures, it does rely heavily on locally nested routines to redefine operations at or close to a call site.
     1633For example, the C quick-sort is wrapped into the following polymorphic \CFA routine:
     1634\begin{cfa}
     1635forall( otype T | { int ?<?( T, T ); } )
     1636void qsort( const T * arr, size_t dimension );
     1637\end{cfa}
     1638which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than.
     1639\begin{cfa}
     1640const unsigned int size = 5;
     1641int ia[size];
     1642...                                             §\C{// assign values to array ia}§
     1643qsort( ia, size );              §\C{// sort ascending order using builtin ?<?}§
     1644{
     1645        ®int ?<?( int x, int y ) { return x > y; }® §\C{// nested routine}§
     1646        qsort( ia, size );      §\C{// sort descending order by local redefinition}§
     1647}
     1648\end{cfa}
     1649
     1650Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks;
     1651the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program.
     1652The following program in undefined in \CFA (and Indexc{gcc})
     1653\begin{cfa}
     1654[* [int]( int )] foo() {                §\C{// int (*foo())( int )}§
     1655        int ®i® = 7;
     1656        int bar( int p ) {
     1657                ®i® += 1;                               §\C{// dependent on local variable}§
     1658                sout | ®i® | endl;
     1659        }
     1660        return bar;                                     §\C{// undefined because of local dependence}§
     1661}
     1662int main() {
     1663        * [int]( int ) fp = foo();      §\C{// int (*fp)( int )}§
     1664        sout | fp( 3 ) | endl;
     1665}
     1666\end{cfa}
     1667because
     1668
     1669Currently, there are no \Index{lambda} expressions, \ie unnamed routines because routine names are very important to properly select the correct routine.
     1670
     1671
     1672\section{Tuples}
     1673
     1674In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call.
     1675(More contexts are added shortly.)
     1676A list of such elements is called a \newterm{lexical list}.
     1677The general syntax of a lexical list is:
     1678\begin{cfa}
     1679[ §\emph{exprlist}§ ]
     1680\end{cfa}
     1681where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas.
     1682The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator.
     1683The following are examples of lexical lists:
     1684\begin{cfa}
     1685[ x, y, z ]
     1686[ 2 ]
     1687[ v+w, x*y, 3.14159, f() ]
     1688\end{cfa}
     1689Tuples are permitted to contain sub-tuples (\ie nesting), such as ©[ [ 14, 21 ], 9 ]©, which is a 2-element tuple whose first element is itself a tuple.
     1690Note, a tuple is not a record (structure);
     1691a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1).
     1692In essence, tuples are largely a compile time phenomenon, having little or no runtime presence.
     1693
     1694Tuples can be organized into compile-time tuple variables;
     1695these variables are of \newterm{tuple type}.
     1696Tuple variables and types can be used anywhere lists of conventional variables and types can be used.
     1697The general syntax of a tuple type is:
     1698\begin{cfa}
     1699[ §\emph{typelist}§ ]
     1700\end{cfa}
     1701where ©$\emph{typelist}$© is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications.
     1702Examples of tuple types include:
     1703\begin{cfa}
     1704[ unsigned int, char ]
     1705[ double, double, double ]
     1706[ * int, int * ]                §\C{// mix of CFA and ANSI}§
     1707[ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ]
     1708\end{cfa}
     1709Like tuples, tuple types may be nested, such as ©[ [ int, int ], int ]©, which is a 2-element tuple type whose first element is itself a tuple type.
     1710
     1711Examples of declarations using tuple types are:
     1712\begin{cfa}
     1713[ int, int ] x;                 §\C{// 2 element tuple, each element of type int}§
     1714* [ char, char ] y;             §\C{// pointer to a 2 element tuple}§
     1715[ [ int, int ] ] z ([ int, int ]);
     1716\end{cfa}
     1717The last example declares an external routine that expects a 2 element tuple as an input parameter and returns a 2 element tuple as its result.
     1718
     1719As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call.
     1720In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its
     1721square brackets omitted for convenience; therefore, the following routine invocations are equivalent:
     1722\begin{cfa}
     1723f( [ 1, x+2, fred() ] );
     1724f( 1, x+2, fred() );
     1725\end{cfa}
     1726Also, a tuple or a tuple variable may be used to supply all or part of an argument list for a routine expecting multiple input parameters or for a routine expecting a tuple as an input parameter.
     1727For example, the following are all legal:
     1728\begin{cfa}
     1729[ int, int ] w1;
     1730[ int, int, int ] w2;
     1731[ void ] f (int, int, int); /* three input parameters of type int */
     1732[ void ] g ([ int, int, int ]); /* 3 element tuple as input */
     1733f( [ 1, 2, 3 ] );
     1734f( w1, 3 );
     1735f( 1, w1 );
     1736f( w2 );
     1737g( [ 1, 2, 3 ] );
     1738g( w1, 3 );
     1739g( 1, w1 );
     1740g( w2 );
     1741\end{cfa}
     1742Note, in all cases 3 arguments are supplied even though the syntax may appear to supply less than 3. As mentioned, a
     1743tuple does not have structure like a record; a tuple is simply converted into a list of components.
     1744\begin{rationale}
     1745The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; \ie a statement such as ©g( f() )© is not supported.
     1746Using a temporary variable to store the  results of the inner routine and then passing this variable to the outer routine works, however.
     1747\end{rationale}
     1748
     1749A tuple can contain a C comma expression, provided the expression containing the comma operator is enclosed in parentheses.
     1750For instance, the following tuples are equivalent:
     1751\begin{cfa}
     1752[ 1, 3, 5 ]
     1753[ 1, (2, 3), 5 ]
     1754\end{cfa}
     1755The second element of the second tuple is the expression (2, 3), which yields the result 3.
     1756This requirement is the same as for comma expressions in argument lists.
     1757
     1758Type qualifiers, \ie const and volatile, may modify a tuple type.
     1759The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], \ie the qualifier is distributed across all of the types in the tuple, \eg:
     1760\begin{cfa}
     1761const volatile [ int, float, const int ] x;
     1762\end{cfa}
     1763is equivalent to:
     1764\begin{cfa}
     1765[ const volatile int, const volatile float, const volatile int ] x;
     1766\end{cfa}
     1767Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg:
     1768\begin{cfa}
     1769extern [ int, int ] w1;
     1770static [ int, int, int ] w2;
     1771\end{cfa}
     1772\begin{rationale}
     1773Unfortunately, C's syntax for subscripts precluded treating them as tuples.
     1774The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.
     1775Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, \eg ©f[g()]© always means a single subscript value because there is only one set of brackets.
     1776Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression.
     1777\end{rationale}
     1778
     1779
     1780\subsection{Tuple Coercions}
     1781
     1782There are four coercions that can be performed on tuples and tuple variables: closing, opening, flattening and structuring.
     1783In addition, the coercion of dereferencing can be performed on a tuple variable to yield its value(s), as for other variables.
     1784A \newterm{closing coercion} takes a set of values and converts it into a tuple value, which is a contiguous set of values, as in:
     1785\begin{cfa}
     1786[ int, int, int, int ] w;
     1787w = [ 1, 2, 3, 4 ];
     1788\end{cfa}
     1789First the right-hand tuple is closed into a tuple value and then the tuple value is assigned.
     1790
     1791An \newterm{opening coercion} is the opposite of closing; a tuple value is converted into a tuple of values, as in:
     1792\begin{cfa}
     1793[ a, b, c, d ] = w
     1794\end{cfa}
     1795©w© is implicitly opened to yield a tuple of four values, which are then assigned individually.
     1796
     1797A \newterm{flattening coercion} coerces a nested tuple, \ie a tuple with one or more components, which are themselves tuples, into a flattened tuple, which is a tuple whose components are not tuples, as in:
     1798\begin{cfa}
     1799[ a, b, c, d ] = [ 1, [ 2, 3 ], 4 ];
     1800\end{cfa}
     1801First the right-hand tuple is flattened and then the values are assigned individually.
     1802Flattening is also performed on tuple types.
     1803For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©.
     1804
     1805A \newterm{structuring coercion} is the opposite of flattening;
     1806a tuple is structured into a more complex nested tuple.
     1807For example, structuring the tuple ©[ 1, 2, 3, 4 ]© into the tuple ©[ 1, [ 2, 3 ], 4 ]© or the tuple type ©[ int, int, int, int ]© into the tuple type ©[ int, [ int, int ], int ]©.
     1808In the following example, the last assignment illustrates all the tuple coercions:
     1809\begin{cfa}
     1810[ int, int, int, int ] w = [ 1, 2, 3, 4 ];
     1811int x = 5;
     1812[ x, w ] = [ w, x ];            §\C{// all four tuple coercions}§
     1813\end{cfa}
     1814Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values;
     1815therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©.
     1816This tuple is then flattened, yielding ©[ 1, 2, 3, 4, 5 ]©, which is structured into ©[ 1, [ 2, 3, 4, 5 ] ]© to match the tuple type of the left-hand side.
     1817The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value.
     1818Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14).
     1819\begin{rationale}
     1820A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple.
     1821\end{rationale}
     1822
     1823
     1824\section{Mass Assignment}
     1825
     1826\CFA permits assignment to several variables at once using mass assignment~\cite{CLU}.
     1827Mass assignment has the following form:
     1828\begin{cfa}
     1829[ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = §\emph{expr}§;
     1830\end{cfa}
     1831\index{lvalue}
     1832The left-hand side is a tuple of \emph{lvalues}, which is a list of expressions each yielding an address, \ie any data object that can appear on the left-hand side of a conventional assignment statement.
     1833©$\emph{expr}$© is any standard arithmetic expression.
     1834Clearly, the types of the entities being assigned must be type compatible with the value of the expression.
     1835
     1836Mass assignment has parallel semantics, \eg the statement:
     1837\begin{cfa}
     1838[ x, y, z ] = 1.5;
     1839\end{cfa}
     1840is equivalent to:
     1841\begin{cfa}
     1842x = 1.5; y = 1.5; z = 1.5;
     1843\end{cfa}
     1844This semantics is not the same as the following in C:
     1845\begin{cfa}
     1846x = y = z = 1.5;
     1847\end{cfa}
     1848as conversions between intermediate assignments may lose information.
     1849A more complex example is:
     1850\begin{cfa}
     1851[ i, y[i], z ] = a + b;
     1852\end{cfa}
     1853which is equivalent to:
     1854\begin{cfa}
     1855t = a + b;
     1856a1 = &i; a2 = &y[i]; a3 = &z;
     1857*a1 = t; *a2 = t; *a3 = t;
     1858\end{cfa}
     1859The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues.
     1860The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned.
     1861In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment.
     1862
     1863
     1864\section{Multiple Assignment}
     1865
     1866\CFA also supports the assignment of several values at once, known as multiple assignment~\cite{CLU,Galletly96}.
     1867Multiple assignment has the following form:
     1868\begin{cfa}
     1869[ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = [ §\emph{expr}§, ... , §\emph{expr}§ ];
     1870\end{cfa}
     1871\index{lvalue}
     1872The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s.
     1873Each \emph{expr} appearing on the right-hand side of a multiple assignment statement is assigned to the corresponding \emph{lvalues} on the left-hand side of the statement using parallel semantics for each assignment.
     1874An example of multiple assignment is:
     1875\begin{cfa}
     1876[ x, y, z ] = [ 1, 2, 3 ];
     1877\end{cfa}
     1878Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©.
     1879 A more complex example is:
     1880\begin{cfa}
     1881[ i, y[ i ], z ] = [ 1, i, a + b ];
     1882\end{cfa}
     1883Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively.
     1884 Note, the parallel semantics of
     1885multiple assignment ensures:
     1886\begin{cfa}
     1887[ x, y ] = [ y, x ];
     1888\end{cfa}
     1889correctly interchanges (swaps) the values stored in ©x© and ©y©.
     1890The following cases are errors:
     1891\begin{cfa}
     1892[ a, b, c ] = [ 1, 2, 3, 4 ];
     1893[ a, b, c ] = [ 1, 2 ];
     1894\end{cfa}
     1895because the number of entities in the left-hand tuple is unequal with the right-hand tuple.
     1896
     1897As for all tuple contexts in C, side effects should not be used because C does not define an ordering for the evaluation of the elements of a tuple;
     1898both these examples produce indeterminate results:
     1899\begin{cfa}
     1900f( x++, x++ );                          §\C{// C routine call with side effects in arguments}§
     1901[ v1, v2 ] = [ x++, x++ ];      §\C{// side effects in righthand side of multiple assignment}§
     1902\end{cfa}
     1903
     1904
     1905\section{Cascade Assignment}
     1906
     1907As in C, \CFA mass and multiple assignments can be cascaded, producing cascade assignment.
     1908Cascade assignment has the following form:
     1909\begin{cfa}
     1910§\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§;
     1911\end{cfa}
     1912and it has the same parallel semantics as for mass and multiple assignment.
     1913Some examples of cascade assignment are:
     1914\begin{cfa}
     1915x1 = y1 = x2 = y2 = 0;
     1916[ x1, y1 ] = [ x2, y2 ] = [ x3, y3 ];
     1917[ x1, y1 ] = [ x2, y2 ] = 0;
     1918[ x1, y1 ] = z = 0;
     1919\end{cfa}
     1920As in C, the rightmost assignment is performed first, \ie assignment parses right to left.
     1921
     1922
     1923\section{Field Tuples}
     1924
     1925Tuples may be used to select multiple fields of a record by field name.
     1926Its general form is:
     1927\begin{cfa}
     1928§\emph{expr}§ . [ §\emph{fieldlist}§ ]
     1929§\emph{expr}§ -> [ §\emph{fieldlist}§ ]
     1930\end{cfa}
     1931\emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©.
     1932Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.
     1933A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is
     1934the following:
     1935\begin{cfa}
     1936struct s {
     1937        int f1, f2;
     1938        char f3;
     1939        double f4;
     1940} v;
     1941v.[ f3, f1, f2 ] = ['x', 11, 17 ];      §\C{// equivalent to v.f3 = 'x', v.f1 = 11, v.f2 = 17}§
     1942f( v.[ f3, f1, f2 ] );                          §\C{// equivalent to f( v.f3, v.f1, v.f2 )}§
     1943\end{cfa}
     1944Note, the fields appearing in a record-field tuple may be specified in any order;
     1945also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple.
     1946
     1947If a field of a ©struct© is itself another ©struct©, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example:
     1948\begin{cfa}
     1949struct inner {
     1950        int f2, f3;
     1951};
     1952struct outer {
     1953        int f1;
     1954        struct inner i;
     1955        double f4;
     1956} o;
     1957
     1958o.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
     1959\end{cfa}
    4911960
    4921961
     
    7802249still works.
    7812250Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    782 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, \eg:
     2251Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:
    7832252\begin{cfa}
    7842253®choose® ( i ) {
     
    9282397
    9292398
    930 \subsection{Exception Hierarchy}
    931 
    932 An exception type can be derived from another exception type, just like deriving a subclass from a class, providing a kind of polymorphism among exception types.
    933 The exception-type hierarchy that is created is used to organize exception types, similar to a class hierarchy in object-oriented languages, \eg:
    934 \begin{center}
    935 \input{EHMHierarchy}
    936 \end{center}
    937 A programmer can then choose to handle an exception at different degrees of specificity along the hierarchy;
    938 derived exception-types support a more flexible programming style.
    939 For example, higher-level code should catch general exceptions to reduce coupling to the specific implementation at the lower levels;
    940 unnecessary coupling may force changes in higher-level code when low-level code changes.
    941 A consequence of derived exception-types is that multiple exceptions may match, \eg:
    942 \begin{cfa}
    943 catch( Arithmetic )
    944 \end{cfa}
    945 matches all three derived exception-types: ©DivideByZero©, ©Overflow©, and ©Underflow©.
    946 Because the propagation mechanisms perform a simple linear search of the handler clause for a guarded block, and selects the first matching handler, the order of catch clauses in the handler clause becomes important, \eg:
    947 \begin{cfa}
    948 try {
    949         ...
    950 } catch( Overflow ) {   // must appear first
    951         // handle overflow
    952 } catch( Arithmetic )
    953         // handle other arithmetic issues
    954 }
    955 \end{cfa}
    956 \newterm{Multiple derivation} among exception is not supported.
    957 
    958 
    959 \section{Declarations}
    960 \label{s:Declarations}
    961 
    962 C declaration syntax is notoriously confusing and error prone.
    963 For example, many C programmers are confused by a declaration as simple as:
    964 \begin{quote2}
    965 \begin{tabular}{@{}ll@{}}
    966 \begin{cfa}
    967 int * x[5]
    968 \end{cfa}
    969 &
    970 \raisebox{-0.75\totalheight}{\input{Cdecl}}
    971 \end{tabular}
    972 \end{quote2}
    973 Is this an array of 5 pointers to integers or a \Index{pointer} to an array of 5 integers?
    974 The fact this declaration is unclear to many C programmers means there are \Index{productivity} and \Index{safety} issues even for basic programs.
    975 Another example of confusion results from the fact that a routine name and its parameters are embedded within the return type, mimicking the way the return value is used at the routine's call site.
    976 For example, a routine returning a \Index{pointer} to an array of integers is defined and used in the following way:
    977 \begin{cfa}
    978 int ®(*®f®())[®5®]® {...};                              §\C{definition}§
    979  ... ®(*®f®())[®3®]® += 1;                              §\C{usage}§
    980 \end{cfa}
    981 Essentially, the return type is wrapped around the routine name in successive layers (like an \Index{onion}).
    982 While attempting to make the two contexts consistent is a laudable goal, it has not worked out in practice.
    983 
    984 \CFA provides its own type, variable and routine declarations, using a different syntax.
    985 The new declarations place qualifiers to the left of the base type, while C declarations place qualifiers to the right of the base type.
    986 In the following example, \R{red} is the base type and \B{blue} is qualifiers.
    987 The \CFA declarations move the qualifiers to the left of the base type, \ie move the blue to the left of the red, while the qualifiers have the same meaning but are ordered left to right to specify a variable's type.
    988 \begin{quote2}
    989 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    990 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    991 \begin{cfa}
    992 ß[5] *ß ®int® x1;
    993 ß* [5]ß ®int® x2;
    994 ß[* [5] int]ß f®( int p )®;
    995 \end{cfa}
    996 &
    997 \begin{cfa}
    998 ®int® ß*ß x1 ß[5]ß;
    999 ®int® ß(*ßx2ß)[5]ß;
    1000 ßint (*ßf®( int p )®ß)[5]ß;
    1001 \end{cfa}
    1002 \end{tabular}
    1003 \end{quote2}
    1004 The only exception is \Index{bit field} specification, which always appear to the right of the base type.
    1005 % Specifically, the character ©*© is used to indicate a pointer, square brackets ©[©\,©]© are used to represent an array or function return value, and parentheses ©()© are used to indicate a routine parameter.
    1006 However, unlike C, \CFA type declaration tokens are distributed across all variables in the declaration list.
    1007 For instance, variables ©x© and ©y© of type \Index{pointer} to integer are defined in \CFA as follows:
    1008 \begin{quote2}
    1009 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1010 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    1011 \begin{cfa}
    1012 ®*® int x, y;
    1013 \end{cfa}
    1014 &
    1015 \begin{cfa}
    1016 int ®*®x, ®*®y;
    1017 \end{cfa}
    1018 \end{tabular}
    1019 \end{quote2}
    1020 The downside of this semantics is the need to separate regular and \Index{pointer} declarations:
    1021 \begin{quote2}
    1022 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1023 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    1024 \begin{cfa}
    1025 ®*® int x;
    1026 int y;
    1027 \end{cfa}
    1028 &
    1029 \begin{cfa}
    1030 int ®*®x, y;
    1031 
    1032 \end{cfa}
    1033 \end{tabular}
    1034 \end{quote2}
    1035 which is \Index{prescribing} a safety benefit.
    1036 Other examples are:
    1037 \begin{quote2}
    1038 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
    1039 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
    1040 \begin{cfa}
    1041 [ 5 ] int z;
    1042 [ 5 ] * char w;
    1043 * [ 5 ] double v;
    1044 struct s {
    1045         int f0:3;
    1046         * int f1;
    1047         [ 5 ] * int f2;
    1048 };
    1049 \end{cfa}
    1050 &
    1051 \begin{cfa}
    1052 int z[ 5 ];
    1053 char * w[ 5 ];
    1054 double (* v)[ 5 ];
    1055 struct s {
    1056         int f0:3;
    1057         int * f1;
    1058         int * f2[ 5 ]
    1059 };
    1060 \end{cfa}
    1061 &
    1062 \begin{cfa}
    1063 // array of 5 integers
    1064 // array of 5 pointers to char
    1065 // pointer to array of 5 doubles
    1066 
    1067 // common bit field syntax
    1068 
    1069 
    1070 
    1071 \end{cfa}
    1072 \end{tabular}
    1073 \end{quote2}
    1074 
    1075 All type qualifiers, \eg ©const©, ©volatile©, etc., are used in the normal way with the new declarations and also appear left to right, \eg:
    1076 \begin{quote2}
    1077 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
    1078 \multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\
    1079 \begin{cfa}
    1080 const * const int x;
    1081 const * [ 5 ] const int y;
    1082 \end{cfa}
    1083 &
    1084 \begin{cfa}
    1085 int const * const x;
    1086 const int (* const y)[ 5 ]
    1087 \end{cfa}
    1088 &
    1089 \begin{cfa}
    1090 // const pointer to const integer
    1091 // const pointer to array of 5 const integers
    1092 \end{cfa}
    1093 \end{tabular}
    1094 \end{quote2}
    1095 All declaration qualifiers, \eg ©extern©, ©static©, etc., are used in the normal way with the new declarations but can only appear at the start of a \CFA routine declaration,\footnote{\label{StorageClassSpecifier}
    1096 The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature.~\cite[\S~6.11.5(1)]{C11}} \eg:
    1097 \begin{quote2}
    1098 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
    1099 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}} \\
    1100 \begin{cfa}
    1101 extern [ 5 ] int x;
    1102 static * const int y;
    1103 \end{cfa}
    1104 &
    1105 \begin{cfa}
    1106 int extern x[ 5 ];
    1107 const int static * y;
    1108 \end{cfa}
    1109 &
    1110 \begin{cfa}
    1111 // externally visible array of 5 integers
    1112 // internally visible pointer to constant int
    1113 \end{cfa}
    1114 \end{tabular}
    1115 \end{quote2}
    1116 
    1117 The new declaration syntax can be used in other contexts where types are required, \eg casts and the pseudo-routine ©sizeof©:
    1118 \begin{quote2}
    1119 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1120 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    1121 \begin{cfa}
    1122 y = (®* int®)x;
    1123 i = sizeof(®[ 5 ] * int®);
    1124 \end{cfa}
    1125 &
    1126 \begin{cfa}
    1127 y = (®int *®)x;
    1128 i = sizeof(®int * [ 5 ]®);
    1129 \end{cfa}
    1130 \end{tabular}
    1131 \end{quote2}
    1132 
    1133 Finally, new \CFA declarations may appear together with C declarations in the same program block, but cannot be mixed within a specific declaration.
    1134 Therefore, a programmer has the option of either continuing to use traditional C declarations or take advantage of the new style.
    1135 Clearly, both styles need to be supported for some time due to existing C-style header-files, particularly for UNIX systems.
    1136 
    1137 
    1138 \section{Pointer/Reference}
    1139 
    1140 C provides a \newterm{pointer type};
    1141 \CFA adds a \newterm{reference type}.
    1142 These types may be derived from an object or routine type, called the \newterm{referenced type}.
    1143 Objects of these types contain an \newterm{address}, which is normally a location in memory, but may also address memory-mapped registers in hardware devices.
    1144 An integer constant expression with the value 0, or such an expression cast to type ©void *©, is called a \newterm{null-pointer constant}.\footnote{
    1145 One way to conceptualize the null pointer is that no variable is placed at this address, so the null-pointer address can be used to denote an uninitialized pointer/reference object;
    1146 \ie the null pointer is guaranteed to compare unequal to a pointer to any object or routine.}
    1147 An address is \newterm{sound}, if it points to a valid memory location in scope, \ie within the program's execution-environment and has not been freed.
    1148 Dereferencing an \newterm{unsound} address, including the null pointer, is \Index{undefined}, often resulting in a \Index{memory fault}.
    1149 
    1150 A program \newterm{object} is a region of data storage in the execution environment, the contents of which can represent values.
    1151 In most cases, objects are located in memory at an address, and the variable name for an object is an implicit address to the object generated by the compiler and automatically dereferenced, as in:
    1152 \begin{quote2}
    1153 \begin{tabular}{@{}ll@{\hspace{2em}}l@{}}
    1154 \begin{cfa}
    1155 int x;
    1156 x = 3;
    1157 int y;
    1158 y = x;
    1159 \end{cfa}
    1160 &
    1161 \raisebox{-0.45\totalheight}{\input{pointer1}}
    1162 &
    1163 \begin{cfa}
    1164 int * ®const® x = (int *)100
    1165 *x = 3;                 // implicit dereference
    1166 int * ®const® y = (int *)104;
    1167 *y = *x;                // implicit dereference
    1168 \end{cfa}
    1169 \end{tabular}
    1170 \end{quote2}
    1171 where the right example is how the compiler logically interprets the variables in the left example.
    1172 Since a variable name only points to one address during its lifetime, it is an \Index{immutable} \Index{pointer};
    1173 hence, the implicit type of pointer variables ©x© and ©y© are constant pointers in the compiler interpretation.
    1174 In general, variable addresses are stored in instructions instead of loaded from memory, and hence may not occupy storage.
    1175 These approaches are contrasted in the following:
    1176 \begin{quote2}
    1177 \begin{tabular}{@{}l|l@{}}
    1178 \multicolumn{1}{c|}{explicit variable address} & \multicolumn{1}{c}{implicit variable address} \\
    1179 \hline
    1180 \begin{cfa}
    1181 lda             r1,100                  // load address of x
    1182 ld               r2,(r1)                  // load value of x
    1183 lda             r3,104                  // load address of y
    1184 st               r2,(r3)                  // store x into y
    1185 \end{cfa}
    1186 &
    1187 \begin{cfa}
    1188 
    1189 ld              r2,(100)                // load value of x
    1190 
    1191 st              r2,(104)                // store x into y
    1192 \end{cfa}
    1193 \end{tabular}
    1194 \end{quote2}
    1195 Finally, the immutable nature of a variable's address and the fact that there is no storage for the variable pointer means pointer assignment\index{pointer!assignment}\index{assignment!pointer} is impossible.
    1196 Therefore, the expression ©x = y© has only one meaning, ©*x = *y©, \ie manipulate values, which is why explicitly writing the dereferences is unnecessary even though it occurs implicitly as part of \Index{instruction decoding}.
    1197 
    1198 A \Index{pointer}/\Index{reference} object is a generalization of an object variable-name, \ie a mutable address that can point to more than one memory location during its lifetime.
    1199 (Similarly, an integer variable can contain multiple integer literals during its lifetime versus an integer constant representing a single literal during its lifetime, and like a variable name, may not occupy storage if the literal is embedded directly into instructions.)
    1200 Hence, a pointer occupies memory to store its current address, and the pointer's value is loaded by dereferencing, \eg:
    1201 \begin{quote2}
    1202 \begin{tabular}{@{}l@{\hspace{2em}}l@{}}
    1203 \begin{cfa}
    1204 int x, y, ®*® p1, ®*® p2, ®**® p3;
    1205 p1 = ®&®x;               // p1 points to x
    1206 p2 = p1;                 // p2 points to x
    1207 p1 = ®&®y;               // p1 points to y
    1208 p3 = &p2;               // p3 points to p2
    1209 \end{cfa}
    1210 &
    1211 \raisebox{-0.5\totalheight}{\input{pointer2.pstex_t}}
    1212 \end{tabular}
    1213 \end{quote2}
    1214 
    1215 Notice, an address has a \Index{duality}\index{address!duality}: a location in memory or the value at that location.
    1216 In many cases, a compiler might be able to infer the best meaning for these two cases.
    1217 For example, \Index*{Algol68}~\cite{Algol68} infers pointer dereferencing to select the best meaning for each pointer usage
    1218 \begin{cfa}
    1219 p2 = p1 + x;                                    §\C{// compiler infers *p2 = *p1 + x;}§
    1220 \end{cfa}
    1221 Algol68 infers the following dereferencing ©*p2 = *p1 + x©, because adding the arbitrary integer value in ©x© to the address of ©p1© and storing the resulting address into ©p2© is an unlikely operation.
    1222 Unfortunately, automatic dereferencing does not work in all cases, and so some mechanism is necessary to fix incorrect choices.
    1223 
    1224 Rather than inferring dereference, most programming languages pick one implicit dereferencing semantics, and the programmer explicitly indicates the other to resolve address-duality.
    1225 In C, objects of pointer type always manipulate the pointer object's address:
    1226 \begin{cfa}
    1227 p1 = p2;                                                §\C{// p1 = p2\ \ rather than\ \ *p1 = *p2}§
    1228 p2 = p1 + x;                                    §\C{// p2 = p1 + x\ \ rather than\ \ *p2 = *p1 + x}§
    1229 \end{cfa}
    1230 even though the assignment to ©p2© is likely incorrect, and the programmer probably meant:
    1231 \begin{cfa}
    1232 p1 = p2;                                                §\C{// pointer address assignment}§
    1233 ®*®p2 = ®*®p1 + x;                              §\C{// pointed-to value assignment / operation}§
    1234 \end{cfa}
    1235 The C semantics work well for situations where manipulation of addresses is the primary meaning and data is rarely accessed, such as storage management (©malloc©/©free©).
    1236 
    1237 However, in most other situations, the pointed-to value is requested more often than the pointer address.
    1238 \begin{cfa}
    1239 *p2 = ((*p1 + *p2) * (**p3 - *p1)) / (**p3 - 15);
    1240 \end{cfa}
    1241 In this case, it is tedious to explicitly write the dereferencing, and error prone when pointer arithmetic is allowed.
    1242 It is better to have the compiler generate the dereferencing and have no implicit pointer arithmetic:
    1243 \begin{cfa}
    1244 p2 = ((p1 + p2) * (p3 - p1)) / (p3 - 15);
    1245 \end{cfa}
    1246 
    1247 To support this common case, a reference type is introduced in \CFA, denoted by ©&©, which is the opposite dereference semantics to a pointer type, making the value at the pointed-to location the implicit semantics for dereferencing (similar but not the same as \CC \Index{reference type}s).
    1248 \begin{cfa}
    1249 int x, y, ®&® r1, ®&® r2, ®&&® r3;
    1250 ®&®r1 = &x;                                             §\C{// r1 points to x}§
    1251 ®&®r2 = &r1;                                    §\C{// r2 points to x}§
    1252 ®&®r1 = &y;                                             §\C{// r1 points to y}§
    1253 ®&&®r3 = ®&®&r2;                                §\C{// r3 points to r2}§
    1254 r2 = ((r1 + r2) * (r3 - r1)) / (r3 - 15); §\C{// implicit dereferencing}§
    1255 \end{cfa}
    1256 Except for auto-dereferencing by the compiler, this reference example is the same as the previous pointer example.
    1257 Hence, a reference behaves like the variable name for the current variable it is pointing-to.
    1258 One way to conceptualize a reference is via a rewrite rule, where the compiler inserts a dereference operator before the reference variable for each reference qualifier in a declaration, so the previous example becomes:
    1259 \begin{cfa}
    1260 ®*®r2 = ((®*®r1 + ®*®r2) ®*® (®**®r3 - ®*®r1)) / (®**®r3 - 15);
    1261 \end{cfa}
    1262 When a reference operation appears beside a dereference operation, \eg ©&*©, they cancel out.
    1263 However, in C, the cancellation always yields a value (\Index{rvalue}).\footnote{
    1264 The unary ©&© operator yields the address of its operand.
    1265 If the operand has type ``type'', the result has type ``pointer to type''.
    1266 If the operand is the result of a unary ©*© operator, neither that operator nor the ©&© operator is evaluated and the result is as if both were omitted, except that the constraints on the operators still apply and the result is not an lvalue.~\cite[\S~6.5.3.2--3]{C11}}
    1267 For a \CFA reference type, the cancellation on the left-hand side of assignment leaves the reference as an address (\Index{lvalue}):
    1268 \begin{cfa}
    1269 (&®*®)r1 = &x;                                  §\C{// (\&*) cancel giving address in r1 not variable pointed-to by r1}§
    1270 \end{cfa}
    1271 Similarly, the address of a reference can be obtained for assignment or computation (\Index{rvalue}):
    1272 \begin{cfa}
    1273 (&(&®*®)®*®)r3 = &(&®*®)r2;             §\C{// (\&*) cancel giving address in r2, (\&(\&*)*) cancel giving address in r3}§
    1274 \end{cfa}
    1275 Cancellation\index{cancellation!pointer/reference}\index{pointer!cancellation} works to arbitrary depth.
    1276 
    1277 Fundamentally, pointer and reference objects are functionally interchangeable because both contain addresses.
    1278 \begin{cfa}
    1279 int x, *p1 = &x, **p2 = &p1, ***p3 = &p2,
    1280                  &r1 = x,    &&r2 = r1,   &&&r3 = r2;
    1281 ***p3 = 3;                                              §\C{// change x}§
    1282 r3 = 3;                                                 §\C{// change x, ***r3}§
    1283 **p3 = ...;                                             §\C{// change p1}§
    1284 &r3 = ...;                                              §\C{// change r1, (\&*)**r3, 1 cancellation}§
    1285 *p3 = ...;                                              §\C{// change p2}§
    1286 &&r3 = ...;                                             §\C{// change r2, (\&(\&*)*)*r3, 2 cancellations}§
    1287 &&&r3 = p3;                                             §\C{// change r3 to p3, (\&(\&(\&*)*)*)r3, 3 cancellations}§
    1288 \end{cfa}
    1289 Furthermore, both types are equally performant, as the same amount of dereferencing occurs for both types.
    1290 Therefore, the choice between them is based solely on whether the address is dereferenced frequently or infrequently, which dictates the amount of implicit dereferencing aid from the compiler.
    1291 
    1292 As for a pointer type, a reference type may have qualifiers:
    1293 \begin{cfa}
    1294 const int cx = 5;                                       §\C{// cannot change cx;}§
    1295 const int & cr = cx;                            §\C{// cannot change what cr points to}§
    1296 ®&®cr = &cx;                                            §\C{// can change cr}§
    1297 cr = 7;                                                         §\C{// error, cannot change cx}§
    1298 int & const rc = x;                                     §\C{// must be initialized}§
    1299 ®&®rc = &x;                                                     §\C{// error, cannot change rc}§
    1300 const int & const crc = cx;                     §\C{// must be initialized}§
    1301 crc = 7;                                                        §\C{// error, cannot change cx}§
    1302 ®&®crc = &cx;                                           §\C{// error, cannot change crc}§
    1303 \end{cfa}
    1304 Hence, for type ©& const©, there is no pointer assignment, so ©&rc = &x© is disallowed, and \emph{the address value cannot be the null pointer unless an arbitrary pointer is coerced\index{coercion} into the reference}:
    1305 \begin{cfa}
    1306 int & const cr = *0;                            §\C{// where 0 is the int * zero}§
    1307 \end{cfa}
    1308 Note, constant reference-types do not prevent \Index{addressing errors} because of explicit storage-management:
    1309 \begin{cfa}
    1310 int & const cr = *malloc();
    1311 cr = 5;
    1312 free( &cr );
    1313 cr = 7;                                                         §\C{// unsound pointer dereference}§
    1314 \end{cfa}
    1315 
    1316 The position of the ©const© qualifier \emph{after} the pointer/reference qualifier causes confuse for C programmers.
    1317 The ©const© qualifier cannot be moved before the pointer/reference qualifier for C style-declarations;
    1318 \CFA-style declarations (see \VRef{s:Declarations}) attempt to address this issue:
    1319 \begin{quote2}
    1320 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1321 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    1322 \begin{cfa}
    1323 ®const® * ®const® * const int ccp;
    1324 ®const® & ®const® & const int ccr;
    1325 \end{cfa}
    1326 &
    1327 \begin{cfa}
    1328 const int * ®const® * ®const® ccp;
    1329 
    1330 \end{cfa}
    1331 \end{tabular}
    1332 \end{quote2}
    1333 where the \CFA declaration is read left-to-right.
    1334 
    1335 Finally, like pointers, references are usable and composable with other type operators and generators.
    1336 \begin{cfa}
    1337 int w, x, y, z, & ar[3] = { x, y, z }; §\C{// initialize array of references}§
    1338 &ar[1] = &w;                                            §\C{// change reference array element}§
    1339 typeof( ar[1] ) p;                                      §\C{// (gcc) is int, i.e., the type of referenced object}§
    1340 typeof( &ar[1] ) q;                                     §\C{// (gcc) is int \&, i.e., the type of reference}§
    1341 sizeof( ar[1] ) == sizeof( int );       §\C{// is true, i.e., the size of referenced object}§
    1342 sizeof( &ar[1] ) == sizeof( int *)      §\C{// is true, i.e., the size of a reference}§
    1343 \end{cfa}
    1344 
    1345 In contrast to \CFA reference types, \Index*[C++]{\CC{}}'s reference types are all ©const© references, preventing changes to the reference address, so only value assignment is possible, which eliminates half of the \Index{address duality}.
    1346 Also, \CC does not allow \Index{array}s\index{array!reference} of reference\footnote{
    1347 The reason for disallowing arrays of reference is unknown, but possibly comes from references being ethereal (like a textual macro), and hence, replaceable by the referant object.}
    1348 \Index*{Java}'s reference types to objects (all Java objects are on the heap) are like C pointers, which always manipulate the address, and there is no (bit-wise) object assignment, so objects are explicitly cloned by shallow or deep copying, which eliminates half of the address duality.
    1349 
    1350 
    1351 \subsection{Initialization}
    1352 
    1353 \Index{Initialization} is different than \Index{assignment} because initialization occurs on the empty (uninitialized) storage on an object, while assignment occurs on possibly initialized storage of an object.
    1354 There are three initialization contexts in \CFA: declaration initialization, argument/parameter binding, return/temporary binding.
    1355 Because the object being initialized has no value, there is only one meaningful semantics with respect to address duality: it must mean address as there is no pointed-to value.
    1356 In contrast, the left-hand side of assignment has an address that has a duality.
    1357 Therefore, for pointer/reference initialization, the initializing value must be an address not a value.
    1358 \begin{cfa}
    1359 int * p = &x;                                           §\C{// assign address of x}§
    1360 ®int * p = x;®                                          §\C{// assign value of x}§
    1361 int & r = x;                                            §\C{// must have address of x}§
    1362 \end{cfa}
    1363 Like the previous example with C pointer-arithmetic, it is unlikely assigning the value of ©x© into a pointer is meaningful (again, a warning is usually given).
    1364 Therefore, for safety, this context requires an address, so it is superfluous to require explicitly taking the address of the initialization object, even though the type is incorrect.
    1365 Note, this is strictly a convenience and safety feature for a programmer.
    1366 Hence, \CFA allows ©r© to be assigned ©x© because it infers a reference for ©x©, by implicitly inserting a address-of operator, ©&©, and it is an error to put an ©&© because the types no longer match due to the implicit dereference.
    1367 Unfortunately, C allows ©p© to be assigned with ©&x© (address) or ©x© (value), but most compilers warn about the latter assignment as being potentially incorrect.
    1368 Similarly, when a reference type is used for a parameter/return type, the call-site argument does not require a reference operator for the same reason.
    1369 \begin{cfa}
    1370 int & f( int & r );                                     §\C{// reference parameter and return}§
    1371 z = f( x ) + f( y );                            §\C{// reference operator added, temporaries needed for call results}§
    1372 \end{cfa}
    1373 Within routine ©f©, it is possible to change the argument by changing the corresponding parameter, and parameter ©r© can be locally reassigned within ©f©.
    1374 Since operator routine ©?+?© takes its arguments by value, the references returned from ©f© are used to initialize compiler generated temporaries with value semantics that copy from the references.
    1375 \begin{cfa}
    1376 int temp1 = f( x ), temp2 = f( y );
    1377 z = temp1 + temp2;
    1378 \end{cfa}
    1379 This \Index{implicit referencing} is crucial for reducing the syntactic burden for programmers when using references;
    1380 otherwise references have the same syntactic  burden as pointers in these contexts.
    1381 
    1382 When a pointer/reference parameter has a ©const© value (immutable), it is possible to pass literals and expressions.
    1383 \begin{cfa}
    1384 void f( ®const® int & cr );
    1385 void g( ®const® int * cp );
    1386 f( 3 );                   g( ®&®3 );
    1387 f( x + y );             g( ®&®(x + y) );
    1388 \end{cfa}
    1389 Here, the compiler passes the address to the literal 3 or the temporary for the expression ©x + y©, knowing the argument cannot be changed through the parameter.
    1390 The ©&© before the constant/expression for the pointer-type parameter (©g©) is a \CFA extension necessary to type match and is a common requirement before a variable in C (\eg ©scanf©).
    1391 Importantly, ©&3© may not be equal to ©&3©, where the references occur across calls because the temporaries maybe different on each call.
    1392 
    1393 \CFA \emph{extends} this semantics to a mutable pointer/reference parameter, and the compiler implicitly creates the necessary temporary (copying the argument), which is subsequently pointed-to by the reference parameter and can be changed.\footnote{
    1394 If whole program analysis is possible, and shows the parameter is not assigned, \ie it is ©const©, the temporary is unnecessary.}
    1395 \begin{cfa}
    1396 void f( int & r );
    1397 void g( int * p );
    1398 f( 3 );                   g( ®&®3 );            §\C{// compiler implicit generates temporaries}§
    1399 f( x + y );             g( ®&®(x + y) );        §\C{// compiler implicit generates temporaries}§
    1400 \end{cfa}
    1401 Essentially, there is an implicit \Index{rvalue} to \Index{lvalue} conversion in this case.\footnote{
    1402 This conversion attempts to address the \newterm{const hell} problem, when the innocent addition of a ©const© qualifier causes a cascade of type failures, requiring an unknown number of additional ©const© qualifiers, until it is discovered a ©const© qualifier cannot be added and all the ©const© qualifiers must be removed.}
    1403 The implicit conversion allows seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.
    1404 
    1405 %\CFA attempts to handle pointers and references in a uniform, symmetric manner.
    1406 Finally, C handles \Index{routine object}s in an inconsistent way.
    1407 A routine object is both a pointer and a reference (\Index{particle and wave}).
    1408 \begin{cfa}
    1409 void f( int i );
    1410 void (*fp)( int );                                      §\C{// routine pointer}§
    1411 fp = f;                                                         §\C{// reference initialization}§
    1412 fp = &f;                                                        §\C{// pointer initialization}§
    1413 fp = *f;                                                        §\C{// reference initialization}§
    1414 fp(3);                                                          §\C{// reference invocation}§
    1415 (*fp)(3);                                                       §\C{// pointer invocation}§
    1416 \end{cfa}
    1417 While C's treatment of routine objects has similarity to inferring a reference type in initialization contexts, the examples are assignment not initialization, and all possible forms of assignment are possible (©f©, ©&f©, ©*f©) without regard for type.
    1418 Instead, a routine object should be referenced by a ©const© reference:
    1419 \begin{cfa}
    1420 ®const® void (®&® fr)( int ) = f;       §\C{// routine reference}§
    1421 fr = ...                                                        §\C{// error, cannot change code}§
    1422 &fr = ...;                                                      §\C{// changing routine reference}§
    1423 fr( 3 );                                                        §\C{// reference call to f}§
    1424 (*fr)(3);                                                       §\C{// error, incorrect type}§
    1425 \end{cfa}
    1426 because the value of the routine object is a routine literal, \ie the routine code is normally immutable during execution.\footnote{
    1427 Dynamic code rewriting is possible but only in special circumstances.}
    1428 \CFA allows this additional use of references for routine objects in an attempt to give a more consistent meaning for them.
    1429 
    1430 
    1431 \subsection{Address-of Semantics}
    1432 
    1433 In C, ©&E© is an rvalue for any expression ©E©.
    1434 \CFA extends the ©&© (address-of) operator as follows:
    1435 \begin{itemize}
    1436 \item
    1437 if ©R© is an \Index{rvalue} of type ©T &$_1$...&$_r$© where $r \ge 1$ references (©&© symbols) than ©&R© has type ©T ®*®&$_{\color{red}2}$...&$_{\color{red}r}$©, \ie ©T© pointer with $r-1$ references (©&© symbols).
    1438 
    1439 \item
    1440 if ©L© is an \Index{lvalue} of type ©T &$_1$...&$_l$© where $l \ge 0$ references (©&© symbols) then ©&L© has type ©T ®*®&$_{\color{red}1}$...&$_{\color{red}l}$©, \ie ©T© pointer with $l$ references (©&© symbols).
    1441 \end{itemize}
    1442 The following example shows the first rule applied to different \Index{rvalue} contexts:
    1443 \begin{cfa}
    1444 int x, * px, ** ppx, *** pppx, **** ppppx;
    1445 int & rx = x, && rrx = rx, &&& rrrx = rrx ;
    1446 x = rrrx;               // rrrx is an lvalue with type int &&& (equivalent to x)
    1447 px = &rrrx;             // starting from rrrx, &rrrx is an rvalue with type int *&&& (&x)
    1448 ppx = &&rrrx;   // starting from &rrrx, &&rrrx is an rvalue with type int **&& (&rx)
    1449 pppx = &&&rrrx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (&rrx)
    1450 ppppx = &&&&rrrx; // starting from &&&rrrx, &&&&rrrx is an rvalue with type int **** (&rrrx)
    1451 \end{cfa}
    1452 The following example shows the second rule applied to different \Index{lvalue} contexts:
    1453 \begin{cfa}
    1454 int x, * px, ** ppx, *** pppx;
    1455 int & rx = x, && rrx = rx, &&& rrrx = rrx ;
    1456 rrrx = 2;               // rrrx is an lvalue with type int &&& (equivalent to x)
    1457 &rrrx = px;             // starting from rrrx, &rrrx is an rvalue with type int *&&& (rx)
    1458 &&rrrx = ppx;   // starting from &rrrx, &&rrrx is an rvalue with type int **&& (rrx)
    1459 &&&rrrx = pppx; // starting from &&rrrx, &&&rrrx is an rvalue with type int ***& (rrrx)
    1460 \end{cfa}
    1461 
    1462 
    1463 \subsection{Conversions}
    1464 
    1465 C provides a basic implicit conversion to simplify variable usage:
    1466 \begin{enumerate}
    1467 \setcounter{enumi}{-1}
    1468 \item
    1469 lvalue to rvalue conversion: ©cv T© converts to ©T©, which allows implicit variable dereferencing.
    1470 \begin{cfa}
    1471 int x;
    1472 x + 1;                  // lvalue variable (int) converts to rvalue for expression
    1473 \end{cfa}
    1474 An rvalue has no type qualifiers (©cv©), so the lvalue qualifiers are dropped.
    1475 \end{enumerate}
    1476 \CFA provides three new implicit conversion for reference types to simplify reference usage.
    1477 \begin{enumerate}
    1478 \item
    1479 reference to rvalue conversion: ©cv T &© converts to ©T©, which allows implicit reference dereferencing.
    1480 \begin{cfa}
    1481 int x, &r = x, f( int p );
    1482 x = ®r® + f( ®r® );  // lvalue reference converts to rvalue
    1483 \end{cfa}
    1484 An rvalue has no type qualifiers (©cv©), so the reference qualifiers are dropped.
    1485 
    1486 \item
    1487 lvalue to reference conversion: \lstinline[deletekeywords={lvalue}]@lvalue-type cv1 T@ converts to ©cv2 T &©, which allows implicitly converting variables to references.
    1488 \begin{cfa}
    1489 int x, &r = ®x®, f( int & p ); // lvalue variable (int) convert to reference (int &)
    1490 f( ®x® );               // lvalue variable (int) convert to reference (int &)
    1491 \end{cfa}
    1492 Conversion can restrict a type, where ©cv1© $\le$ ©cv2©, \eg passing an ©int© to a ©const volatile int &©, which has low cost.
    1493 Conversion can expand a type, where ©cv1© $>$ ©cv2©, \eg passing a ©const volatile int© to an ©int &©, which has high cost (\Index{warning});
    1494 furthermore, if ©cv1© has ©const© but not ©cv2©, a temporary variable is created to preserve the immutable lvalue.
    1495 
    1496 \item
    1497 rvalue to reference conversion: ©T© converts to ©cv T &©, which allows binding references to temporaries.
    1498 \begin{cfa}
    1499 int x, & f( int & p );
    1500 f( ®x + 3® );   // rvalue parameter (int) implicitly converts to lvalue temporary reference (int &)
    1501 ®&f®(...) = &x; // rvalue result (int &) implicitly converts to lvalue temporary reference (int &)
    1502 \end{cfa}
    1503 In both case, modifications to the temporary are inaccessible (\Index{warning}).
    1504 Conversion expands the temporary-type with ©cv©, which is low cost since the temporary is inaccessible.
    1505 \end{enumerate}
    1506 
    1507 
    1508 \begin{comment}
    1509 From: Richard Bilson <rcbilson@gmail.com>
    1510 Date: Wed, 13 Jul 2016 01:58:58 +0000
    1511 Subject: Re: pointers / references
    1512 To: "Peter A. Buhr" <pabuhr@plg2.cs.uwaterloo.ca>
    1513 
    1514 As a general comment I would say that I found the section confusing, as you move back and forth
    1515 between various real and imagined programming languages. If it were me I would rewrite into two
    1516 subsections, one that specifies precisely the syntax and semantics of reference variables and
    1517 another that provides the rationale.
    1518 
    1519 I don't see any obvious problems with the syntax or semantics so far as I understand them. It's not
    1520 obvious that the description you're giving is complete, but I'm sure you'll find the special cases
    1521 as you do the implementation.
    1522 
    1523 My big gripes are mostly that you're not being as precise as you need to be in your terminology, and
    1524 that you say a few things that aren't actually true even though I generally know what you mean.
    1525 
    1526 20 C provides a pointer type; CFA adds a reference type. Both types contain an address, which is normally a
    1527 21 location in memory.
    1528 
    1529 An address is not a location in memory; an address refers to a location in memory. Furthermore it
    1530 seems weird to me to say that a type "contains" an address; rather, objects of that type do.
    1531 
    1532 21 Special addresses are used to denote certain states or access co-processor memory. By
    1533 22 convention, no variable is placed at address 0, so addresses like 0, 1, 2, 3 are often used to denote no-value
    1534 23 or other special states.
    1535 
    1536 This isn't standard C at all. There has to be one null pointer representation, but it doesn't have
    1537 to be a literal zero representation and there doesn't have to be more than one such representation.
    1538 
    1539 23 Often dereferencing a special state causes a memory fault, so checking is necessary
    1540 24 during execution.
    1541 
    1542 I don't see the connection between the two clauses here. I feel like if a bad pointer will not cause
    1543 a memory fault then I need to do more checking, not less.
    1544 
    1545 24 If the programming language assigns addresses, a program's execution is sound, \ie all
    1546 25 addresses are to valid memory locations.
    1547 
    1548 You haven't said what it means to "assign" an address, but if I use my intuitive understanding of
    1549 the term I don't see how this can be true unless you're assuming automatic storage management.
    1550 
    1551 1 Program variables are implicit pointers to memory locations generated by the compiler and automatically
    1552 2 dereferenced, as in:
    1553 
    1554 There is no reason why a variable needs to have a location in memory, and indeed in a typical
    1555 program many variables will not. In standard terminology an object identifier refers to data in the
    1556 execution environment, but not necessarily in memory.
    1557 
    1558 13 A pointer/reference is a generalization of a variable name, \ie a mutable address that can point to more
    1559 14 than one memory location during its lifetime.
    1560 
    1561 I feel like you're off the reservation here. In my world there are objects of pointer type, which
    1562 seem to be what you're describing here, but also pointer values, which can be stored in an object of
    1563 pointer type but don't necessarily have to be. For example, how would you describe the value denoted
    1564 by "&main" in a C program? I would call it a (function) pointer, but that doesn't satisfy your
    1565 definition.
    1566 
    1567 16 not occupy storage as the literal is embedded directly into instructions.) Hence, a pointer occupies memory
    1568 17 to store its current address, and the pointer's value is loaded by dereferencing, \eg:
    1569 
    1570 As with my general objection regarding your definition of variables, there is no reason why a
    1571 pointer variable (object of pointer type) needs to occupy memory.
    1572 
    1573 21 p2 = p1 + x; // compiler infers *p2 = *p1 + x;
    1574 
    1575 What language are we in now?
    1576 
    1577 24 pointer usage. However, in C, the following cases are ambiguous, especially with pointer arithmetic:
    1578 25 p1 = p2; // p1 = p2 or *p1 = *p2
    1579 
    1580 This isn't ambiguous. it's defined to be the first option.
    1581 
    1582 26 p1 = p1 + 1; // p1 = p1 + 1 or *p1 = *p1 + 1
    1583 
    1584 Again, this statement is not ambiguous.
    1585 
    1586 13 example. Hence, a reference behaves like the variable name for the current variable it is pointing-to. The
    1587 14 simplest way to understand a reference is to imagine the compiler inserting a dereference operator before
    1588 15 the reference variable for each reference qualifier in a declaration, \eg:
    1589 
    1590 It's hard for me to understand who the audience for this part is. I think a practical programmer is
    1591 likely to be satisfied with "a reference behaves like the variable name for the current variable it
    1592 is pointing-to," maybe with some examples. Your "simplest way" doesn't strike me as simpler than
    1593 that. It feels like you're trying to provide a more precise definition for the semantics of
    1594 references, but it isn't actually precise enough to be a formal specification. If you want to
    1595 express the semantics of references using rewrite rules that's a great way to do it, but lay the
    1596 rules out clearly, and when you're showing an example of rewriting keep your
    1597 references/pointers/values separate (right now, you use \eg "r3" to mean a reference, a pointer,
    1598 and a value).
    1599 
    1600 24 Cancellation works to arbitrary depth, and pointer and reference values are interchangeable because both
    1601 25 contain addresses.
    1602 
    1603 Except they're not interchangeable, because they have different and incompatible types.
    1604 
    1605 40 Interestingly, C++ deals with the address duality by making the pointed-to value the default, and prevent-
    1606 41 ing changes to the reference address, which eliminates half of the duality. Java deals with the address duality
    1607 42 by making address assignment the default and requiring field assignment (direct or indirect via methods),
    1608 43 \ie there is no builtin bit-wise or method-wise assignment, which eliminates half of the duality.
    1609 
    1610 I can follow this but I think that's mostly because I already understand what you're trying to
    1611 say. I don't think I've ever heard the term "method-wise assignment" and I don't see you defining
    1612 it. Furthermore Java does have value assignment of basic (non-class) types, so your summary here
    1613 feels incomplete. (If it were me I'd drop this paragraph rather than try to save it.)
    1614 
    1615 11 Hence, for type & const, there is no pointer assignment, so &rc = &x is disallowed, and the address value
    1616 12 cannot be 0 unless an arbitrary pointer is assigned to the reference.
    1617 
    1618 Given the pains you've taken to motivate every little bit of the semantics up until now, this last
    1619 clause ("the address value cannot be 0") comes out of the blue. It seems like you could have
    1620 perfectly reasonable semantics that allowed the initialization of null references.
    1621 
    1622 12 In effect, the compiler is managing the
    1623 13 addresses for type & const not the programmer, and by a programming discipline of only using references
    1624 14 with references, address errors can be prevented.
    1625 
    1626 Again, is this assuming automatic storage management?
    1627 
    1628 18 rary binding. For reference initialization (like pointer), the initializing value must be an address (lvalue) not
    1629 19 a value (rvalue).
    1630 
    1631 This sentence appears to suggest that an address and an lvalue are the same thing.
    1632 
    1633 20 int * p = &x; // both &x and x are possible interpretations
    1634 
    1635 Are you saying that we should be considering "x" as a possible interpretation of the initializer
    1636 "&x"? It seems to me that this expression has only one legitimate interpretation in context.
    1637 
    1638 21 int & r = x; // x unlikely interpretation, because of auto-dereferencing
    1639 
    1640 You mean, we can initialize a reference using an integer value? Surely we would need some sort of
    1641 cast to induce that interpretation, no?
    1642 
    1643 22 Hence, the compiler implicitly inserts a reference operator, &, before the initialization expression.
    1644 
    1645 But then the expression would have pointer type, which wouldn't be compatible with the type of r.
    1646 
    1647 22 Similarly,
    1648 23 when a reference is used for a parameter/return type, the call-site argument does not require a reference
    1649 24 operator.
    1650 
    1651 Furthermore, it would not be correct to use a reference operator.
    1652 
    1653 45 The implicit conversion allows
    1654 1 seamless calls to any routine without having to explicitly name/copy the literal/expression to allow the call.
    1655 2 While C' attempts to handle pointers and references in a uniform, symmetric manner, C handles routine
    1656 3 variables in an inconsistent way: a routine variable is both a pointer and a reference (particle and wave).
    1657 
    1658 After all this talk of how expressions can have both pointer and value interpretations, you're
    1659 disparaging C because it has expressions that have both pointer and value interpretations?
    1660 
    1661 On Sat, Jul 9, 2016 at 4:18 PM Peter A. Buhr <pabuhr@plg.uwaterloo.ca> wrote:
    1662 > Aaron discovered a few places where "&"s are missing and where there are too many "&", which are
    1663 > corrected in the attached updated. None of the text has changed, if you have started reading
    1664 > already.
    1665 \end{comment}
    1666 
    1667 
    1668 \section{Routine Definition}
    1669 
    1670 \CFA also supports a new syntax for routine definition, as well as \Celeven and K\&R routine syntax.
    1671 The point of the new syntax is to allow returning multiple values from a routine~\cite{Galletly96,CLU}, \eg:
    1672 \begin{cfa}
    1673 ®[ int o1, int o2, char o3 ]® f( int i1, char i2, char i3 ) {
    1674         §\emph{routine body}§
    1675 }
    1676 \end{cfa}
    1677 where routine ©f© has three output (return values) and three input parameters.
    1678 Existing C syntax cannot be extended with multiple return types because it is impossible to embed a single routine name within multiple return type specifications.
    1679 
    1680 In detail, the brackets, ©[]©, enclose the result type, where each return value is named and that name is a local variable of the particular return type.\footnote{
    1681 \Index*{Michael Tiemann}, with help from \Index*{Doug Lea}, provided named return values in g++, circa 1989.}
    1682 The value of each local return variable is automatically returned at routine termination.
    1683 Declaration qualifiers can only appear at the start of a routine definition, \eg:
    1684 \begin{cfa}
    1685 ®extern® [ int x ] g( int y ) {§\,§}
    1686 \end{cfa}
    1687 Lastly, if there are no output parameters or input parameters, the brackets and/or parentheses must still be specified;
    1688 in both cases the type is assumed to be void as opposed to old style C defaults of int return type and unknown parameter types, respectively, as in:
    1689 \begin{cfa}
    1690 [§\,§] g();                                                     §\C{// no input or output parameters}§
    1691 [ void ] g( void );                                     §\C{// no input or output parameters}§
    1692 \end{cfa}
    1693 
    1694 Routine f is called as follows:
    1695 \begin{cfa}
    1696 [ i, j, ch ] = f( 3, 'a', ch );
    1697 \end{cfa}
    1698 The list of return values from f and the grouping on the left-hand side of the assignment is called a \newterm{return list} and discussed in Section 12.
    1699 
    1700 \CFA style declarations cannot be used to declare parameters for K\&R style routine definitions because of the following ambiguity:
    1701 \begin{cfa}
    1702 int (*f(x))[ 5 ] int x; {}
    1703 \end{cfa}
    1704 The string ``©int (*f(x))[ 5 ]©'' declares a K\&R style routine of type returning a pointer to an array of 5 integers, while the string ``©[ 5 ] int x©'' declares a \CFA style parameter x of type array of 5 integers.
    1705 Since the strings overlap starting with the open bracket, ©[©, there is an ambiguous interpretation for the string.
    1706 As well, \CFA-style declarations cannot be used to declare parameters for C-style routine-definitions because of the following ambiguity:
    1707 \begin{cfa}
    1708 typedef int foo;
    1709 int f( int (* foo) );                           §\C{// foo is redefined as a parameter name}§
    1710 \end{cfa}
    1711 The string ``©int (* foo)©'' declares a C-style named-parameter of type pointer to an integer (the parenthesis are superfluous), while the same string declares a \CFA style unnamed parameter of type routine returning integer with unnamed parameter of type pointer to foo.
    1712 The redefinition of a type name in a parameter list is the only context in C where the character ©*© can appear to the left of a type name, and \CFA relies on all type qualifier characters appearing to the right of the type name.
    1713 The inability to use \CFA declarations in these two contexts is probably a blessing because it precludes programmers from arbitrarily switching between declarations forms within a declaration contexts.
    1714 
    1715 C-style declarations can be used to declare parameters for \CFA style routine definitions, \eg:
    1716 \begin{cfa}
    1717 [ int ] f( * int, int * );                      §\C{// returns an integer, accepts 2 pointers to integers}§
    1718 [ * int, int * ] f( int );                      §\C{// returns 2 pointers to integers, accepts an integer}§
    1719 \end{cfa}
    1720 The reason for allowing both declaration styles in the new context is for backwards compatibility with existing preprocessor macros that generate C-style declaration-syntax, as in:
    1721 \begin{cfa}
    1722 #define ptoa( n, d ) int (*n)[ d ]
    1723 int f( ptoa( p, 5 ) ) ...                       §\C{// expands to int f( int (*p)[ 5 ] )}§
    1724 [ int ] f( ptoa( p, 5 ) ) ...           §\C{// expands to [ int ] f( int (*p)[ 5 ] )}§
    1725 \end{cfa}
    1726 Again, programmers are highly encouraged to use one declaration form or the other, rather than mixing the forms.
    1727 
    1728 
    1729 \subsection{Named Return Values}
    1730 
    1731 \Index{Named return values} handle the case where it is necessary to define a local variable whose value is then returned in a ©return© statement, as in:
    1732 \begin{cfa}
    1733 int f() {
    1734         int x;
    1735         ... x = 0; ... x = y; ...
    1736         return x;
    1737 }
    1738 \end{cfa}
    1739 Because the value in the return variable is automatically returned when a \CFA routine terminates, the ©return© statement \emph{does not} contain an expression, as in:
    1740 \newline
    1741 \begin{minipage}{\linewidth}
    1742 \begin{cfa}
    1743 ®[ int x, int y ]® f() {
    1744         int z;
    1745         ... x = 0; ... y = z; ...
    1746         ®return;®                                                       §\C{// implicitly return x, y}§
    1747 }
    1748 \end{cfa}
    1749 \end{minipage}
    1750 \newline
    1751 When the return is encountered, the current values of ©x© and ©y© are returned to the calling routine.
    1752 As well, ``falling off the end'' of a routine without a ©return© statement is permitted, as in:
    1753 \begin{cfa}
    1754 [ int x, int y ] f() {
    1755         ...
    1756 }                                                                               §\C{// implicitly return x, y}§
    1757 \end{cfa}
    1758 In this case, the current values of ©x© and ©y© are returned to the calling routine just as if a ©return© had been encountered.
    1759 
    1760 Named return values may be used in conjunction with named parameter values;
    1761 specifically, a return and parameter can have the same name.
    1762 \begin{cfa}
    1763 [ int x, int y ] f( int, x, int y ) {
    1764         ...
    1765 }                                                                               §\C{// implicitly return x, y}§
    1766 \end{cfa}
    1767 This notation allows the compiler to eliminate temporary variables in nested routine calls.
    1768 \begin{cfa}
    1769 [ int x, int y ] f( int, x, int y );    §\C{// prototype declaration}§
    1770 int a, b;
    1771 [a, b] = f( f( f( a, b ) ) );
    1772 \end{cfa}
    1773 While the compiler normally ignores parameters names in prototype declarations, here they are used to eliminate temporary return-values by inferring that the results of each call are the inputs of the next call, and ultimately, the left-hand side of the assignment.
    1774 Hence, even without the body of routine ©f© (separate compilation), it is possible to perform a global optimization across routine calls.
    1775 The compiler warns about naming inconsistencies between routine prototype and definition in this case, and behaviour is \Index{undefined} if the programmer is inconsistent.
    1776 
    1777 
    1778 \subsection{Routine Prototype}
    1779 
    1780 The syntax of the new routine prototype declaration follows directly from the new routine definition syntax;
    1781 as well, parameter names are optional, \eg:
    1782 \begin{cfa}
    1783 [ int x ] f ();                                                 §\C{// returning int with no parameters}§
    1784 [ * int ] g (int y);                                    §\C{// returning pointer to int with int parameter}§
    1785 [ ] h ( int, char );                                    §\C{// returning no result with int and char parameters}§
    1786 [ * int, int ] j ( int );                               §\C{// returning pointer to int and int, with int parameter}§
    1787 \end{cfa}
    1788 This syntax allows a prototype declaration to be created by cutting and pasting source text from the routine definition header (or vice versa).
    1789 It is possible to declare multiple routine-prototypes in a single declaration, but the entire type specification is distributed across \emph{all} routine names in the declaration list (see~\VRef{s:Declarations}), \eg:
    1790 \begin{quote2}
    1791 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1792 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}        & \multicolumn{1}{c}{\textbf{C}}        \\
    1793 \begin{cfa}
    1794 [ int ] f( int ), g;
    1795 \end{cfa}
    1796 &
    1797 \begin{cfa}
    1798 int f( int ), g( int );
    1799 \end{cfa}
    1800 \end{tabular}
    1801 \end{quote2}
    1802 Declaration qualifiers can only appear at the start of a \CFA routine declaration,\footref{StorageClassSpecifier} \eg:
    1803 \begin{cfa}
    1804 extern [ int ] f ( int );
    1805 static [ int ] g ( int );
    1806 \end{cfa}
    1807 
    1808 
    1809 \section{Routine Pointers}
    1810 
    1811 The syntax for pointers to \CFA routines specifies the pointer name on the right, \eg:
    1812 \begin{cfa}
    1813 * [ int x ] () fp;                                              §\C{// pointer to routine returning int with no parameters}§
    1814 * [ * int ] (int y) gp;                                 §\C{// pointer to routine returning pointer to int with int parameter}§
    1815 * [ ] (int,char) hp;                                    §\C{// pointer to routine returning no result with int and char parameters}§
    1816 * [ * int,int ] ( int ) jp;                             §\C{// pointer to routine returning pointer to int and int, with int parameter}§
    1817 \end{cfa}
    1818 While parameter names are optional, \emph{a routine name cannot be specified};
    1819 for example, the following is incorrect:
    1820 \begin{cfa}
    1821 * [ int x ] f () fp;                                    §\C{// routine name "f" is not allowed}§
    1822 \end{cfa}
    1823 
    1824 
    1825 \section{Named and Default Arguments}
    1826 
    1827 Named\index{named arguments}\index{arguments!named} and default\index{default arguments}\index{arguments!default} arguments~\cite{Hardgrave76}\footnote{
    1828 Francez~\cite{Francez77} proposed a further extension to the named-parameter passing style, which specifies what type of communication (by value, by reference, by name) the argument is passed to the routine.}
    1829 are two mechanisms to simplify routine call.
    1830 Both mechanisms are discussed with respect to \CFA.
    1831 \begin{description}
    1832 \item[Named (or Keyword) Arguments:]
    1833 provide the ability to specify an argument to a routine call using the parameter name rather than the position of the parameter.
    1834 For example, given the routine:
    1835 \begin{cfa}
    1836 void p( int x, int y, int z ) {...}
    1837 \end{cfa}
    1838 a positional call is:
    1839 \begin{cfa}
    1840 p( 4, 7, 3 );
    1841 \end{cfa}
    1842 whereas a named (keyword) call may be:
    1843 \begin{cfa}
    1844 p( z : 3, x : 4, y : 7 );       §\C{// rewrite $\Rightarrow$ p( 4, 7, 3 )}§
    1845 \end{cfa}
    1846 Here the order of the arguments is unimportant, and the names of the parameters are used to associate argument values with the corresponding parameters.
    1847 The compiler rewrites a named call into a positional call.
    1848 The advantages of named parameters are:
    1849 \begin{itemize}
    1850 \item
    1851 Remembering the names of the parameters may be easier than the order in the routine definition.
    1852 \item
    1853 Parameter names provide documentation at the call site (assuming the names are descriptive).
    1854 \item
    1855 Changes can be made to the order or number of parameters without affecting the call (although the call must still be recompiled).
    1856 \end{itemize}
    1857 
    1858 Unfortunately, named arguments do not work in C-style programming-languages because a routine prototype is not required to specify parameter names, nor do the names in the prototype have to match with the actual definition.
    1859 For example, the following routine prototypes and definition are all valid.
    1860 \begin{cfa}
    1861 void p( int, int, int );                        §\C{// equivalent prototypes}§
    1862 void p( int x, int y, int z );
    1863 void p( int y, int x, int z );
    1864 void p( int z, int y, int x );
    1865 void p( int q, int r, int s ) {}        §\C{// match with this definition}§
    1866 \end{cfa}
    1867 Forcing matching parameter names in routine prototypes with corresponding routine definitions is possible, but goes against a strong tradition in C programming.
    1868 Alternatively, prototype definitions can be eliminated by using a two-pass compilation, and implicitly creating header files for exports.
    1869 The former is easy to do, while the latter is more complex.
    1870 
    1871 Furthermore, named arguments do not work well in a \CFA-style programming-languages because they potentially introduces a new criteria for type matching.
    1872 For example, it is technically possible to disambiguate between these two overloaded definitions of ©f© based on named arguments at the call site:
    1873 \begin{cfa}
    1874 int f( int i, int j );
    1875 int f( int x, double y );
    1876 
    1877 f( j : 3, i : 4 );                              §\C{// 1st f}§
    1878 f( x : 7, y : 8.1 );                    §\C{// 2nd f}§
    1879 f( 4, 5 );                                              §\C{// ambiguous call}§
    1880 \end{cfa}
    1881 However, named arguments compound routine resolution in conjunction with conversions:
    1882 \begin{cfa}
    1883 f( i : 3, 5.7 );                                §\C{// ambiguous call ?}§
    1884 \end{cfa}
    1885 Depending on the cost associated with named arguments, this call could be resolvable or ambiguous.
    1886 Adding named argument into the routine resolution algorithm does not seem worth the complexity.
    1887 Therefore, \CFA does \emph{not} attempt to support named arguments.
    1888 
    1889 \item[Default Arguments]
    1890 provide the ability to associate a default value with a parameter so it can be optionally specified in the argument list.
    1891 For example, given the routine:
    1892 \begin{cfa}
    1893 void p( int x = 1, int y = 2, int z = 3 ) {...}
    1894 \end{cfa}
    1895 the allowable positional calls are:
    1896 \begin{cfa}
    1897 p();                                                    §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§
    1898 p( 4 );                                                 §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§
    1899 p( 4, 4 );                                              §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§
    1900 p( 4, 4, 4 );                                   §\C{// rewrite $\Rightarrow$ p( 4, 4, 4 )}§
    1901 // empty arguments
    1902 p(  , 4, 4 );                                   §\C{// rewrite $\Rightarrow$ p( 1, 4, 4 )}§
    1903 p( 4,  , 4 );                                   §\C{// rewrite $\Rightarrow$ p( 4, 2, 4 )}§
    1904 p( 4, 4,   );                                   §\C{// rewrite $\Rightarrow$ p( 4, 4, 3 )}§
    1905 p( 4,  ,   );                                   §\C{// rewrite $\Rightarrow$ p( 4, 2, 3 )}§
    1906 p(  , 4,   );                                   §\C{// rewrite $\Rightarrow$ p( 1, 4, 3 )}§
    1907 p(  ,  , 4 );                                   §\C{// rewrite $\Rightarrow$ p( 1, 2, 4 )}§
    1908 p(  ,  ,   );                                   §\C{// rewrite $\Rightarrow$ p( 1, 2, 3 )}§
    1909 \end{cfa}
    1910 Here the missing arguments are inserted from the default values in the parameter list.
    1911 The compiler rewrites missing default values into explicit positional arguments.
    1912 The advantages of default values are:
    1913 \begin{itemize}
    1914 \item
    1915 Routines with a large number of parameters are often very generalized, giving a programmer a number of different options on how a computation is performed.
    1916 For many of these kinds of routines, there are standard or default settings that work for the majority of computations.
    1917 Without default values for parameters, a programmer is forced to specify these common values all the time, resulting in long argument lists that are error prone.
    1918 \item
    1919 When a routine's interface is augmented with new parameters, it extends the interface providing generalizability\footnote{
    1920 ``It should be possible for the implementor of an abstraction to increase its generality.
    1921 So long as the modified abstraction is a generalization of the original, existing uses of the abstraction will not require change.
    1922 It might be possible to modify an abstraction in a manner which is not a generalization without affecting existing uses, but, without inspecting the modules in which the uses occur, this possibility cannot be determined.
    1923 This criterion precludes the addition of parameters, unless these parameters have default or inferred values that are valid for all possible existing applications.''~\cite[p.~128]{Cormack90}}
    1924 (somewhat like the generalization provided by inheritance for classes).
    1925 That is, all existing calls are still valid, although the call must still be recompiled.
    1926 \end{itemize}
    1927 The only disadvantage of default arguments is that unintentional omission of an argument may not result in a compiler-time error.
    1928 Instead, a default value is used, which may not be the programmer's intent.
    1929 
    1930 Default values may only appear in a prototype versus definition context:
    1931 \begin{cfa}
    1932 void p( int x, int y = 2, int z = 3 );          §\C{// prototype: allowed}§
    1933 void p( int, int = 2, int = 3 );                        §\C{// prototype: allowed}§
    1934 void p( int x, int y = 2, int z = 3 ) {}        §\C{// definition: not allowed}§
    1935 \end{cfa}
    1936 The reason for this restriction is to allow separate compilation.
    1937 Multiple prototypes with different default values is an error.
    1938 \end{description}
    1939 
    1940 Ellipse (``...'') arguments present problems when used with default arguments.
    1941 The conflict occurs because both named and ellipse arguments must appear after positional arguments, giving two possibilities:
    1942 \begin{cfa}
    1943 p( /* positional */, ... , /* named */ );
    1944 p( /* positional */, /* named */, ... );
    1945 \end{cfa}
    1946 While it is possible to implement both approaches, the first possibly is more complex than the second, \eg:
    1947 \begin{cfa}
    1948 p( int x, int y, int z, ... );
    1949 p( 1, 4, 5, 6, z : 3, y : 2 ); §\C{// assume p( /* positional */, ... , /* named */ );}§
    1950 p( 1, z : 3, y : 2, 4, 5, 6 ); §\C{// assume p( /* positional */, /* named */, ... );}§
    1951 \end{cfa}
    1952 In the first call, it is necessary for the programmer to conceptually rewrite the call, changing named arguments into positional, before knowing where the ellipse arguments begin.
    1953 Hence, this approach seems significantly more difficult, and hence, confusing and error prone.
    1954 In the second call, the named arguments separate the positional and ellipse arguments, making it trivial to read the call.
    1955 
    1956 The problem is exacerbated with default arguments, \eg:
    1957 \begin{cfa}
    1958 void p( int x, int y = 2, int z = 3... );
    1959 p( 1, 4, 5, 6, z : 3 );         §\C{// assume p( /* positional */, ... , /* named */ );}§
    1960 p( 1, z : 3, 4, 5, 6 );         §\C{// assume p( /* positional */, /* named */, ... );}§
    1961 \end{cfa}
    1962 The first call is an error because arguments 4 and 5 are actually positional not ellipse arguments;
    1963 therefore, argument 5 subsequently conflicts with the named argument z : 3.
    1964 In the second call, the default value for y is implicitly inserted after argument 1 and the named arguments separate the positional and ellipse arguments, making it trivial to read the call.
    1965 For these reasons, \CFA requires named arguments before ellipse arguments.
    1966 Finally, while ellipse arguments are needed for a small set of existing C routines, like printf, the extended \CFA type system largely eliminates the need for ellipse arguments (see Section 24), making much of this discussion moot.
    1967 
    1968 Default arguments and overloading (see Section 24) are complementary.
    1969 While in theory default arguments can be simulated with overloading, as in:
    1970 \begin{quote2}
    1971 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
    1972 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{default arguments}}   & \multicolumn{1}{c}{\textbf{overloading}}      \\
    1973 \begin{cfa}
    1974 void p( int x, int y = 2, int z = 3 ) {...}
    1975 
    1976 
    1977 \end{cfa}
    1978 &
    1979 \begin{cfa}
    1980 void p( int x, int y, int z ) {...}
    1981 void p( int x ) { p( x, 2, 3 ); }
    1982 void p( int x, int y ) { p( x, y, 3 ); }
    1983 \end{cfa}
    1984 \end{tabular}
    1985 \end{quote2}
    1986 the number of required overloaded routines is linear in the number of default values, which is unacceptable growth.
    1987 In general, overloading should only be used over default arguments if the body of the routine is significantly different.
    1988 Furthermore, overloading cannot handle accessing default arguments in the middle of a positional list, via a missing argument, such as:
    1989 \begin{cfa}
    1990 p( 1, /* default */, 5 );               §\C{// rewrite $\Rightarrow$ p( 1, 2, 5 )}§
    1991 \end{cfa}
    1992 
    1993 Given the \CFA restrictions above, both named and default arguments are backwards compatible.
    1994 \Index*[C++]{\CC{}} only supports default arguments;
    1995 \Index*{Ada} supports both named and default arguments.
    1996 
    1997 
    1998 \section{Unnamed Structure Fields}
    1999 
    2000 C requires each field of a structure to have a name, except for a bit field associated with a basic type, \eg:
    2001 \begin{cfa}
    2002 struct {
    2003         int f1;                                 §\C{// named field}§
    2004         int f2 : 4;                             §\C{// named field with bit field size}§
    2005         int : 3;                                §\C{// unnamed field for basic type with bit field size}§
    2006         int ;                                   §\C{// disallowed, unnamed field}§
    2007         int *;                                  §\C{// disallowed, unnamed field}§
    2008         int (*)( int );                 §\C{// disallowed, unnamed field}§
    2009 };
    2010 \end{cfa}
    2011 This requirement is relaxed by making the field name optional for all field declarations; therefore, all the field declarations in the example are allowed.
    2012 As for unnamed bit fields, an unnamed field is used for padding a structure to a particular size.
    2013 A list of unnamed fields is also supported, \eg:
    2014 \begin{cfa}
    2015 struct {
    2016         int , , ;                               §\C{// 3 unnamed fields}§
    2017 }
    2018 \end{cfa}
    2019 
    2020 
    2021 \section{Nesting}
    2022 
    2023 Nesting of types and routines is useful for controlling name visibility (\newterm{name hiding}).
    2024 
    2025 
    2026 \subsection{Type Nesting}
    2027 
    2028 \CFA allows \Index{type nesting}, and type qualification of the nested types (see \VRef[Figure]{f:TypeNestingQualification}), where as C hoists\index{type hoisting} (refactors) nested types into the enclosing scope and has no type qualification.
    2029 \begin{figure}
    2030 \centering
    2031 \begin{tabular}{@{}l@{\hspace{3em}}l|l@{}}
    2032 \multicolumn{1}{c@{\hspace{3em}}}{\textbf{C Type Nesting}}      & \multicolumn{1}{c}{\textbf{C Implicit Hoisting}}      & \multicolumn{1}{|c}{\textbf{\CFA}}    \\
    2033 \hline
    2034 \begin{cfa}
    2035 struct S {
    2036         enum C { R, G, B };
    2037         struct T {
    2038                 union U { int i, j; };
    2039                 enum C c;
    2040                 short int i, j;
    2041         };
    2042         struct T t;
    2043 } s;
    2044 
    2045 int fred() {
    2046         s.t.c = R;
    2047         struct T t = { R, 1, 2 };
    2048         enum C c;
    2049         union U u;
    2050 }
    2051 \end{cfa}
    2052 &
    2053 \begin{cfa}
    2054 enum C { R, G, B };
    2055 union U { int i, j; };
    2056 struct T {
    2057         enum C c;
    2058         short int i, j;
    2059 };
    2060 struct S {
    2061         struct T t;
    2062 } s;
    2063        
    2064 
    2065 
    2066 
    2067 
    2068 
    2069 
    2070 \end{cfa}
    2071 &
    2072 \begin{cfa}
    2073 struct S {
    2074         enum C { R, G, B };
    2075         struct T {
    2076                 union U { int i, j; };
    2077                 enum C c;
    2078                 short int i, j;
    2079         };
    2080         struct T t;
    2081 } s;
    2082 
    2083 int fred() {
    2084         s.t.c = ®S.®R;  // type qualification
    2085         struct ®S.®T t = { ®S.®R, 1, 2 };
    2086         enum ®S.®C c;
    2087         union ®S.T.®U u;
    2088 }
    2089 \end{cfa}
    2090 \end{tabular}
    2091 \caption{Type Nesting / Qualification}
    2092 \label{f:TypeNestingQualification}
    2093 \end{figure}
    2094 In the left example in C, types ©C©, ©U© and ©T© are implicitly hoisted outside of type ©S© into the containing block scope.
    2095 In the right example in \CFA, the types are not hoisted and accessed using the field-selection operator ``©.©'' for type qualification, as does \Index*{Java}, rather than the \CC type-selection operator ``©::©''.
    2096 
    2097 
    2098 \subsection{Routine Nesting}
    2099 
    2100 While \CFA does not provide object programming by putting routines into structures, it does rely heavily on locally nested routines to redefine operations at or close to a call site.
    2101 For example, the C quick-sort is wrapped into the following polymorphic \CFA routine:
    2102 \begin{cfa}
    2103 forall( otype T | { int ?<?( T, T ); } )
    2104 void qsort( const T * arr, size_t dimension );
    2105 \end{cfa}
    2106 which can be used to sort in ascending and descending order by locally redefining the less-than operator into greater-than.
    2107 \begin{cfa}
    2108 const unsigned int size = 5;
    2109 int ia[size];
    2110 ...                                             §\C{// assign values to array ia}§
    2111 qsort( ia, size );              §\C{// sort ascending order using builtin ?<?}§
    2112 {
    2113         ®int ?<?( int x, int y ) { return x > y; }® §\C{// nested routine}§
    2114         qsort( ia, size );      §\C{// sort descending order by local redefinition}§
    2115 }
    2116 \end{cfa}
    2117 
    2118 Nested routines are not first-class, meaning a nested routine cannot be returned if it has references to variables in its enclosing blocks;
    2119 the only exception is references to the external block of the translation unit, as these variables persist for the duration of the program.
    2120 The following program in undefined in \CFA (and Indexc{gcc})
    2121 \begin{cfa}
    2122 [* [int]( int )] foo() {                §\C{// int (*foo())( int )}§
    2123         int ®i® = 7;
    2124         int bar( int p ) {
    2125                 ®i® += 1;                               §\C{// dependent on local variable}§
    2126                 sout | ®i® | endl;
    2127         }
    2128         return bar;                                     §\C{// undefined because of local dependence}§
    2129 }
    2130 int main() {
    2131         * [int]( int ) fp = foo();      §\C{// int (*fp)( int )}§
    2132         sout | fp( 3 ) | endl;
    2133 }
    2134 \end{cfa}
    2135 because
    2136 
    2137 Currently, there are no \Index{lambda} expressions, \ie unnamed routines because routine names are very important to properly select the correct routine.
    2138 
    2139 
    2140 \section{Tuples}
    2141 
    2142 In C and \CFA, lists of elements appear in several contexts, such as the parameter list for a routine call.
    2143 (More contexts are added shortly.)
    2144 A list of such elements is called a \newterm{lexical list}.
    2145 The general syntax of a lexical list is:
    2146 \begin{cfa}
    2147 [ §\emph{exprlist}§ ]
    2148 \end{cfa}
    2149 where ©$\emph{exprlist}$© is a list of one or more expressions separated by commas.
    2150 The brackets, ©[]©, allow differentiating between lexical lists and expressions containing the C comma operator.
    2151 The following are examples of lexical lists:
    2152 \begin{cfa}
    2153 [ x, y, z ]
    2154 [ 2 ]
    2155 [ v+w, x*y, 3.14159, f() ]
    2156 \end{cfa}
    2157 Tuples are permitted to contain sub-tuples (\ie nesting), such as ©[ [ 14, 21 ], 9 ]©, which is a 2-element tuple whose first element is itself a tuple.
    2158 Note, a tuple is not a record (structure);
    2159 a record denotes a single value with substructure, whereas a tuple is multiple values with no substructure (see flattening coercion in Section 12.1).
    2160 In essence, tuples are largely a compile time phenomenon, having little or no runtime presence.
    2161 
    2162 Tuples can be organized into compile-time tuple variables;
    2163 these variables are of \newterm{tuple type}.
    2164 Tuple variables and types can be used anywhere lists of conventional variables and types can be used.
    2165 The general syntax of a tuple type is:
    2166 \begin{cfa}
    2167 [ §\emph{typelist}§ ]
    2168 \end{cfa}
    2169 where ©$\emph{typelist}$© is a list of one or more legal \CFA or C type specifications separated by commas, which may include other tuple type specifications.
    2170 Examples of tuple types include:
    2171 \begin{cfa}
    2172 [ unsigned int, char ]
    2173 [ double, double, double ]
    2174 [ * int, int * ]                §\C{// mix of CFA and ANSI}§
    2175 [ * [ 5 ] int, * * char, * [ [ int, int ] ] (int, int) ]
    2176 \end{cfa}
    2177 Like tuples, tuple types may be nested, such as ©[ [ int, int ], int ]©, which is a 2-element tuple type whose first element is itself a tuple type.
    2178 
    2179 Examples of declarations using tuple types are:
    2180 \begin{cfa}
    2181 [ int, int ] x;                 §\C{// 2 element tuple, each element of type int}§
    2182 * [ char, char ] y;             §\C{// pointer to a 2 element tuple}§
    2183 [ [ int, int ] ] z ([ int, int ]);
    2184 \end{cfa}
    2185 The last example declares an external routine that expects a 2 element tuple as an input parameter and returns a 2 element tuple as its result.
    2186 
    2187 As mentioned, tuples can appear in contexts requiring a list of value, such as an argument list of a routine call.
    2188 In unambiguous situations, the tuple brackets may be omitted, \eg a tuple that appears as an argument may have its
    2189 square brackets omitted for convenience; therefore, the following routine invocations are equivalent:
    2190 \begin{cfa}
    2191 f( [ 1, x+2, fred() ] );
    2192 f( 1, x+2, fred() );
    2193 \end{cfa}
    2194 Also, a tuple or a tuple variable may be used to supply all or part of an argument list for a routine expecting multiple input parameters or for a routine expecting a tuple as an input parameter.
    2195 For example, the following are all legal:
    2196 \begin{cfa}
    2197 [ int, int ] w1;
    2198 [ int, int, int ] w2;
    2199 [ void ] f (int, int, int); /* three input parameters of type int */
    2200 [ void ] g ([ int, int, int ]); /* 3 element tuple as input */
    2201 f( [ 1, 2, 3 ] );
    2202 f( w1, 3 );
    2203 f( 1, w1 );
    2204 f( w2 );
    2205 g( [ 1, 2, 3 ] );
    2206 g( w1, 3 );
    2207 g( 1, w1 );
    2208 g( w2 );
    2209 \end{cfa}
    2210 Note, in all cases 3 arguments are supplied even though the syntax may appear to supply less than 3. As mentioned, a
    2211 tuple does not have structure like a record; a tuple is simply converted into a list of components.
    2212 \begin{rationale}
    2213 The present implementation of \CFA does not support nested routine calls when the inner routine returns multiple values; \ie a statement such as ©g( f() )© is not supported.
    2214 Using a temporary variable to store the  results of the inner routine and then passing this variable to the outer routine works, however.
    2215 \end{rationale}
    2216 
    2217 A tuple can contain a C comma expression, provided the expression containing the comma operator is enclosed in parentheses.
    2218 For instance, the following tuples are equivalent:
    2219 \begin{cfa}
    2220 [ 1, 3, 5 ]
    2221 [ 1, (2, 3), 5 ]
    2222 \end{cfa}
    2223 The second element of the second tuple is the expression (2, 3), which yields the result 3.
    2224 This requirement is the same as for comma expressions in argument lists.
    2225 
    2226 Type qualifiers, \ie const and volatile, may modify a tuple type.
    2227 The meaning is the same as for a type qualifier modifying an aggregate type [Int99, x 6.5.2.3(7),x 6.7.3(11)], \ie the qualifier is distributed across all of the types in the tuple, \eg:
    2228 \begin{cfa}
    2229 const volatile [ int, float, const int ] x;
    2230 \end{cfa}
    2231 is equivalent to:
    2232 \begin{cfa}
    2233 [ const volatile int, const volatile float, const volatile int ] x;
    2234 \end{cfa}
    2235 Declaration qualifiers can only appear at the start of a \CFA tuple declaration4, \eg:
    2236 \begin{cfa}
    2237 extern [ int, int ] w1;
    2238 static [ int, int, int ] w2;
    2239 \end{cfa}
    2240 \begin{rationale}
    2241 Unfortunately, C's syntax for subscripts precluded treating them as tuples.
    2242 The C subscript list has the form ©[i][j]...© and not ©[i, j, ...]©.
    2243 Therefore, there is no syntactic way for a routine returning multiple values to specify the different subscript values, \eg ©f[g()]© always means a single subscript value because there is only one set of brackets.
    2244 Fixing this requires a major change to C because the syntactic form ©M[i, j, k]© already has a particular meaning: ©i, j, k© is a comma expression.
    2245 \end{rationale}
    2246 
    2247 
    2248 \subsection{Tuple Coercions}
    2249 
    2250 There are four coercions that can be performed on tuples and tuple variables: closing, opening, flattening and structuring.
    2251 In addition, the coercion of dereferencing can be performed on a tuple variable to yield its value(s), as for other variables.
    2252 A \newterm{closing coercion} takes a set of values and converts it into a tuple value, which is a contiguous set of values, as in:
    2253 \begin{cfa}
    2254 [ int, int, int, int ] w;
    2255 w = [ 1, 2, 3, 4 ];
    2256 \end{cfa}
    2257 First the right-hand tuple is closed into a tuple value and then the tuple value is assigned.
    2258 
    2259 An \newterm{opening coercion} is the opposite of closing; a tuple value is converted into a tuple of values, as in:
    2260 \begin{cfa}
    2261 [ a, b, c, d ] = w
    2262 \end{cfa}
    2263 ©w© is implicitly opened to yield a tuple of four values, which are then assigned individually.
    2264 
    2265 A \newterm{flattening coercion} coerces a nested tuple, \ie a tuple with one or more components, which are themselves tuples, into a flattened tuple, which is a tuple whose components are not tuples, as in:
    2266 \begin{cfa}
    2267 [ a, b, c, d ] = [ 1, [ 2, 3 ], 4 ];
    2268 \end{cfa}
    2269 First the right-hand tuple is flattened and then the values are assigned individually.
    2270 Flattening is also performed on tuple types.
    2271 For example, the type ©[ int, [ int, int ], int ]© can be coerced, using flattening, into the type ©[ int, int, int, int ]©.
    2272 
    2273 A \newterm{structuring coercion} is the opposite of flattening;
    2274 a tuple is structured into a more complex nested tuple.
    2275 For example, structuring the tuple ©[ 1, 2, 3, 4 ]© into the tuple ©[ 1, [ 2, 3 ], 4 ]© or the tuple type ©[ int, int, int, int ]© into the tuple type ©[ int, [ int, int ], int ]©.
    2276 In the following example, the last assignment illustrates all the tuple coercions:
    2277 \begin{cfa}
    2278 [ int, int, int, int ] w = [ 1, 2, 3, 4 ];
    2279 int x = 5;
    2280 [ x, w ] = [ w, x ];            §\C{// all four tuple coercions}§
    2281 \end{cfa}
    2282 Starting on the right-hand tuple in the last assignment statement, w is opened, producing a tuple of four values;
    2283 therefore, the right-hand tuple is now the tuple ©[ [ 1, 2, 3, 4 ], 5 ]©.
    2284 This tuple is then flattened, yielding ©[ 1, 2, 3, 4, 5 ]©, which is structured into ©[ 1, [ 2, 3, 4, 5 ] ]© to match the tuple type of the left-hand side.
    2285 The tuple ©[ 2, 3, 4, 5 ]© is then closed to create a tuple value.
    2286 Finally, ©x© is assigned ©1© and ©w© is assigned the tuple value using multiple assignment (see Section 14).
    2287 \begin{rationale}
    2288 A possible additional language extension is to use the structuring coercion for tuples to initialize a complex record with a tuple.
    2289 \end{rationale}
    2290 
    2291 
    2292 \section{Mass Assignment}
    2293 
    2294 \CFA permits assignment to several variables at once using mass assignment~\cite{CLU}.
    2295 Mass assignment has the following form:
    2296 \begin{cfa}
    2297 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = §\emph{expr}§;
    2298 \end{cfa}
    2299 \index{lvalue}
    2300 The left-hand side is a tuple of \emph{lvalues}, which is a list of expressions each yielding an address, \ie any data object that can appear on the left-hand side of a conventional assignment statement.
    2301 ©$\emph{expr}$© is any standard arithmetic expression.
    2302 Clearly, the types of the entities being assigned must be type compatible with the value of the expression.
    2303 
    2304 Mass assignment has parallel semantics, \eg the statement:
    2305 \begin{cfa}
    2306 [ x, y, z ] = 1.5;
    2307 \end{cfa}
    2308 is equivalent to:
    2309 \begin{cfa}
    2310 x = 1.5; y = 1.5; z = 1.5;
    2311 \end{cfa}
    2312 This semantics is not the same as the following in C:
    2313 \begin{cfa}
    2314 x = y = z = 1.5;
    2315 \end{cfa}
    2316 as conversions between intermediate assignments may lose information.
    2317 A more complex example is:
    2318 \begin{cfa}
    2319 [ i, y[i], z ] = a + b;
    2320 \end{cfa}
    2321 which is equivalent to:
    2322 \begin{cfa}
    2323 t = a + b;
    2324 a1 = &i; a2 = &y[i]; a3 = &z;
    2325 *a1 = t; *a2 = t; *a3 = t;
    2326 \end{cfa}
    2327 The temporary ©t© is necessary to store the value of the expression to eliminate conversion issues.
    2328 The temporaries for the addresses are needed so that locations on the left-hand side do not change as the values are assigned.
    2329 In this case, ©y[i]© uses the previous value of ©i© and not the new value set at the beginning of the mass assignment.
    2330 
    2331 
    2332 \section{Multiple Assignment}
    2333 
    2334 \CFA also supports the assignment of several values at once, known as multiple assignment~\cite{CLU,Galletly96}.
    2335 Multiple assignment has the following form:
    2336 \begin{cfa}
    2337 [ §\emph{lvalue}§, ... , §\emph{lvalue}§ ] = [ §\emph{expr}§, ... , §\emph{expr}§ ];
    2338 \end{cfa}
    2339 \index{lvalue}
    2340 The left-hand side is a tuple of \emph{lvalues}, and the right-hand side is a tuple of \emph{expr}s.
    2341 Each \emph{expr} appearing on the right-hand side of a multiple assignment statement is assigned to the corresponding \emph{lvalues} on the left-hand side of the statement using parallel semantics for each assignment.
    2342 An example of multiple assignment is:
    2343 \begin{cfa}
    2344 [ x, y, z ] = [ 1, 2, 3 ];
    2345 \end{cfa}
    2346 Here, the values ©1©, ©2© and ©3© are assigned, respectively, to the variables ©x©, ©y© and ©z©.
    2347  A more complex example is:
    2348 \begin{cfa}
    2349 [ i, y[ i ], z ] = [ 1, i, a + b ];
    2350 \end{cfa}
    2351 Here, the values ©1©, ©i© and ©a + b© are assigned to the variables ©i©, ©y[i]© and ©z©, respectively.
    2352  Note, the parallel semantics of
    2353 multiple assignment ensures:
    2354 \begin{cfa}
    2355 [ x, y ] = [ y, x ];
    2356 \end{cfa}
    2357 correctly interchanges (swaps) the values stored in ©x© and ©y©.
    2358 The following cases are errors:
    2359 \begin{cfa}
    2360 [ a, b, c ] = [ 1, 2, 3, 4 ];
    2361 [ a, b, c ] = [ 1, 2 ];
    2362 \end{cfa}
    2363 because the number of entities in the left-hand tuple is unequal with the right-hand tuple.
    2364 
    2365 As for all tuple contexts in C, side effects should not be used because C does not define an ordering for the evaluation of the elements of a tuple;
    2366 both these examples produce indeterminate results:
    2367 \begin{cfa}
    2368 f( x++, x++ );                          §\C{// C routine call with side effects in arguments}§
    2369 [ v1, v2 ] = [ x++, x++ ];      §\C{// side effects in righthand side of multiple assignment}§
    2370 \end{cfa}
    2371 
    2372 
    2373 \section{Cascade Assignment}
    2374 
    2375 As in C, \CFA mass and multiple assignments can be cascaded, producing cascade assignment.
    2376 Cascade assignment has the following form:
    2377 \begin{cfa}
    2378 §\emph{tuple}§ = §\emph{tuple}§ = ... = §\emph{tuple}§;
    2379 \end{cfa}
    2380 and it has the same parallel semantics as for mass and multiple assignment.
    2381 Some examples of cascade assignment are:
    2382 \begin{cfa}
    2383 x1 = y1 = x2 = y2 = 0;
    2384 [ x1, y1 ] = [ x2, y2 ] = [ x3, y3 ];
    2385 [ x1, y1 ] = [ x2, y2 ] = 0;
    2386 [ x1, y1 ] = z = 0;
    2387 \end{cfa}
    2388 As in C, the rightmost assignment is performed first, \ie assignment parses right to left.
    2389 
    2390 
    2391 \section{Field Tuples}
    2392 
    2393 Tuples may be used to select multiple fields of a record by field name.
    2394 Its general form is:
    2395 \begin{cfa}
    2396 §\emph{expr}§ . [ §\emph{fieldlist}§ ]
    2397 §\emph{expr}§ -> [ §\emph{fieldlist}§ ]
    2398 \end{cfa}
    2399 \emph{expr} is any expression yielding a value of type record, \eg ©struct©, ©union©.
    2400 Each element of \emph{ fieldlist} is an element of the record specified by \emph{expr}.
    2401 A record-field tuple may be used anywhere a tuple can be used. An example of the use of a record-field tuple is
    2402 the following:
    2403 \begin{cfa}
    2404 struct s {
    2405         int f1, f2;
    2406         char f3;
    2407         double f4;
    2408 } v;
    2409 v.[ f3, f1, f2 ] = ['x', 11, 17 ];      §\C{// equivalent to v.f3 = 'x', v.f1 = 11, v.f2 = 17}§
    2410 f( v.[ f3, f1, f2 ] );                          §\C{// equivalent to f( v.f3, v.f1, v.f2 )}§
    2411 \end{cfa}
    2412 Note, the fields appearing in a record-field tuple may be specified in any order;
    2413 also, it is unnecessary to specify all the fields of a struct in a multiple record-field tuple.
    2414 
    2415 If a field of a ©struct© is itself another ©struct©, multiple fields of this subrecord can be specified using a nested record-field tuple, as in the following example:
    2416 \begin{cfa}
    2417 struct inner {
    2418         int f2, f3;
    2419 };
    2420 struct outer {
    2421         int f1;
    2422         struct inner i;
    2423         double f4;
    2424 } o;
    2425 
    2426 o.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
    2427 \end{cfa}
    2428 
    2429 
    24302399\section{I/O Library}
    24312400\label{s:IOLibrary}
     
    24332402
    24342403The goal of \CFA I/O is to simplify the common cases\index{I/O!common case}, while fully supporting polymorphism and user defined types in a consistent way.
    2435 The approach combines ideas from \CC and Python.
    24362404The \CFA header file for the I/O library is \Indexc{fstream}.
    24372405
     
    24512419\\
    24522420\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2453 1® ®2® ®3
     24211 2 3
    24542422\end{cfa}
    24552423&
     
    24592427\end{tabular}
    24602428\end{quote2}
    2461 The \CFA form has half the characters of the \CC form, and is similar to \Index*{Python} I/O with respect to implicit separators.
    2462 Similar simplification occurs for \Index{tuple} I/O, which prints all tuple values separated by ``\lstinline[showspaces=true]@, @''.
     2429The \CFA form has half as many characters as the \CC form, and is similar to \Index*{Python} I/O with respect to implicit separators.
     2430A tuple prints all the tuple's values, each separated by ©", "©.
    24632431\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    2464 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ];
     2432[int, int] t1 = [1, 2], t2 = [3, 4];
    24652433sout | t1 | t2 | endl;                                  §\C{// print tuples}§
    24662434\end{cfa}
    24672435\begin{cfa}[mathescape=off,showspaces=true,belowskip=0pt]
    2468 1®, ®2®, ®3 3®, ®4®, ®5
    2469 \end{cfa}
    2470 Finally, \CFA uses the logical-or operator for I/O as it is the lowest-priority overloadable operator, other than assignment.
     24361, 2, 3, 4
     2437\end{cfa}
     2438\CFA uses the logical-or operator for I/O because it is the lowest-priority overloadable operator, other than assignment.
    24712439Therefore, fewer output expressions require parenthesis.
    24722440\begin{quote2}
     
    24902458\end{tabular}
    24912459\end{quote2}
    2492 There is a weak similarity between the \CFA logical-or operator and the Shell pipe-operator for moving data, where data flows in the correct direction for input but the opposite direction for output.
    2493 
    2494 
    2495 \subsection{Implicit Separator}
    2496 
    2497 The \Index{implicit separator}\index{I/O!separator} character (space/blank) is a separator not a terminator.
     2460Finally, the logical-or operator has a link with the Shell pipe-operator for moving data, where data flows in the correct direction for input but the opposite direction for output.
     2461
     2462
     2463The implicit separator\index{I/O!separator} character (space/blank) is a separator not a terminator.
    24982464The rules for implicitly adding the separator are:
    24992465\begin{enumerate}
     
    25672533\end{enumerate}
    25682534
    2569 
    2570 \subsection{Manipulator}
    2571 
    25722535The following routines and \CC-style \Index{manipulator}s control implicit seperation.
    25732536\begin{enumerate}
     
    25812544%$
    25822545\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt]
    2583 1®, $®2®, $®3 ®", $"®
     25461, $2, $3 ®", $"®
    25842547\end{cfa}
    25852548%$
     
    25892552\end{cfa}
    25902553\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt]
    2591 1® ®2® ®3 ®" "®
     25541 2 3 ®" "®
     2555\end{cfa}
     2556
     2557\item
     2558Manipulators \Indexc{sepOn}\index{manipulator!sepOn@©sepOn©} and \Indexc{sepOff}\index{manipulator!sepOff@©sepOff©} \emph{locally} toggle printing the separator, \ie the seperator is adjusted only with respect to the next printed item.
     2559\begin{cfa}[mathescape=off,belowskip=0pt]
     2560sout | sepOn | 1 | 2 | 3 | sepOn | endl;        §\C{// separator at start of line}§
     2561\end{cfa}
     2562\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     2563 1 2 3
     2564\end{cfa}
     2565\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
     2566sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// locally turn off implicit separator}§
     2567\end{cfa}
     2568\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     256912 3
     2570\end{cfa}
     2571
     2572\item
     2573Manipulators \Indexc{sepDisable}\index{manipulator!sepDisable@©sepDisable©} and \Indexc{sepEnable}\index{manipulator!sepEnable@©sepEnable©} \emph{globally} toggle printing the separator, \ie the seperator is adjusted with respect to all subsequent printed items, unless locally adjusted.
     2574\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
     2575sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// globally turn off implicit separation}§
     2576\end{cfa}
     2577\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     2578123
     2579\end{cfa}
     2580\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
     2581sout | 1 | sepOn | 2 | 3 | endl;                        §\C{// locally turn on implicit separator}§
     2582\end{cfa}
     2583\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     25841 23
     2585\end{cfa}
     2586\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
     2587sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// globally turn on implicit separation}§
     2588\end{cfa}
     2589\begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     25901 2 3
    25922591\end{cfa}
    25932592
     
    26112610
    26122611\item
    2613 Manipulators \Indexc{sepOn}\index{manipulator!sepOn@©sepOn©} and \Indexc{sepOff}\index{manipulator!sepOff@©sepOff©} \emph{locally} toggle printing the separator, \ie the seperator is adjusted only with respect to the next printed item.
    2614 \begin{cfa}[mathescape=off,belowskip=0pt]
    2615 sout | sepOn | 1 | 2 | 3 | sepOn | endl;        §\C{// separator at start/end of line}§
    2616 \end{cfa}
    2617 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2618 ® ®1 2 3® ®
    2619 \end{cfa}
    2620 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    2621 sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// locally turn off implicit separator}§
    2622 \end{cfa}
    2623 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2624 12 3
    2625 \end{cfa}
    2626 The tuple separator also responses to being turned on and off.
     2612The tuple separator can also be turned on and off.
    26272613\begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    26282614sout | sepOn | t1 | sepOff | t2 | endl;         §\C{// locally turn on/off implicit separation}§
     
    26322618\end{cfa}
    26332619Notice a tuple seperator starts the line because the next item is a tuple.
    2634 
    2635 \item
    2636 Manipulators \Indexc{sepDisable}\index{manipulator!sepDisable@©sepDisable©} and \Indexc{sepEnable}\index{manipulator!sepEnable@©sepEnable©} \emph{globally} toggle printing the separator, \ie the seperator is adjusted with respect to all subsequent printed items, unless locally adjusted.
    2637 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    2638 sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// globally turn off implicit separation}§
    2639 \end{cfa}
    2640 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2641 123
    2642 \end{cfa}
    2643 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    2644 sout | 1 | ®sepOn® | 2 | 3 | endl;                      §\C{// locally turn on implicit separator}§
    2645 \end{cfa}
    2646 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2647 1® ®23
    2648 \end{cfa}
    2649 \begin{cfa}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    2650 sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// globally turn on implicit separation}§
    2651 \end{cfa}
    2652 \begin{cfa}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
    2653 1 2 3
    2654 \end{cfa}
    26552620\end{enumerate}
    26562621
     
    26612626        int x = 1, y = 2, z = 3;
    26622627        sout | x | y | z | endl;
    2663         [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ];
    2664         sout | t1 | t2 | endl;                                          // print tuples
     2628        [int, int] t1 = [1, 2], t2 = [3, 4];
     2629        sout | t1 | t2 | endl;                                          // print tuple
    26652630        sout | x * 3 | y + 1 | z << 2 | x == y | (x | y) | (x || y) | (x > z ? 1 : 2) | endl;
    26662631        sout | 1 | 2 | 3 | endl;
     
    52245189
    52255190
    5226 \section{\CFA Keywords}
     5191\section{\protect\CFA Keywords}
    52275192\label{s:CFAKeywords}
    52285193
     
    55225487For an increase in storage size, new storage after the copied data may be filled.
    55235488\item[alignment]
    5524 an allocation starts on a specified memory boundary, \eg, an address multiple of 64 or 128 for cache-line purposes.
     5489an allocation starts on a specified memory boundary, e.g., an address multiple of 64 or 128 for cache-line purposes.
    55255490\item[array]
    55265491the allocation size is scaled to the specified number of array elements.
  • src/ControlStruct/ExceptTranslate.cc

    r208e5be rb1e63ac5  
    1010// Created On       : Wed Jun 14 16:49:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Jun 30 13:30:00 2017
     12// Last Modified On : Thr Jun 29 15:18:00 2017
    1313// Update Count     : 1
    1414//
     
    2222#include "SynTree/Attribute.h"
    2323
    24 namespace ControlStruct {
     24namespace ControlFlow {
    2525
    2626        // This (large) section could probably be moved out of the class
     
    2929        // Type(Qualifiers &, false, std::list<Attribute *> &)
    3030
    31         // void (*function)();
    32         static FunctionType try_func_t(Type::Qualifiers(), false);
     31        // void (*function)()
     32        static FunctionType void_func_t(Type::Qualifiers(), false);
    3333        // void (*function)(int, exception);
    3434        static FunctionType catch_func_t(Type::Qualifiers(), false);
     
    3737        // bool (*function)(exception);
    3838        static FunctionType handle_func_t(Type::Qualifiers(), false);
    39         // void (*function)(__attribute__((unused)) void *);
    40         static FunctionType finally_func_t(Type::Qualifiers(), false);
    4139
    4240        static void init_func_types() {
     
    5048                        LinkageSpec::Cforall,
    5149                        /*bitfieldWidth*/ NULL,
    52                         new BasicType( emptyQualifiers, BasicType::SignedInt ),
     50                        new BasicType(emptyQualifiers, BasicType::UnsignedInt),
    5351                        /*init*/ NULL
    54                         );
     52                );
    5553                ObjectDecl exception_obj(
    5654                        "__exception_inst",
     
    5856                        LinkageSpec::Cforall,
    5957                        /*bitfieldWidth*/ NULL,
    60                         new PointerType(
    61                                 emptyQualifiers,
    62                                 new BasicType( emptyQualifiers, BasicType::SignedInt )
    63                                 ),
     58                        new BasicType(emptyQualifiers, BasicType::UnsignedInt),
    6459                        /*init*/ NULL
    65                         );
     60                );
    6661                ObjectDecl bool_obj(
    6762                        "__ret_bool",
     
    7166                        new BasicType(emptyQualifiers, BasicType::Bool),
    7267                        /*init*/ NULL
    73                         );
    74                 ObjectDecl voidptr_obj(
    75                         "__hook",
    76                         Type::StorageClasses(),
    77                         LinkageSpec::Cforall,
    78                         NULL,
    79                         new PointerType(
    80                                 emptyQualifiers,
    81                                 new VoidType(
    82                                         emptyQualifiers
    83                                         ),
    84                                 std::list<Attribute *>{new Attribute("unused")}
    85                                 ),
    86                         NULL
    87                         );
    88 
    89                 catch_func_t.get_parameters().push_back( index_obj.clone() );
    90                 catch_func_t.get_parameters().push_back( exception_obj.clone() );
    91                 match_func_t.get_returnVals().push_back( index_obj.clone() );
    92                 match_func_t.get_parameters().push_back( exception_obj.clone() );
    93                 handle_func_t.get_returnVals().push_back( bool_obj.clone() );
    94                 handle_func_t.get_parameters().push_back( exception_obj.clone() );
    95                 finally_func_t.get_parameters().push_back( voidptr_obj.clone() );
     68                );
     69
     70                catch_func_t.get_parameters().push_back(index_obj.clone());
     71                catch_func_t.get_parameters().push_back(exception_obj.clone());
     72                match_func_t.get_returnVals().push_back(index_obj.clone());
     73                match_func_t.get_parameters().push_back(exception_obj.clone());
     74                handle_func_t.get_returnVals().push_back(bool_obj.clone());
     75                handle_func_t.get_parameters().push_back(exception_obj.clone());
    9676
    9777                init_complete = true;
     
    134114        // ThrowStmt Mutation Helpers
    135115
    136         Statement * create_given_throw(
    137                         const char * throwFunc, ThrowStmt * throwStmt ) {
    138                 // { int NAME = EXPR; throwFunc( &NAME ); }
    139                 CompoundStmt * result = new CompoundStmt( noLabels );
    140                 ObjectDecl * local = new ObjectDecl(
    141                         "__local_exception_copy",
    142                         Type::StorageClasses(),
    143                         LinkageSpec::Cforall,
    144                         NULL,
    145                         new BasicType( emptyQualifiers, BasicType::SignedInt ),
    146                         new SingleInit( throwStmt->get_expr() )
    147                         );
    148                 appendDeclStmt( result, local );
    149                 UntypedExpr * call = new UntypedExpr( new NameExpr( throwFunc ) );
    150                 call->get_args().push_back( new AddressExpr( nameOf( local ) ) );
    151                 result->push_back( new ExprStmt( throwStmt->get_labels(), call ) );
     116        Statement * create_terminate_throw( ThrowStmt *throwStmt ) {
     117                // __throw_terminate( EXPR );
     118                UntypedExpr * call = new UntypedExpr( new NameExpr(
     119                        "__cfaehm__throw_termination" ) );
     120                call->get_args().push_back( throwStmt->get_expr() );
     121                Statement * result = new ExprStmt( throwStmt->get_labels(), call );
    152122                throwStmt->set_expr( nullptr );
    153123                delete throwStmt;
    154124                return result;
    155         }
    156 
    157         Statement * create_terminate_throw( ThrowStmt *throwStmt ) {
    158                 // { int NAME = EXPR; __throw_terminate( &NAME ); }
    159                 return create_given_throw( "__cfaehm__throw_termination", throwStmt );
    160125        }
    161126        Statement * create_terminate_rethrow( ThrowStmt *throwStmt ) {
     
    171136        Statement * create_resume_throw( ThrowStmt *throwStmt ) {
    172137                // __throw_resume( EXPR );
    173                 return create_given_throw( "__cfaehm__throw_resumption", throwStmt );
     138                UntypedExpr * call = new UntypedExpr( new NameExpr(
     139                        "__cfaehm__throw_resumption" ) );
     140                call->get_args().push_back( throwStmt->get_expr() );
     141                Statement * result = new ExprStmt( throwStmt->get_labels(), call );
     142                throwStmt->set_expr( nullptr );
     143                delete throwStmt;
     144                return result;
    174145        }
    175146        Statement * create_resume_rethrow( ThrowStmt *throwStmt ) {
     
    193164
    194165                return new FunctionDecl( "try", Type::StorageClasses(),
    195                         LinkageSpec::Cforall, try_func_t.clone(), body );
     166                        LinkageSpec::Cforall, void_func_t.clone(), body );
    196167        }
    197168
     
    264235                        std::list<Expression *> args;
    265236                        args.push_back( number );
    266 
    267                         std::list<Expression *> rhs_args;
    268                         rhs_args.push_back( nameOf( except_obj ) );
    269                         Expression * rhs = new UntypedExpr(
    270                                 new NameExpr( "*?" ), rhs_args );
    271                         args.push_back( rhs );
    272 
     237                        args.push_back( nameOf( except_obj ) );
    273238                        cond = new UntypedExpr( new NameExpr( "?==?" /*???*/), args );
    274239                }
     
    311276                        *it = nullptr;
    312277                }
    313 
    314                 body->push_back( new ReturnStmt( noLabels, new ConstantExpr(
    315                         Constant::from_int( 0 ) ) ) );
    316278
    317279                return new FunctionDecl("match", Type::StorageClasses(),
     
    354316                        }
    355317                        handling_code->push_back( new ReturnStmt( noLabels,
    356                                 new ConstantExpr( Constant::from_bool( true ) ) ) );
     318                                new ConstantExpr( Constant::from_bool( false ) ) ) );
    357319                        handler->set_body( handling_code );
    358320
     
    361323                        *it = nullptr;
    362324                }
    363 
    364                 body->push_back( new ReturnStmt( noLabels, new ConstantExpr(
    365                         Constant::from_bool( false ) ) ) );
    366325
    367326                return new FunctionDecl("handle", Type::StorageClasses(),
     
    405364                UntypedExpr *setup = new UntypedExpr( new NameExpr(
    406365                        "__cfaehm__try_resume_setup" ) );
    407                 setup->get_args().push_back( new AddressExpr( nameOf( obj ) ) );
     366                setup->get_args().push_back( nameOf( obj ) );
    408367                setup->get_args().push_back( nameOf( resume_handler ) );
    409368
     
    422381
    423382                return new FunctionDecl("finally", Type::StorageClasses(),
    424                         LinkageSpec::Cforall, finally_func_t.clone(), body);
     383                        LinkageSpec::Cforall, void_func_t.clone(), body);
    425384        }
    426385
  • src/ControlStruct/ExceptTranslate.h

    r208e5be rb1e63ac5  
    1010// Created On       : Tus Jun 06 10:13:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Jun 30 10:20:00 2017
    13 // Update Count     : 2
     12// Last Modified On : Thr Jun 29 15:18:00 2017
     13// Update Count     : 1
    1414//
    1515
     
    2020#include "SynTree/SynTree.h"
    2121
    22 namespace ControlStruct {
     22namespace ControlFlow {
    2323        void translateEHM( std::list< Declaration *> & translationUnit );
    2424        /* Converts exception handling structures into their underlying C code.
  • src/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    5859
    5960VPATH = @srcdir@
    60 am__is_gnu_make = { \
    61   if test -z '$(MAKELEVEL)'; then \
    62     false; \
    63   elif test -n '$(MAKE_HOST)'; then \
    64     true; \
    65   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    66     true; \
    67   else \
    68     false; \
    69   fi; \
    70 }
    71 am__make_running_with_option = \
    72   case $${target_option-} in \
    73       ?) ;; \
    74       *) echo "am__make_running_with_option: internal error: invalid" \
    75               "target option '$${target_option-}' specified" >&2; \
    76          exit 1;; \
    77   esac; \
    78   has_opt=no; \
    79   sane_makeflags=$$MAKEFLAGS; \
    80   if $(am__is_gnu_make); then \
    81     sane_makeflags=$$MFLAGS; \
    82   else \
    83     case $$MAKEFLAGS in \
    84       *\\[\ \   ]*) \
    85         bs=\\; \
    86         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    87           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    88     esac; \
    89   fi; \
    90   skip_next=no; \
    91   strip_trailopt () \
    92   { \
    93     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    94   }; \
    95   for flg in $$sane_makeflags; do \
    96     test $$skip_next = yes && { skip_next=no; continue; }; \
    97     case $$flg in \
    98       *=*|--*) continue;; \
    99         -*I) strip_trailopt 'I'; skip_next=yes;; \
    100       -*I?*) strip_trailopt 'I';; \
    101         -*O) strip_trailopt 'O'; skip_next=yes;; \
    102       -*O?*) strip_trailopt 'O';; \
    103         -*l) strip_trailopt 'l'; skip_next=yes;; \
    104       -*l?*) strip_trailopt 'l';; \
    105       -[dEDm]) skip_next=yes;; \
    106       -[JT]) skip_next=yes;; \
    107     esac; \
    108     case $$flg in \
    109       *$$target_option*) has_opt=yes; break;; \
    110     esac; \
    111   done; \
    112   test $$has_opt = yes
    113 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    114 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    11561pkgdatadir = $(datadir)/@PACKAGE@
    11662pkgincludedir = $(includedir)/@PACKAGE@
     
    13177build_triplet = @build@
    13278host_triplet = @host@
     79DIST_COMMON = $(srcdir)/CodeGen/module.mk \
     80        $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \
     81        $(srcdir)/Concurrency/module.mk \
     82        $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
     83        $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \
     84        $(srcdir)/Makefile.in $(srcdir)/Parser/module.mk \
     85        $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk \
     86        $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk \
     87        Parser/lex.cc Parser/parser.cc Parser/parser.h
    13388cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT)
    13489subdir = src
     
    13792am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    13893        $(ACLOCAL_M4)
    139 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    14094mkinstalldirs = $(install_sh) -d
    14195CONFIG_HEADER = $(top_builddir)/config.h
     
    261215driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
    262216        $(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@
    263 AM_V_P = $(am__v_P_@AM_V@)
    264 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    265 am__v_P_0 = false
    266 am__v_P_1 = :
    267 AM_V_GEN = $(am__v_GEN_@AM_V@)
    268 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    269 am__v_GEN_0 = @echo "  GEN     " $@;
    270 am__v_GEN_1 =
    271 AM_V_at = $(am__v_at_@AM_V@)
    272 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    273 am__v_at_0 = @
    274 am__v_at_1 =
    275217DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    276218depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    280222am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    281223am__v_lt_0 = --silent
    282 am__v_lt_1 =
    283224CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    284225        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    285226AM_V_CXX = $(am__v_CXX_@AM_V@)
    286227am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    287 am__v_CXX_0 = @echo "  CXX     " $@;
    288 am__v_CXX_1 =
     228am__v_CXX_0 = @echo "  CXX   " $@;
     229AM_V_at = $(am__v_at_@AM_V@)
     230am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     231am__v_at_0 = @
    289232CXXLD = $(CXX)
    290233CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
     
    292235AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    293236am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    294 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
    295 am__v_CXXLD_1 =
     237am__v_CXXLD_0 = @echo "  CXXLD " $@;
    296238@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    297239LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
    298240AM_V_LEX = $(am__v_LEX_@AM_V@)
    299241am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
    300 am__v_LEX_0 = @echo "  LEX     " $@;
    301 am__v_LEX_1 =
     242am__v_LEX_0 = @echo "  LEX   " $@;
    302243YLWRAP = $(top_srcdir)/automake/ylwrap
    303244@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    304 am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
    305                    -e s/c++$$/h++/ -e s/c$$/h/
    306245YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
    307246AM_V_YACC = $(am__v_YACC_@AM_V@)
    308247am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
    309 am__v_YACC_0 = @echo "  YACC    " $@;
    310 am__v_YACC_1 =
     248am__v_YACC_0 = @echo "  YACC  " $@;
    311249COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    312250        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    313251AM_V_CC = $(am__v_CC_@AM_V@)
    314252am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    315 am__v_CC_0 = @echo "  CC      " $@;
    316 am__v_CC_1 =
     253am__v_CC_0 = @echo "  CC    " $@;
    317254CCLD = $(CC)
    318255LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    319256AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    320257am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    321 am__v_CCLD_0 = @echo "  CCLD    " $@;
    322 am__v_CCLD_1 =
     258am__v_CCLD_0 = @echo "  CCLD  " $@;
     259AM_V_GEN = $(am__v_GEN_@AM_V@)
     260am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     261am__v_GEN_0 = @echo "  GEN   " $@;
    323262SOURCES = $(driver_cfa_cpp_SOURCES)
    324263DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
    325 am__can_run_installinfo = \
    326   case $$AM_UPDATE_INFO_DIR in \
    327     n|no|NO) false;; \
    328     *) (install-info --version) >/dev/null 2>&1;; \
    329   esac
    330 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    331 # Read a list of newline-separated strings from the standard input,
    332 # and print each of them once, without duplicates.  Input order is
    333 # *not* preserved.
    334 am__uniquify_input = $(AWK) '\
    335   BEGIN { nonempty = 0; } \
    336   { items[$$0] = 1; nonempty = 1; } \
    337   END { if (nonempty) { for (i in items) print i; }; } \
    338 '
    339 # Make sure the list of sources is unique.  This is necessary because,
    340 # e.g., the same source file might be shared among _SOURCES variables
    341 # for different programs/libraries.
    342 am__define_uniq_tagged_files = \
    343   list='$(am__tagged_files)'; \
    344   unique=`for i in $$list; do \
    345     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    346   done | $(am__uniquify_input)`
    347264ETAGS = etags
    348265CTAGS = ctags
    349 am__DIST_COMMON = $(srcdir)/CodeGen/module.mk \
    350         $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \
    351         $(srcdir)/Concurrency/module.mk \
    352         $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
    353         $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.in \
    354         $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk \
    355         $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk \
    356         $(srcdir)/Tuples/module.mk $(top_srcdir)/automake/depcomp \
    357         $(top_srcdir)/automake/ylwrap Parser/lex.cc Parser/parser.cc \
    358         Parser/parser.hh
    359266DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    360267ACLOCAL = @ACLOCAL@
     
    469376program_transform_name = @program_transform_name@
    470377psdir = @psdir@
    471 runstatedir = @runstatedir@
    472378sbindir = @sbindir@
    473379sharedstatedir = @sharedstatedir@
     
    535441MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
    536442        ${cfa_cpplib_PROGRAMS}}
    537 BUILT_SOURCES = Parser/parser.hh
     443BUILT_SOURCES = Parser/parser.h
    538444AM_YFLAGS = -d -t -v
    539445
     
    560466          esac; \
    561467        done; \
    562         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
     468        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
    563469        $(am__cd) $(top_srcdir) && \
    564           $(AUTOMAKE) --gnu src/Makefile
     470          $(AUTOMAKE) --foreign src/Makefile
     471.PRECIOUS: Makefile
    565472Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    566473        @case '$?' in \
     
    571478            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
    572479        esac;
    573 $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__empty):
     480$(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
    574481
    575482$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
     
    583490install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS)
    584491        @$(NORMAL_INSTALL)
     492        test -z "$(cfa_cpplibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)"
    585493        @list='$(cfa_cpplib_PROGRAMS)'; test -n "$(cfa_cpplibdir)" || list=; \
    586         if test -n "$$list"; then \
    587           echo " $(MKDIR_P) '$(DESTDIR)$(cfa_cpplibdir)'"; \
    588           $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)" || exit 1; \
    589         fi; \
    590494        for p in $$list; do echo "$$p $$p"; done | \
    591495        sed 's/$(EXEEXT)$$//' | \
    592         while read p p1; do if test -f $$p \
    593           ; then echo "$$p"; echo "$$p"; else :; fi; \
     496        while read p p1; do if test -f $$p; \
     497          then echo "$$p"; echo "$$p"; else :; fi; \
    594498        done | \
    595         sed -e 'p;s,.*/,,;n;h' \
    596             -e 's|.*|.|' \
     499        sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
    597500            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
    598501        sed 'N;N;N;s,\n, ,g' | \
     
    615518        files=`for p in $$list; do echo "$$p"; done | \
    616519          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
    617               -e 's/$$/$(EXEEXT)/' \
    618         `; \
     520              -e 's/$$/$(EXEEXT)/' `; \
    619521        test -n "$$list" || exit 0; \
    620522        echo " ( cd '$(DESTDIR)$(cfa_cpplibdir)' && rm -f" $$files ")"; \
     
    738640InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
    739641        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    740 Parser/parser.hh: Parser/parser.cc
     642Parser/parser.h: Parser/parser.cc
    741643        @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi
    742644        @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi
     
    941843        @$(MKDIR_P) driver
    942844        @: > driver/$(am__dirstamp)
    943 
    944845driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp)
    945846        @rm -f driver/cfa-cpp$(EXEEXT)
     
    948849mostlyclean-compile:
    949850        -rm -f *.$(OBJEXT)
    950         -rm -f CodeGen/*.$(OBJEXT)
    951         -rm -f CodeTools/*.$(OBJEXT)
    952         -rm -f Common/*.$(OBJEXT)
    953         -rm -f Concurrency/*.$(OBJEXT)
    954         -rm -f ControlStruct/*.$(OBJEXT)
    955         -rm -f GenPoly/*.$(OBJEXT)
    956         -rm -f InitTweak/*.$(OBJEXT)
    957         -rm -f Parser/*.$(OBJEXT)
    958         -rm -f ResolvExpr/*.$(OBJEXT)
    959         -rm -f SymTab/*.$(OBJEXT)
    960         -rm -f SynTree/*.$(OBJEXT)
    961         -rm -f Tuples/*.$(OBJEXT)
     851        -rm -f CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT)
     852        -rm -f CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT)
     853        -rm -f CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT)
     854        -rm -f CodeGen/driver_cfa_cpp-GenType.$(OBJEXT)
     855        -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
     856        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
     857        -rm -f CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT)
     858        -rm -f CodeTools/driver_cfa_cpp-TrackLoc.$(OBJEXT)
     859        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
     860        -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT)
     861        -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
     862        -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
     863        -rm -f Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT)
     864        -rm -f ControlStruct/driver_cfa_cpp-ExceptTranslate.$(OBJEXT)
     865        -rm -f ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT)
     866        -rm -f ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT)
     867        -rm -f ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT)
     868        -rm -f ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT)
     869        -rm -f ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT)
     870        -rm -f GenPoly/driver_cfa_cpp-Box.$(OBJEXT)
     871        -rm -f GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT)
     872        -rm -f GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT)
     873        -rm -f GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT)
     874        -rm -f GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT)
     875        -rm -f GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT)
     876        -rm -f GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT)
     877        -rm -f GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT)
     878        -rm -f GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT)
     879        -rm -f GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT)
     880        -rm -f InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT)
     881        -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
     882        -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
     883        -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
     884        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
     885        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     886        -rm -f Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT)
     887        -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT)
     888        -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT)
     889        -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT)
     890        -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT)
     891        -rm -f Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT)
     892        -rm -f Parser/driver_cfa_cpp-lex.$(OBJEXT)
     893        -rm -f Parser/driver_cfa_cpp-parser.$(OBJEXT)
     894        -rm -f Parser/driver_cfa_cpp-parserutility.$(OBJEXT)
     895        -rm -f ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT)
     896        -rm -f ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT)
     897        -rm -f ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT)
     898        -rm -f ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT)
     899        -rm -f ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT)
     900        -rm -f ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT)
     901        -rm -f ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT)
     902        -rm -f ResolvExpr/driver_cfa_cpp-CurrentObject.$(OBJEXT)
     903        -rm -f ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT)
     904        -rm -f ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT)
     905        -rm -f ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT)
     906        -rm -f ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT)
     907        -rm -f ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT)
     908        -rm -f ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT)
     909        -rm -f ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT)
     910        -rm -f ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT)
     911        -rm -f ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT)
     912        -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT)
     913        -rm -f SymTab/driver_cfa_cpp-Autogen.$(OBJEXT)
     914        -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT)
     915        -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT)
     916        -rm -f SymTab/driver_cfa_cpp-Indexer.$(OBJEXT)
     917        -rm -f SymTab/driver_cfa_cpp-Mangler.$(OBJEXT)
     918        -rm -f SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT)
     919        -rm -f SymTab/driver_cfa_cpp-Validate.$(OBJEXT)
     920        -rm -f SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT)
     921        -rm -f SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT)
     922        -rm -f SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT)
     923        -rm -f SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT)
     924        -rm -f SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT)
     925        -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT)
     926        -rm -f SynTree/driver_cfa_cpp-Attribute.$(OBJEXT)
     927        -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT)
     928        -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT)
     929        -rm -f SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT)
     930        -rm -f SynTree/driver_cfa_cpp-Constant.$(OBJEXT)
     931        -rm -f SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT)
     932        -rm -f SynTree/driver_cfa_cpp-Declaration.$(OBJEXT)
     933        -rm -f SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT)
     934        -rm -f SynTree/driver_cfa_cpp-Expression.$(OBJEXT)
     935        -rm -f SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT)
     936        -rm -f SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT)
     937        -rm -f SynTree/driver_cfa_cpp-Initializer.$(OBJEXT)
     938        -rm -f SynTree/driver_cfa_cpp-Mutator.$(OBJEXT)
     939        -rm -f SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT)
     940        -rm -f SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT)
     941        -rm -f SynTree/driver_cfa_cpp-PointerType.$(OBJEXT)
     942        -rm -f SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT)
     943        -rm -f SynTree/driver_cfa_cpp-Statement.$(OBJEXT)
     944        -rm -f SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT)
     945        -rm -f SynTree/driver_cfa_cpp-TupleType.$(OBJEXT)
     946        -rm -f SynTree/driver_cfa_cpp-Type.$(OBJEXT)
     947        -rm -f SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT)
     948        -rm -f SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT)
     949        -rm -f SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT)
     950        -rm -f SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT)
     951        -rm -f SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT)
     952        -rm -f SynTree/driver_cfa_cpp-VarExprReplacer.$(OBJEXT)
     953        -rm -f SynTree/driver_cfa_cpp-Visitor.$(OBJEXT)
     954        -rm -f SynTree/driver_cfa_cpp-VoidType.$(OBJEXT)
     955        -rm -f SynTree/driver_cfa_cpp-ZeroOneType.$(OBJEXT)
     956        -rm -f Tuples/driver_cfa_cpp-Explode.$(OBJEXT)
     957        -rm -f Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT)
     958        -rm -f Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT)
    962959
    963960distclean-compile:
     
    26352632
    26362633.yy.cc:
    2637         $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
    2638 
    2639 ID: $(am__tagged_files)
    2640         $(am__define_uniq_tagged_files); mkid -fID $$unique
    2641 tags: tags-am
    2642 TAGS: tags
    2643 
    2644 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     2634        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     2635
     2636ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     2637        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     2638        unique=`for i in $$list; do \
     2639            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     2640          done | \
     2641          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     2642              END { if (nonempty) { for (i in files) print i; }; }'`; \
     2643        mkid -fID $$unique
     2644tags: TAGS
     2645
     2646TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     2647                $(TAGS_FILES) $(LISP)
    26452648        set x; \
    26462649        here=`pwd`; \
    2647         $(am__define_uniq_tagged_files); \
     2650        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     2651        unique=`for i in $$list; do \
     2652            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     2653          done | \
     2654          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     2655              END { if (nonempty) { for (i in files) print i; }; }'`; \
    26482656        shift; \
    26492657        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    26572665          fi; \
    26582666        fi
    2659 ctags: ctags-am
    2660 
    2661 CTAGS: ctags
    2662 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    2663         $(am__define_uniq_tagged_files); \
     2667ctags: CTAGS
     2668CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     2669                $(TAGS_FILES) $(LISP)
     2670        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     2671        unique=`for i in $$list; do \
     2672            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     2673          done | \
     2674          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     2675              END { if (nonempty) { for (i in files) print i; }; }'`; \
    26642676        test -z "$(CTAGS_ARGS)$$unique" \
    26652677          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    26702682          && $(am__cd) $(top_srcdir) \
    26712683          && gtags -i $(GTAGS_ARGS) "$$here"
    2672 cscopelist: cscopelist-am
    2673 
    2674 cscopelist-am: $(am__tagged_files)
    2675         list='$(am__tagged_files)'; \
    2676         case "$(srcdir)" in \
    2677           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    2678           *) sdir=$(subdir)/$(srcdir) ;; \
    2679         esac; \
    2680         for i in $$list; do \
    2681           if test -f "$$i"; then \
    2682             echo "$(subdir)/$$i"; \
    2683           else \
    2684             echo "$$sdir/$$i"; \
    2685           fi; \
    2686         done >> $(top_builddir)/cscope.files
    26872684
    26882685distclean-tags:
     
    27852782        -rm -f Parser/lex.cc
    27862783        -rm -f Parser/parser.cc
    2787         -rm -f Parser/parser.hh
     2784        -rm -f Parser/parser.h
    27882785        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
    27892786        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
     
    28592856.MAKE: all check install install-am install-strip
    28602857
    2861 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
    2862         clean-cfa_cpplibPROGRAMS clean-generic cscopelist-am ctags \
    2863         ctags-am distclean distclean-compile distclean-generic \
    2864         distclean-tags distdir dvi dvi-am html html-am info info-am \
    2865         install install-am install-cfa_cpplibPROGRAMS install-data \
    2866         install-data-am install-dvi install-dvi-am install-exec \
    2867         install-exec-am install-html install-html-am install-info \
    2868         install-info-am install-man install-pdf install-pdf-am \
    2869         install-ps install-ps-am install-strip installcheck \
    2870         installcheck-am installdirs maintainer-clean \
    2871         maintainer-clean-generic mostlyclean mostlyclean-compile \
    2872         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
    2873         uninstall-am uninstall-cfa_cpplibPROGRAMS
    2874 
    2875 .PRECIOUS: Makefile
     2858.PHONY: CTAGS GTAGS all all-am check check-am clean \
     2859        clean-cfa_cpplibPROGRAMS clean-generic ctags distclean \
     2860        distclean-compile distclean-generic distclean-tags distdir dvi \
     2861        dvi-am html html-am info info-am install install-am \
     2862        install-cfa_cpplibPROGRAMS install-data install-data-am \
     2863        install-dvi install-dvi-am install-exec install-exec-am \
     2864        install-html install-html-am install-info install-info-am \
     2865        install-man install-pdf install-pdf-am install-ps \
     2866        install-ps-am install-strip installcheck installcheck-am \
     2867        installdirs maintainer-clean maintainer-clean-generic \
     2868        mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
     2869        ps ps-am tags uninstall uninstall-am \
     2870        uninstall-cfa_cpplibPROGRAMS
    28762871
    28772872
  • src/Parser/TypedefTable.h

    r208e5be rb1e63ac5  
    2222#include <stack>
    2323
    24 #include "ParserTypes.h"
    2524#include "parser.hh"
     25#include "parser.h"
    2626
    2727class TypedefTable {
  • src/Parser/module.mk

    r208e5be rb1e63ac5  
    1515###############################################################################
    1616
    17 BUILT_SOURCES = Parser/parser.hh
     17BUILT_SOURCES = Parser/parser.h
    1818
    1919AM_YFLAGS = -d -t -v
  • src/Parser/parser.yy

    r208e5be rb1e63ac5  
    99// Author           : Peter A. Buhr
    1010// Created On       : Sat Sep  1 20:22:55 2001
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Jun 30 15:38:00 2017
    13 // Update Count     : 2415
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Jun 28 22:11:22 2017
     13// Update Count     : 2414
    1414//
    1515
     
    104104        std::string * str;
    105105        bool flag;
    106         CatchStmt::Kind catch_kind;
    107106}
    108107
     
    193192%type<sn> switch_clause_list_opt                switch_clause_list                      choose_clause_list_opt          choose_clause_list
    194193%type<sn> /* handler_list */                    handler_clause                          finally_clause
    195 %type<catch_kind> handler_key
    196194
    197195// declarations
     
    960958handler_clause:
    961959        // TEMPORARY, TEST EXCEPTIONS
    962         handler_key '(' push push INTEGERconstant pop ')' compound_statement pop
    963                 { $$ = new StatementNode( build_catch( $1, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); }
    964         | handler_clause handler_key '(' push push INTEGERconstant pop ')' compound_statement pop
    965                 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); }
    966 
    967         | handler_key '(' push push exception_declaration pop ')' compound_statement pop
    968                 { $$ = new StatementNode( build_catch( $1, $5, nullptr, $8 ) ); }
    969         | handler_clause handler_key '(' push push exception_declaration pop ')' compound_statement pop
    970                 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $9 ) ) ); }
    971         ;
    972 
    973 handler_key:
    974         CATCH
    975                 { $$ = CatchStmt::Terminate; }
    976         | CATCHRESUME
    977                 { $$ = CatchStmt::Resume; }
     960        CATCH '(' push push INTEGERconstant pop ')' compound_statement pop
     961                { $$ = new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); }
     962        | handler_clause CATCH '(' push push INTEGERconstant pop ')' compound_statement pop
     963                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); }
     964
     965        | CATCH '(' push push exception_declaration pop ')' compound_statement pop
     966                { $$ = new StatementNode( build_catch( CatchStmt::Terminate, $5, nullptr, $8 ) ); }
     967        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
     968                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, $6, nullptr, $9 ) ) ); }
     969        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
     970                { $$ = new StatementNode( build_catch( CatchStmt::Resume, $5, nullptr, $8 ) ); }
     971        | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
     972                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Resume, $6, nullptr, $9 ) ) ); }
    978973        ;
    979974
  • src/ResolvExpr/Resolver.cc

    r208e5be rb1e63ac5  
    7070                virtual void visit( BranchStmt *branchStmt ) override;
    7171                virtual void visit( ReturnStmt *returnStmt ) override;
    72                 virtual void visit( ThrowStmt *throwStmt ) override;
    7372
    7473                virtual void visit( SingleInit *singleInit ) override;
     
    367366        }
    368367
    369         void Resolver::visit( ThrowStmt *throwStmt ) {
    370                 if ( throwStmt->get_expr() ) {
    371                         Expression * wrapped = new CastExpr( throwStmt->get_expr(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    372                         Expression * newExpr = findSingleExpression( wrapped, *this );
    373                         throwStmt->set_expr( newExpr );
    374                 }
    375         }
    376 
    377368        template< typename T >
    378369        bool isCharType( T t ) {
  • src/SymTab/Indexer.cc

    r208e5be rb1e63ac5  
    653653                        for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
    654654                                // check for C decls with the same name, skipping those with a compatible type (by mangleName)
    655                                 if ( ! LinkageSpec::isMangled( decl->second->get_linkage() ) && decl->first != mangleName ) return true;
     655                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true;
    656656                        }
    657657                }
     
    670670                                // check for C decls with the same name, skipping
    671671                                // those with an incompatible type (by mangleName)
    672                                 if ( ! LinkageSpec::isMangled( decl->second->get_linkage() ) && decl->first == mangleName ) return true;
     672                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first == mangleName ) return true;
    673673                        }
    674674                }
     
    725725                        // new definition shadows the autogenerated one, even at the same scope
    726726                        return false;
    727                 } else if ( LinkageSpec::isMangled( added->get_linkage() ) || ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) {
     727                } else if ( added->get_linkage() != LinkageSpec::C || ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) {
    728728                        // typesCompatible doesn't really do the right thing here. When checking compatibility of function types,
    729729                        // we should ignore outermost pointer qualifiers, except _Atomic?
     
    766766
    767767                // this ensures that no two declarations with the same unmangled name at the same scope both have C linkage
    768                 if ( ! LinkageSpec::isMangled( decl->get_linkage() ) ) {
     768                if ( decl->get_linkage() == LinkageSpec::C ) {
    769769                        // NOTE this is broken in Richard's original code in such a way that it never triggers (it
    770770                        // doesn't check decls that have the same manglename, and all C-linkage decls are defined to
  • src/benchmark/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1920
    2021VPATH = @srcdir@
    21 am__is_gnu_make = { \
    22   if test -z '$(MAKELEVEL)'; then \
    23     false; \
    24   elif test -n '$(MAKE_HOST)'; then \
    25     true; \
    26   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    27     true; \
    28   else \
    29     false; \
    30   fi; \
    31 }
    32 am__make_running_with_option = \
    33   case $${target_option-} in \
    34       ?) ;; \
    35       *) echo "am__make_running_with_option: internal error: invalid" \
    36               "target option '$${target_option-}' specified" >&2; \
    37          exit 1;; \
    38   esac; \
    39   has_opt=no; \
    40   sane_makeflags=$$MAKEFLAGS; \
    41   if $(am__is_gnu_make); then \
    42     sane_makeflags=$$MFLAGS; \
    43   else \
    44     case $$MAKEFLAGS in \
    45       *\\[\ \   ]*) \
    46         bs=\\; \
    47         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    48           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    49     esac; \
    50   fi; \
    51   skip_next=no; \
    52   strip_trailopt () \
    53   { \
    54     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    55   }; \
    56   for flg in $$sane_makeflags; do \
    57     test $$skip_next = yes && { skip_next=no; continue; }; \
    58     case $$flg in \
    59       *=*|--*) continue;; \
    60         -*I) strip_trailopt 'I'; skip_next=yes;; \
    61       -*I?*) strip_trailopt 'I';; \
    62         -*O) strip_trailopt 'O'; skip_next=yes;; \
    63       -*O?*) strip_trailopt 'O';; \
    64         -*l) strip_trailopt 'l'; skip_next=yes;; \
    65       -*l?*) strip_trailopt 'l';; \
    66       -[dEDm]) skip_next=yes;; \
    67       -[JT]) skip_next=yes;; \
    68     esac; \
    69     case $$flg in \
    70       *$$target_option*) has_opt=yes; break;; \
    71     esac; \
    72   done; \
    73   test $$has_opt = yes
    74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7622pkgdatadir = $(datadir)/@PACKAGE@
    7723pkgincludedir = $(includedir)/@PACKAGE@
     
    9541        ctxswitch-thread$(EXEEXT)
    9642subdir = src/benchmark
     43DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    9744ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9845am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9946am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    10047        $(ACLOCAL_M4)
    101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10248mkinstalldirs = $(install_sh) -d
    10349CONFIG_HEADER = $(top_builddir)/config.h
     
    11460ctxswitch_thread_OBJECTS = ctxswitch-thread.$(OBJEXT)
    11561ctxswitch_thread_LDADD = $(LDADD)
    116 AM_V_P = $(am__v_P_@AM_V@)
    117 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    118 am__v_P_0 = false
    119 am__v_P_1 = :
    120 AM_V_GEN = $(am__v_GEN_@AM_V@)
    121 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    122 am__v_GEN_0 = @echo "  GEN     " $@;
    123 am__v_GEN_1 =
    124 AM_V_at = $(am__v_at_@AM_V@)
    125 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    126 am__v_at_0 = @
    127 am__v_at_1 =
    12862DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    12963depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    13468AM_V_CC = $(am__v_CC_@AM_V@)
    13569am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    136 am__v_CC_0 = @echo "  CC      " $@;
    137 am__v_CC_1 =
     70am__v_CC_0 = @echo "  CC    " $@;
     71AM_V_at = $(am__v_at_@AM_V@)
     72am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     73am__v_at_0 = @
    13874CCLD = $(CC)
    13975LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    14076AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    14177am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    142 am__v_CCLD_0 = @echo "  CCLD    " $@;
    143 am__v_CCLD_1 =
     78am__v_CCLD_0 = @echo "  CCLD  " $@;
     79AM_V_GEN = $(am__v_GEN_@AM_V@)
     80am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     81am__v_GEN_0 = @echo "  GEN   " $@;
    14482SOURCES = bench.c ctxswitch-coroutine.c ctxswitch-thread.c
    14583DIST_SOURCES = bench.c ctxswitch-coroutine.c ctxswitch-thread.c
    146 am__can_run_installinfo = \
    147   case $$AM_UPDATE_INFO_DIR in \
    148     n|no|NO) false;; \
    149     *) (install-info --version) >/dev/null 2>&1;; \
    150   esac
    151 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    152 # Read a list of newline-separated strings from the standard input,
    153 # and print each of them once, without duplicates.  Input order is
    154 # *not* preserved.
    155 am__uniquify_input = $(AWK) '\
    156   BEGIN { nonempty = 0; } \
    157   { items[$$0] = 1; nonempty = 1; } \
    158   END { if (nonempty) { for (i in items) print i; }; } \
    159 '
    160 # Make sure the list of sources is unique.  This is necessary because,
    161 # e.g., the same source file might be shared among _SOURCES variables
    162 # for different programs/libraries.
    163 am__define_uniq_tagged_files = \
    164   list='$(am__tagged_files)'; \
    165   unique=`for i in $$list; do \
    166     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    167   done | $(am__uniquify_input)`
    16884ETAGS = etags
    16985CTAGS = ctags
    170 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
    17186DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    17287ACLOCAL = @ACLOCAL@
     
    283198program_transform_name = @program_transform_name@
    284199psdir = @psdir@
    285 runstatedir = @runstatedir@
    286200sbindir = @sbindir@
    287201sharedstatedir = @sharedstatedir@
     
    306220          esac; \
    307221        done; \
    308         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/benchmark/Makefile'; \
     222        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/benchmark/Makefile'; \
    309223        $(am__cd) $(top_srcdir) && \
    310           $(AUTOMAKE) --gnu src/benchmark/Makefile
     224          $(AUTOMAKE) --foreign src/benchmark/Makefile
     225.PRECIOUS: Makefile
    311226Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    312227        @case '$?' in \
     
    341256
    342257.c.o:
    343 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    344 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    345 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     258@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     259@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    346260@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    347261@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    348 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
     262@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    349263
    350264.c.obj:
    351 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    352 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    353 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     265@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     266@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    354267@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    355268@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    356 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    357 
    358 ID: $(am__tagged_files)
    359         $(am__define_uniq_tagged_files); mkid -fID $$unique
    360 tags: tags-am
    361 TAGS: tags
    362 
    363 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     269@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     270
     271ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     272        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     273        unique=`for i in $$list; do \
     274            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     275          done | \
     276          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     277              END { if (nonempty) { for (i in files) print i; }; }'`; \
     278        mkid -fID $$unique
     279tags: TAGS
     280
     281TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     282                $(TAGS_FILES) $(LISP)
    364283        set x; \
    365284        here=`pwd`; \
    366         $(am__define_uniq_tagged_files); \
     285        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     286        unique=`for i in $$list; do \
     287            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     288          done | \
     289          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     290              END { if (nonempty) { for (i in files) print i; }; }'`; \
    367291        shift; \
    368292        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    376300          fi; \
    377301        fi
    378 ctags: ctags-am
    379 
    380 CTAGS: ctags
    381 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    382         $(am__define_uniq_tagged_files); \
     302ctags: CTAGS
     303CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     304                $(TAGS_FILES) $(LISP)
     305        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     306        unique=`for i in $$list; do \
     307            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     308          done | \
     309          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     310              END { if (nonempty) { for (i in files) print i; }; }'`; \
    383311        test -z "$(CTAGS_ARGS)$$unique" \
    384312          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    389317          && $(am__cd) $(top_srcdir) \
    390318          && gtags -i $(GTAGS_ARGS) "$$here"
    391 cscopelist: cscopelist-am
    392 
    393 cscopelist-am: $(am__tagged_files)
    394         list='$(am__tagged_files)'; \
    395         case "$(srcdir)" in \
    396           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    397           *) sdir=$(subdir)/$(srcdir) ;; \
    398         esac; \
    399         for i in $$list; do \
    400           if test -f "$$i"; then \
    401             echo "$(subdir)/$$i"; \
    402           else \
    403             echo "$$sdir/$$i"; \
    404           fi; \
    405         done >> $(top_builddir)/cscope.files
    406319
    407320distclean-tags:
     
    543456.MAKE: install-am install-strip
    544457
    545 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    546         clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
    547         distclean-compile distclean-generic distclean-tags distdir dvi \
    548         dvi-am html html-am info info-am install install-am \
    549         install-data install-data-am install-dvi install-dvi-am \
    550         install-exec install-exec-am install-html install-html-am \
    551         install-info install-info-am install-man install-pdf \
    552         install-pdf-am install-ps install-ps-am install-strip \
    553         installcheck installcheck-am installdirs maintainer-clean \
     458.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
     459        clean-noinstPROGRAMS ctags distclean distclean-compile \
     460        distclean-generic distclean-tags distdir dvi dvi-am html \
     461        html-am info info-am install install-am install-data \
     462        install-data-am install-dvi install-dvi-am install-exec \
     463        install-exec-am install-html install-html-am install-info \
     464        install-info-am install-man install-pdf install-pdf-am \
     465        install-ps install-ps-am install-strip installcheck \
     466        installcheck-am installdirs maintainer-clean \
    554467        maintainer-clean-generic mostlyclean mostlyclean-compile \
    555         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
     468        mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
    556469        uninstall-am
    557 
    558 .PRECIOUS: Makefile
    559470
    560471
  • src/driver/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1920
    2021VPATH = @srcdir@
    21 am__is_gnu_make = { \
    22   if test -z '$(MAKELEVEL)'; then \
    23     false; \
    24   elif test -n '$(MAKE_HOST)'; then \
    25     true; \
    26   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    27     true; \
    28   else \
    29     false; \
    30   fi; \
    31 }
    32 am__make_running_with_option = \
    33   case $${target_option-} in \
    34       ?) ;; \
    35       *) echo "am__make_running_with_option: internal error: invalid" \
    36               "target option '$${target_option-}' specified" >&2; \
    37          exit 1;; \
    38   esac; \
    39   has_opt=no; \
    40   sane_makeflags=$$MAKEFLAGS; \
    41   if $(am__is_gnu_make); then \
    42     sane_makeflags=$$MFLAGS; \
    43   else \
    44     case $$MAKEFLAGS in \
    45       *\\[\ \   ]*) \
    46         bs=\\; \
    47         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    48           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    49     esac; \
    50   fi; \
    51   skip_next=no; \
    52   strip_trailopt () \
    53   { \
    54     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    55   }; \
    56   for flg in $$sane_makeflags; do \
    57     test $$skip_next = yes && { skip_next=no; continue; }; \
    58     case $$flg in \
    59       *=*|--*) continue;; \
    60         -*I) strip_trailopt 'I'; skip_next=yes;; \
    61       -*I?*) strip_trailopt 'I';; \
    62         -*O) strip_trailopt 'O'; skip_next=yes;; \
    63       -*O?*) strip_trailopt 'O';; \
    64         -*l) strip_trailopt 'l'; skip_next=yes;; \
    65       -*l?*) strip_trailopt 'l';; \
    66       -[dEDm]) skip_next=yes;; \
    67       -[JT]) skip_next=yes;; \
    68     esac; \
    69     case $$flg in \
    70       *$$target_option*) has_opt=yes; break;; \
    71     esac; \
    72   done; \
    73   test $$has_opt = yes
    74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7622pkgdatadir = $(datadir)/@PACKAGE@
    7723pkgincludedir = $(includedir)/@PACKAGE@
     
    9844cc1lib_PROGRAMS = cc1$(EXEEXT)
    9945subdir = src/driver
     46DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    10047ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    10148am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    10249am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    10350        $(ACLOCAL_M4)
    104 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10551mkinstalldirs = $(install_sh) -d
    10652CONFIG_HEADER = $(top_builddir)/config.h
     
    11561cfa_OBJECTS = $(am_cfa_OBJECTS)
    11662cfa_LDADD = $(LDADD)
    117 AM_V_P = $(am__v_P_@AM_V@)
    118 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    119 am__v_P_0 = false
    120 am__v_P_1 = :
    121 AM_V_GEN = $(am__v_GEN_@AM_V@)
    122 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    123 am__v_GEN_0 = @echo "  GEN     " $@;
    124 am__v_GEN_1 =
    125 AM_V_at = $(am__v_at_@AM_V@)
    126 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    127 am__v_at_0 = @
    128 am__v_at_1 =
    12963DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    13064depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    13569AM_V_CXX = $(am__v_CXX_@AM_V@)
    13670am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    137 am__v_CXX_0 = @echo "  CXX     " $@;
    138 am__v_CXX_1 =
     71am__v_CXX_0 = @echo "  CXX   " $@;
     72AM_V_at = $(am__v_at_@AM_V@)
     73am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     74am__v_at_0 = @
    13975CXXLD = $(CXX)
    14076CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
     
    14278AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    14379am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    144 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
    145 am__v_CXXLD_1 =
     80am__v_CXXLD_0 = @echo "  CXXLD " $@;
     81AM_V_GEN = $(am__v_GEN_@AM_V@)
     82am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     83am__v_GEN_0 = @echo "  GEN   " $@;
    14684SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    14785DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    148 am__can_run_installinfo = \
    149   case $$AM_UPDATE_INFO_DIR in \
    150     n|no|NO) false;; \
    151     *) (install-info --version) >/dev/null 2>&1;; \
    152   esac
    153 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    154 # Read a list of newline-separated strings from the standard input,
    155 # and print each of them once, without duplicates.  Input order is
    156 # *not* preserved.
    157 am__uniquify_input = $(AWK) '\
    158   BEGIN { nonempty = 0; } \
    159   { items[$$0] = 1; nonempty = 1; } \
    160   END { if (nonempty) { for (i in items) print i; }; } \
    161 '
    162 # Make sure the list of sources is unique.  This is necessary because,
    163 # e.g., the same source file might be shared among _SOURCES variables
    164 # for different programs/libraries.
    165 am__define_uniq_tagged_files = \
    166   list='$(am__tagged_files)'; \
    167   unique=`for i in $$list; do \
    168     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    169   done | $(am__uniquify_input)`
    17086ETAGS = etags
    17187CTAGS = ctags
    172 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
    17388DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    17489ACLOCAL = @ACLOCAL@
     
    283198program_transform_name = @program_transform_name@
    284199psdir = @psdir@
    285 runstatedir = @runstatedir@
    286200sbindir = @sbindir@
    287201sharedstatedir = @sharedstatedir@
     
    315229          esac; \
    316230        done; \
    317         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \
     231        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \
    318232        $(am__cd) $(top_srcdir) && \
    319           $(AUTOMAKE) --gnu src/driver/Makefile
     233          $(AUTOMAKE) --foreign src/driver/Makefile
     234.PRECIOUS: Makefile
    320235Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    321236        @case '$?' in \
     
    337252install-cc1libPROGRAMS: $(cc1lib_PROGRAMS)
    338253        @$(NORMAL_INSTALL)
     254        test -z "$(cc1libdir)" || $(MKDIR_P) "$(DESTDIR)$(cc1libdir)"
    339255        @list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
    340         if test -n "$$list"; then \
    341           echo " $(MKDIR_P) '$(DESTDIR)$(cc1libdir)'"; \
    342           $(MKDIR_P) "$(DESTDIR)$(cc1libdir)" || exit 1; \
    343         fi; \
    344256        for p in $$list; do echo "$$p $$p"; done | \
    345257        sed 's/$(EXEEXT)$$//' | \
    346         while read p p1; do if test -f $$p \
    347           ; then echo "$$p"; echo "$$p"; else :; fi; \
     258        while read p p1; do if test -f $$p; \
     259          then echo "$$p"; echo "$$p"; else :; fi; \
    348260        done | \
    349         sed -e 'p;s,.*/,,;n;h' \
    350             -e 's|.*|.|' \
     261        sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
    351262            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
    352263        sed 'N;N;N;s,\n, ,g' | \
     
    369280        files=`for p in $$list; do echo "$$p"; done | \
    370281          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
    371               -e 's/$$/$(EXEEXT)/' \
    372         `; \
     282              -e 's/$$/$(EXEEXT)/' `; \
    373283        test -n "$$list" || exit 0; \
    374284        echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \
     
    380290clean-noinstPROGRAMS:
    381291        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
    382 
    383292cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES)
    384293        @rm -f cc1$(EXEEXT)
    385294        $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
    386 
    387295cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES)
    388296        @rm -f cfa$(EXEEXT)
     
    399307
    400308.cc.o:
    401 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    402 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    403 @am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
     309@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     310@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    404311@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    405312@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    407314
    408315.cc.obj:
    409 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    410 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    411 @am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
     316@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     317@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    412318@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    413319@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    414320@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    415321
    416 ID: $(am__tagged_files)
    417         $(am__define_uniq_tagged_files); mkid -fID $$unique
    418 tags: tags-am
    419 TAGS: tags
    420 
    421 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     322ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     323        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     324        unique=`for i in $$list; do \
     325            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     326          done | \
     327          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     328              END { if (nonempty) { for (i in files) print i; }; }'`; \
     329        mkid -fID $$unique
     330tags: TAGS
     331
     332TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     333                $(TAGS_FILES) $(LISP)
    422334        set x; \
    423335        here=`pwd`; \
    424         $(am__define_uniq_tagged_files); \
     336        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     337        unique=`for i in $$list; do \
     338            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     339          done | \
     340          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     341              END { if (nonempty) { for (i in files) print i; }; }'`; \
    425342        shift; \
    426343        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    434351          fi; \
    435352        fi
    436 ctags: ctags-am
    437 
    438 CTAGS: ctags
    439 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    440         $(am__define_uniq_tagged_files); \
     353ctags: CTAGS
     354CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     355                $(TAGS_FILES) $(LISP)
     356        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     357        unique=`for i in $$list; do \
     358            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     359          done | \
     360          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     361              END { if (nonempty) { for (i in files) print i; }; }'`; \
    441362        test -z "$(CTAGS_ARGS)$$unique" \
    442363          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    447368          && $(am__cd) $(top_srcdir) \
    448369          && gtags -i $(GTAGS_ARGS) "$$here"
    449 cscopelist: cscopelist-am
    450 
    451 cscopelist-am: $(am__tagged_files)
    452         list='$(am__tagged_files)'; \
    453         case "$(srcdir)" in \
    454           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    455           *) sdir=$(subdir)/$(srcdir) ;; \
    456         esac; \
    457         for i in $$list; do \
    458           if test -f "$$i"; then \
    459             echo "$(subdir)/$$i"; \
    460           else \
    461             echo "$$sdir/$$i"; \
    462           fi; \
    463         done >> $(top_builddir)/cscope.files
    464370
    465371distclean-tags:
     
    608514.MAKE: install-am install-exec-am install-strip uninstall-am
    609515
    610 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
    611         clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS \
    612         cscopelist-am ctags ctags-am distclean distclean-compile \
    613         distclean-generic distclean-tags distdir dvi dvi-am html \
    614         html-am info info-am install install-am install-cc1libPROGRAMS \
    615         install-data install-data-am install-dvi install-dvi-am \
    616         install-exec install-exec-am install-exec-hook install-html \
    617         install-html-am install-info install-info-am install-man \
    618         install-pdf install-pdf-am install-ps install-ps-am \
    619         install-strip installcheck installcheck-am installdirs \
    620         maintainer-clean maintainer-clean-generic mostlyclean \
    621         mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    622         tags tags-am uninstall uninstall-am uninstall-cc1libPROGRAMS \
    623         uninstall-hook
    624 
    625 .PRECIOUS: Makefile
     516.PHONY: CTAGS GTAGS all all-am check check-am clean \
     517        clean-cc1libPROGRAMS clean-generic clean-noinstPROGRAMS ctags \
     518        distclean distclean-compile distclean-generic distclean-tags \
     519        distdir dvi dvi-am html html-am info info-am install \
     520        install-am install-cc1libPROGRAMS install-data install-data-am \
     521        install-dvi install-dvi-am install-exec install-exec-am \
     522        install-exec-hook install-html install-html-am install-info \
     523        install-info-am install-man install-pdf install-pdf-am \
     524        install-ps install-ps-am install-strip installcheck \
     525        installcheck-am installdirs maintainer-clean \
     526        maintainer-clean-generic mostlyclean mostlyclean-compile \
     527        mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
     528        uninstall-am uninstall-cc1libPROGRAMS uninstall-hook
    626529
    627530
  • src/examples/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1920
    2021VPATH = @srcdir@
    21 am__is_gnu_make = { \
    22   if test -z '$(MAKELEVEL)'; then \
    23     false; \
    24   elif test -n '$(MAKE_HOST)'; then \
    25     true; \
    26   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    27     true; \
    28   else \
    29     false; \
    30   fi; \
    31 }
    32 am__make_running_with_option = \
    33   case $${target_option-} in \
    34       ?) ;; \
    35       *) echo "am__make_running_with_option: internal error: invalid" \
    36               "target option '$${target_option-}' specified" >&2; \
    37          exit 1;; \
    38   esac; \
    39   has_opt=no; \
    40   sane_makeflags=$$MAKEFLAGS; \
    41   if $(am__is_gnu_make); then \
    42     sane_makeflags=$$MFLAGS; \
    43   else \
    44     case $$MAKEFLAGS in \
    45       *\\[\ \   ]*) \
    46         bs=\\; \
    47         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    48           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    49     esac; \
    50   fi; \
    51   skip_next=no; \
    52   strip_trailopt () \
    53   { \
    54     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    55   }; \
    56   for flg in $$sane_makeflags; do \
    57     test $$skip_next = yes && { skip_next=no; continue; }; \
    58     case $$flg in \
    59       *=*|--*) continue;; \
    60         -*I) strip_trailopt 'I'; skip_next=yes;; \
    61       -*I?*) strip_trailopt 'I';; \
    62         -*O) strip_trailopt 'O'; skip_next=yes;; \
    63       -*O?*) strip_trailopt 'O';; \
    64         -*l) strip_trailopt 'l'; skip_next=yes;; \
    65       -*l?*) strip_trailopt 'l';; \
    66       -[dEDm]) skip_next=yes;; \
    67       -[JT]) skip_next=yes;; \
    68     esac; \
    69     case $$flg in \
    70       *$$target_option*) has_opt=yes; break;; \
    71     esac; \
    72   done; \
    73   test $$has_opt = yes
    74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7622pkgdatadir = $(datadir)/@PACKAGE@
    7723pkgincludedir = $(includedir)/@PACKAGE@
     
    9541        avl_test$(EXEEXT) Bench$(EXEEXT)
    9642subdir = src/examples
     43DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    9744ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9845am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9946am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    10047        $(ACLOCAL_M4)
    101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10248mkinstalldirs = $(install_sh) -d
    10349CONFIG_HEADER = $(top_builddir)/config.h
     
    10854Bench_OBJECTS = Bench.$(OBJEXT)
    10955Bench_LDADD = $(LDADD)
    110 am__dirstamp = $(am__leading_dot)dirstamp
    111 am_avl_test_OBJECTS = avltree/avl_test.$(OBJEXT) \
    112         avltree/avl0.$(OBJEXT) avltree/avl1.$(OBJEXT) \
    113         avltree/avl2.$(OBJEXT) avltree/avl3.$(OBJEXT) \
    114         avltree/avl4.$(OBJEXT) avltree/avl-private.$(OBJEXT)
     56am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
     57        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     58        avl-private.$(OBJEXT)
    11559avl_test_OBJECTS = $(am_avl_test_OBJECTS)
    11660avl_test_LDADD = $(LDADD)
     
    12266vector_test_OBJECTS = $(am_vector_test_OBJECTS)
    12367vector_test_LDADD = $(LDADD)
    124 AM_V_P = $(am__v_P_@AM_V@)
    125 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    126 am__v_P_0 = false
    127 am__v_P_1 = :
    128 AM_V_GEN = $(am__v_GEN_@AM_V@)
    129 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    130 am__v_GEN_0 = @echo "  GEN     " $@;
    131 am__v_GEN_1 =
    132 AM_V_at = $(am__v_at_@AM_V@)
    133 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    134 am__v_at_0 = @
    135 am__v_at_1 =
    13668DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    13769depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
    13870am__depfiles_maybe = depfiles
    13971am__mv = mv -f
     72AM_V_lt = $(am__v_lt_@AM_V@)
     73am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     74am__v_lt_0 = --silent
    14075COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    14176        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    14277AM_V_CC = $(am__v_CC_@AM_V@)
    14378am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    144 am__v_CC_0 = @echo "  CC      " $@;
    145 am__v_CC_1 =
     79am__v_CC_0 = @echo "  CC    " $@;
     80AM_V_at = $(am__v_at_@AM_V@)
     81am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     82am__v_at_0 = @
    14683CCLD = $(CC)
    14784LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    14885AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    14986am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    150 am__v_CCLD_0 = @echo "  CCLD    " $@;
    151 am__v_CCLD_1 =
     87am__v_CCLD_0 = @echo "  CCLD  " $@;
     88AM_V_GEN = $(am__v_GEN_@AM_V@)
     89am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     90am__v_GEN_0 = @echo "  GEN   " $@;
    15291SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    15392        $(vector_test_SOURCES)
    15493DIST_SOURCES = Bench.c $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    15594        $(vector_test_SOURCES)
    156 am__can_run_installinfo = \
    157   case $$AM_UPDATE_INFO_DIR in \
    158     n|no|NO) false;; \
    159     *) (install-info --version) >/dev/null 2>&1;; \
    160   esac
    161 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    162 # Read a list of newline-separated strings from the standard input,
    163 # and print each of them once, without duplicates.  Input order is
    164 # *not* preserved.
    165 am__uniquify_input = $(AWK) '\
    166   BEGIN { nonempty = 0; } \
    167   { items[$$0] = 1; nonempty = 1; } \
    168   END { if (nonempty) { for (i in items) print i; }; } \
    169 '
    170 # Make sure the list of sources is unique.  This is necessary because,
    171 # e.g., the same source file might be shared among _SOURCES variables
    172 # for different programs/libraries.
    173 am__define_uniq_tagged_files = \
    174   list='$(am__tagged_files)'; \
    175   unique=`for i in $$list; do \
    176     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    177   done | $(am__uniquify_input)`
    17895ETAGS = etags
    17996CTAGS = ctags
    180 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
    18197DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    18298ACLOCAL = @ACLOCAL@
     
    293209program_transform_name = @program_transform_name@
    294210psdir = @psdir@
    295 runstatedir = @runstatedir@
    296211sbindir = @sbindir@
    297212sharedstatedir = @sharedstatedir@
     
    319234          esac; \
    320235        done; \
    321         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \
     236        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \
    322237        $(am__cd) $(top_srcdir) && \
    323           $(AUTOMAKE) --gnu src/examples/Makefile
     238          $(AUTOMAKE) --foreign src/examples/Makefile
     239.PRECIOUS: Makefile
    324240Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    325241        @case '$?' in \
     
    342258clean-noinstPROGRAMS:
    343259        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
    344 avltree/$(am__dirstamp):
    345         @$(MKDIR_P) avltree
    346         @: > avltree/$(am__dirstamp)
    347 avltree/$(DEPDIR)/$(am__dirstamp):
    348         @$(MKDIR_P) avltree/$(DEPDIR)
    349         @: > avltree/$(DEPDIR)/$(am__dirstamp)
    350 avltree/avl_test.$(OBJEXT): avltree/$(am__dirstamp) \
    351         avltree/$(DEPDIR)/$(am__dirstamp)
    352 avltree/avl0.$(OBJEXT): avltree/$(am__dirstamp) \
    353         avltree/$(DEPDIR)/$(am__dirstamp)
    354 avltree/avl1.$(OBJEXT): avltree/$(am__dirstamp) \
    355         avltree/$(DEPDIR)/$(am__dirstamp)
    356 avltree/avl2.$(OBJEXT): avltree/$(am__dirstamp) \
    357         avltree/$(DEPDIR)/$(am__dirstamp)
    358 avltree/avl3.$(OBJEXT): avltree/$(am__dirstamp) \
    359         avltree/$(DEPDIR)/$(am__dirstamp)
    360 avltree/avl4.$(OBJEXT): avltree/$(am__dirstamp) \
    361         avltree/$(DEPDIR)/$(am__dirstamp)
    362 avltree/avl-private.$(OBJEXT): avltree/$(am__dirstamp) \
    363         avltree/$(DEPDIR)/$(am__dirstamp)
    364 
    365260avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES)
    366261        @rm -f avl_test$(EXEEXT)
    367262        $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
    368 
    369263fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    370264        @rm -f fstream_test$(EXEEXT)
    371265        $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    372 
    373266vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    374267        @rm -f vector_test$(EXEEXT)
     
    377270mostlyclean-compile:
    378271        -rm -f *.$(OBJEXT)
    379         -rm -f avltree/*.$(OBJEXT)
    380272
    381273distclean-compile:
     
    384276@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@
    385277@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
     278@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     279@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@
     280@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@
     281@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@
     282@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@
     283@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@
     284@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@
    386285@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
    387286@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
    388287@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
    389 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl-private.Po@am__quote@
    390 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl0.Po@am__quote@
    391 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl1.Po@am__quote@
    392 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl2.Po@am__quote@
    393 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl3.Po@am__quote@
    394 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl4.Po@am__quote@
    395 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test.Po@am__quote@
    396288
    397289.c.o:
    398 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    399 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    400 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     290@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     291@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    401292@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    402293@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    403 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
     294@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    404295
    405296.c.obj:
    406 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    407 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    408 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     297@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     298@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    409299@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    410300@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    411 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    412 
    413 ID: $(am__tagged_files)
    414         $(am__define_uniq_tagged_files); mkid -fID $$unique
    415 tags: tags-am
    416 TAGS: tags
    417 
    418 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     301@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     302
     303avl_test.o: avltree/avl_test.c
     304@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
     305@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     306@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@
     307@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     308@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
     309
     310avl_test.obj: avltree/avl_test.c
     311@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`
     312@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     313@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@
     314@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     315@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`
     316
     317avl0.o: avltree/avl0.c
     318@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
     319@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     320@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@
     321@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     322@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
     323
     324avl0.obj: avltree/avl0.c
     325@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`
     326@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     327@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@
     328@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     329@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`
     330
     331avl1.o: avltree/avl1.c
     332@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
     333@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     334@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@
     335@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     336@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
     337
     338avl1.obj: avltree/avl1.c
     339@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`
     340@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     341@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@
     342@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     343@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`
     344
     345avl2.o: avltree/avl2.c
     346@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
     347@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     348@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@
     349@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     350@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
     351
     352avl2.obj: avltree/avl2.c
     353@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`
     354@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     355@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@
     356@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     357@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`
     358
     359avl3.o: avltree/avl3.c
     360@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
     361@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     362@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@
     363@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     364@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
     365
     366avl3.obj: avltree/avl3.c
     367@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`
     368@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     369@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@
     370@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     371@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`
     372
     373avl4.o: avltree/avl4.c
     374@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
     375@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     376@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@
     377@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     378@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
     379
     380avl4.obj: avltree/avl4.c
     381@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`
     382@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     383@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@
     384@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     385@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`
     386
     387avl-private.o: avltree/avl-private.c
     388@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
     389@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     390@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@
     391@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     392@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
     393
     394avl-private.obj: avltree/avl-private.c
     395@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`
     396@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     397@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@
     398@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     399@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`
     400
     401ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     402        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     403        unique=`for i in $$list; do \
     404            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     405          done | \
     406          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     407              END { if (nonempty) { for (i in files) print i; }; }'`; \
     408        mkid -fID $$unique
     409tags: TAGS
     410
     411TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     412                $(TAGS_FILES) $(LISP)
    419413        set x; \
    420414        here=`pwd`; \
    421         $(am__define_uniq_tagged_files); \
     415        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     416        unique=`for i in $$list; do \
     417            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     418          done | \
     419          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     420              END { if (nonempty) { for (i in files) print i; }; }'`; \
    422421        shift; \
    423422        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    431430          fi; \
    432431        fi
    433 ctags: ctags-am
    434 
    435 CTAGS: ctags
    436 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    437         $(am__define_uniq_tagged_files); \
     432ctags: CTAGS
     433CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     434                $(TAGS_FILES) $(LISP)
     435        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     436        unique=`for i in $$list; do \
     437            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     438          done | \
     439          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     440              END { if (nonempty) { for (i in files) print i; }; }'`; \
    438441        test -z "$(CTAGS_ARGS)$$unique" \
    439442          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    444447          && $(am__cd) $(top_srcdir) \
    445448          && gtags -i $(GTAGS_ARGS) "$$here"
    446 cscopelist: cscopelist-am
    447 
    448 cscopelist-am: $(am__tagged_files)
    449         list='$(am__tagged_files)'; \
    450         case "$(srcdir)" in \
    451           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    452           *) sdir=$(subdir)/$(srcdir) ;; \
    453         esac; \
    454         for i in $$list; do \
    455           if test -f "$$i"; then \
    456             echo "$(subdir)/$$i"; \
    457           else \
    458             echo "$$sdir/$$i"; \
    459           fi; \
    460         done >> $(top_builddir)/cscope.files
    461449
    462450distclean-tags:
     
    523511        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    524512        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
    525         -rm -f avltree/$(DEPDIR)/$(am__dirstamp)
    526         -rm -f avltree/$(am__dirstamp)
    527513
    528514maintainer-clean-generic:
     
    534520
    535521distclean: distclean-am
    536         -rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
     522        -rm -rf ./$(DEPDIR)
    537523        -rm -f Makefile
    538524distclean-am: clean-am distclean-compile distclean-generic \
     
    580566
    581567maintainer-clean: maintainer-clean-am
    582         -rm -rf ./$(DEPDIR) avltree/$(DEPDIR)
     568        -rm -rf ./$(DEPDIR)
    583569        -rm -f Makefile
    584570maintainer-clean-am: distclean-am maintainer-clean-generic
     
    600586.MAKE: install-am install-strip
    601587
    602 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    603         clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
    604         distclean-compile distclean-generic distclean-tags distdir dvi \
    605         dvi-am html html-am info info-am install install-am \
    606         install-data install-data-am install-dvi install-dvi-am \
    607         install-exec install-exec-am install-html install-html-am \
    608         install-info install-info-am install-man install-pdf \
    609         install-pdf-am install-ps install-ps-am install-strip \
    610         installcheck installcheck-am installdirs maintainer-clean \
     588.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
     589        clean-noinstPROGRAMS ctags distclean distclean-compile \
     590        distclean-generic distclean-tags distdir dvi dvi-am html \
     591        html-am info info-am install install-am install-data \
     592        install-data-am install-dvi install-dvi-am install-exec \
     593        install-exec-am install-html install-html-am install-info \
     594        install-info-am install-man install-pdf install-pdf-am \
     595        install-ps install-ps-am install-strip installcheck \
     596        installcheck-am installdirs maintainer-clean \
    611597        maintainer-clean-generic mostlyclean mostlyclean-compile \
    612         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
     598        mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
    613599        uninstall-am
    614 
    615 .PRECIOUS: Makefile
    616600
    617601
  • src/libcfa/Makefile.am

    r208e5be rb1e63ac5  
    5050
    5151libobjs = ${headers:=.o}
    52 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} exception.c
     52libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c}
    5353
    5454# not all platforms support concurrency, add option do disable it
  • src/libcfa/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    2021
    2122VPATH = @srcdir@
    22 am__is_gnu_make = { \
    23   if test -z '$(MAKELEVEL)'; then \
    24     false; \
    25   elif test -n '$(MAKE_HOST)'; then \
    26     true; \
    27   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    28     true; \
    29   else \
    30     false; \
    31   fi; \
    32 }
    33 am__make_running_with_option = \
    34   case $${target_option-} in \
    35       ?) ;; \
    36       *) echo "am__make_running_with_option: internal error: invalid" \
    37               "target option '$${target_option-}' specified" >&2; \
    38          exit 1;; \
    39   esac; \
    40   has_opt=no; \
    41   sane_makeflags=$$MAKEFLAGS; \
    42   if $(am__is_gnu_make); then \
    43     sane_makeflags=$$MFLAGS; \
    44   else \
    45     case $$MAKEFLAGS in \
    46       *\\[\ \   ]*) \
    47         bs=\\; \
    48         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    49           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    50     esac; \
    51   fi; \
    52   skip_next=no; \
    53   strip_trailopt () \
    54   { \
    55     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    56   }; \
    57   for flg in $$sane_makeflags; do \
    58     test $$skip_next = yes && { skip_next=no; continue; }; \
    59     case $$flg in \
    60       *=*|--*) continue;; \
    61         -*I) strip_trailopt 'I'; skip_next=yes;; \
    62       -*I?*) strip_trailopt 'I';; \
    63         -*O) strip_trailopt 'O'; skip_next=yes;; \
    64       -*O?*) strip_trailopt 'O';; \
    65         -*l) strip_trailopt 'l'; skip_next=yes;; \
    66       -*l?*) strip_trailopt 'l';; \
    67       -[dEDm]) skip_next=yes;; \
    68       -[JT]) skip_next=yes;; \
    69     esac; \
    70     case $$flg in \
    71       *$$target_option*) has_opt=yes; break;; \
    72     esac; \
    73   done; \
    74   test $$has_opt = yes
    75 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    76 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7723pkgdatadir = $(datadir)/@PACKAGE@
    7824pkgincludedir = $(includedir)/@PACKAGE@
     
    10248@BUILD_CONCURRENCY_TRUE@am__append_4 = concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c concurrency/invoke.c concurrency/preemption.c
    10349subdir = src/libcfa
     50DIST_COMMON = $(am__nobase_cfa_include_HEADERS_DIST) \
     51        $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    10452ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    10553am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    10654am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    10755        $(ACLOCAL_M4)
    108 DIST_COMMON = $(srcdir)/Makefile.am \
    109         $(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON)
    11056mkinstalldirs = $(install_sh) -d
    11157CONFIG_HEADER = $(top_builddir)/config.h
     
    14591AM_V_AR = $(am__v_AR_@AM_V@)
    14692am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
    147 am__v_AR_0 = @echo "  AR      " $@;
    148 am__v_AR_1 =
     93am__v_AR_0 = @echo "  AR    " $@;
     94AM_V_at = $(am__v_at_@AM_V@)
     95am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     96am__v_at_0 = @
    14997libcfa_d_a_AR = $(AR) $(ARFLAGS)
    15098libcfa_d_a_LIBADD =
     
    154102        containers/pair.c containers/result.c containers/vector.c \
    155103        concurrency/coroutine.c concurrency/thread.c \
    156         concurrency/kernel.c concurrency/monitor.c exception.c \
     104        concurrency/kernel.c concurrency/monitor.c \
    157105        concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \
    158106        concurrency/invoke.c concurrency/preemption.c
     
    178126        libcfa_d_a-interpose.$(OBJEXT) \
    179127        libhdr/libcfa_d_a-libdebug.$(OBJEXT) $(am__objects_2) \
    180         libcfa_d_a-exception.$(OBJEXT) $(am__objects_3)
     128        $(am__objects_3)
    181129am_libcfa_d_a_OBJECTS = $(am__objects_4)
    182130libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS)
     
    188136        containers/pair.c containers/result.c containers/vector.c \
    189137        concurrency/coroutine.c concurrency/thread.c \
    190         concurrency/kernel.c concurrency/monitor.c exception.c \
     138        concurrency/kernel.c concurrency/monitor.c \
    191139        concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \
    192140        concurrency/invoke.c concurrency/preemption.c
     
    210158        libcfa_a-interpose.$(OBJEXT) \
    211159        libhdr/libcfa_a-libdebug.$(OBJEXT) $(am__objects_6) \
    212         libcfa_a-exception.$(OBJEXT) $(am__objects_7)
     160        $(am__objects_7)
    213161am_libcfa_a_OBJECTS = $(am__objects_8)
    214162libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    215 AM_V_P = $(am__v_P_@AM_V@)
    216 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    217 am__v_P_0 = false
    218 am__v_P_1 = :
    219 AM_V_GEN = $(am__v_GEN_@AM_V@)
    220 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    221 am__v_GEN_0 = @echo "  GEN     " $@;
    222 am__v_GEN_1 =
    223 AM_V_at = $(am__v_at_@AM_V@)
    224 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    225 am__v_at_0 = @
    226 am__v_at_1 =
    227163DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    228164depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    233169AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
    234170am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
    235 am__v_CPPAS_0 = @echo "  CPPAS   " $@;
    236 am__v_CPPAS_1 =
     171am__v_CPPAS_0 = @echo "  CPPAS " $@;
    237172AM_V_lt = $(am__v_lt_@AM_V@)
    238173am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    239174am__v_lt_0 = --silent
    240 am__v_lt_1 =
    241175COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    242176        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    243177AM_V_CC = $(am__v_CC_@AM_V@)
    244178am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    245 am__v_CC_0 = @echo "  CC      " $@;
    246 am__v_CC_1 =
     179am__v_CC_0 = @echo "  CC    " $@;
    247180CCLD = $(CC)
    248181LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    249182AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    250183am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    251 am__v_CCLD_0 = @echo "  CCLD    " $@;
    252 am__v_CCLD_1 =
     184am__v_CCLD_0 = @echo "  CCLD  " $@;
     185AM_V_GEN = $(am__v_GEN_@AM_V@)
     186am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     187am__v_GEN_0 = @echo "  GEN   " $@;
    253188SOURCES = $(libcfa_d_a_SOURCES) $(libcfa_a_SOURCES)
    254189DIST_SOURCES = $(am__libcfa_d_a_SOURCES_DIST) \
    255190        $(am__libcfa_a_SOURCES_DIST)
    256 am__can_run_installinfo = \
    257   case $$AM_UPDATE_INFO_DIR in \
    258     n|no|NO) false;; \
    259     *) (install-info --version) >/dev/null 2>&1;; \
    260   esac
    261191am__nobase_cfa_include_HEADERS_DIST = assert fstream iostream iterator \
    262192        limits math rational stdlib containers/maybe containers/pair \
     
    265195        ${shell echo stdhdr/*} gmp concurrency/invoke.h
    266196HEADERS = $(nobase_cfa_include_HEADERS)
    267 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    268 # Read a list of newline-separated strings from the standard input,
    269 # and print each of them once, without duplicates.  Input order is
    270 # *not* preserved.
    271 am__uniquify_input = $(AWK) '\
    272   BEGIN { nonempty = 0; } \
    273   { items[$$0] = 1; nonempty = 1; } \
    274   END { if (nonempty) { for (i in items) print i; }; } \
    275 '
    276 # Make sure the list of sources is unique.  This is necessary because,
    277 # e.g., the same source file might be shared among _SOURCES variables
    278 # for different programs/libraries.
    279 am__define_uniq_tagged_files = \
    280   list='$(am__tagged_files)'; \
    281   unique=`for i in $$list; do \
    282     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    283   done | $(am__uniquify_input)`
    284197ETAGS = etags
    285198CTAGS = ctags
    286 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
    287199DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    288200ACLOCAL = @ACLOCAL@
     
    397309program_transform_name = @program_transform_name@
    398310psdir = @psdir@
    399 runstatedir = @runstatedir@
    400311sbindir = @sbindir@
    401312sharedstatedir = @sharedstatedir@
     
    417328libobjs = ${headers:=.o}
    418329libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \
    419         exception.c $(am__append_4)
     330        $(am__append_4)
    420331libcfa_a_SOURCES = ${libsrc}
    421332libcfa_a_CFLAGS = -nodebug -O2
     
    439350          esac; \
    440351        done; \
    441         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \
     352        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \
    442353        $(am__cd) $(top_srcdir) && \
    443           $(AUTOMAKE) --gnu src/libcfa/Makefile
     354          $(AUTOMAKE) --foreign src/libcfa/Makefile
     355.PRECIOUS: Makefile
    444356Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    445357        @case '$?' in \
     
    461373install-libLIBRARIES: $(lib_LIBRARIES)
    462374        @$(NORMAL_INSTALL)
     375        test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
    463376        @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
    464377        list2=; for p in $$list; do \
     
    468381        done; \
    469382        test -z "$$list2" || { \
    470           echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
    471           $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
    472383          echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
    473384          $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
     
    537448        concurrency/$(am__dirstamp) \
    538449        concurrency/$(DEPDIR)/$(am__dirstamp)
    539 
    540450libcfa-d.a: $(libcfa_d_a_OBJECTS) $(libcfa_d_a_DEPENDENCIES) $(EXTRA_libcfa_d_a_DEPENDENCIES)
    541451        $(AM_V_at)-rm -f libcfa-d.a
     
    567477        concurrency/$(am__dirstamp) \
    568478        concurrency/$(DEPDIR)/$(am__dirstamp)
    569 
    570479libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    571480        $(AM_V_at)-rm -f libcfa.a
     
    575484mostlyclean-compile:
    576485        -rm -f *.$(OBJEXT)
    577         -rm -f concurrency/*.$(OBJEXT)
    578         -rm -f containers/*.$(OBJEXT)
    579         -rm -f libhdr/*.$(OBJEXT)
     486        -rm -f concurrency/CtxSwitch-@MACHINE_TYPE@.$(OBJEXT)
     487        -rm -f concurrency/libcfa_a-alarm.$(OBJEXT)
     488        -rm -f concurrency/libcfa_a-coroutine.$(OBJEXT)
     489        -rm -f concurrency/libcfa_a-invoke.$(OBJEXT)
     490        -rm -f concurrency/libcfa_a-kernel.$(OBJEXT)
     491        -rm -f concurrency/libcfa_a-monitor.$(OBJEXT)
     492        -rm -f concurrency/libcfa_a-preemption.$(OBJEXT)
     493        -rm -f concurrency/libcfa_a-thread.$(OBJEXT)
     494        -rm -f concurrency/libcfa_d_a-alarm.$(OBJEXT)
     495        -rm -f concurrency/libcfa_d_a-coroutine.$(OBJEXT)
     496        -rm -f concurrency/libcfa_d_a-invoke.$(OBJEXT)
     497        -rm -f concurrency/libcfa_d_a-kernel.$(OBJEXT)
     498        -rm -f concurrency/libcfa_d_a-monitor.$(OBJEXT)
     499        -rm -f concurrency/libcfa_d_a-preemption.$(OBJEXT)
     500        -rm -f concurrency/libcfa_d_a-thread.$(OBJEXT)
     501        -rm -f containers/libcfa_a-maybe.$(OBJEXT)
     502        -rm -f containers/libcfa_a-pair.$(OBJEXT)
     503        -rm -f containers/libcfa_a-result.$(OBJEXT)
     504        -rm -f containers/libcfa_a-vector.$(OBJEXT)
     505        -rm -f containers/libcfa_d_a-maybe.$(OBJEXT)
     506        -rm -f containers/libcfa_d_a-pair.$(OBJEXT)
     507        -rm -f containers/libcfa_d_a-result.$(OBJEXT)
     508        -rm -f containers/libcfa_d_a-vector.$(OBJEXT)
     509        -rm -f libhdr/libcfa_a-libdebug.$(OBJEXT)
     510        -rm -f libhdr/libcfa_d_a-libdebug.$(OBJEXT)
    580511
    581512distclean-compile:
     
    583514
    584515@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-assert.Po@am__quote@
    585 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-exception.Po@am__quote@
    586516@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-fstream.Po@am__quote@
    587517@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-interpose.Po@am__quote@
     
    594524@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
    595525@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
    596 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-exception.Po@am__quote@
    597526@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-fstream.Po@am__quote@
    598527@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-interpose.Po@am__quote@
     
    921850@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
    922851
    923 libcfa_d_a-exception.obj: exception.c
    924 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-exception.Tpo -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
    925 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-exception.Tpo $(DEPDIR)/libcfa_d_a-exception.Po
    926 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='exception.c' object='libcfa_d_a-exception.obj' libtool=no @AMDEPBACKSLASH@
    927 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    928 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
    929 
    930852concurrency/libcfa_d_a-alarm.o: concurrency/alarm.c
    931853@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo -c -o concurrency/libcfa_d_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
     
    12221144@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`
    12231145
    1224 libcfa_a-exception.obj: exception.c
    1225 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_a-exception.Tpo -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
    1226 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-exception.Tpo $(DEPDIR)/libcfa_a-exception.Po
    1227 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='exception.c' object='libcfa_a-exception.obj' libtool=no @AMDEPBACKSLASH@
    1228 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1229 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi`
    1230 
    12311146concurrency/libcfa_a-alarm.o: concurrency/alarm.c
    12321147@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-alarm.Tpo -c -o concurrency/libcfa_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c
     
    12651180install-nobase_cfa_includeHEADERS: $(nobase_cfa_include_HEADERS)
    12661181        @$(NORMAL_INSTALL)
     1182        test -z "$(cfa_includedir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)"
    12671183        @list='$(nobase_cfa_include_HEADERS)'; test -n "$(cfa_includedir)" || list=; \
    1268         if test -n "$$list"; then \
    1269           echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)'"; \
    1270           $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)" || exit 1; \
    1271         fi; \
    12721184        $(am__nobase_list) | while read dir files; do \
    12731185          xfiles=; for file in $$files; do \
     
    12761188          test -z "$$xfiles" || { \
    12771189            test "x$$dir" = x. || { \
    1278               echo " $(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
     1190              echo "$(MKDIR_P) '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
    12791191              $(MKDIR_P) "$(DESTDIR)$(cfa_includedir)/$$dir"; }; \
    12801192            echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(cfa_includedir)/$$dir'"; \
     
    12881200        dir='$(DESTDIR)$(cfa_includedir)'; $(am__uninstall_files_from_dir)
    12891201
    1290 ID: $(am__tagged_files)
    1291         $(am__define_uniq_tagged_files); mkid -fID $$unique
    1292 tags: tags-am
    1293 TAGS: tags
    1294 
    1295 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     1202ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     1203        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     1204        unique=`for i in $$list; do \
     1205            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     1206          done | \
     1207          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     1208              END { if (nonempty) { for (i in files) print i; }; }'`; \
     1209        mkid -fID $$unique
     1210tags: TAGS
     1211
     1212TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     1213                $(TAGS_FILES) $(LISP)
    12961214        set x; \
    12971215        here=`pwd`; \
    1298         $(am__define_uniq_tagged_files); \
     1216        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     1217        unique=`for i in $$list; do \
     1218            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     1219          done | \
     1220          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     1221              END { if (nonempty) { for (i in files) print i; }; }'`; \
    12991222        shift; \
    13001223        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    13081231          fi; \
    13091232        fi
    1310 ctags: ctags-am
    1311 
    1312 CTAGS: ctags
    1313 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    1314         $(am__define_uniq_tagged_files); \
     1233ctags: CTAGS
     1234CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     1235                $(TAGS_FILES) $(LISP)
     1236        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     1237        unique=`for i in $$list; do \
     1238            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     1239          done | \
     1240          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     1241              END { if (nonempty) { for (i in files) print i; }; }'`; \
    13151242        test -z "$(CTAGS_ARGS)$$unique" \
    13161243          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    13211248          && $(am__cd) $(top_srcdir) \
    13221249          && gtags -i $(GTAGS_ARGS) "$$here"
    1323 cscopelist: cscopelist-am
    1324 
    1325 cscopelist-am: $(am__tagged_files)
    1326         list='$(am__tagged_files)'; \
    1327         case "$(srcdir)" in \
    1328           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    1329           *) sdir=$(subdir)/$(srcdir) ;; \
    1330         esac; \
    1331         for i in $$list; do \
    1332           if test -f "$$i"; then \
    1333             echo "$(subdir)/$$i"; \
    1334           else \
    1335             echo "$$sdir/$$i"; \
    1336           fi; \
    1337         done >> $(top_builddir)/cscope.files
    13381250
    13391251distclean-tags:
     
    14871399.MAKE: install-am install-strip
    14881400
    1489 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    1490         clean-libLIBRARIES cscopelist-am ctags ctags-am distclean \
    1491         distclean-compile distclean-generic distclean-tags distdir dvi \
    1492         dvi-am html html-am info info-am install install-am \
    1493         install-data install-data-am install-dvi install-dvi-am \
    1494         install-exec install-exec-am install-html install-html-am \
    1495         install-info install-info-am install-libLIBRARIES install-man \
     1401.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
     1402        clean-libLIBRARIES ctags distclean distclean-compile \
     1403        distclean-generic distclean-tags distdir dvi dvi-am html \
     1404        html-am info info-am install install-am install-data \
     1405        install-data-am install-dvi install-dvi-am install-exec \
     1406        install-exec-am install-html install-html-am install-info \
     1407        install-info-am install-libLIBRARIES install-man \
    14961408        install-nobase_cfa_includeHEADERS install-pdf install-pdf-am \
    14971409        install-ps install-ps-am install-strip installcheck \
     
    14991411        maintainer-clean-generic maintainer-clean-local mostlyclean \
    15001412        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    1501         tags tags-am uninstall uninstall-am uninstall-libLIBRARIES \
     1413        tags uninstall uninstall-am uninstall-libLIBRARIES \
    15021414        uninstall-nobase_cfa_includeHEADERS
    1503 
    1504 .PRECIOUS: Makefile
    15051415
    15061416
  • src/libcfa/exception.c

    r208e5be rb1e63ac5  
    3737// This macro should be the only thing that needs to change across machines.
    3838// Used in the personality function, way down in termination.
    39 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)(exception *)
     39// struct _Unwind_Context * -> _Unwind_Reason_Code(*)()
    4040#define MATCHER_FROM_CONTEXT(ptr_to_context) \
    41         (*(_Unwind_Reason_Code(**)(exception*))(_Unwind_GetCFA(ptr_to_context) + 8))
     41        (*(_Unwind_Reason_Code(**)())(_Unwind_GetCFA(ptr_to_context) + 8))
    4242
    4343
    4444// RESUMPTION ================================================================
    4545
    46 void __cfaehm__throw_resumption(exception * except) {
    47 
    48         // DEBUG
    49         printf("Throwing resumption exception %d\n", *except);
    50 
    51         struct __cfaehm__try_resume_node * original_head = shared_stack.current_resume;
    52         struct __cfaehm__try_resume_node * current =
     46void __cfaehm__throw_resume(exception except) {
     47
     48        // DEBUG
     49        printf("Throwing resumption exception %d\n", except);
     50
     51        struct __try_resume_node * original_head = shared_stack.current_resume;
     52        struct __try_resume_node * current =
    5353                (original_head) ? original_head->next : shared_stack.top_resume;
    5454
    5555        for ( ; current ; current = current->next) {
    5656                shared_stack.current_resume = current;
    57                 if (current->handler(except)) {
     57                if (current->try_to_handle(except)) {
    5858                        shared_stack.current_resume = original_head;
    5959                        return;
     
    6161        }
    6262
    63         printf("Unhandled exception %d\n", *except);
     63        printf("Unhandled exception %d\n", except);
    6464        shared_stack.current_resume = original_head;
    6565
    6666        // Fall back to termination:
    67         __cfaehm__throw_termination(except);
     67        __cfaehm__throw_terminate(except);
    6868        // TODO: Default handler for resumption.
    6969}
     
    7373 * after the node is built but before it is made the top node.
    7474 */
    75 void __cfaehm__try_resume_setup(struct __cfaehm__try_resume_node * node,
    76                         int (*handler)(exception * except)) {
     75void __try_resume_setup(struct __try_resume_node * node,
     76                        bool (*handler)(exception except)) {
    7777        node->next = shared_stack.top_resume;
    78         node->handler = handler;
     78        node->try_to_handle = handler;
    7979        shared_stack.top_resume = node;
    8080}
    8181
    82 void __cfaehm__try_resume_cleanup(struct __cfaehm__try_resume_node * node) {
     82void __try_resume_cleanup(struct __try_resume_node * node) {
    8383        shared_stack.top_resume = node->next;
    8484}
     
    111111}
    112112
    113 void __cfaehm__throw_termination( exception * val ) {
     113void __cfaehm__throw_terminate( int val ) {
    114114        // Store the current exception
    115         shared_stack.current_exception = *val;
    116 
    117         // DEBUG
    118         printf("Throwing termination exception %d\n", *val);
     115        shared_stack.current_exception = val;
     116
     117        // DEBUG
     118        printf("Throwing termination exception %d\n", val);
    119119
    120120        // Call stdlibc to raise the exception
     
    147147
    148148// Nesting this the other way would probably be faster.
    149 void __cfaehm__rethrow_termination(void) {
     149void __cfaehm__rethrow_terminate(void) {
    150150        // DEBUG
    151151        printf("Rethrowing termination exception\n");
    152152
    153         __cfaehm__throw_termination(&shared_stack.current_exception);
     153        __cfaehm__throw_terminate(shared_stack.current_exception);
    154154}
    155155
     
    261261                                        // _Unwind_Reason_Code (*matcher)() = (_Unwind_Reason_Code (*)())lsd_info.LPStart + imatcher;                                   
    262262
    263                                         _Unwind_Reason_Code (*matcher)(exception *) =
     263                                        _Unwind_Reason_Code (*matcher)() =
    264264                                                MATCHER_FROM_CONTEXT(context);
    265                                         int index = matcher(&shared_stack.current_exception);
     265                                        int index = matcher(shared_stack.current_exception);
    266266                                        _Unwind_Reason_Code ret = (0 == index)
    267267                                                ? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND;
     
    322322// for details
    323323__attribute__((noinline))
    324 void __cfaehm__try_terminate(void (*try_block)(),
    325                 void (*catch_block)(int index, exception * except),
    326                 __attribute__((unused)) int (*match_block)(exception * except)) {
     324void __try_terminate(void (*try_block)(),
     325                void (*catch_block)(int index, exception except),
     326                __attribute__((unused)) int (*match_block)(exception except)) {
    327327        //! volatile int xy = 0;
    328328        //! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy);
     
    364364        // Exception handler
    365365        catch_block(shared_stack.current_handler_index,
    366                     &shared_stack.current_exception);
     366                    shared_stack.current_exception);
    367367}
    368368
     
    384384        // Body uses language specific data and therefore could be modified arbitrarily
    385385        ".LLSDACSBCFA2:\n"                                              // BODY start
    386         "       .uleb128 .TRYSTART-__cfaehm__try_terminate\n"           // Handled area start  (relative to start of function)
     386        "       .uleb128 .TRYSTART-__try_terminate\n"           // Handled area start  (relative to start of function)
    387387        "       .uleb128 .TRYEND-.TRYSTART\n"                           // Handled area length
    388         "       .uleb128 .CATCH-__cfaehm__try_terminate\n"                              // Hanlder landing pad adress  (relative to start of function)
     388        "       .uleb128 .CATCH-__try_terminate\n"                              // Hanlder landing pad adress  (relative to start of function)
    389389        "       .uleb128 1\n"                                           // Action code, gcc seems to use always 0
    390390        ".LLSDACSECFA2:\n"                                              // BODY end
    391391        "       .text\n"                                                        // TABLE footer
    392         "       .size   __cfaehm__try_terminate, .-__cfaehm__try_terminate\n"
     392        "       .size   __try_terminate, .-__try_terminate\n"
    393393        "       .ident  \"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n"
    394394//      "       .section        .note.GNU-stack,\"x\",@progbits\n"
  • src/libcfa/exception.h

    r208e5be rb1e63ac5  
    3838// Data structure creates a list of resume handlers.
    3939struct __cfaehm__try_resume_node {
    40     struct __cfaehm__try_resume_node * next;
     40    __cfaehm__try_resume_node * next;
    4141    int (*handler)(exception * except);
    4242};
    4343
    4444void __cfaehm__try_resume_setup(
    45     struct __cfaehm__try_resume_node * node,
     45    __cfaehm__try_resume_node * node,
    4646    int (*handler)(exception * except));
    4747void __cfaehm__try_resume_cleanup(
    48     struct __cfaehm__try_resume_node * node);
     48    __cfaehm__try_resume_node * node);
    4949
    5050// Check for a standard way to call fake deconstructors.
  • src/libcfa/fstream

    r208e5be rb1e63ac5  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul  1 16:37:53 2017
    13 // Update Count     : 112
     12// Last Modified On : Mon May 15 18:11:09 2017
     13// Update Count     : 104
    1414//
    1515
     
    2424        _Bool sepDefault;
    2525        _Bool sepOnOff;
    26         _Bool lastSepOn;
    2726        const char * sepCur;
    2827        char separator[separateSize];
     
    3635const char * sepGetCur( ofstream * );
    3736void sepSetCur( ofstream *, const char * );
    38 _Bool lastSepOn( ofstream * );
    3937
    4038// public
  • src/libcfa/fstream.c

    r208e5be rb1e63ac5  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul  1 16:37:54 2017
    13 // Update Count     : 242
     12// Last Modified On : Mon May 15 18:11:11 2017
     13// Update Count     : 234
    1414//
    1515
     
    3333        this->sepDefault = sepDefault;
    3434        this->sepOnOff = sepOnOff;
    35         this->lastSepOn = false;
    3635        sepSet( this, separator );
    3736        sepSetCur( this, sepGet( this ) );
     
    4039
    4140// private
    42 _Bool lastSepOn( ofstream * os ) { return os->lastSepOn; }
    43 _Bool sepPrt( ofstream * os ) { os->lastSepOn = false; return os->sepOnOff; }
     41_Bool sepPrt( ofstream * os ) { return os->sepOnOff; }
    4442void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; }
    4543void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; }
     
    4846
    4947// public
    50 void sepOn( ofstream * os ) { os->lastSepOn = true; os->sepOnOff = true; }
    51 void sepOff( ofstream * os ) { os->lastSepOn = false; os->sepOnOff = 0; }
     48void sepOn( ofstream * os ) { os->sepOnOff = 1; }
     49void sepOff( ofstream * os ) { os->sepOnOff = 0; }
    5250
    5351_Bool sepDisable( ofstream *os ) {
    5452        _Bool temp = os->sepDefault;
    5553        os->sepDefault = false;
    56         os->lastSepOn = false;
    5754        sepReset( os );
    5855        return temp;
     
    9592                exit( EXIT_FAILURE );
    9693        } // if
    97         ?{}( os, file, true, false, " ", ", " );
     94        ?{}( os, file, 1, 0, " ", ", " );
    9895} // open
    9996
     
    135132} // fmt
    136133
    137 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), true, false, " ", ", " };
     134static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, " ", ", " };
    138135ofstream *sout = &soutFile;
    139 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), true, false, " ", ", " };
     136static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, " ", ", " };
    140137ofstream *serr = &serrFile;
    141138
  • src/libcfa/iostream

    r208e5be rb1e63ac5  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul  2 08:42:56 2017
    13 // Update Count     : 110
     12// Last Modified On : Mon May 15 18:08:44 2017
     13// Update Count     : 105
    1414//
    1515
     
    2626        const char * sepGetCur( ostype * );                                     // get current separator string
    2727        void sepSetCur( ostype *, const char * );                       // set current separator string
    28         _Bool lastSepOn( ostype * );                                            // last manipulator is setOn (context sensitive)
    2928        // public
    3029        void sepOn( ostype * );                                                         // turn separator state on
     
    4443        ostype * write( ostype *, const char *, unsigned long int );
    4544        int fmt( ostype *, const char fmt[], ... );
    46 }; // ostream
     45};
    4746
    4847trait writeable( otype T ) {
    4948        forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T );
    50 }; // writeable
     49};
    5150
    5251// implement writable for intrinsic types
     
    104103        istype * ungetc( istype *, char );
    105104        int fmt( istype *, const char fmt[], ... );
    106 }; // istream
     105};
    107106
    108107trait readable( otype T ) {
    109108        forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T );
    110 }; // readable
     109};
    111110
    112111forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * );
  • src/libcfa/iostream.c

    r208e5be rb1e63ac5  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul  2 08:54:02 2017
    13 // Update Count     : 375
     12// Last Modified On : Mon May  8 18:24:23 2017
     13// Update Count     : 369
    1414//
    1515
     
    201201forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } )
    202202ostype * ?|?( ostype * os, T arg, Params rest ) {
     203        sepSetCur( os, sepGetTuple( os ) );                                     // switch to tuple separator
    203204        os | arg;                                                                                       // print first argument
    204         sepSetCur( os, sepGetTuple( os ) );                                     // switch to tuple separator
    205205        os | rest;                                                                                      // print remaining arguments
    206206        sepSetCur( os, sepGet( os ) );                                          // switch to regular separator
     
    217217forall( dtype ostype | ostream( ostype ) )
    218218ostype * endl( ostype * os ) {
    219         if ( lastSepOn( os ) ) fmt( os, "%s", sepGetCur( os ) );
    220219        os | '\n';
    221220        flush( os );
  • src/main.cc

    r208e5be rb1e63ac5  
    2525using namespace std;
    2626
    27 #include "Parser/ParserTypes.h"
     27#include "Parser/parser.hh"
    2828#include "Parser/TypedefTable.h"
    2929#include "GenPoly/Lvalue.h"
     
    3939#include "CodeTools/TrackLoc.h"
    4040#include "ControlStruct/Mutate.h"
    41 #include "ControlStruct/ExceptTranslate.h"
    4241#include "SymTab/Validate.h"
    4342#include "ResolvExpr/AlternativePrinter.h"
     
    291290                Tuples::expandUniqueExpr( translationUnit );
    292291
    293                 OPTPRINT( "translateEHM" );
    294                 ControlStruct::translateEHM( translationUnit );
    295 
    296292                OPTPRINT( "convertSpecializations" ) // needs to happen before tuple types are expanded
    297293                GenPoly::convertSpecializations( translationUnit );
  • src/prelude/Makefile.am

    r208e5be rb1e63ac5  
    2323noinst_DATA = ../libcfa/libcfa-prelude.c
    2424
    25 CC = ${abs_top_srcdir}/src/driver/cfa
    26 
    2725$(DEPDIR) :
    2826        mkdir $(DEPDIR)
     
    4745
    4846# create forward declarations for cfa builtins
    49 builtins.cf : builtins.c ${CC}
    50         ${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
     47builtins.cf : builtins.c
     48        ${AM_V_GEN}@BACKEND_CC@ -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
    5149        ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
    5250
  • src/prelude/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1920
    2021VPATH = @srcdir@
    21 am__is_gnu_make = { \
    22   if test -z '$(MAKELEVEL)'; then \
    23     false; \
    24   elif test -n '$(MAKE_HOST)'; then \
    25     true; \
    26   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    27     true; \
    28   else \
    29     false; \
    30   fi; \
    31 }
    32 am__make_running_with_option = \
    33   case $${target_option-} in \
    34       ?) ;; \
    35       *) echo "am__make_running_with_option: internal error: invalid" \
    36               "target option '$${target_option-}' specified" >&2; \
    37          exit 1;; \
    38   esac; \
    39   has_opt=no; \
    40   sane_makeflags=$$MAKEFLAGS; \
    41   if $(am__is_gnu_make); then \
    42     sane_makeflags=$$MFLAGS; \
    43   else \
    44     case $$MAKEFLAGS in \
    45       *\\[\ \   ]*) \
    46         bs=\\; \
    47         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    48           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    49     esac; \
    50   fi; \
    51   skip_next=no; \
    52   strip_trailopt () \
    53   { \
    54     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    55   }; \
    56   for flg in $$sane_makeflags; do \
    57     test $$skip_next = yes && { skip_next=no; continue; }; \
    58     case $$flg in \
    59       *=*|--*) continue;; \
    60         -*I) strip_trailopt 'I'; skip_next=yes;; \
    61       -*I?*) strip_trailopt 'I';; \
    62         -*O) strip_trailopt 'O'; skip_next=yes;; \
    63       -*O?*) strip_trailopt 'O';; \
    64         -*l) strip_trailopt 'l'; skip_next=yes;; \
    65       -*l?*) strip_trailopt 'l';; \
    66       -[dEDm]) skip_next=yes;; \
    67       -[JT]) skip_next=yes;; \
    68     esac; \
    69     case $$flg in \
    70       *$$target_option*) has_opt=yes; break;; \
    71     esac; \
    72   done; \
    73   test $$has_opt = yes
    74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7622pkgdatadir = $(datadir)/@PACKAGE@
    7723pkgincludedir = $(includedir)/@PACKAGE@
     
    9339host_triplet = @host@
    9440subdir = src/prelude
     41DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    9542ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9643am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9744am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9845        $(ACLOCAL_M4)
    99 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10046mkinstalldirs = $(install_sh) -d
    10147CONFIG_HEADER = $(top_builddir)/config.h
    10248CONFIG_CLEAN_FILES =
    10349CONFIG_CLEAN_VPATH_FILES =
    104 AM_V_P = $(am__v_P_@AM_V@)
    105 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    106 am__v_P_0 = false
    107 am__v_P_1 = :
    10850AM_V_GEN = $(am__v_GEN_@AM_V@)
    10951am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    110 am__v_GEN_0 = @echo "  GEN     " $@;
    111 am__v_GEN_1 =
     52am__v_GEN_0 = @echo "  GEN   " $@;
    11253AM_V_at = $(am__v_at_@AM_V@)
    11354am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    11455am__v_at_0 = @
    115 am__v_at_1 =
    11656SOURCES =
    11757DIST_SOURCES =
    118 am__can_run_installinfo = \
    119   case $$AM_UPDATE_INFO_DIR in \
    120     n|no|NO) false;; \
    121     *) (install-info --version) >/dev/null 2>&1;; \
    122   esac
    12358am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
    12459am__vpath_adj = case $$p in \
     
    15085am__installdirs = "$(DESTDIR)$(cfalibdir)"
    15186DATA = $(cfalib_DATA) $(noinst_DATA)
    152 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    153 am__DIST_COMMON = $(srcdir)/Makefile.in
    15487DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    15588ACLOCAL = @ACLOCAL@
     
    16295AWK = @AWK@
    16396BACKEND_CC = @BACKEND_CC@
    164 CC = ${abs_top_srcdir}/src/driver/cfa
     97CC = @CC@
    16598CCAS = @CCAS@
    16699CCASDEPMODE = @CCASDEPMODE@
     
    264197program_transform_name = @program_transform_name@
    265198psdir = @psdir@
    266 runstatedir = @runstatedir@
    267199sbindir = @sbindir@
    268200sharedstatedir = @sharedstatedir@
     
    294226          esac; \
    295227        done; \
    296         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/prelude/Makefile'; \
     228        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/prelude/Makefile'; \
    297229        $(am__cd) $(top_srcdir) && \
    298           $(AUTOMAKE) --gnu src/prelude/Makefile
     230          $(AUTOMAKE) --foreign src/prelude/Makefile
     231.PRECIOUS: Makefile
    299232Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    300233        @case '$?' in \
     
    316249install-cfalibDATA: $(cfalib_DATA)
    317250        @$(NORMAL_INSTALL)
     251        test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
    318252        @list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
    319         if test -n "$$list"; then \
    320           echo " $(MKDIR_P) '$(DESTDIR)$(cfalibdir)'"; \
    321           $(MKDIR_P) "$(DESTDIR)$(cfalibdir)" || exit 1; \
    322         fi; \
    323253        for p in $$list; do \
    324254          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
     
    335265        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
    336266        dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
    337 tags TAGS:
    338 
    339 ctags CTAGS:
    340 
    341 cscope cscopelist:
     267tags: TAGS
     268TAGS:
     269
     270ctags: CTAGS
     271CTAGS:
    342272
    343273
     
    479409.MAKE: install-am install-strip
    480410
    481 .PHONY: all all-am check check-am clean clean-generic cscopelist-am \
    482         ctags-am distclean distclean-generic distdir dvi dvi-am html \
    483         html-am info info-am install install-am install-cfalibDATA \
    484         install-data install-data-am install-dvi install-dvi-am \
    485         install-exec install-exec-am install-html install-html-am \
    486         install-info install-info-am install-man install-pdf \
    487         install-pdf-am install-ps install-ps-am install-strip \
    488         installcheck installcheck-am installdirs maintainer-clean \
     411.PHONY: all all-am check check-am clean clean-generic distclean \
     412        distclean-generic distdir dvi dvi-am html html-am info info-am \
     413        install install-am install-cfalibDATA install-data \
     414        install-data-am install-dvi install-dvi-am install-exec \
     415        install-exec-am install-html install-html-am install-info \
     416        install-info-am install-man install-pdf install-pdf-am \
     417        install-ps install-ps-am install-strip installcheck \
     418        installcheck-am installdirs maintainer-clean \
    489419        maintainer-clean-generic maintainer-clean-local mostlyclean \
    490         mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
    491         uninstall-am uninstall-cfalibDATA
    492 
    493 .PRECIOUS: Makefile
     420        mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
     421        uninstall-cfalibDATA
    494422
    495423
     
    516444
    517445# create forward declarations for cfa builtins
    518 builtins.cf : builtins.c ${CC}
    519         ${AM_V_GEN}${CC} -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
     446builtins.cf : builtins.c
     447        ${AM_V_GEN}@BACKEND_CC@ -E -P ${<} -o ${@} -MD -MP -MF $(DEPDIR)/builtins.Po
    520448        ${AM_V_at}sed -i 's/builtins.o/builtins.cf/g' $(DEPDIR)/builtins.Po
    521449
  • src/tests/.expect/io.txt

    r208e5be rb1e63ac5  
    44123
    55
    6 opening delimiters
    76x (1 x [2 x {3 x =4 x $5 x £6 x ¥7 x ¡8 x ¿9 x «10
    8 
    9 closing delimiters
    10 1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x
    11 
    12 opening/closing delimiters
     71, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x
    138x`1`x'2'x"3"x:4:x 5 x   6       x
    1497
     
    1914x
    201510
    21 x
    22 
    23 override opening/closing delimiters
     16x
    2417x ( 1 ) x 2 , x 3 :x: 4
    25 
    26 input bacis types
    27 
    28 output basic types
    2918A
    30191 2 3 4 5 6 7 8
     
    32211.1+2.3i 1.1-2.3i 1.1-2.3i
    3322
    34 tuples
    35 1, 2, 3 3, 4, 5
    36 
    37 toggle separator
    38231.11.21.3
    39241.1+2.3i1.1-2.3i1.1-2.3i
    40  abcxyz 
    41 abcxyz 
     25 abcxyz
     26abcxyz
    4227
    43 change separator
    44 from "  "to " , $"
    45281.1, $1.2, $1.3
    46291.1+2.3i, $1.1-2.3i, $1.1-2.3i
    47 abc, $xyz, $
    48 1, 2, 3, $3, 4, 5
     30abc, $xyz
    4931
    50 from ", $"to " "
    51 1.1 1.2 1.3
    52 1.1+2.3i 1.1-2.3i 1.1-2.3i
    53 abc xyz
    54 1, 2, 3 3, 4, 5
    55 
    56  1 2 3
     321, 2, 3, 4
     331, $2, $3 ", $"
     341 2 3 " "
     35 1 2 3
    573612 3
    58  1 2 3
    59 1 2 3
    60  1 2 3
    61 
    6237123
    63381 23
    64391 2 3
    65 123
    66 1 2 3
    67 123
    68 1 2 3
    69 
    70 1 2 3 3 4 5 " "
    71 1, 2, 3 3, 4, 5 ", "
    72 1, 2, 3 3, 4, 5
    73 
     401 2 3 4 " "
     411, 2, 3, 4 ", "
     421, 2, 3, 4
    74433, 4, a, 7.2
    75443, 4, a, 7.2
    76453 4 a 7.2
    7746 3 4 a 7.234a7.23 4 a 7.2
    78 3-4-a-7.2^3^4^3-4-a-7.2
     473-4-a-7.2^3^4-3-4-a-7.2
  • src/tests/Makefile.am

    r208e5be rb1e63ac5  
    3232BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS}
    3333TEST_FLAGS = $(if $(test), 2> .err/${@}.log, )
    34 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}
     34CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}
    3535CC = @CFA_BINDIR@/@CFA_NAME@
    3636
     
    3939
    4040fstream_test_SOURCES = fstream_test.c
    41 fstream_test_CFLAGS = $(if $(test), 2>> .err/fstream_test.log, ) ${BUILD_FLAGS}
    42 
    4341vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
    44 vector_test_CFLAGS = $(if $(test), 2>> .err/vector_test.log, ) ${BUILD_FLAGS}
    45 
    4642avl_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
    47 avl_test_CFLAGS = $(if $(test), 2>> .err/avl_test.log, ) ${BUILD_FLAGS}
    4843
    4944all-local :
     
    6762
    6863% : %.c @CFA_BINDIR@/@CFA_NAME@
    69         ${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@}
     64        ${CC} ${CFLAGS} ${<} -o ${@}
    7065
    7166dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
    72         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     67        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    7368
    7469dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
    75         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@}
     70        ${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
    7671
    7772declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@
    78         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     73        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    7974
    8075gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@
    81         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     76        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    8277
    8378extension : extension.c @CFA_BINDIR@/@CFA_NAME@
    84         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     79        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    8580
    8681attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@
    87         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     82        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    8883
    8984KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
    90         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     85        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    9186
    9287gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@
    93         ${CC} ${AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@}
     88        ${CC} ${CFLAGS} -lgmp ${<} -o ${@}
    9489
    9590memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@
    96         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     91        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    9792
    9893completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@
    99         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     94        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
  • src/tests/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1819###############################################################################
    1920VPATH = @srcdir@
    20 am__is_gnu_make = { \
    21   if test -z '$(MAKELEVEL)'; then \
    22     false; \
    23   elif test -n '$(MAKE_HOST)'; then \
    24     true; \
    25   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    26     true; \
    27   else \
    28     false; \
    29   fi; \
    30 }
    31 am__make_running_with_option = \
    32   case $${target_option-} in \
    33       ?) ;; \
    34       *) echo "am__make_running_with_option: internal error: invalid" \
    35               "target option '$${target_option-}' specified" >&2; \
    36          exit 1;; \
    37   esac; \
    38   has_opt=no; \
    39   sane_makeflags=$$MAKEFLAGS; \
    40   if $(am__is_gnu_make); then \
    41     sane_makeflags=$$MFLAGS; \
    42   else \
    43     case $$MAKEFLAGS in \
    44       *\\[\ \   ]*) \
    45         bs=\\; \
    46         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    47           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    48     esac; \
    49   fi; \
    50   skip_next=no; \
    51   strip_trailopt () \
    52   { \
    53     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    54   }; \
    55   for flg in $$sane_makeflags; do \
    56     test $$skip_next = yes && { skip_next=no; continue; }; \
    57     case $$flg in \
    58       *=*|--*) continue;; \
    59         -*I) strip_trailopt 'I'; skip_next=yes;; \
    60       -*I?*) strip_trailopt 'I';; \
    61         -*O) strip_trailopt 'O'; skip_next=yes;; \
    62       -*O?*) strip_trailopt 'O';; \
    63         -*l) strip_trailopt 'l'; skip_next=yes;; \
    64       -*l?*) strip_trailopt 'l';; \
    65       -[dEDm]) skip_next=yes;; \
    66       -[JT]) skip_next=yes;; \
    67     esac; \
    68     case $$flg in \
    69       *$$target_option*) has_opt=yes; break;; \
    70     esac; \
    71   done; \
    72   test $$has_opt = yes
    73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7521pkgdatadir = $(datadir)/@PACKAGE@
    7622pkgincludedir = $(includedir)/@PACKAGE@
     
    9541        avl_test$(EXEEXT)
    9642subdir = src/tests
     43DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    9744ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9845am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9946am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    10047        $(ACLOCAL_M4)
    101 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10248mkinstalldirs = $(install_sh) -d
    10349CONFIG_HEADER = $(top_builddir)/config.h
    10450CONFIG_CLEAN_FILES =
    10551CONFIG_CLEAN_VPATH_FILES =
    106 am__dirstamp = $(am__leading_dot)dirstamp
    107 am_avl_test_OBJECTS = avltree/avl_test-avl_test.$(OBJEXT) \
    108         avltree/avl_test-avl0.$(OBJEXT) \
    109         avltree/avl_test-avl1.$(OBJEXT) \
    110         avltree/avl_test-avl2.$(OBJEXT) \
    111         avltree/avl_test-avl3.$(OBJEXT) \
    112         avltree/avl_test-avl4.$(OBJEXT) \
    113         avltree/avl_test-avl-private.$(OBJEXT)
     52am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
     53        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     54        avl-private.$(OBJEXT)
    11455avl_test_OBJECTS = $(am_avl_test_OBJECTS)
    11556avl_test_LDADD = $(LDADD)
    116 avl_test_LINK = $(CCLD) $(avl_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
    117         $(LDFLAGS) -o $@
    118 am_fstream_test_OBJECTS = fstream_test-fstream_test.$(OBJEXT)
     57am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
    11958fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
    12059fstream_test_LDADD = $(LDADD)
    121 fstream_test_LINK = $(CCLD) $(fstream_test_CFLAGS) $(CFLAGS) \
    122         $(AM_LDFLAGS) $(LDFLAGS) -o $@
    123 am_vector_test_OBJECTS = vector/vector_test-vector_int.$(OBJEXT) \
    124         vector/vector_test-array.$(OBJEXT) \
    125         vector/vector_test-vector_test.$(OBJEXT)
     60am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \
     61        vector_test.$(OBJEXT)
    12662vector_test_OBJECTS = $(am_vector_test_OBJECTS)
    12763vector_test_LDADD = $(LDADD)
    128 vector_test_LINK = $(CCLD) $(vector_test_CFLAGS) $(CFLAGS) \
    129         $(AM_LDFLAGS) $(LDFLAGS) -o $@
    130 AM_V_P = $(am__v_P_@AM_V@)
    131 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    132 am__v_P_0 = false
    133 am__v_P_1 = :
    134 AM_V_GEN = $(am__v_GEN_@AM_V@)
    135 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    136 am__v_GEN_0 = @echo "  GEN     " $@;
    137 am__v_GEN_1 =
    138 AM_V_at = $(am__v_at_@AM_V@)
    139 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    140 am__v_at_0 = @
    141 am__v_at_1 =
    14264DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    14365depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    14769am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    14870am__v_lt_0 = --silent
    149 am__v_lt_1 =
    15071COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    15172        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    15273AM_V_CC = $(am__v_CC_@AM_V@)
    15374am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    154 am__v_CC_0 = @echo "  CC      " $@;
    155 am__v_CC_1 =
     75am__v_CC_0 = @echo "  CC    " $@;
     76AM_V_at = $(am__v_at_@AM_V@)
     77am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     78am__v_at_0 = @
    15679CCLD = $(CC)
    15780LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    15881AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    15982am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    160 am__v_CCLD_0 = @echo "  CCLD    " $@;
    161 am__v_CCLD_1 =
     83am__v_CCLD_0 = @echo "  CCLD  " $@;
     84AM_V_GEN = $(am__v_GEN_@AM_V@)
     85am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     86am__v_GEN_0 = @echo "  GEN   " $@;
    16287SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    16388        $(vector_test_SOURCES)
    16489DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    16590        $(vector_test_SOURCES)
    166 am__can_run_installinfo = \
    167   case $$AM_UPDATE_INFO_DIR in \
    168     n|no|NO) false;; \
    169     *) (install-info --version) >/dev/null 2>&1;; \
    170   esac
    171 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    172 # Read a list of newline-separated strings from the standard input,
    173 # and print each of them once, without duplicates.  Input order is
    174 # *not* preserved.
    175 am__uniquify_input = $(AWK) '\
    176   BEGIN { nonempty = 0; } \
    177   { items[$$0] = 1; nonempty = 1; } \
    178   END { if (nonempty) { for (i in items) print i; }; } \
    179 '
    180 # Make sure the list of sources is unique.  This is necessary because,
    181 # e.g., the same source file might be shared among _SOURCES variables
    182 # for different programs/libraries.
    183 am__define_uniq_tagged_files = \
    184   list='$(am__tagged_files)'; \
    185   unique=`for i in $$list; do \
    186     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    187   done | $(am__uniquify_input)`
    18891ETAGS = etags
    18992CTAGS = ctags
    190 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp
    19193DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    19294ACLOCAL = @ACLOCAL@
     
    211113CFA_NAME = @CFA_NAME@
    212114CFA_PREFIX = @CFA_PREFIX@
    213 CFLAGS = @CFLAGS@
     115CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}
    214116CPP = @CPP@
    215117CPPFLAGS = @CPPFLAGS@
     
    301203program_transform_name = @program_transform_name@
    302204psdir = @psdir@
    303 runstatedir = @runstatedir@
    304205sbindir = @sbindir@
    305206sharedstatedir = @sharedstatedir@
     
    323224BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ ${EXTRA_FLAGS}
    324225TEST_FLAGS = $(if $(test), 2> .err/${@}.log, )
    325 AM_CFLAGS = ${TEST_FLAGS} ${BUILD_FLAGS}
    326226fstream_test_SOURCES = fstream_test.c
    327 fstream_test_CFLAGS = $(if $(test), 2>> .err/fstream_test.log, ) ${BUILD_FLAGS}
    328227vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
    329 vector_test_CFLAGS = $(if $(test), 2>> .err/vector_test.log, ) ${BUILD_FLAGS}
    330228avl_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
    331 avl_test_CFLAGS = $(if $(test), 2>> .err/avl_test.log, ) ${BUILD_FLAGS}
    332229all: all-am
    333230
     
    343240          esac; \
    344241        done; \
    345         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tests/Makefile'; \
     242        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/Makefile'; \
    346243        $(am__cd) $(top_srcdir) && \
    347           $(AUTOMAKE) --gnu src/tests/Makefile
     244          $(AUTOMAKE) --foreign src/tests/Makefile
     245.PRECIOUS: Makefile
    348246Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    349247        @case '$?' in \
     
    363261        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
    364262$(am__aclocal_m4_deps):
    365 avltree/$(am__dirstamp):
    366         @$(MKDIR_P) avltree
    367         @: > avltree/$(am__dirstamp)
    368 avltree/$(DEPDIR)/$(am__dirstamp):
    369         @$(MKDIR_P) avltree/$(DEPDIR)
    370         @: > avltree/$(DEPDIR)/$(am__dirstamp)
    371 avltree/avl_test-avl_test.$(OBJEXT): avltree/$(am__dirstamp) \
    372         avltree/$(DEPDIR)/$(am__dirstamp)
    373 avltree/avl_test-avl0.$(OBJEXT): avltree/$(am__dirstamp) \
    374         avltree/$(DEPDIR)/$(am__dirstamp)
    375 avltree/avl_test-avl1.$(OBJEXT): avltree/$(am__dirstamp) \
    376         avltree/$(DEPDIR)/$(am__dirstamp)
    377 avltree/avl_test-avl2.$(OBJEXT): avltree/$(am__dirstamp) \
    378         avltree/$(DEPDIR)/$(am__dirstamp)
    379 avltree/avl_test-avl3.$(OBJEXT): avltree/$(am__dirstamp) \
    380         avltree/$(DEPDIR)/$(am__dirstamp)
    381 avltree/avl_test-avl4.$(OBJEXT): avltree/$(am__dirstamp) \
    382         avltree/$(DEPDIR)/$(am__dirstamp)
    383 avltree/avl_test-avl-private.$(OBJEXT): avltree/$(am__dirstamp) \
    384         avltree/$(DEPDIR)/$(am__dirstamp)
    385 
    386263avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES)
    387264        @rm -f avl_test$(EXEEXT)
    388         $(AM_V_CCLD)$(avl_test_LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
    389 
     265        $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
    390266fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    391267        @rm -f fstream_test$(EXEEXT)
    392         $(AM_V_CCLD)$(fstream_test_LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    393 vector/$(am__dirstamp):
    394         @$(MKDIR_P) vector
    395         @: > vector/$(am__dirstamp)
    396 vector/$(DEPDIR)/$(am__dirstamp):
    397         @$(MKDIR_P) vector/$(DEPDIR)
    398         @: > vector/$(DEPDIR)/$(am__dirstamp)
    399 vector/vector_test-vector_int.$(OBJEXT): vector/$(am__dirstamp) \
    400         vector/$(DEPDIR)/$(am__dirstamp)
    401 vector/vector_test-array.$(OBJEXT): vector/$(am__dirstamp) \
    402         vector/$(DEPDIR)/$(am__dirstamp)
    403 vector/vector_test-vector_test.$(OBJEXT): vector/$(am__dirstamp) \
    404         vector/$(DEPDIR)/$(am__dirstamp)
    405 
     268        $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    406269vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    407270        @rm -f vector_test$(EXEEXT)
    408         $(AM_V_CCLD)$(vector_test_LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
     271        $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
    409272
    410273mostlyclean-compile:
    411274        -rm -f *.$(OBJEXT)
    412         -rm -f avltree/*.$(OBJEXT)
    413         -rm -f vector/*.$(OBJEXT)
    414275
    415276distclean-compile:
    416277        -rm -f *.tab.c
    417278
    418 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test-fstream_test.Po@am__quote@
    419 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl-private.Po@am__quote@
    420 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl0.Po@am__quote@
    421 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl1.Po@am__quote@
    422 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl2.Po@am__quote@
    423 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl3.Po@am__quote@
    424 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl4.Po@am__quote@
    425 @AMDEP_TRUE@@am__include@ @am__quote@avltree/$(DEPDIR)/avl_test-avl_test.Po@am__quote@
    426 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-array.Po@am__quote@
    427 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-vector_int.Po@am__quote@
    428 @AMDEP_TRUE@@am__include@ @am__quote@vector/$(DEPDIR)/vector_test-vector_test.Po@am__quote@
     279@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
     280@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     281@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@
     282@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@
     283@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@
     284@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@
     285@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@
     286@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@
     287@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
     288@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
     289@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
    429290
    430291.c.o:
    431 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    432 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    433 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     292@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     293@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    434294@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    435295@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    436 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
     296@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    437297
    438298.c.obj:
    439 @am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    440 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    441 @am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     299@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     300@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    442301@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    443302@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    444 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    445 
    446 avltree/avl_test-avl_test.o: avltree/avl_test.c
    447 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl_test.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl_test.Tpo -c -o avltree/avl_test-avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
    448 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl_test.Tpo avltree/$(DEPDIR)/avl_test-avl_test.Po
    449 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avltree/avl_test-avl_test.o' libtool=no @AMDEPBACKSLASH@
    450 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    451 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl_test.o `test -f 'avltree/avl_test.c' || echo '$(srcdir)/'`avltree/avl_test.c
    452 
    453 avltree/avl_test-avl_test.obj: avltree/avl_test.c
    454 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl_test.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl_test.Tpo -c -o avltree/avl_test-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`
    455 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl_test.Tpo avltree/$(DEPDIR)/avl_test-avl_test.Po
    456 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avltree/avl_test-avl_test.obj' libtool=no @AMDEPBACKSLASH@
    457 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    458 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-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`
    459 
    460 avltree/avl_test-avl0.o: avltree/avl0.c
    461 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl0.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl0.Tpo -c -o avltree/avl_test-avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
    462 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl0.Tpo avltree/$(DEPDIR)/avl_test-avl0.Po
    463 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avltree/avl_test-avl0.o' libtool=no @AMDEPBACKSLASH@
    464 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    465 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl0.o `test -f 'avltree/avl0.c' || echo '$(srcdir)/'`avltree/avl0.c
    466 
    467 avltree/avl_test-avl0.obj: avltree/avl0.c
    468 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl0.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl0.Tpo -c -o avltree/avl_test-avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
    469 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl0.Tpo avltree/$(DEPDIR)/avl_test-avl0.Po
    470 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avltree/avl_test-avl0.obj' libtool=no @AMDEPBACKSLASH@
    471 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    472 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl0.obj `if test -f 'avltree/avl0.c'; then $(CYGPATH_W) 'avltree/avl0.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl0.c'; fi`
    473 
    474 avltree/avl_test-avl1.o: avltree/avl1.c
    475 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl1.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl1.Tpo -c -o avltree/avl_test-avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
    476 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl1.Tpo avltree/$(DEPDIR)/avl_test-avl1.Po
    477 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avltree/avl_test-avl1.o' libtool=no @AMDEPBACKSLASH@
    478 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    479 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl1.o `test -f 'avltree/avl1.c' || echo '$(srcdir)/'`avltree/avl1.c
    480 
    481 avltree/avl_test-avl1.obj: avltree/avl1.c
    482 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl1.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl1.Tpo -c -o avltree/avl_test-avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
    483 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl1.Tpo avltree/$(DEPDIR)/avl_test-avl1.Po
    484 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avltree/avl_test-avl1.obj' libtool=no @AMDEPBACKSLASH@
    485 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    486 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl1.obj `if test -f 'avltree/avl1.c'; then $(CYGPATH_W) 'avltree/avl1.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl1.c'; fi`
    487 
    488 avltree/avl_test-avl2.o: avltree/avl2.c
    489 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl2.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl2.Tpo -c -o avltree/avl_test-avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
    490 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl2.Tpo avltree/$(DEPDIR)/avl_test-avl2.Po
    491 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avltree/avl_test-avl2.o' libtool=no @AMDEPBACKSLASH@
    492 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    493 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl2.o `test -f 'avltree/avl2.c' || echo '$(srcdir)/'`avltree/avl2.c
    494 
    495 avltree/avl_test-avl2.obj: avltree/avl2.c
    496 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl2.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl2.Tpo -c -o avltree/avl_test-avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
    497 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl2.Tpo avltree/$(DEPDIR)/avl_test-avl2.Po
    498 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avltree/avl_test-avl2.obj' libtool=no @AMDEPBACKSLASH@
    499 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    500 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl2.obj `if test -f 'avltree/avl2.c'; then $(CYGPATH_W) 'avltree/avl2.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl2.c'; fi`
    501 
    502 avltree/avl_test-avl3.o: avltree/avl3.c
    503 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl3.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl3.Tpo -c -o avltree/avl_test-avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
    504 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl3.Tpo avltree/$(DEPDIR)/avl_test-avl3.Po
    505 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avltree/avl_test-avl3.o' libtool=no @AMDEPBACKSLASH@
    506 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    507 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl3.o `test -f 'avltree/avl3.c' || echo '$(srcdir)/'`avltree/avl3.c
    508 
    509 avltree/avl_test-avl3.obj: avltree/avl3.c
    510 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl3.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl3.Tpo -c -o avltree/avl_test-avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
    511 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl3.Tpo avltree/$(DEPDIR)/avl_test-avl3.Po
    512 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avltree/avl_test-avl3.obj' libtool=no @AMDEPBACKSLASH@
    513 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    514 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl3.obj `if test -f 'avltree/avl3.c'; then $(CYGPATH_W) 'avltree/avl3.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl3.c'; fi`
    515 
    516 avltree/avl_test-avl4.o: avltree/avl4.c
    517 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl4.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl4.Tpo -c -o avltree/avl_test-avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
    518 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl4.Tpo avltree/$(DEPDIR)/avl_test-avl4.Po
    519 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avltree/avl_test-avl4.o' libtool=no @AMDEPBACKSLASH@
    520 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    521 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl4.o `test -f 'avltree/avl4.c' || echo '$(srcdir)/'`avltree/avl4.c
    522 
    523 avltree/avl_test-avl4.obj: avltree/avl4.c
    524 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl4.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl4.Tpo -c -o avltree/avl_test-avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
    525 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl4.Tpo avltree/$(DEPDIR)/avl_test-avl4.Po
    526 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avltree/avl_test-avl4.obj' libtool=no @AMDEPBACKSLASH@
    527 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    528 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl4.obj `if test -f 'avltree/avl4.c'; then $(CYGPATH_W) 'avltree/avl4.c'; else $(CYGPATH_W) '$(srcdir)/avltree/avl4.c'; fi`
    529 
    530 avltree/avl_test-avl-private.o: avltree/avl-private.c
    531 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl-private.o -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl-private.Tpo -c -o avltree/avl_test-avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
    532 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl-private.Tpo avltree/$(DEPDIR)/avl_test-avl-private.Po
    533 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avltree/avl_test-avl-private.o' libtool=no @AMDEPBACKSLASH@
    534 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    535 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-avl-private.o `test -f 'avltree/avl-private.c' || echo '$(srcdir)/'`avltree/avl-private.c
    536 
    537 avltree/avl_test-avl-private.obj: avltree/avl-private.c
    538 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -MT avltree/avl_test-avl-private.obj -MD -MP -MF avltree/$(DEPDIR)/avl_test-avl-private.Tpo -c -o avltree/avl_test-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`
    539 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) avltree/$(DEPDIR)/avl_test-avl-private.Tpo avltree/$(DEPDIR)/avl_test-avl-private.Po
    540 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avltree/avl_test-avl-private.obj' libtool=no @AMDEPBACKSLASH@
    541 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    542 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(avl_test_CFLAGS) $(CFLAGS) -c -o avltree/avl_test-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`
    543 
    544 fstream_test-fstream_test.o: fstream_test.c
    545 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -MT fstream_test-fstream_test.o -MD -MP -MF $(DEPDIR)/fstream_test-fstream_test.Tpo -c -o fstream_test-fstream_test.o `test -f 'fstream_test.c' || echo '$(srcdir)/'`fstream_test.c
    546 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/fstream_test-fstream_test.Tpo $(DEPDIR)/fstream_test-fstream_test.Po
    547 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream_test.c' object='fstream_test-fstream_test.o' libtool=no @AMDEPBACKSLASH@
    548 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    549 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -c -o fstream_test-fstream_test.o `test -f 'fstream_test.c' || echo '$(srcdir)/'`fstream_test.c
    550 
    551 fstream_test-fstream_test.obj: fstream_test.c
    552 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -MT fstream_test-fstream_test.obj -MD -MP -MF $(DEPDIR)/fstream_test-fstream_test.Tpo -c -o fstream_test-fstream_test.obj `if test -f 'fstream_test.c'; then $(CYGPATH_W) 'fstream_test.c'; else $(CYGPATH_W) '$(srcdir)/fstream_test.c'; fi`
    553 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/fstream_test-fstream_test.Tpo $(DEPDIR)/fstream_test-fstream_test.Po
    554 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='fstream_test.c' object='fstream_test-fstream_test.obj' libtool=no @AMDEPBACKSLASH@
    555 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    556 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fstream_test_CFLAGS) $(CFLAGS) -c -o fstream_test-fstream_test.obj `if test -f 'fstream_test.c'; then $(CYGPATH_W) 'fstream_test.c'; else $(CYGPATH_W) '$(srcdir)/fstream_test.c'; fi`
    557 
    558 vector/vector_test-vector_int.o: vector/vector_int.c
    559 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_int.o -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_int.Tpo -c -o vector/vector_test-vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c
    560 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_int.Tpo vector/$(DEPDIR)/vector_test-vector_int.Po
    561 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_int.c' object='vector/vector_test-vector_int.o' libtool=no @AMDEPBACKSLASH@
    562 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    563 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c
    564 
    565 vector/vector_test-vector_int.obj: vector/vector_int.c
    566 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_int.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_int.Tpo -c -o vector/vector_test-vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi`
    567 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_int.Tpo vector/$(DEPDIR)/vector_test-vector_int.Po
    568 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_int.c' object='vector/vector_test-vector_int.obj' libtool=no @AMDEPBACKSLASH@
    569 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    570 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi`
    571 
    572 vector/vector_test-array.o: vector/array.c
    573 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-array.o -MD -MP -MF vector/$(DEPDIR)/vector_test-array.Tpo -c -o vector/vector_test-array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c
    574 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-array.Tpo vector/$(DEPDIR)/vector_test-array.Po
    575 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/array.c' object='vector/vector_test-array.o' libtool=no @AMDEPBACKSLASH@
    576 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    577 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c
    578 
    579 vector/vector_test-array.obj: vector/array.c
    580 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-array.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-array.Tpo -c -o vector/vector_test-array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi`
    581 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-array.Tpo vector/$(DEPDIR)/vector_test-array.Po
    582 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/array.c' object='vector/vector_test-array.obj' libtool=no @AMDEPBACKSLASH@
    583 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    584 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi`
    585 
    586 vector/vector_test-vector_test.o: vector/vector_test.c
    587 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_test.o -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_test.Tpo -c -o vector/vector_test-vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c
    588 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_test.Tpo vector/$(DEPDIR)/vector_test-vector_test.Po
    589 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_test.c' object='vector/vector_test-vector_test.o' libtool=no @AMDEPBACKSLASH@
    590 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    591 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c
    592 
    593 vector/vector_test-vector_test.obj: vector/vector_test.c
    594 @am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -MT vector/vector_test-vector_test.obj -MD -MP -MF vector/$(DEPDIR)/vector_test-vector_test.Tpo -c -o vector/vector_test-vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi`
    595 @am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) vector/$(DEPDIR)/vector_test-vector_test.Tpo vector/$(DEPDIR)/vector_test-vector_test.Po
    596 @AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_test.c' object='vector/vector_test-vector_test.obj' libtool=no @AMDEPBACKSLASH@
    597 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    598 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(vector_test_CFLAGS) $(CFLAGS) -c -o vector/vector_test-vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi`
    599 
    600 ID: $(am__tagged_files)
    601         $(am__define_uniq_tagged_files); mkid -fID $$unique
    602 tags: tags-am
    603 TAGS: tags
    604 
    605 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     303@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     304
     305avl_test.o: avltree/avl_test.c
     306@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
     307@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     308@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@
     309@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     310@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
     311
     312avl_test.obj: avltree/avl_test.c
     313@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`
     314@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     315@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@
     316@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     317@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`
     318
     319avl0.o: avltree/avl0.c
     320@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
     321@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     322@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@
     323@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     324@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
     325
     326avl0.obj: avltree/avl0.c
     327@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`
     328@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     329@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@
     330@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     331@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`
     332
     333avl1.o: avltree/avl1.c
     334@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
     335@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     336@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@
     337@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     338@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
     339
     340avl1.obj: avltree/avl1.c
     341@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`
     342@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     343@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@
     344@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     345@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`
     346
     347avl2.o: avltree/avl2.c
     348@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
     349@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     350@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@
     351@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     352@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
     353
     354avl2.obj: avltree/avl2.c
     355@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`
     356@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     357@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@
     358@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     359@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`
     360
     361avl3.o: avltree/avl3.c
     362@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
     363@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     364@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@
     365@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     366@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
     367
     368avl3.obj: avltree/avl3.c
     369@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`
     370@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     371@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@
     372@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     373@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`
     374
     375avl4.o: avltree/avl4.c
     376@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
     377@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     378@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@
     379@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     380@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
     381
     382avl4.obj: avltree/avl4.c
     383@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`
     384@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     385@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@
     386@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     387@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`
     388
     389avl-private.o: avltree/avl-private.c
     390@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
     391@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     392@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@
     393@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     394@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
     395
     396avl-private.obj: avltree/avl-private.c
     397@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`
     398@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     399@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@
     400@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     401@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`
     402
     403vector_int.o: vector/vector_int.c
     404@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_int.o -MD -MP -MF $(DEPDIR)/vector_int.Tpo -c -o vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c
     405@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/vector_int.Tpo $(DEPDIR)/vector_int.Po
     406@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_int.c' object='vector_int.o' libtool=no @AMDEPBACKSLASH@
     407@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     408@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_int.o `test -f 'vector/vector_int.c' || echo '$(srcdir)/'`vector/vector_int.c
     409
     410vector_int.obj: vector/vector_int.c
     411@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_int.obj -MD -MP -MF $(DEPDIR)/vector_int.Tpo -c -o vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi`
     412@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/vector_int.Tpo $(DEPDIR)/vector_int.Po
     413@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_int.c' object='vector_int.obj' libtool=no @AMDEPBACKSLASH@
     414@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     415@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_int.obj `if test -f 'vector/vector_int.c'; then $(CYGPATH_W) 'vector/vector_int.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_int.c'; fi`
     416
     417array.o: vector/array.c
     418@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array.o -MD -MP -MF $(DEPDIR)/array.Tpo -c -o array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c
     419@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/array.Tpo $(DEPDIR)/array.Po
     420@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/array.c' object='array.o' libtool=no @AMDEPBACKSLASH@
     421@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     422@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array.o `test -f 'vector/array.c' || echo '$(srcdir)/'`vector/array.c
     423
     424array.obj: vector/array.c
     425@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array.obj -MD -MP -MF $(DEPDIR)/array.Tpo -c -o array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi`
     426@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/array.Tpo $(DEPDIR)/array.Po
     427@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/array.c' object='array.obj' libtool=no @AMDEPBACKSLASH@
     428@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     429@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array.obj `if test -f 'vector/array.c'; then $(CYGPATH_W) 'vector/array.c'; else $(CYGPATH_W) '$(srcdir)/vector/array.c'; fi`
     430
     431vector_test.o: vector/vector_test.c
     432@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_test.o -MD -MP -MF $(DEPDIR)/vector_test.Tpo -c -o vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c
     433@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/vector_test.Tpo $(DEPDIR)/vector_test.Po
     434@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_test.c' object='vector_test.o' libtool=no @AMDEPBACKSLASH@
     435@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     436@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_test.o `test -f 'vector/vector_test.c' || echo '$(srcdir)/'`vector/vector_test.c
     437
     438vector_test.obj: vector/vector_test.c
     439@am__fastdepCC_TRUE@    $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vector_test.obj -MD -MP -MF $(DEPDIR)/vector_test.Tpo -c -o vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi`
     440@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/vector_test.Tpo $(DEPDIR)/vector_test.Po
     441@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vector/vector_test.c' object='vector_test.obj' libtool=no @AMDEPBACKSLASH@
     442@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     443@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vector_test.obj `if test -f 'vector/vector_test.c'; then $(CYGPATH_W) 'vector/vector_test.c'; else $(CYGPATH_W) '$(srcdir)/vector/vector_test.c'; fi`
     444
     445ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     446        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     447        unique=`for i in $$list; do \
     448            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     449          done | \
     450          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     451              END { if (nonempty) { for (i in files) print i; }; }'`; \
     452        mkid -fID $$unique
     453tags: TAGS
     454
     455TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     456                $(TAGS_FILES) $(LISP)
    606457        set x; \
    607458        here=`pwd`; \
    608         $(am__define_uniq_tagged_files); \
     459        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     460        unique=`for i in $$list; do \
     461            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     462          done | \
     463          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     464              END { if (nonempty) { for (i in files) print i; }; }'`; \
    609465        shift; \
    610466        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    618474          fi; \
    619475        fi
    620 ctags: ctags-am
    621 
    622 CTAGS: ctags
    623 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    624         $(am__define_uniq_tagged_files); \
     476ctags: CTAGS
     477CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     478                $(TAGS_FILES) $(LISP)
     479        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     480        unique=`for i in $$list; do \
     481            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     482          done | \
     483          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     484              END { if (nonempty) { for (i in files) print i; }; }'`; \
    625485        test -z "$(CTAGS_ARGS)$$unique" \
    626486          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    631491          && $(am__cd) $(top_srcdir) \
    632492          && gtags -i $(GTAGS_ARGS) "$$here"
    633 cscopelist: cscopelist-am
    634 
    635 cscopelist-am: $(am__tagged_files)
    636         list='$(am__tagged_files)'; \
    637         case "$(srcdir)" in \
    638           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    639           *) sdir=$(subdir)/$(srcdir) ;; \
    640         esac; \
    641         for i in $$list; do \
    642           if test -f "$$i"; then \
    643             echo "$(subdir)/$$i"; \
    644           else \
    645             echo "$$sdir/$$i"; \
    646           fi; \
    647         done >> $(top_builddir)/cscope.files
    648493
    649494distclean-tags:
     
    710555        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    711556        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
    712         -rm -f avltree/$(DEPDIR)/$(am__dirstamp)
    713         -rm -f avltree/$(am__dirstamp)
    714         -rm -f vector/$(DEPDIR)/$(am__dirstamp)
    715         -rm -f vector/$(am__dirstamp)
    716557
    717558maintainer-clean-generic:
     
    723564
    724565distclean: distclean-am
    725         -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR)
     566        -rm -rf ./$(DEPDIR)
    726567        -rm -f Makefile
    727568distclean-am: clean-am distclean-compile distclean-generic \
     
    769610
    770611maintainer-clean: maintainer-clean-am
    771         -rm -rf ./$(DEPDIR) avltree/$(DEPDIR) vector/$(DEPDIR)
     612        -rm -rf ./$(DEPDIR)
    772613        -rm -f Makefile
    773614maintainer-clean-am: distclean-am maintainer-clean-generic
     
    789630.MAKE: install-am install-strip
    790631
    791 .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
    792         clean-generic clean-local cscopelist-am ctags ctags-am \
    793         distclean distclean-compile distclean-generic distclean-tags \
    794         distdir dvi dvi-am html html-am info info-am install \
    795         install-am install-data install-data-am install-dvi \
    796         install-dvi-am install-exec install-exec-am install-html \
    797         install-html-am install-info install-info-am install-man \
    798         install-pdf install-pdf-am install-ps install-ps-am \
    799         install-strip installcheck installcheck-am installdirs \
    800         maintainer-clean maintainer-clean-generic mostlyclean \
    801         mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    802         tags tags-am uninstall uninstall-am
    803 
    804 .PRECIOUS: Makefile
     632.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
     633        clean-generic clean-local ctags distclean distclean-compile \
     634        distclean-generic distclean-tags distdir dvi dvi-am html \
     635        html-am info info-am install install-am install-data \
     636        install-data-am install-dvi install-dvi-am install-exec \
     637        install-exec-am install-html install-html-am install-info \
     638        install-info-am install-man install-pdf install-pdf-am \
     639        install-ps install-ps-am install-strip installcheck \
     640        installcheck-am installdirs maintainer-clean \
     641        maintainer-clean-generic mostlyclean mostlyclean-compile \
     642        mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
     643        uninstall-am
    805644
    806645
     
    826665
    827666% : %.c @CFA_BINDIR@/@CFA_NAME@
    828         ${CC} ${AM_CFLAGS} ${CFLAGS} ${<} -o ${@}
     667        ${CC} ${CFLAGS} ${<} -o ${@}
    829668
    830669dtor-early-exit-ERR1: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
    831         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     670        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    832671
    833672dtor-early-exit-ERR2: dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
    834         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR2 ${<} -o ${@}
     673        ${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
    835674
    836675declarationSpecifier: declarationSpecifier.c @CFA_BINDIR@/@CFA_NAME@
    837         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     676        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    838677
    839678gccExtensions : gccExtensions.c @CFA_BINDIR@/@CFA_NAME@
    840         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     679        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    841680
    842681extension : extension.c @CFA_BINDIR@/@CFA_NAME@
    843         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     682        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    844683
    845684attributes : attributes.c @CFA_BINDIR@/@CFA_NAME@
    846         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     685        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    847686
    848687KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@
    849         ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
     688        ${CC} ${CFLAGS} -CFA -XCFA -p -XCFA -L ${<} -o ${@}
    850689
    851690gmp : gmp.c @CFA_BINDIR@/@CFA_NAME@
    852         ${CC} ${AM_CFLAGS} ${CFLAGS} -lgmp ${<} -o ${@}
     691        ${CC} ${CFLAGS} -lgmp ${<} -o ${@}
    853692
    854693memberCtors-ERR1: memberCtors.c @CFA_BINDIR@/@CFA_NAME@
    855         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     694        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    856695
    857696completeTypeError : completeTypeError.c @CFA_BINDIR@/@CFA_NAME@
    858         ${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
     697        ${CC} ${CFLAGS} -DERR1 ${<} -o ${@}
    859698
    860699# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/tests/io.c

    r208e5be rb1e63ac5  
    1010// Created On       : Wed Mar  2 16:56:02 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul  2 09:40:58 2017
    13 // Update Count     : 68
     12// Last Modified On : Thu Jun  8 09:52:10 2017
     13// Update Count     : 51
    1414//
    1515
     
    4242        sout | endl;
    4343
    44         sout | "opening delimiters" | endl;
    4544        sout
     45                // opening delimiters
    4646                | "x (" | 1
    4747                | "x [" | 2
     
    5454                | "x ¿" | 9
    5555                | "x «" | 10
    56                 | endl | endl;
    57 
    58         sout | "closing delimiters" | endl;
     56                | endl;
    5957        sout
     58                // closing delimiters
    6059                | 1 | ", x"
    6160                | 2 | ". x"
     
    6968                | 10 | "] x"
    7069                | 11 | "} x"
    71                 | endl | endl;
    72 
    73         sout | "opening/closing delimiters" | endl;
     70                | endl;
    7471        sout
     72                // opening-closing delimiters
    7573                | "x`" | 1 | "`x'" | 2
    7674                | "'x\"" | 3 | "\"x:" | 4
     
    7876                | "\tx\f" | 7 | "\fx\v" | 8
    7977                | "\vx\n" | 9 | "\nx\r" | 10
    80                 | "\rx"
    81                 | endl | endl;
    82 
    83         sout | "override opening/closing delimiters" | endl;
     78                | "\rx" |
     79                endl;
    8480        sout | "x ( " | 1 | " ) x" | 2 | " , x" | 3 | " :x: " | 4 | endl;
    85         sout | endl;
    8681
    8782        ifstream in;                                                                            // create / open file
    8883        open( &in, "io.data", "r" );
    8984
    90         sout | "input bacis types" | endl;
    9185        &in | &c                                                                                        // character
    9286                | &si | &usi | &i | &ui | &li | &uli | &lli | &ulli     // integral
     
    9488                | &fc | &dc | &ldc                                                              // floating-point complex
    9589                | cstr( s1 ) | cstr( s2, size );                                // C string, length unchecked and checked
    96         sout | endl;
    9790
    98         sout | "output basic types" | endl;
    9991        sout | c | ' ' | endl                                                           // character
    10092                | si | usi | i | ui | li | uli | lli | ulli | endl // integral
     
    10294                | fc | dc | ldc | endl;                                                 // complex
    10395        sout | endl;
    104 
    105         sout | "tuples" | endl;
    106         [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 3, [ 4, 5 ] ];
    107         sout | t1 | t2 | endl;                                                          // print tuple
    108         sout | endl;
    109 
    110         sout | "toggle separator" | endl;
    11196        sout | f | "" | d | "" | ld | endl                                      // floating point without separator
    11297                | sepDisable | fc | dc | ldc | sepEnable | endl // complex without separator
     
    115100        sout | endl;
    116101
    117         sout | "change separator" | endl;
    118         sout | "from \" " | sepGet( sout ) | "\"";
    119102        sepSet( sout, ", $" );                                                          // change separator, maximum of 15 characters
    120         sout | "to \" " | sepGet( sout ) | "\"" | endl;
    121103        sout | f | d | ld | endl
    122104                | fc | dc | ldc | endl
    123                 | s1 | s2 | endl
    124                 | t1 | t2 | endl;                                                               // print tuple
    125         sout | endl;
    126         sout | "from \"" | sepGet( sout ) | "\"";
    127         sepSet( sout, " " );                                                            // restore separator
    128         sout | "to \"" | sepGet( sout ) | "\"" | endl;
    129         sout | f | d | ld | endl
    130                 | fc | dc | ldc | endl
    131                 | s1 | s2 | endl
    132                 | t1 | t2 | endl;                                                               // print tuple
     105                | s1 | s2 | endl;
    133106        sout | endl;
    134107
    135         sout | sepOn | 1 | 2 | 3 | sepOn | endl;                        // separator at start/end of line
     108        [int, int] t1 = [1, 2], t2 = [3, 4];
     109        sout | t1 | t2 | endl;                                                          // print tuple
     110
     111        sepSet( sout, " " );
     112        sepSet( sout, ", $" );                                                          // set separator from " " to ", $"
     113        sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl;
     114        sepSet( sout, " " );                                                            // reset separator to " "
     115        sout | 1 | 2 | 3 | " \"" | sepGet( sout ) | "\"" | endl;
     116
     117        sout | sepOn | 1 | 2 | 3 | sepOn | endl;                        // separator at start of line
    136118        sout | 1 | sepOff | 2 | 3 | endl;                                       // locally turn off implicit separator
    137         sout | sepOn | 1 | 2 | 3 | sepOn | sepOff | endl;       // separator at start of line
    138         sout | 1 | 2 | 3 | endl | sepOn;                                        // separator at start of next line
    139         sout | 1 | 2 | 3 | endl;
    140         sout | endl;
    141119
    142120        sout | sepDisable | 1 | 2 | 3 | endl;                           // globally turn off implicit separation
    143121        sout | 1 | sepOn | 2 | 3 | endl;                                        // locally turn on implicit separator
    144         sout | sepEnable | 1 | 2 | 3 | endl | sepDisable;       // globally turn on/off implicit separation
    145         sout | 1 | 2 | 3 | endl | sepEnable;                            // globally turn on implicit separation
    146         sout | 1 | 2 | 3 | sepOn | sepDisable | endl;           // ignore seperate at end of line
    147         sout | 1 | 2 | 3 | sepOn | sepEnable | endl;            // separator at end of line
    148         sout | 1 | 2 | 3 | endl;
    149         sout | endl;
     122        sout | sepEnable | 1 | 2 | 3 | endl;                            // globally turn on implicit separation
    150123
    151124        sepSetTuple( sout, " " );                                                       // set tuple separator from ", " to " "
     
    153126        sepSetTuple( sout, ", " );                                                      // reset tuple separator to ", "
    154127        sout | t1 | t2 | " \"" | sepGetTuple( sout ) | "\"" | endl;
     128
    155129        sout | t1 | t2 | endl;                                                          // print tuple
    156         sout | endl;
    157130
    158131        [int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
  • src/tests/preempt_longrun/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1819###############################################################################
    1920VPATH = @srcdir@
    20 am__is_gnu_make = { \
    21   if test -z '$(MAKELEVEL)'; then \
    22     false; \
    23   elif test -n '$(MAKE_HOST)'; then \
    24     true; \
    25   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    26     true; \
    27   else \
    28     false; \
    29   fi; \
    30 }
    31 am__make_running_with_option = \
    32   case $${target_option-} in \
    33       ?) ;; \
    34       *) echo "am__make_running_with_option: internal error: invalid" \
    35               "target option '$${target_option-}' specified" >&2; \
    36          exit 1;; \
    37   esac; \
    38   has_opt=no; \
    39   sane_makeflags=$$MAKEFLAGS; \
    40   if $(am__is_gnu_make); then \
    41     sane_makeflags=$$MFLAGS; \
    42   else \
    43     case $$MAKEFLAGS in \
    44       *\\[\ \   ]*) \
    45         bs=\\; \
    46         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    47           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    48     esac; \
    49   fi; \
    50   skip_next=no; \
    51   strip_trailopt () \
    52   { \
    53     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    54   }; \
    55   for flg in $$sane_makeflags; do \
    56     test $$skip_next = yes && { skip_next=no; continue; }; \
    57     case $$flg in \
    58       *=*|--*) continue;; \
    59         -*I) strip_trailopt 'I'; skip_next=yes;; \
    60       -*I?*) strip_trailopt 'I';; \
    61         -*O) strip_trailopt 'O'; skip_next=yes;; \
    62       -*O?*) strip_trailopt 'O';; \
    63         -*l) strip_trailopt 'l'; skip_next=yes;; \
    64       -*l?*) strip_trailopt 'l';; \
    65       -[dEDm]) skip_next=yes;; \
    66       -[JT]) skip_next=yes;; \
    67     esac; \
    68     case $$flg in \
    69       *$$target_option*) has_opt=yes; break;; \
    70     esac; \
    71   done; \
    72   test $$has_opt = yes
    73 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    74 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7521pkgdatadir = $(datadir)/@PACKAGE@
    7622pkgincludedir = $(includedir)/@PACKAGE@
     
    9238host_triplet = @host@
    9339subdir = src/tests/preempt_longrun
     40DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    9441ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9542am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9643am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9744        $(ACLOCAL_M4)
    98 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    9945mkinstalldirs = $(install_sh) -d
    10046CONFIG_HEADER = $(top_builddir)/config.h
    10147CONFIG_CLEAN_FILES =
    10248CONFIG_CLEAN_VPATH_FILES =
    103 AM_V_P = $(am__v_P_@AM_V@)
    104 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    105 am__v_P_0 = false
    106 am__v_P_1 = :
    10749AM_V_GEN = $(am__v_GEN_@AM_V@)
    10850am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    109 am__v_GEN_0 = @echo "  GEN     " $@;
    110 am__v_GEN_1 =
     51am__v_GEN_0 = @echo "  GEN   " $@;
    11152AM_V_at = $(am__v_at_@AM_V@)
    11253am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    11354am__v_at_0 = @
    114 am__v_at_1 =
    11555SOURCES =
    11656DIST_SOURCES =
    117 am__can_run_installinfo = \
    118   case $$AM_UPDATE_INFO_DIR in \
    119     n|no|NO) false;; \
    120     *) (install-info --version) >/dev/null 2>&1;; \
    121   esac
    122 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    123 am__tty_colors_dummy = \
    124   mgn= red= grn= lgn= blu= brg= std=; \
    125   am__color_tests=no
    126 am__tty_colors = { \
    127   $(am__tty_colors_dummy); \
    128   if test "X$(AM_COLOR_TESTS)" = Xno; then \
    129     am__color_tests=no; \
    130   elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
    131     am__color_tests=yes; \
    132   elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
    133     am__color_tests=yes; \
    134   fi; \
    135   if test $$am__color_tests = yes; then \
    136     red='[0;31m'; \
    137     grn='[0;32m'; \
    138     lgn='[1;32m'; \
    139     blu='[1;34m'; \
    140     mgn='[0;35m'; \
    141     brg='[1m'; \
    142     std='[m'; \
    143   fi; \
    144 }
    145 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
    146 am__vpath_adj = case $$p in \
    147     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    148     *) f=$$p;; \
    149   esac;
    150 am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
    151 am__install_max = 40
    152 am__nobase_strip_setup = \
    153   srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
    154 am__nobase_strip = \
    155   for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
    156 am__nobase_list = $(am__nobase_strip_setup); \
    157   for p in $$list; do echo "$$p $$p"; done | \
    158   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
    159   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    160     if (++n[$$2] == $(am__install_max)) \
    161       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    162     END { for (dir in files) print dir, files[dir] }'
    163 am__base_list = \
    164   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
    165   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
    166 am__uninstall_files_from_dir = { \
    167   test -z "$$files" \
    168     || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
    169     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
    170          $(am__cd) "$$dir" && rm -f $$files; }; \
    171   }
    172 am__recheck_rx = ^[     ]*:recheck:[    ]*
    173 am__global_test_result_rx = ^[  ]*:global-test-result:[         ]*
    174 am__copy_in_global_log_rx = ^[  ]*:copy-in-global-log:[         ]*
    175 # A command that, given a newline-separated list of test names on the
    176 # standard input, print the name of the tests that are to be re-run
    177 # upon "make recheck".
    178 am__list_recheck_tests = $(AWK) '{ \
    179   recheck = 1; \
    180   while ((rc = (getline line < ($$0 ".trs"))) != 0) \
    181     { \
    182       if (rc < 0) \
    183         { \
    184           if ((getline line2 < ($$0 ".log")) < 0) \
    185             recheck = 0; \
    186           break; \
    187         } \
    188       else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
    189         { \
    190           recheck = 0; \
    191           break; \
    192         } \
    193       else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
    194         { \
    195           break; \
    196         } \
    197     }; \
    198   if (recheck) \
    199     print $$0; \
    200   close ($$0 ".trs"); \
    201   close ($$0 ".log"); \
    202 }'
    203 # A command that, given a newline-separated list of test names on the
    204 # standard input, create the global log from their .trs and .log files.
    205 am__create_global_log = $(AWK) ' \
    206 function fatal(msg) \
    207 { \
    208   print "fatal: making $@: " msg | "cat >&2"; \
    209   exit 1; \
    210 } \
    211 function rst_section(header) \
    212 { \
    213   print header; \
    214   len = length(header); \
    215   for (i = 1; i <= len; i = i + 1) \
    216     printf "="; \
    217   printf "\n\n"; \
    218 } \
    219 { \
    220   copy_in_global_log = 1; \
    221   global_test_result = "RUN"; \
    222   while ((rc = (getline line < ($$0 ".trs"))) != 0) \
    223     { \
    224       if (rc < 0) \
    225          fatal("failed to read from " $$0 ".trs"); \
    226       if (line ~ /$(am__global_test_result_rx)/) \
    227         { \
    228           sub("$(am__global_test_result_rx)", "", line); \
    229           sub("[        ]*$$", "", line); \
    230           global_test_result = line; \
    231         } \
    232       else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
    233         copy_in_global_log = 0; \
    234     }; \
    235   if (copy_in_global_log) \
    236     { \
    237       rst_section(global_test_result ": " $$0); \
    238       while ((rc = (getline line < ($$0 ".log"))) != 0) \
    239       { \
    240         if (rc < 0) \
    241           fatal("failed to read from " $$0 ".log"); \
    242         print line; \
    243       }; \
    244       printf "\n"; \
    245     }; \
    246   close ($$0 ".trs"); \
    247   close ($$0 ".log"); \
    248 }'
    249 # Restructured Text title.
    250 am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
    251 # Solaris 10 'make', and several other traditional 'make' implementations,
    252 # pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
    253 # by disabling -e (using the XSI extension "set +e") if it's set.
    254 am__sh_e_setup = case $$- in *e*) set +e;; esac
    255 # Default flags passed to test drivers.
    256 am__common_driver_flags = \
    257   --color-tests "$$am__color_tests" \
    258   --enable-hard-errors "$$am__enable_hard_errors" \
    259   --expect-failure "$$am__expect_failure"
    260 # To be inserted before the command running the test.  Creates the
    261 # directory for the log if needed.  Stores in $dir the directory
    262 # containing $f, in $tst the test, in $log the log.  Executes the
    263 # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
    264 # passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
    265 # will run the test scripts (or their associated LOG_COMPILER, if
    266 # thy have one).
    267 am__check_pre = \
    268 $(am__sh_e_setup);                                      \
    269 $(am__vpath_adj_setup) $(am__vpath_adj)                 \
    270 $(am__tty_colors);                                      \
    271 srcdir=$(srcdir); export srcdir;                        \
    272 case "$@" in                                            \
    273   */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;    \
    274     *) am__odir=.;;                                     \
    275 esac;                                                   \
    276 test "x$$am__odir" = x"." || test -d "$$am__odir"       \
    277   || $(MKDIR_P) "$$am__odir" || exit $$?;               \
    278 if test -f "./$$f"; then dir=./;                        \
    279 elif test -f "$$f"; then dir=;                          \
    280 else dir="$(srcdir)/"; fi;                              \
    281 tst=$$dir$$f; log='$@';                                 \
    282 if test -n '$(DISABLE_HARD_ERRORS)'; then               \
    283   am__enable_hard_errors=no;                            \
    284 else                                                    \
    285   am__enable_hard_errors=yes;                           \
    286 fi;                                                     \
    287 case " $(XFAIL_TESTS) " in                              \
    288   *[\ \ ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
    289     am__expect_failure=yes;;                            \
    290   *)                                                    \
    291     am__expect_failure=no;;                             \
    292 esac;                                                   \
    293 $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
    294 # A shell command to get the names of the tests scripts with any registered
    295 # extension removed (i.e., equivalently, the names of the test logs, with
    296 # the '.log' extension removed).  The result is saved in the shell variable
    297 # '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
    298 # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
    299 # since that might cause problem with VPATH rewrites for suffix-less tests.
    300 # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
    301 am__set_TESTS_bases = \
    302   bases='$(TEST_LOGS)'; \
    303   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
    304   bases=`echo $$bases`
    305 RECHECK_LOGS = $(TEST_LOGS)
    306 AM_RECURSIVE_TARGETS = check recheck
    307 TEST_SUITE_LOG = test-suite.log
    308 TEST_EXTENSIONS = @EXEEXT@ .test
    309 LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
    310 LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
    311 am__set_b = \
    312   case '$@' in \
    313     */*) \
    314       case '$*' in \
    315         */*) b='$*';; \
    316           *) b=`echo '$@' | sed 's/\.log$$//'`; \
    317        esac;; \
    318     *) \
    319       b='$*';; \
    320   esac
    321 am__test_logs1 = $(TESTS:=.log)
    322 am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
    323 TEST_LOGS = $(am__test_logs2:.test.log=.log)
    324 TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/automake/test-driver
    325 TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
    326         $(TEST_LOG_FLAGS)
    327 am__DIST_COMMON = $(srcdir)/Makefile.in \
    328         $(top_srcdir)/automake/test-driver
     57am__tty_colors = \
     58red=; grn=; lgn=; blu=; std=
    32959DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    33060ACLOCAL = @ACLOCAL@
     
    439169program_transform_name = @program_transform_name@
    440170psdir = @psdir@
    441 runstatedir = @runstatedir@
    442171sbindir = @sbindir@
    443172sharedstatedir = @sharedstatedir@
     
    457186
    458187.SUFFIXES:
    459 .SUFFIXES: .log .test .test$(EXEEXT) .trs
    460188$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
    461189        @for dep in $?; do \
     
    467195          esac; \
    468196        done; \
    469         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tests/preempt_longrun/Makefile'; \
     197        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile'; \
    470198        $(am__cd) $(top_srcdir) && \
    471           $(AUTOMAKE) --gnu src/tests/preempt_longrun/Makefile
     199          $(AUTOMAKE) --foreign src/tests/preempt_longrun/Makefile
     200.PRECIOUS: Makefile
    472201Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    473202        @case '$?' in \
     
    487216        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
    488217$(am__aclocal_m4_deps):
    489 tags TAGS:
    490 
    491 ctags CTAGS:
    492 
    493 cscope cscopelist:
    494 
    495 
    496 # Recover from deleted '.trs' file; this should ensure that
    497 # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
    498 # both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
    499 # to avoid problems with "make -n".
    500 .log.trs:
    501         rm -f $< $@
    502         $(MAKE) $(AM_MAKEFLAGS) $<
    503 
    504 # Leading 'am--fnord' is there to ensure the list of targets does not
    505 # expand to empty, as could happen e.g. with make check TESTS=''.
    506 am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
    507 am--force-recheck:
    508         @:
    509 
    510 $(TEST_SUITE_LOG): $(TEST_LOGS)
    511         @$(am__set_TESTS_bases); \
    512         am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
    513         redo_bases=`for i in $$bases; do \
    514                       am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
    515                     done`; \
    516         if test -n "$$redo_bases"; then \
    517           redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
    518           redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
    519           if $(am__make_dryrun); then :; else \
    520             rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
    521           fi; \
    522         fi; \
    523         if test -n "$$am__remaking_logs"; then \
    524           echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
    525                "recursion detected" >&2; \
    526         elif test -n "$$redo_logs"; then \
    527           am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
    528         fi; \
    529         if $(am__make_dryrun); then :; else \
    530           st=0;  \
    531           errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
    532           for i in $$redo_bases; do \
    533             test -f $$i.trs && test -r $$i.trs \
    534               || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
    535             test -f $$i.log && test -r $$i.log \
    536               || { echo "$$errmsg $$i.log" >&2; st=1; }; \
     218tags: TAGS
     219TAGS:
     220
     221ctags: CTAGS
     222CTAGS:
     223
     224
     225check-TESTS: $(TESTS)
     226        @failed=0; all=0; xfail=0; xpass=0; skip=0; \
     227        srcdir=$(srcdir); export srcdir; \
     228        list=' $(TESTS) '; \
     229        $(am__tty_colors); \
     230        if test -n "$$list"; then \
     231          for tst in $$list; do \
     232            if test -f ./$$tst; then dir=./; \
     233            elif test -f $$tst; then dir=; \
     234            else dir="$(srcdir)/"; fi; \
     235            if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
     236              all=`expr $$all + 1`; \
     237              case " $(XFAIL_TESTS) " in \
     238              *[\ \     ]$$tst[\ \      ]*) \
     239                xpass=`expr $$xpass + 1`; \
     240                failed=`expr $$failed + 1`; \
     241                col=$$red; res=XPASS; \
     242              ;; \
     243              *) \
     244                col=$$grn; res=PASS; \
     245              ;; \
     246              esac; \
     247            elif test $$? -ne 77; then \
     248              all=`expr $$all + 1`; \
     249              case " $(XFAIL_TESTS) " in \
     250              *[\ \     ]$$tst[\ \      ]*) \
     251                xfail=`expr $$xfail + 1`; \
     252                col=$$lgn; res=XFAIL; \
     253              ;; \
     254              *) \
     255                failed=`expr $$failed + 1`; \
     256                col=$$red; res=FAIL; \
     257              ;; \
     258              esac; \
     259            else \
     260              skip=`expr $$skip + 1`; \
     261              col=$$blu; res=SKIP; \
     262            fi; \
     263            echo "$${col}$$res$${std}: $$tst"; \
    537264          done; \
    538           test $$st -eq 0 || exit 1; \
    539         fi
    540         @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
    541         ws='[   ]'; \
    542         results=`for b in $$bases; do echo $$b.trs; done`; \
    543         test -n "$$results" || results=/dev/null; \
    544         all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
    545         pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
    546         fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
    547         skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
    548         xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
    549         xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
    550         error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
    551         if test `expr $$fail + $$xpass + $$error` -eq 0; then \
    552           success=true; \
    553         else \
    554           success=false; \
    555         fi; \
    556         br='==================='; br=$$br$$br$$br$$br; \
    557         result_count () \
    558         { \
    559             if test x"$$1" = x"--maybe-color"; then \
    560               maybe_colorize=yes; \
    561             elif test x"$$1" = x"--no-color"; then \
    562               maybe_colorize=no; \
     265          if test "$$all" -eq 1; then \
     266            tests="test"; \
     267            All=""; \
     268          else \
     269            tests="tests"; \
     270            All="All "; \
     271          fi; \
     272          if test "$$failed" -eq 0; then \
     273            if test "$$xfail" -eq 0; then \
     274              banner="$$All$$all $$tests passed"; \
    563275            else \
    564               echo "$@: invalid 'result_count' usage" >&2; exit 4; \
    565             fi; \
    566             shift; \
    567             desc=$$1 count=$$2; \
    568             if test $$maybe_colorize = yes && test $$count -gt 0; then \
    569               color_start=$$3 color_end=$$std; \
     276              if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
     277              banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
     278            fi; \
     279          else \
     280            if test "$$xpass" -eq 0; then \
     281              banner="$$failed of $$all $$tests failed"; \
    570282            else \
    571               color_start= color_end=; \
    572             fi; \
    573             echo "$${color_start}# $$desc $$count$${color_end}"; \
    574         }; \
    575         create_testsuite_report () \
    576         { \
    577           result_count $$1 "TOTAL:" $$all   "$$brg"; \
    578           result_count $$1 "PASS: " $$pass  "$$grn"; \
    579           result_count $$1 "SKIP: " $$skip  "$$blu"; \
    580           result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
    581           result_count $$1 "FAIL: " $$fail  "$$red"; \
    582           result_count $$1 "XPASS:" $$xpass "$$red"; \
    583           result_count $$1 "ERROR:" $$error "$$mgn"; \
    584         }; \
    585         {                                                               \
    586           echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
    587             $(am__rst_title);                                           \
    588           create_testsuite_report --no-color;                           \
    589           echo;                                                         \
    590           echo ".. contents:: :depth: 2";                               \
    591           echo;                                                         \
    592           for b in $$bases; do echo $$b; done                           \
    593             | $(am__create_global_log);                                 \
    594         } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
    595         mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
    596         if $$success; then                                              \
    597           col="$$grn";                                                  \
    598          else                                                           \
    599           col="$$red";                                                  \
    600           test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
    601         fi;                                                             \
    602         echo "$${col}$$br$${std}";                                      \
    603         echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
    604         echo "$${col}$$br$${std}";                                      \
    605         create_testsuite_report --maybe-color;                          \
    606         echo "$$col$$br$$std";                                          \
    607         if $$success; then :; else                                      \
    608           echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
    609           if test -n "$(PACKAGE_BUGREPORT)"; then                       \
    610             echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
    611           fi;                                                           \
    612           echo "$$col$$br$$std";                                        \
    613         fi;                                                             \
    614         $$success || exit 1
    615 
    616 check-TESTS:
    617         @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
    618         @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
    619         @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
    620         @set +e; $(am__set_TESTS_bases); \
    621         log_list=`for i in $$bases; do echo $$i.log; done`; \
    622         trs_list=`for i in $$bases; do echo $$i.trs; done`; \
    623         log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
    624         $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
    625         exit $$?;
    626 recheck: all
    627         @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
    628         @set +e; $(am__set_TESTS_bases); \
    629         bases=`for i in $$bases; do echo $$i; done \
    630                  | $(am__list_recheck_tests)` || exit 1; \
    631         log_list=`for i in $$bases; do echo $$i.log; done`; \
    632         log_list=`echo $$log_list`; \
    633         $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
    634                 am__force_recheck=am--force-recheck \
    635                 TEST_LOGS="$$log_list"; \
    636         exit $$?
    637 barge.log: barge
    638         @p='barge'; \
    639         b='barge'; \
    640         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    641         --log-file $$b.log --trs-file $$b.trs \
    642         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    643         "$$tst" $(AM_TESTS_FD_REDIRECT)
    644 block.log: block
    645         @p='block'; \
    646         b='block'; \
    647         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    648         --log-file $$b.log --trs-file $$b.trs \
    649         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    650         "$$tst" $(AM_TESTS_FD_REDIRECT)
    651 create.log: create
    652         @p='create'; \
    653         b='create'; \
    654         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    655         --log-file $$b.log --trs-file $$b.trs \
    656         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    657         "$$tst" $(AM_TESTS_FD_REDIRECT)
    658 disjoint.log: disjoint
    659         @p='disjoint'; \
    660         b='disjoint'; \
    661         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    662         --log-file $$b.log --trs-file $$b.trs \
    663         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    664         "$$tst" $(AM_TESTS_FD_REDIRECT)
    665 processor.log: processor
    666         @p='processor'; \
    667         b='processor'; \
    668         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    669         --log-file $$b.log --trs-file $$b.trs \
    670         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    671         "$$tst" $(AM_TESTS_FD_REDIRECT)
    672 stack.log: stack
    673         @p='stack'; \
    674         b='stack'; \
    675         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    676         --log-file $$b.log --trs-file $$b.trs \
    677         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    678         "$$tst" $(AM_TESTS_FD_REDIRECT)
    679 wait.log: wait
    680         @p='wait'; \
    681         b='wait'; \
    682         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    683         --log-file $$b.log --trs-file $$b.trs \
    684         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    685         "$$tst" $(AM_TESTS_FD_REDIRECT)
    686 yield.log: yield
    687         @p='yield'; \
    688         b='yield'; \
    689         $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
    690         --log-file $$b.log --trs-file $$b.trs \
    691         $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
    692         "$$tst" $(AM_TESTS_FD_REDIRECT)
    693 .test.log:
    694         @p='$<'; \
    695         $(am__set_b); \
    696         $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
    697         --log-file $$b.log --trs-file $$b.trs \
    698         $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
    699         "$$tst" $(AM_TESTS_FD_REDIRECT)
    700 @am__EXEEXT_TRUE@.test$(EXEEXT).log:
    701 @am__EXEEXT_TRUE@       @p='$<'; \
    702 @am__EXEEXT_TRUE@       $(am__set_b); \
    703 @am__EXEEXT_TRUE@       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
    704 @am__EXEEXT_TRUE@       --log-file $$b.log --trs-file $$b.trs \
    705 @am__EXEEXT_TRUE@       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
    706 @am__EXEEXT_TRUE@       "$$tst" $(AM_TESTS_FD_REDIRECT)
     283              if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
     284              banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
     285            fi; \
     286          fi; \
     287          dashes="$$banner"; \
     288          skipped=""; \
     289          if test "$$skip" -ne 0; then \
     290            if test "$$skip" -eq 1; then \
     291              skipped="($$skip test was not run)"; \
     292            else \
     293              skipped="($$skip tests were not run)"; \
     294            fi; \
     295            test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
     296              dashes="$$skipped"; \
     297          fi; \
     298          report=""; \
     299          if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
     300            report="Please report to $(PACKAGE_BUGREPORT)"; \
     301            test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
     302              dashes="$$report"; \
     303          fi; \
     304          dashes=`echo "$$dashes" | sed s/./=/g`; \
     305          if test "$$failed" -eq 0; then \
     306            col="$$grn"; \
     307          else \
     308            col="$$red"; \
     309          fi; \
     310          echo "$${col}$$dashes$${std}"; \
     311          echo "$${col}$$banner$${std}"; \
     312          test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
     313          test -z "$$report" || echo "$${col}$$report$${std}"; \
     314          echo "$${col}$$dashes$${std}"; \
     315          test "$$failed" -eq 0; \
     316        else :; fi
    707317
    708318distdir: $(DISTFILES)
     
    761371        fi
    762372mostlyclean-generic:
    763         -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
    764         -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
    765         -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
    766373
    767374clean-generic:
     
    843450
    844451.PHONY: all all-am all-local check check-TESTS check-am clean \
    845         clean-generic cscopelist-am ctags-am distclean \
    846         distclean-generic distdir dvi dvi-am html html-am info info-am \
    847         install install-am install-data install-data-am install-dvi \
    848         install-dvi-am install-exec install-exec-am install-html \
    849         install-html-am install-info install-info-am install-man \
    850         install-pdf install-pdf-am install-ps install-ps-am \
    851         install-strip installcheck installcheck-am installdirs \
    852         maintainer-clean maintainer-clean-generic mostlyclean \
    853         mostlyclean-generic pdf pdf-am ps ps-am recheck tags-am \
    854         uninstall uninstall-am
    855 
    856 .PRECIOUS: Makefile
     452        clean-generic distclean distclean-generic distdir dvi dvi-am \
     453        html html-am info info-am install install-am install-data \
     454        install-data-am install-dvi install-dvi-am install-exec \
     455        install-exec-am install-html install-html-am install-info \
     456        install-info-am install-man install-pdf install-pdf-am \
     457        install-ps install-ps-am install-strip installcheck \
     458        installcheck-am installdirs maintainer-clean \
     459        maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
     460        pdf-am ps ps-am uninstall uninstall-am
    857461
    858462
  • src/tests/test.py

    r208e5be rb1e63ac5  
    161161
    162162        # remove any outputs from the previous tests to prevent side effects
    163         rm( (out_file, err_file, test.name), dry_run )
     163        rm( (out_file, test.name), dry_run )
    164164
    165165        options = "-debug" if debug else "-nodebug"
  • tools/cfa.nanorc

    r208e5be rb1e63ac5  
    1818# Control Flow Structures
    1919color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>"
    20 color brightyellow "\<(try|catch(Resume)?|finally)\>"
     20color brightyellow "\<(try|catch|catchResume|finally)\>"
    2121
    2222# Control Flow Statements
    23 color magenta "\<(goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>"
     23color magenta "\<(return|break|continue|fallthru|throw|throwResume)\>"
    2424
    2525# Operator Names
  • tools/prettyprinter/Makefile.am

    r208e5be rb1e63ac5  
    1515###############################################################################
    1616
    17 BUILT_SOURCES = parser.hh
     17BUILT_SOURCES = parser.h
    1818
    1919AM_YFLAGS = -d -t -v
  • tools/prettyprinter/Makefile.in

    r208e5be rb1e63ac5  
    1 # Makefile.in generated by automake 1.15 from Makefile.am.
     1# Makefile.in generated by automake 1.11.3 from Makefile.am.
    22# @configure_input@
    33
    4 # Copyright (C) 1994-2014 Free Software Foundation, Inc.
    5 
     4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
     5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
     6# Foundation, Inc.
    67# This Makefile.in is free software; the Free Software Foundation
    78# gives unlimited permission to copy and/or distribute it,
     
    1920
    2021VPATH = @srcdir@
    21 am__is_gnu_make = { \
    22   if test -z '$(MAKELEVEL)'; then \
    23     false; \
    24   elif test -n '$(MAKE_HOST)'; then \
    25     true; \
    26   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    27     true; \
    28   else \
    29     false; \
    30   fi; \
    31 }
    32 am__make_running_with_option = \
    33   case $${target_option-} in \
    34       ?) ;; \
    35       *) echo "am__make_running_with_option: internal error: invalid" \
    36               "target option '$${target_option-}' specified" >&2; \
    37          exit 1;; \
    38   esac; \
    39   has_opt=no; \
    40   sane_makeflags=$$MAKEFLAGS; \
    41   if $(am__is_gnu_make); then \
    42     sane_makeflags=$$MFLAGS; \
    43   else \
    44     case $$MAKEFLAGS in \
    45       *\\[\ \   ]*) \
    46         bs=\\; \
    47         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
    48           | sed "s/$$bs$$bs[$$bs $$bs   ]*//g"`;; \
    49     esac; \
    50   fi; \
    51   skip_next=no; \
    52   strip_trailopt () \
    53   { \
    54     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
    55   }; \
    56   for flg in $$sane_makeflags; do \
    57     test $$skip_next = yes && { skip_next=no; continue; }; \
    58     case $$flg in \
    59       *=*|--*) continue;; \
    60         -*I) strip_trailopt 'I'; skip_next=yes;; \
    61       -*I?*) strip_trailopt 'I';; \
    62         -*O) strip_trailopt 'O'; skip_next=yes;; \
    63       -*O?*) strip_trailopt 'O';; \
    64         -*l) strip_trailopt 'l'; skip_next=yes;; \
    65       -*l?*) strip_trailopt 'l';; \
    66       -[dEDm]) skip_next=yes;; \
    67       -[JT]) skip_next=yes;; \
    68     esac; \
    69     case $$flg in \
    70       *$$target_option*) has_opt=yes; break;; \
    71     esac; \
    72   done; \
    73   test $$has_opt = yes
    74 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
    75 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
    7622pkgdatadir = $(datadir)/@PACKAGE@
    7723pkgincludedir = $(includedir)/@PACKAGE@
     
    9440tools_prettyprinter_PROGRAMS = pretty$(EXEEXT)
    9541subdir = tools/prettyprinter
     42DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in lex.cc \
     43        parser.cc parser.h
    9644ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    9745am__aclocal_m4_deps = $(top_srcdir)/configure.ac
    9846am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9947        $(ACLOCAL_M4)
    100 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
    10148mkinstalldirs = $(install_sh) -d
    10249CONFIG_HEADER = $(top_builddir)/config.h
     
    11461pretty_LINK = $(CXXLD) $(pretty_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
    11562        $(LDFLAGS) -o $@
    116 AM_V_P = $(am__v_P_@AM_V@)
    117 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
    118 am__v_P_0 = false
    119 am__v_P_1 = :
    120 AM_V_GEN = $(am__v_GEN_@AM_V@)
    121 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    122 am__v_GEN_0 = @echo "  GEN     " $@;
    123 am__v_GEN_1 =
    124 AM_V_at = $(am__v_at_@AM_V@)
    125 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    126 am__v_at_0 = @
    127 am__v_at_1 =
    12863DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    12964depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
     
    13368am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    13469am__v_lt_0 = --silent
    135 am__v_lt_1 =
    13670CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    13771        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    13872AM_V_CXX = $(am__v_CXX_@AM_V@)
    13973am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    140 am__v_CXX_0 = @echo "  CXX     " $@;
    141 am__v_CXX_1 =
     74am__v_CXX_0 = @echo "  CXX   " $@;
     75AM_V_at = $(am__v_at_@AM_V@)
     76am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     77am__v_at_0 = @
    14278CXXLD = $(CXX)
    14379CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
     
    14581AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    14682am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    147 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
    148 am__v_CXXLD_1 =
     83am__v_CXXLD_0 = @echo "  CXXLD " $@;
    14984@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    15085LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
    15186AM_V_LEX = $(am__v_LEX_@AM_V@)
    15287am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
    153 am__v_LEX_0 = @echo "  LEX     " $@;
    154 am__v_LEX_1 =
     88am__v_LEX_0 = @echo "  LEX   " $@;
    15589YLWRAP = $(top_srcdir)/automake/ylwrap
    15690@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    157 am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
    158                    -e s/c++$$/h++/ -e s/c$$/h/
    15991YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
    16092AM_V_YACC = $(am__v_YACC_@AM_V@)
    16193am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
    162 am__v_YACC_0 = @echo "  YACC    " $@;
    163 am__v_YACC_1 =
     94am__v_YACC_0 = @echo "  YACC  " $@;
    16495COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    16596        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    16697AM_V_CC = $(am__v_CC_@AM_V@)
    16798am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    168 am__v_CC_0 = @echo "  CC      " $@;
    169 am__v_CC_1 =
     99am__v_CC_0 = @echo "  CC    " $@;
    170100CCLD = $(CC)
    171101LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    172102AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    173103am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    174 am__v_CCLD_0 = @echo "  CCLD    " $@;
    175 am__v_CCLD_1 =
     104am__v_CCLD_0 = @echo "  CCLD  " $@;
     105AM_V_GEN = $(am__v_GEN_@AM_V@)
     106am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     107am__v_GEN_0 = @echo "  GEN   " $@;
    176108SOURCES = $(pretty_SOURCES)
    177109DIST_SOURCES = $(pretty_SOURCES)
    178 am__can_run_installinfo = \
    179   case $$AM_UPDATE_INFO_DIR in \
    180     n|no|NO) false;; \
    181     *) (install-info --version) >/dev/null 2>&1;; \
    182   esac
    183 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    184 # Read a list of newline-separated strings from the standard input,
    185 # and print each of them once, without duplicates.  Input order is
    186 # *not* preserved.
    187 am__uniquify_input = $(AWK) '\
    188   BEGIN { nonempty = 0; } \
    189   { items[$$0] = 1; nonempty = 1; } \
    190   END { if (nonempty) { for (i in items) print i; }; } \
    191 '
    192 # Make sure the list of sources is unique.  This is necessary because,
    193 # e.g., the same source file might be shared among _SOURCES variables
    194 # for different programs/libraries.
    195 am__define_uniq_tagged_files = \
    196   list='$(am__tagged_files)'; \
    197   unique=`for i in $$list; do \
    198     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
    199   done | $(am__uniquify_input)`
    200110ETAGS = etags
    201111CTAGS = ctags
    202 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/automake/depcomp \
    203         $(top_srcdir)/automake/ylwrap lex.cc parser.cc parser.hh
    204112DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    205113ACLOCAL = @ACLOCAL@
     
    314222program_transform_name = @program_transform_name@
    315223psdir = @psdir@
    316 runstatedir = @runstatedir@
    317224sbindir = @sbindir@
    318225sharedstatedir = @sharedstatedir@
     
    323230top_builddir = @top_builddir@
    324231top_srcdir = @top_srcdir@
    325 BUILT_SOURCES = parser.hh
     232BUILT_SOURCES = parser.h
    326233AM_YFLAGS = -d -t -v
    327234SRC = lex.ll \
     
    350257          esac; \
    351258        done; \
    352         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/prettyprinter/Makefile'; \
     259        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/prettyprinter/Makefile'; \
    353260        $(am__cd) $(top_srcdir) && \
    354           $(AUTOMAKE) --gnu tools/prettyprinter/Makefile
     261          $(AUTOMAKE) --foreign tools/prettyprinter/Makefile
     262.PRECIOUS: Makefile
    355263Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    356264        @case '$?' in \
     
    372280install-tools_prettyprinterPROGRAMS: $(tools_prettyprinter_PROGRAMS)
    373281        @$(NORMAL_INSTALL)
     282        test -z "$(tools_prettyprinterdir)" || $(MKDIR_P) "$(DESTDIR)$(tools_prettyprinterdir)"
    374283        @list='$(tools_prettyprinter_PROGRAMS)'; test -n "$(tools_prettyprinterdir)" || list=; \
    375         if test -n "$$list"; then \
    376           echo " $(MKDIR_P) '$(DESTDIR)$(tools_prettyprinterdir)'"; \
    377           $(MKDIR_P) "$(DESTDIR)$(tools_prettyprinterdir)" || exit 1; \
    378         fi; \
    379284        for p in $$list; do echo "$$p $$p"; done | \
    380285        sed 's/$(EXEEXT)$$//' | \
    381         while read p p1; do if test -f $$p \
    382           ; then echo "$$p"; echo "$$p"; else :; fi; \
     286        while read p p1; do if test -f $$p; \
     287          then echo "$$p"; echo "$$p"; else :; fi; \
    383288        done | \
    384         sed -e 'p;s,.*/,,;n;h' \
    385             -e 's|.*|.|' \
     289        sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
    386290            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
    387291        sed 'N;N;N;s,\n, ,g' | \
     
    404308        files=`for p in $$list; do echo "$$p"; done | \
    405309          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
    406               -e 's/$$/$(EXEEXT)/' \
    407         `; \
     310              -e 's/$$/$(EXEEXT)/' `; \
    408311        test -n "$$list" || exit 0; \
    409312        echo " ( cd '$(DESTDIR)$(tools_prettyprinterdir)' && rm -f" $$files ")"; \
     
    412315clean-tools_prettyprinterPROGRAMS:
    413316        -test -z "$(tools_prettyprinter_PROGRAMS)" || rm -f $(tools_prettyprinter_PROGRAMS)
    414 parser.hh: parser.cc
     317parser.h: parser.cc
    415318        @if test ! -f $@; then rm -f parser.cc; else :; fi
    416319        @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parser.cc; else :; fi
    417 
    418320pretty$(EXEEXT): $(pretty_OBJECTS) $(pretty_DEPENDENCIES) $(EXTRA_pretty_DEPENDENCIES)
    419321        @rm -f pretty$(EXEEXT)
     
    433335
    434336.cc.o:
    435 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    436 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    437 @am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
     337@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     338@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    438339@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    439340@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    441342
    442343.cc.obj:
    443 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    444 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    445 @am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
     344@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     345@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    446346@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    447347@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    522422
    523423.yy.cc:
    524         $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
    525 
    526 ID: $(am__tagged_files)
    527         $(am__define_uniq_tagged_files); mkid -fID $$unique
    528 tags: tags-am
    529 TAGS: tags
    530 
    531 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     424        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     425
     426ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     427        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
     428        unique=`for i in $$list; do \
     429            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     430          done | \
     431          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     432              END { if (nonempty) { for (i in files) print i; }; }'`; \
     433        mkid -fID $$unique
     434tags: TAGS
     435
     436TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     437                $(TAGS_FILES) $(LISP)
    532438        set x; \
    533439        here=`pwd`; \
    534         $(am__define_uniq_tagged_files); \
     440        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     441        unique=`for i in $$list; do \
     442            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     443          done | \
     444          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     445              END { if (nonempty) { for (i in files) print i; }; }'`; \
    535446        shift; \
    536447        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     
    544455          fi; \
    545456        fi
    546 ctags: ctags-am
    547 
    548 CTAGS: ctags
    549 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    550         $(am__define_uniq_tagged_files); \
     457ctags: CTAGS
     458CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
     459                $(TAGS_FILES) $(LISP)
     460        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
     461        unique=`for i in $$list; do \
     462            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     463          done | \
     464          $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
     465              END { if (nonempty) { for (i in files) print i; }; }'`; \
    551466        test -z "$(CTAGS_ARGS)$$unique" \
    552467          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     
    557472          && $(am__cd) $(top_srcdir) \
    558473          && gtags -i $(GTAGS_ARGS) "$$here"
    559 cscopelist: cscopelist-am
    560 
    561 cscopelist-am: $(am__tagged_files)
    562         list='$(am__tagged_files)'; \
    563         case "$(srcdir)" in \
    564           [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
    565           *) sdir=$(subdir)/$(srcdir) ;; \
    566         esac; \
    567         for i in $$list; do \
    568           if test -f "$$i"; then \
    569             echo "$(subdir)/$$i"; \
    570           else \
    571             echo "$$sdir/$$i"; \
    572           fi; \
    573         done >> $(top_builddir)/cscope.files
    574474
    575475distclean-tags:
     
    647547        -rm -f lex.cc
    648548        -rm -f parser.cc
    649         -rm -f parser.hh
     549        -rm -f parser.h
    650550        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
    651551        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
     
    722622.MAKE: all check install install-am install-strip
    723623
    724 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
    725         clean-tools_prettyprinterPROGRAMS cscopelist-am ctags ctags-am \
    726         distclean distclean-compile distclean-generic distclean-tags \
    727         distdir dvi dvi-am html html-am info info-am install \
    728         install-am install-data install-data-am install-dvi \
    729         install-dvi-am install-exec install-exec-am install-html \
    730         install-html-am install-info install-info-am install-man \
    731         install-pdf install-pdf-am install-ps install-ps-am \
    732         install-strip install-tools_prettyprinterPROGRAMS installcheck \
     624.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
     625        clean-tools_prettyprinterPROGRAMS ctags distclean \
     626        distclean-compile distclean-generic distclean-tags distdir dvi \
     627        dvi-am html html-am info info-am install install-am \
     628        install-data install-data-am install-dvi install-dvi-am \
     629        install-exec install-exec-am install-html install-html-am \
     630        install-info install-info-am install-man install-pdf \
     631        install-pdf-am install-ps install-ps-am install-strip \
     632        install-tools_prettyprinterPROGRAMS installcheck \
    733633        installcheck-am installdirs maintainer-clean \
    734634        maintainer-clean-generic mostlyclean mostlyclean-compile \
    735         mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
     635        mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
    736636        uninstall-am uninstall-tools_prettyprinterPROGRAMS
    737 
    738 .PRECIOUS: Makefile
    739637
    740638
  • tools/prettyprinter/filter.cc

    r208e5be rb1e63ac5  
    1919using namespace std;
    2020#include "filter.h"
    21 #include "parser.hh"
     21#include "parser.h"
    2222
    2323
  • tools/prettyprinter/filter.h

    r208e5be rb1e63ac5  
    1717#define __FILTER_H__
    1818
    19 #include "ParserTypes.h"
     19#include "parser.hh"
    2020
    2121extern void (* filter)( Token * tree );                                 // pointer to filter for parse tree
  • tools/prettyprinter/lex.ll

    r208e5be rb1e63ac5  
    2323#include <iostream>
    2424using namespace std;
    25 #include "ParserTypes.h"
    2625#include "parser.hh"
     26#include "parser.h"
    2727
    2828#define RETURN_TOKEN( kind ) yylval.tokenp = new Token( yytext, ws_list, kind ); return kind;
  • tools/prettyprinter/parser.hh

    r208e5be rb1e63ac5  
    1 /* A Bison parser, made by GNU Bison 3.0.4.  */
     1//                              -*- Mode: C++ -*-
     2//
     3// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
     4//
     5// The contents of this file are covered under the licence agreement in the
     6// file "LICENCE" distributed with Cforall.
     7//
     8// parse.h - Various declarations that are needed so that the generated parser
     9//           and lexer compile with C++, and to share information between the
     10//           parser, lexer, and driver program
     11//
     12// Author           : Richard C. Bilson and Rodolfo G. Esteves
     13// Created On       : Sun Dec 16 15:00:49 2001
     14// Last Modified By : Peter A. Buhr
     15// Last Modified On : Wed Jun 28 22:59:27 2017
     16// Update Count     : 174
     17//
    218
    3 /* Bison interface for Yacc-like parsers in C
     19#ifndef __PARSER_HH__
     20#define __PARSER_HH__
    421
    5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
     22int yylex();
    623
    7    This program is free software: you can redistribute it and/or modify
    8    it under the terms of the GNU General Public License as published by
    9    the Free Software Foundation, either version 3 of the License, or
    10    (at your option) any later version.
     24#include <string>
     25#include <list>
     26#include "token.h"
    1127
    12    This program is distributed in the hope that it will be useful,
    13    but WITHOUT ANY WARRANTY; without even the implied warranty of
    14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15    GNU General Public License for more details.
     28#endif // __PARSER_HH__
    1629
    17    You should have received a copy of the GNU General Public License
    18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    19 
    20 /* As a special exception, you may create a larger work that contains
    21    part or all of the Bison parser skeleton and distribute that work
    22    under terms of your choice, so long as that work isn't itself a
    23    parser generator using the skeleton or a modified version thereof
    24    as a parser skeleton.  Alternatively, if you modify or redistribute
    25    the parser skeleton itself, you may (at your option) remove this
    26    special exception, which will cause the skeleton and the resulting
    27    Bison output files to be licensed under the GNU General Public
    28    License without this special exception.
    29 
    30    This special exception was added by the Free Software Foundation in
    31    version 2.2 of Bison.  */
    32 
    33 #ifndef YY_YY_PARSER_HH_INCLUDED
    34 # define YY_YY_PARSER_HH_INCLUDED
    35 /* Debug traces.  */
    36 #ifndef YYDEBUG
    37 # define YYDEBUG 1
    38 #endif
    39 #if YYDEBUG
    40 extern int yydebug;
    41 #endif
    42 
    43 /* Token type.  */
    44 #ifndef YYTOKENTYPE
    45 # define YYTOKENTYPE
    46   enum yytokentype
    47   {
    48     MARK = 258,
    49     LCURL = 259,
    50     RCURL = 260,
    51     INTEGER = 261,
    52     CHARACTER = 262,
    53     IDENTIFIER = 263,
    54     CODE = 264,
    55     START = 265,
    56     UNION = 266,
    57     TOKEN = 267,
    58     LEFT = 268,
    59     RIGHT = 269,
    60     NONASSOC = 270,
    61     TYPE = 271,
    62     PURE_PARSER = 272,
    63     SEMANTIC_PARSER = 273,
    64     EXPECT = 274,
    65     THONG = 275,
    66     PREC = 276,
    67     END_TERMINALS = 277,
    68     _SECTIONS = 278,
    69     _DEFSECTION_OPT = 279,
    70     _LITERALBLOCK = 280,
    71     _DECLARATION = 281,
    72     _TAG_OPT = 282,
    73     _NAMENOLIST = 283,
    74     _NAMENO = 284,
    75     _NAMELIST = 285,
    76     _RULESECTION = 286,
    77     _RULE = 287,
    78     _LHS = 288,
    79     _RHS = 289,
    80     _PREC = 290,
    81     _ACTION = 291,
    82     _USERSECTION_OPT = 292
    83   };
    84 #endif
    85 /* Tokens.  */
    86 #define MARK 258
    87 #define LCURL 259
    88 #define RCURL 260
    89 #define INTEGER 261
    90 #define CHARACTER 262
    91 #define IDENTIFIER 263
    92 #define CODE 264
    93 #define START 265
    94 #define UNION 266
    95 #define TOKEN 267
    96 #define LEFT 268
    97 #define RIGHT 269
    98 #define NONASSOC 270
    99 #define TYPE 271
    100 #define PURE_PARSER 272
    101 #define SEMANTIC_PARSER 273
    102 #define EXPECT 274
    103 #define THONG 275
    104 #define PREC 276
    105 #define END_TERMINALS 277
    106 #define _SECTIONS 278
    107 #define _DEFSECTION_OPT 279
    108 #define _LITERALBLOCK 280
    109 #define _DECLARATION 281
    110 #define _TAG_OPT 282
    111 #define _NAMENOLIST 283
    112 #define _NAMENO 284
    113 #define _NAMELIST 285
    114 #define _RULESECTION 286
    115 #define _RULE 287
    116 #define _LHS 288
    117 #define _RHS 289
    118 #define _PREC 290
    119 #define _ACTION 291
    120 #define _USERSECTION_OPT 292
    121 
    122 /* Value type.  */
    123 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    124 
    125 union YYSTYPE
    126 {
    127 #line 41 "parser.yy" /* yacc.c:1909  */
    128 
    129         Token *tokenp;
    130 
    131 #line 132 "parser.hh" /* yacc.c:1909  */
    132 };
    133 
    134 typedef union YYSTYPE YYSTYPE;
    135 # define YYSTYPE_IS_TRIVIAL 1
    136 # define YYSTYPE_IS_DECLARED 1
    137 #endif
    138 
    139 
    140 extern YYSTYPE yylval;
    141 
    142 int yyparse (void);
    143 
    144 #endif /* !YY_YY_PARSER_HH_INCLUDED  */
     30// Local Variables: //
     31// mode: c++ //
     32// tab-width: 4 //
     33// compile-command: "make install" //
     34// End: //
  • tools/prettyprinter/parser.yy

    r208e5be rb1e63ac5  
    2020#include <iostream>
    2121using namespace std;
    22 #include "ParserTypes.h"
     22#include "parser.hh"
    2323#include "filter.h"
    2424
  • tools/prettyprinter/token.cc

    r208e5be rb1e63ac5  
    1616#include <string>
    1717using namespace std;
    18 #include "ParserTypes.h"
    19 #include "parser.hh"
     18#include "parser.hh"
     19#include "parser.h"
    2020#include "filter.h"
    2121
Note: See TracChangeset for help on using the changeset viewer.