Listing 1: Files generated by fcc for a SocketWrench class

// Command used: fcc -class SocketWrench -namespace tools \
// -author "John F. Hubbard" -continuus_keywords -verbose

/* ****************************************************************
 *  SocketWrench.h
 *  Created by John F. Hubbard, on Sat Nov 18 2000, 
 *  21:41:15 Pacific Standard Time
 *
 *  Copyright (c) 2000, ATD Azad Technology Development Corporation
 *
 *  File Contents: Interface and documentation of the SocketWrench 
 *  component.
 *
 *  %version: 1 %
 *  %date_modified: Sat Nov 18 2000, 
 *     21:41:15 Pacific Standard Time %
 *  %created_by: John F. Hubbard %
 *************************************************************** */
#ifndef ATC_TOOLS_SOCKETWRENCH_H
#define ATC_TOOLS_SOCKETWRENCH_H

namespace tools
{
/** Purpose: TODO: Describe the purpose of the class.
 *  (Everything that you write here will show up in the
 *  doc++ generated documentation.)
 */
class SocketWrench
{
public:
    /// Constructor.
    SocketWrench();
    virtual ~SocketWrench();

    /// CheckValid() is designed to check the class invariants.
    inline void CheckValid() const;

    /// DumpDiagnostics() dumps the object's state to 
    /// standard output.
    void DumpDiagnostics() const;

private:
        // Copying of this class is prohibited:
    SocketWrench(const SocketWrench&);
private:
        // Assignment to this class is prohibited:
    SocketWrench& operator=(const SocketWrench&);
};

#include "SocketWrench.icc"
} // end of the tools namespace

#endif // #ifndef ATC_TOOLS_SOCKETWRENCH_H

/* ****************************************************************
 *  SocketWrench.cpp
 *  (remainder of header not shown)
 *************************************************************** */
#include <string>
#include <iostream>
#include "SocketWrench.h"

namespace tools
{
SocketWrench::SocketWrench()
{
}

SocketWrench::~SocketWrench()
{
}

void
SocketWrench::DumpDiagnostics() const
{
    std::cout << std::endl << std::endl <<
    "SocketWrench Diagnostics dump "<< std::endl << std::endl;
}
} // end of the tools namespace

/* ****************************************************************
 *  SocketWrench.icc
 *  (remainder of header not shown)
 *************************************************************** */

inline void
SocketWrench::CheckValid() const
{
    // TODO: Fill in with class invariant assertions for 
    // SocketWrench.

}

/* ****************************************************************
 *
 *  utSocketWrench.cpp
 *  (remainder of header not shown)
 *************************************************************** */

#include <string>
#include <iostream>
#include "SocketWrench.h"


int main(int argc, char* argv[])
{
    tools::SocketWrench objSocketWrench;
    objSocketWrench.DumpDiagnostics();

    return 0;
}

###################################################################
#  makefile
#  (remainder of header not shown)
###################################################################

NAME=SocketWrench
INCLUDES=-I ${SXL_ROOT}/include
SOLARIS_LIBS=${SXL_ROOT}/lib/sxl.a
CXX=gcc
LINK=gcc
SOLARIS_LINK_FLAGS=-lgcc

all: ut${NAME} html

html: ${NAME}.h
        doc++ -d html *.h
        touch html

# Solaris builds:
LINK_FLAGS=  ${SOLARIS_LINK_FLAGS}
LIBS=        ${SOLARIS_LIBS}
CXX_FLAGS=-DSOLARIS_SPARC -g -c -fhonor-std \
          -fno-builtin -D_REENTRANT -Wall -Wno-unknown-pragmas \
          -Wno-unused

ut${NAME} : ut${NAME}.o ${NAME}.o
        ${LINK} ${LINK_FLAGS} -o ut${NAME} ut${NAME}.o ${NAME}.o 
        ${LIBS}
${NAME}.o : ${NAME}.cpp ${NAME}.h ${NAME}.icc
        ${CXX} ${CXX_FLAGS} ${INCLUDES} -c -o ${NAME}.o ${NAME}.cpp

ut${NAME}.o : ut${NAME}.cpp ${NAME}.h ${NAME}.icc
        ${CXX} ${CXX_FLAGS} ${INCLUDES} -c -o ut${NAME}.o 
        ut${NAME}.cpp

clean:
        rm *.o ut${NAME} html/*
        rmdir html
— End of Listing —