Changes in / [9799ec8:aea7168]


Ignore:
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • doc/LaTeXmacros/common.tex

    r9799ec8 raea7168  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Mon Aug  1 09:11:20 2016
    14 %% Update Count     : 225
     13%% Last Modified On : Tue Aug  2 17:02:02 2016
     14%% Update Count     : 228
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    4040\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    4141\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
    42 \def\c11{ISO/IEC C}                                             % C11 name (cannot have numbers in latex command name)
     42\newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
    4343
    4444%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  • doc/user/user.tex

    r9799ec8 raea7168  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Mon Aug  1 09:11:24 2016
    14 %% Update Count     : 1271
     13%% Last Modified On : Tue Aug  2 17:39:02 2016
     14%% Update Count     : 1286
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    226226
    227227\section{Interoperability}
     228\label{s:Interoperability}
    228229
    229230\CFA is designed to integrate well with existing C programs and libraries.
     
    314315The \CFA compilation message is printed at the beginning of a compilation.
    315316\textbf{This option is the default.}
     317
     318\item
     319\Indexc{-no-include-std}\index{compilation option!-no-include-std@©-no-include-std©}
     320Do not supply ©extern "C"© wrappers for \Celeven standard include files (see~\VRef{s:StandardHeaders}).
     321\textbf{This option is \emph{not} the default.}
    316322\end{description}
    317323
     
    43634369
    43644370
    4365 \section{New Keywowrds}
    4366 
    4367 ©catch©, ©catchResume©, ©choose©, \quad ©disable©, ©dtype©, \quad ©enable©, \quad ©fallthrough©, ©fallthru©, ©finally©, ©forall©, ©ftype©, \quad ©lvalue©, \quad ©otype©, \quad ©throw©, ©throwResume©, ©trait©, ©try©
     4371\section{New Keywords}
     4372\label{s:NewKeywords}
     4373
     4374\begin{quote2}
     4375\begin{tabular}{ll}
     4376©catch©                 & ©lvalue©              \\
     4377©catchResume©   &                               \\
     4378©choose©                & ©otype©               \\
     4379                                &                               \\
     4380©disable©               & ©throw©               \\
     4381©dtype©                 & ©throwResume© \\
     4382                                & ©trait©               \\
     4383©enable©                & ©try©                 \\
     4384                                &                               \\
     4385©fallthrough©                                   \\
     4386©fallthru©                                              \\
     4387©finally©                                               \\
     4388©forall©                                                \\
     4389©ftype©                                                 \\
     4390\end{tabular}
     4391\end{quote2}
     4392
     4393
     4394\section{Standard Headers}
     4395\label{s:StandardHeaders}
     4396
     4397C prescribes the following standard header-files:
     4398\begin{quote2}
     4399\begin{minipage}{\linewidth}
     4400\begin{tabular}{lll}
     4401assert.h        & math.h                & stdlib.h              \\
     4402complex.h       & setjmp.h              & stdnoreturn.h \\
     4403ctype.h         & signal.h              & string.h              \\
     4404errno.h         & stdalign.h    & tgmath.h              \\
     4405fenv.h          & stdarg.h              & threads.h             \\
     4406float.h         & stdatomic.h   & time.h                \\
     4407inttypes.h      & stdbool.h             & uchar.h               \\
     4408iso646.h        & stddef.h              & wchar.h               \\
     4409limits.h        & stdint.h              & wctype.h              \\
     4410locale.h        & stdio.h               & unistd.h\footnote{\CFA extension}
     4411\end{tabular}
     4412\end{minipage}
     4413\end{quote2}
     4414For the prescribed head-files, \CFA implicit wraps their includes in an ©extern "C"©;
     4415hence, names in these include files are not mangled\index{mangling!name} (see~\VRef{s:Interoperability}).
     4416All other C header files must be explicitly wrapped in ©extern "C"© to prevent name mangling.
    43684417
    43694418
     
    43754424\item
    43764425\begin{description}
    4377 \item[Change:] add new keywords \\
     4426\item[Change:] add new keywords (see~\VRef{s:NewKeywords}) \\
    43784427New keywords are added to \CFA.
    43794428\item[Rationale:] keywords added to implement new semantics of \CFA.
     
    44734522\begin{description}
    44744523\item[Change:] have ©struct© introduce a scope for nested types
    4475 In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing 
     4524In C, the name of the nested types belongs to the same scope as the name of the outermost enclosing
    44764525Example:
    44774526\begin{lstlisting}
     
    45964645%$
    45974646\begin{lstlisting}[mathescape=off]
    4598 sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7 | "x ¿" | 8 | "x «" | 9 | endl;
     4647sout | "x (" | 1 | "x [" | 2 | "x {" | 3 | "x $" | 4 | "x £" | 5 | "x ¥" | 6 | "x ¡" | 7
     4648         | "x ¿" | 8 | "x «" | 9 | endl;
    45994649\end{lstlisting}
    46004650%$
     
    46064656A seperator does not appear after a C string ending with the (extended) \Index{ASCII}\index{ASCII!extended} characters: ©,.:;!?)]}%¢»©
    46074657\begin{lstlisting}[belowskip=0pt]
    4608 sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7 | ") x" | 8 | "] x" | 9 | "} x"
    4609          | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
     4658sout | 1 | ", x" | 2 | ". x" | 3 | ": x" | 4 | "; x" | 5 | "! x" | 6 | "? x" | 7
     4659         | ") x" | 8 | "] x" | 9 | "} x" | 10 | "% x" | 11 | "¢ x" | 12 | "» x" | endl;
    46104660\end{lstlisting}
    46114661\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46234673The following \CC-style \Index{manipulator}s allow further control over implicit seperation.
    46244674\begin{lstlisting}[mathescape=off,belowskip=0pt]
    4625 sout | sepOn | 1 | 2 | 3 | sepOn | endl;        // separator at start of line
     4675sout | sepOn | 1 | 2 | 3 | sepOn | endl;        §\C{// separator at start of line}§
    46264676\end{lstlisting}
    46274677\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46294679\end{lstlisting}
    46304680\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4631 sout | 1 | sepOff | 2 | 3 | endl;                       // turn off implicit separator temporarily
     4681sout | 1 | sepOff | 2 | 3 | endl;                       §\C{// turn off implicit separator temporarily}§
    46324682\end{lstlisting}
    46334683\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46354685\end{lstlisting}
    46364686\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4637 sout | sepDisable | 1 | 2 | 3 | endl;           // turn off implicit separation, affects all subsequent prints
     4687sout | sepDisable | 1 | 2 | 3 | endl;           §\C{// turn off implicit separation, affects all subsequent prints}§
    46384688\end{lstlisting}
    46394689\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46414691\end{lstlisting}
    46424692\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4643 sout | 1 | sepOn | 2 | 3 | endl;                        // turn on implicit separator temporarily
     4693sout | 1 | sepOn | 2 | 3 | endl;                        §\C{// turn on implicit separator temporarily}§
    46444694\end{lstlisting}
    46454695\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46474697\end{lstlisting}
    46484698\begin{lstlisting}[mathescape=off,aboveskip=0pt,belowskip=0pt]
    4649 sout | sepEnable | 1 | 2 | 3 | endl;            // turn on implicit separation, affects all subsequent prints
     4699sout | sepEnable | 1 | 2 | 3 | endl;            §\C{// turn on implicit separation, affects all subsequent prints}§
    46504700\end{lstlisting}
    46514701\begin{lstlisting}[mathescape=off,showspaces=true,aboveskip=0pt,belowskip=0pt]
     
    46534703\end{lstlisting}
    46544704\begin{lstlisting}[mathescape=off,aboveskip=0pt,aboveskip=0pt,belowskip=0pt]
    4655 sepSet( sout, ", $" );                                          // change separator from " " to ", $"
     4705sepSet( sout, ", $" );                                          §\C{// change separator from " " to ", \$"}§
    46564706sout | 1 | 2 | 3 | endl;
    46574707\end{lstlisting}
  • src/driver/cfa.cc

    r9799ec8 raea7168  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  7 08:56:01 2016
    13 // Update Count     : 144
     12// Last Modified On : Tue Aug  2 12:23:11 2016
     13// Update Count     : 147
    1414//
    1515
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
     89        bool noincstd_flag = false;                                                     // -no-include-std= flag
    8990        bool debugging __attribute(( unused )) = false;         // -g flag
    9091
     
    144145                        } else if ( arg == "-nohelp" ) {
    145146                                help = false;                                                   // strip the nohelp flag
     147                        } else if ( arg == "-no-include-std" ) {
     148                                noincstd_flag = true;                                   // strip the no-include-std flag
    146149                        } else if ( arg == "-compiler" ) {
    147150                                // use the user specified compiler
     
    248251        args[nargs] = "-I" CFA_INCDIR;
    249252        nargs += 1;
    250         args[nargs] = "-I" CFA_INCDIR "/stdhdr";
    251         nargs += 1;
     253        if ( ! noincstd_flag ) {                                                        // do not use during build
     254                args[nargs] = "-I" CFA_INCDIR "/stdhdr";
     255                nargs += 1;
     256        } // if
    252257        args[nargs] = "-I" CFA_INCDIR "/containers";
    253258        nargs += 1;
  • src/libcfa/Makefile.am

    r9799ec8 raea7168  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Fri Jul  8 23:05:11 2016
    14 ## Update Count     : 192
     13## Last Modified On : Tue Aug  2 12:17:23 2016
     14## Update Count     : 196
    1515###############################################################################
    1616
     
    2626# create extra forward types/declarations to reduce inclusion of library files
    2727extras.cf : extras.regx extras.c
    28         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     28        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    2929
    3030# create forward declarations for gcc builtins
    3131builtins.cf : builtins.c
    32         $(AM_V_GEN)if [ -e $< ] ; then \
     32        ${AM_V_GEN}if [ -e $< ] ; then \
    3333                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    3434        fi
    3535
    3636builtins.c : builtins.def prototypes.awk
    37         $(AM_V_GEN)if [ -e $< ] ; then \
     37        ${AM_V_GEN}if [ -e $< ] ; then \
    3838                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    3939        fi
     
    4848
    4949libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    50         $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     50        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    5151
    5252libcfa-prelude.o : libcfa-prelude.c
    53          $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     53         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    5454
    55 CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     55CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    5656CC = ${abs_top_srcdir}/src/driver/cfa
    5757
     
    6363        @true
    6464
    65 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     65${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    6666
    6767libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
  • src/libcfa/Makefile.in

    r9799ec8 raea7168  
    136136CFA_LIBDIR = @CFA_LIBDIR@
    137137CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -quiet -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     138CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    139139CPP = @CPP@
    140140CPPFLAGS = @CPPFLAGS@
     
    603603# create extra forward types/declarations to reduce inclusion of library files
    604604extras.cf : extras.regx extras.c
    605         $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     605        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    606606
    607607# create forward declarations for gcc builtins
    608608builtins.cf : builtins.c
    609         $(AM_V_GEN)if [ -e $< ] ; then \
     609        ${AM_V_GEN}if [ -e $< ] ; then \
    610610                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    611611        fi
    612612
    613613builtins.c : builtins.def prototypes.awk
    614         $(AM_V_GEN)if [ -e $< ] ; then \
     614        ${AM_V_GEN}if [ -e $< ] ; then \
    615615                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    616616        fi
     
    623623
    624624libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
    625         $(AM_V_GEN)${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
     625        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    626626
    627627libcfa-prelude.o : libcfa-prelude.c
    628          $(AM_V_GEN)@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     628         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    629629
    630630# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     
    632632        @true
    633633
    634 ${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA}        # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     634${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    635635
    636636maintainer-clean-local:
Note: See TracChangeset for help on using the changeset viewer.