<P>
The program CCCC is made available freely and with NO WARRANTY in the 
hope that it may be useful.
</P>

<P>
The development of CCCC has been performed to support research for the
degree of MSc at Edith Cowan University by Tim Littlefair.  
The main focus of this research will be to survey users (and non-users) 
of metrics tools for their opinions on the role of metrics in their 
development process.
The main survey will be conducted some time between May and July 1997.  
</P>

<P>
Users of CCCC are encouraged to 
<A HREF="mailto:t.littlefair@cowan.edu.au">mail Tim Littlefair</A> 
or 
<A HREF="http://www.fste.ac.cowan.edu.au/~tlittlef">visit the 
CCCC home page</A>, 
and also to encourage their friends to use CCCC. 
</P>

<P>
For details of options to CCCC please run "cccc -?" which should give a
detailed up-to-date description of the program's usage.  Selected features
only are described below.
</P>

<P>
The program is designed to allow
user configuration of the display of numeric results, including setting the
numerical thresholds at which metrics are displayed in strong emphasis (for
danger), or emphasis (for caution).  See the file cccc_tmt.dat for details of 
what can be configured.  This file is normally located in /usr/local/lib/cccc 
(under Unix) or c:\cccc (under DOS/Win), but can be read from a different 
location using the -l command line switch.  Note that these two levels of
emphasis are displayed using red and yellow backgrounds if the output file
is viewed in a browser which supports background attributes (Netscape 3.0 and
IE 2.0 do, Netscape 2.0 does not).  If emphasis is considered undesirable,
it will be disabled by simply deleting (or not finding) the cccc_tmt.dat file.
</P>

<P>
CCCC runs on C or C++ source code as viewed in a text editor.  Unlike a the
parser in a compiler, CCCC sees the exact text of the source file, not the
output when the source file is preprocessed.  This implies that CCCC may be
confused by source code which relies on the preprocessor to map text which
would not be accepted as syntactically correct to a form which is.  This is
a particular problem when the preprocessor is used to define synonyms for
language keywords used as modifiers to declarations (e.g. code written for
some application frameworks defines the synonym 'PUBLIC' for the keyword 
'extern').  CCCC also has problems when asked to parse code which contains
implementation specific keywords (such as the 'far' and 'near' keywords in 
MS/DOS compilers designed for the original 16 bit segmented memory 
architecture).  CCCC now supports a configuration file 'cccc_ign.dat', which
should be located in the same directories as the treatment configuration file
described above.  This file is a simple list of identifiers which the lexer 
should discard without passing to the compiler.  The format of the file is 
a list of words separated by any kind of white space. Any part of a line after
the symbol # is treated as a comment.  This is probably not a complete answer
to the preprocessor problem, but may be helpful in some cases.
</P>
    
<P>
Note that in the Procedural Metrics Summary table, each module name is
an HTML link to the corresponding section of the Procedural Metrics Detail
table, and vice versa.  The Structural Metrics Summary and Structural Metrics
Detail reports are also cross linked in this way.
</P>  

<P>
The development of CCCC was heavily dependent on an excellent tool called
PCCTS, the Purdue Compiler Construction Toolset, by Terence Parr, Will
Cohen, Hank Dietz, Russell Quong and others.  
PCCTS is a tool comparable to but more powerful than the standard lex/yacc 
utilities.  
People interested in parsing are likely to enjoy a visit to 
<A HREF="http://www.parr-research.com">the PCCTS home page</A>.
</P>







