%%% -*-latex-*-
%%%
%%% Description of the internal class structure and protocol
%%%
%%% (c) 2009 Straylight/Edgeware
%%%

%%%----- Licensing notice ---------------------------------------------------
%%%
%%% This file is part of the Simple Object Definition system.
%%%
%%% SOD is free software; you can redistribute it and/or modify
%%% it under the terms of the GNU General Public License as published by
%%% the Free Software Foundation; either version 2 of the License, or
%%% (at your option) any later version.
%%%
%%% SOD is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%%% GNU General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with SOD; if not, write to the Free Software Foundation,
%%% Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

\documentclass[noarticle]{strayman}

\errorcontextlines=999

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[palatino, helvetica, courier, maths=cmr]{mdwfonts}
\usepackage{tikz}
\usepackage{syntax}
\usepackage{sverb}
\usepackage{mdwtab}
\usepackage[mdwmargin]{mdwthm}
\usepackage{amssymb}
\usepackage{footnote}
\usepackage{at}
\usepackage{mdwref}

\usepackage{sod}

\title{A Sensible Object Design for C}
\author{Mark Wooding}

\begin{document}

\maketitle

%%%--------------------------------------------------------------------------
\frontmatter

\tableofcontents

\mainmatter

%%%--------------------------------------------------------------------------
\part{Tutorial} \label{p:tut}

\include{tutorial}

%%%--------------------------------------------------------------------------
\part{Reference} \label{p:ref}

\include{concepts}
\include{cmdline}
\include{syntax}
\include{structures}
\include{runtime}

%%%--------------------------------------------------------------------------
\part{Lisp interface} \label{p:lisp}

\include{lispintro}
%% package.lisp
%% sod.asd.in
%% sod-frontend.asd.in
%% auto.lisp.in

\include{misc}
%% pset-impl.lisp
%% pset-parse.lisp
%% pset-proto.lisp
%% lexer-bits.lisp
%% lexer-impl.lisp
%% lexer-proto.lisp
%% utilities.lisp
%% optparse.lisp
%% frontend.lisp
%% final.lisp

\include{parsing}
%% package.lisp
%% floc-impl.lisp
%% floc-proto.lisp
%% streams-impl.lisp
%% streams-proto.lisp
%% scanner-context-impl.lisp
%% scanner-impl.lisp
%% scanner-proto.lisp
%% scanner-token-impl.lisp
%% scanner-charbuf-impl.lisp
%% parser-impl.lisp
%% parser-proto.lisp
%% parser-expr-impl.lisp
%% parser-expr-proto.lisp

\include{clang}
%% c-types-class-impl.lisp
%% c-types-impl.lisp
%% c-types-parse.lisp
%% c-types-proto.lisp
%% codegen-impl.lisp
%% codegen-proto.lisp
%% fragment-parse.lisp

\include{meta}
%% classes.lisp
%% class-utilities.lisp
%% class-make-impl.lisp
%% class-make-proto.lisp
%% class-finalize-impl.lisp
%% class-finalize-proto.lisp

\include{layout}
%% class-layout-impl.lisp
%% class-layout-proto.lisp
%% method-impl.lisp
%% method-proto.lisp
%% method-aggregate.lisp

\include{module}
%% module-impl.lisp
%% module-parse.lisp
%% module-proto.lisp
%% builtin.lisp

\include{output}
%% output-impl.lisp
%% output-proto.lisp
%% class-output.lisp
%% module-output.lisp

%%%--------------------------------------------------------------------------
\part{Appendices}
\appendix

\include{cutting-room-floor}

%%%----- That's all, folks --------------------------------------------------
\end{document}

%%% Local variables:
%%% mode: LaTeX
%%% TeX-PDF-mode: t
%%% End:
