Thrift whitepaper draft


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665062 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doc/sigplanconf.cls b/doc/sigplanconf.cls
new file mode 100644
index 0000000..d26f89f
--- /dev/null
+++ b/doc/sigplanconf.cls
@@ -0,0 +1,1175 @@
+%-----------------------------------------------------------------------------

+%

+%               LaTeX Class/Style File

+%

+% Name:         sigplanconf.cls

+% Purpose:      A LaTeX 2e class file for SIGPLAN conference proceedings.

+%               This class file supercedes acm_proc_article-sp,

+%               sig-alternate, and sigplan-proc.

+%

+% Author:       Paul C. Anagnostopoulos

+%               Windfall Software

+%               978 371-2316

+%               paul@windfall.com

+%

+% Created:      12 September 2004

+%

+% Revisions:    See end of file.

+%

+%-----------------------------------------------------------------------------

+

+

+\NeedsTeXFormat{LaTeX2e}[1995/12/01]

+\ProvidesClass{sigplanconf}[2007/03/13 v1.5 ACM SIGPLAN Proceedings]

+

+% The following few pages contain LaTeX programming extensions adapted

+% from the ZzTeX macro package.

+

+%                       Token Hackery

+%                       ----- -------

+

+

+\def \@expandaftertwice {\expandafter\expandafter\expandafter}

+\def \@expandafterthrice {\expandafter\expandafter\expandafter\expandafter

+                          \expandafter\expandafter\expandafter}

+

+% This macro discards the next token.

+

+\def \@discardtok #1{}%                                  token

+

+% This macro removes the `pt' following a dimension.

+

+{\catcode `\p = 12 \catcode `\t = 12

+

+\gdef \@remover #1pt{#1}

+

+} % \catcode

+

+% This macro extracts the contents of a macro and returns it as plain text.

+% Usage: \expandafter\@defof \meaning\macro\@mark

+

+\def \@defof #1:->#2\@mark{#2}

+

+%                       Control Sequence Names

+%                       ------- -------- -----

+

+

+\def \@name #1{%                                        {\tokens}

+  \csname \expandafter\@discardtok \string#1\endcsname}

+

+\def \@withname #1#2{%                                  {\command}{\tokens}

+  \expandafter#1\csname \expandafter\@discardtok \string#2\endcsname}

+

+%                       Flags (Booleans)

+%                       ----- ----------

+

+% The boolean literals \@true and \@false are appropriate for use with

+% the \if command, which tests the codes of the next two characters.

+

+\def \@true {TT}

+\def \@false {FL}

+

+\def \@setflag #1=#2{\edef #1{#2}}%              \flag = boolean

+

+%                       IF and Predicates

+%                       -- --- ----------

+

+% A "predicate" is a macro that returns \@true or \@false as its value.

+% Such values are suitable for use with the \if conditional.  For example:

+%

+%   \if \@oddp{\x} <then-clause> \else <else-clause> \fi

+

+% A predicate can be used with \@setflag as follows:

+%

+%   \@setflag \flag = {<predicate>}

+

+% Here are the predicates for TeX's repertoire of conditional

+% commands.  These might be more appropriately interspersed with

+% other definitions in this module, but what the heck.

+% Some additional "obvious" predicates are defined.

+

+\def \@eqlp   #1#2{\ifnum #1 = #2\@true \else \@false \fi}

+\def \@neqlp  #1#2{\ifnum #1 = #2\@false \else \@true \fi}

+\def \@lssp   #1#2{\ifnum #1 < #2\@true \else \@false \fi}

+\def \@gtrp   #1#2{\ifnum #1 > #2\@true \else \@false \fi}

+\def \@zerop  #1{\ifnum #1 = 0\@true \else \@false \fi}

+\def \@onep   #1{\ifnum #1 = 1\@true \else \@false \fi}

+\def \@posp   #1{\ifnum #1 > 0\@true \else \@false \fi}

+\def \@negp   #1{\ifnum #1 < 0\@true \else \@false \fi}

+\def \@oddp   #1{\ifodd #1\@true \else \@false \fi}

+\def \@evenp  #1{\ifodd #1\@false \else \@true \fi}

+\def \@rangep #1#2#3{\if \@orp{\@lssp{#1}{#2}}{\@gtrp{#1}{#3}}\@false \else

+                                                          \@true \fi}

+\def \@tensp  #1{\@rangep{#1}{10}{19}}

+

+\def \@dimeqlp   #1#2{\ifdim #1 = #2\@true \else \@false \fi}

+\def \@dimneqlp  #1#2{\ifdim #1 = #2\@false \else \@true \fi}

+\def \@dimlssp   #1#2{\ifdim #1 < #2\@true \else \@false \fi}

+\def \@dimgtrp   #1#2{\ifdim #1 > #2\@true \else \@false \fi}

+\def \@dimzerop  #1{\ifdim #1 = 0pt\@true \else \@false \fi}

+\def \@dimposp   #1{\ifdim #1 > 0pt\@true \else \@false \fi}

+\def \@dimnegp   #1{\ifdim #1 < 0pt\@true \else \@false \fi}

+

+\def \@vmodep     {\ifvmode \@true \else \@false \fi}

+\def \@hmodep     {\ifhmode \@true \else \@false \fi}

+\def \@mathmodep  {\ifmmode \@true \else \@false \fi}

+\def \@textmodep  {\ifmmode \@false \else \@true \fi}

+\def \@innermodep {\ifinner \@true \else \@false \fi}

+

+\long\def \@codeeqlp #1#2{\if #1#2\@true \else \@false \fi}

+

+\long\def \@cateqlp #1#2{\ifcat #1#2\@true \else \@false \fi}

+

+\long\def \@tokeqlp  #1#2{\ifx #1#2\@true \else \@false \fi}

+\long\def \@xtokeqlp #1#2{\expandafter\ifx #1#2\@true \else \@false \fi}

+

+\long\def \@definedp #1{%

+  \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname

+                   \relax \@false \else \@true \fi}

+

+\long\def \@undefinedp #1{%

+  \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname

+                   \relax \@true \else \@false \fi}

+

+\def \@emptydefp #1{\ifx #1\@empty \@true \else \@false \fi}%       {\name}

+

+\let \@emptylistp = \@emptydefp

+

+\long\def \@emptyargp #1{%                               {#n}

+  \@empargp #1\@empargq\@mark}

+\long\def \@empargp #1#2\@mark{%

+  \ifx #1\@empargq \@true \else \@false \fi}

+\def \@empargq {\@empargq}

+

+\def \@emptytoksp #1{%                                   {\tokenreg}

+  \expandafter\@emptoksp \the#1\@mark}

+

+\long\def \@emptoksp #1\@mark{\@emptyargp{#1}}

+

+\def \@voidboxp #1{\ifvoid #1\@true \else \@false \fi}

+\def \@hboxp #1{\ifhbox #1\@true \else \@false \fi}

+\def \@vboxp #1{\ifvbox #1\@true \else \@false \fi}

+

+\def \@eofp #1{\ifeof #1\@true \else \@false \fi}

+

+

+% Flags can also be used as predicates, as in:

+%

+%   \if \flaga <then-clause> \else <else-clause> \fi

+

+

+% Now here we have predicates for the common logical operators.

+

+\def \@notp #1{\if #1\@false \else \@true \fi}

+

+\def \@andp #1#2{\if #1%

+                  \if #2\@true \else \@false \fi

+                \else

+                  \@false

+                \fi}

+

+\def \@orp #1#2{\if #1%

+                 \@true

+               \else

+                 \if #2\@true \else \@false \fi

+               \fi}

+

+\def \@xorp #1#2{\if #1%

+                  \if #2\@false \else \@true \fi

+                \else

+                  \if #2\@true \else \@false \fi

+                \fi}

+

+%                       Arithmetic

+%                       ----------

+

+\def \@increment #1{\advance #1 by 1\relax}%             {\count}

+

+\def \@decrement #1{\advance #1 by -1\relax}%            {\count}

+

+%                       Options

+%                       -------

+

+

+\@setflag \@blockstyle = \@false

+\@setflag \@copyrightwanted = \@true

+\@setflag \@explicitsize = \@false

+\@setflag \@mathtime = \@false

+\@setflag \@ninepoint = \@true

+\newcount{\@numheaddepth} \@numheaddepth = 3

+\@setflag \@onecolumn = \@false

+\@setflag \@preprint = \@false

+\@setflag \@reprint = \@false

+\@setflag \@times = \@false

+

+% Note that all the dangerous article class options are trapped.

+

+\DeclareOption{9pt}{\@setflag \@ninepoint = \@true

+                    \@setflag \@explicitsize = \@true}

+

+\DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}%

+                     \@setflag \@ninepoint = \@false

+                     \@setflag \@explicitsize = \@true}

+

+\DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}%

+                     \@setflag \@ninepoint = \@false

+                     \@setflag \@explicitsize = \@true}

+

+\DeclareOption{12pt}{\@unsupportedoption{12pt}}

+

+\DeclareOption{a4paper}{\@unsupportedoption{a4paper}}

+

+\DeclareOption{a5paper}{\@unsupportedoption{a5paper}}

+

+\DeclareOption{b5paper}{\@unsupportedoption{b5paper}}

+

+\DeclareOption{blockstyle}{\@setflag \@blockstyle = \@true}

+

+\DeclareOption{cm}{\@setflag \@times = \@false}

+

+\DeclareOption{computermodern}{\@setflag \@times = \@false}

+

+\DeclareOption{executivepaper}{\@unsupportedoption{executivepaper}}

+

+\DeclareOption{indentedstyle}{\@setflag \@blockstyle = \@false}

+

+\DeclareOption{landscape}{\@unsupportedoption{landscape}}

+

+\DeclareOption{legalpaper}{\@unsupportedoption{legalpaper}}

+

+\DeclareOption{letterpaper}{\@unsupportedoption{letterpaper}}

+

+\DeclareOption{mathtime}{\@setflag \@mathtime = \@true}

+

+\DeclareOption{nocopyrightspace}{\@setflag \@copyrightwanted = \@false}

+

+\DeclareOption{notitlepage}{\@unsupportedoption{notitlepage}}

+

+\DeclareOption{numberedpars}{\@numheaddepth = 4}

+

+%%%\DeclareOption{onecolumn}{\@setflag \@onecolumn = \@true}

+

+\DeclareOption{preprint}{\@setflag \@preprint = \@true}

+

+\DeclareOption{reprint}{\@setflag \@reprint = \@true}

+

+\DeclareOption{times}{\@setflag \@times = \@true}

+

+\DeclareOption{titlepage}{\@unsupportedoption{titlepage}}

+

+\DeclareOption{twocolumn}{\@setflag \@onecolumn = \@false}

+

+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

+

+\ExecuteOptions{9pt,indentedstyle,times}

+\@setflag \@explicitsize = \@false

+\ProcessOptions

+

+\if \@onecolumn

+  \if \@notp{\@explicitsize}%

+    \@setflag \@ninepoint = \@false

+    \PassOptionsToClass{11pt}{article}%

+  \fi

+  \PassOptionsToClass{twoside,onecolumn}{article}

+\else

+  \PassOptionsToClass{twoside,twocolumn}{article}

+\fi

+\LoadClass{article}

+

+\def \@unsupportedoption #1{%

+  \ClassError{proc}{The standard '#1' option is not supported.}}

+

+% This can be used with the 'reprint' option to get the final folios.

+

+\def \setpagenumber #1{%

+  \setcounter{page}{#1}}

+

+\AtEndDocument{\label{sigplanconf@finalpage}}

+

+%                       Utilities

+%                       ---------

+

+

+\newcommand{\setvspace}[2]{%

+  #1 = #2

+  \advance #1 by -1\parskip}

+

+%                       Document Parameters

+%                       -------- ----------

+

+

+% Page:

+

+\setlength{\hoffset}{-1in}

+\setlength{\voffset}{-1in}

+

+\setlength{\topmargin}{1in}

+\setlength{\headheight}{0pt}

+\setlength{\headsep}{0pt}

+

+\if \@onecolumn

+  \setlength{\evensidemargin}{.75in}

+  \setlength{\oddsidemargin}{.75in}

+\else

+  \setlength{\evensidemargin}{.75in}

+  \setlength{\oddsidemargin}{.75in}

+\fi

+

+% Text area:

+

+\newdimen{\standardtextwidth}

+\setlength{\standardtextwidth}{42pc}

+

+\if \@onecolumn

+  \setlength{\textwidth}{40.5pc}

+\else

+  \setlength{\textwidth}{\standardtextwidth}

+\fi

+

+\setlength{\topskip}{8pt}

+\setlength{\columnsep}{2pc}

+\setlength{\textheight}{54.5pc}

+

+% Running foot:

+

+\setlength{\footskip}{30pt}

+

+% Paragraphs:

+

+\if \@blockstyle

+  \setlength{\parskip}{5pt plus .1pt minus .5pt}

+  \setlength{\parindent}{0pt}

+\else

+  \setlength{\parskip}{0pt}

+  \setlength{\parindent}{12pt}

+\fi

+

+\setlength{\lineskip}{.5pt}

+\setlength{\lineskiplimit}{\lineskip}

+

+\frenchspacing

+\pretolerance = 400

+\tolerance = \pretolerance

+\setlength{\emergencystretch}{5pt}

+\clubpenalty = 10000

+\widowpenalty = 10000

+\setlength{\hfuzz}{.5pt}

+

+% Standard vertical spaces:

+

+\newskip{\standardvspace}

+\setvspace{\standardvspace}{5pt plus 1pt minus .5pt}

+

+% Margin paragraphs:

+

+\setlength{\marginparwidth}{36pt}

+\setlength{\marginparsep}{2pt}

+\setlength{\marginparpush}{8pt}

+

+

+\setlength{\skip\footins}{8pt plus 3pt minus 1pt}

+\setlength{\footnotesep}{9pt}

+

+\renewcommand{\footnoterule}{%

+  \hrule width .5\columnwidth height .33pt depth 0pt}

+

+\renewcommand{\@makefntext}[1]{%

+  \noindent \@makefnmark \hspace{1pt}#1}

+

+% Floats:

+

+\setcounter{topnumber}{4}

+\setcounter{bottomnumber}{1}

+\setcounter{totalnumber}{4}

+

+\renewcommand{\fps@figure}{tp}

+\renewcommand{\fps@table}{tp}

+\renewcommand{\topfraction}{0.90}

+\renewcommand{\bottomfraction}{0.30}

+\renewcommand{\textfraction}{0.10}

+\renewcommand{\floatpagefraction}{0.75}

+

+\setcounter{dbltopnumber}{4}

+

+\renewcommand{\dbltopfraction}{\topfraction}

+\renewcommand{\dblfloatpagefraction}{\floatpagefraction}

+

+\setlength{\floatsep}{18pt plus 4pt minus 2pt}

+\setlength{\textfloatsep}{18pt plus 4pt minus 3pt}

+\setlength{\intextsep}{10pt plus 4pt minus 3pt}

+

+\setlength{\dblfloatsep}{18pt plus 4pt minus 2pt}

+\setlength{\dbltextfloatsep}{20pt plus 4pt minus 3pt}

+

+% Miscellaneous:

+

+\errorcontextlines = 5

+

+%                       Fonts

+%                       -----

+

+

+\if \@times

+  \renewcommand{\rmdefault}{ptm}%

+  \if \@mathtime

+    \usepackage[mtbold,noTS1]{mathtime}%

+  \else

+%%%    \usepackage{mathptm}%

+  \fi

+\else

+  \relax

+\fi

+

+\if \@ninepoint

+

+\renewcommand{\normalsize}{%

+  \@setfontsize{\normalsize}{9pt}{10pt}%

+  \setlength{\abovedisplayskip}{5pt plus 1pt minus .5pt}%

+  \setlength{\belowdisplayskip}{\abovedisplayskip}%

+  \setlength{\abovedisplayshortskip}{3pt plus 1pt minus 2pt}%

+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}

+

+\renewcommand{\tiny}{\@setfontsize{\tiny}{5pt}{6pt}}

+

+\renewcommand{\scriptsize}{\@setfontsize{\scriptsize}{7pt}{8pt}}

+

+\renewcommand{\small}{%

+  \@setfontsize{\small}{8pt}{9pt}%

+  \setlength{\abovedisplayskip}{4pt plus 1pt minus 1pt}%

+  \setlength{\belowdisplayskip}{\abovedisplayskip}%

+  \setlength{\abovedisplayshortskip}{2pt plus 1pt}%

+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}

+

+\renewcommand{\footnotesize}{%

+  \@setfontsize{\footnotesize}{8pt}{9pt}%

+  \setlength{\abovedisplayskip}{4pt plus 1pt minus .5pt}%

+  \setlength{\belowdisplayskip}{\abovedisplayskip}%

+  \setlength{\abovedisplayshortskip}{2pt plus 1pt}%

+  \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}}

+

+\renewcommand{\large}{\@setfontsize{\large}{11pt}{13pt}}

+

+\renewcommand{\Large}{\@setfontsize{\Large}{14pt}{18pt}}

+

+\renewcommand{\LARGE}{\@setfontsize{\LARGE}{18pt}{20pt}}

+

+\renewcommand{\huge}{\@setfontsize{\huge}{20pt}{25pt}}

+

+\renewcommand{\Huge}{\@setfontsize{\Huge}{25pt}{30pt}}

+

+\fi

+

+%                       Abstract

+%                       --------

+

+

+\renewenvironment{abstract}{%

+  \section*{Abstract}%

+  \normalsize}{%

+  }

+

+%                       Bibliography

+%                       ------------

+

+

+\renewenvironment{thebibliography}[1]

+     {\section*{\refname

+        \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%

+      \list{\@biblabel{\@arabic\c@enumiv}}%

+           {\settowidth\labelwidth{\@biblabel{#1}}%

+            \leftmargin\labelwidth

+            \advance\leftmargin\labelsep

+            \@openbib@code

+            \usecounter{enumiv}%

+            \let\p@enumiv\@empty

+            \renewcommand\theenumiv{\@arabic\c@enumiv}}%

+      \small

+      \softraggedright%%%\sloppy

+      \clubpenalty4000

+      \@clubpenalty \clubpenalty

+      \widowpenalty4000%

+      \sfcode`\.\@m}

+     {\def\@noitemerr

+       {\@latex@warning{Empty `thebibliography' environment}}%

+      \endlist}

+

+%                       Categories

+%                       ----------

+

+

+\@setflag \@firstcategory = \@true

+

+\newcommand{\category}[3]{%

+  \if \@firstcategory

+    \paragraph*{Categories and Subject Descriptors}%

+    \@setflag \@firstcategory = \@false

+  \else

+    \unskip ;\hspace{.75em}%

+  \fi

+  \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}}

+

+\def \@category #1#2#3[#4]{%

+  {\let \and = \relax

+   #1 [\textit{#2}]%

+   \if \@emptyargp{#4}%

+     \if \@notp{\@emptyargp{#3}}: #3\fi

+   \else

+     :\space

+     \if \@notp{\@emptyargp{#3}}#3---\fi

+     \textrm{#4}%

+   \fi}}

+

+%                       Copyright Notice

+%                       --------- ------

+

+

+\def \ftype@copyrightbox {8}

+\def \@toappear {}

+\def \@permission {}

+

+

+\def \@copyrightspace {%

+  \@float{copyrightbox}[b]%

+  \vbox to 1in{%

+    \vfill

+    \parbox[b]{20pc}{%

+      \scriptsize

+      \if \@preprint

+        [Copyright notice will appear here

+         once 'preprint' option is removed.]\par

+      \else

+        \@toappear

+      \fi

+      \if \@reprint

+        \noindent Reprinted from \@conferencename,

+        \@proceedings,

+        \@conferenceinfo,

+        pp.~\number\thepage--\pageref{sigplanconf@finalpage}.\par

+      \fi}}%

+  \end@float}

+

+\long\def \toappear #1{%

+  \def \@toappear {#1}}

+

+\toappear{%

+  \noindent \@permission \par

+  \vspace{2pt}

+  \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par

+  \noindent Copyright \copyright\ \@copyrightyear\ ACM \@copyrightdata

+    \dots \$5.00\par}

+

+\newcommand{\permission}[1]{%

+  \gdef \@permission {#1}}

+

+\permission{%

+  Permission to make digital or hard copies of all or

+  part of this work for personal or classroom use is granted without

+  fee provided that copies are not made or distributed for profit or

+  commercial advantage and that copies bear this notice and the full

+  citation on the first page.  To copy otherwise, to republish, to

+  post on servers or to redistribute to lists, requires prior specific

+  permission and/or a fee.}

+

+% Here we have some alternate permission statements and copyright lines:

+

+\newcommand{\ACMCanadapermission}{%

+  \permission{%

+    Copyright \@copyrightyear\ Association for Computing Machinery.

+    ACM acknowledges that

+    this contribution was authored or co-authored by an affiliate of the

+    National Research Council of Canada (NRC).

+    As such, the Crown in Right of

+    Canada retains an equal interest in the copyright, however granting

+    nonexclusive, royalty-free right to publish or reproduce this article,

+    or to allow others to do so, provided that clear attribution

+    is also given to the authors and the NRC.}}

+

+\newcommand{\ACMUSpermission}{%

+  \permission{%

+    Copyright \@copyrightyear\ Association for

+    Computing Machinery. ACM acknowledges that

+    this contribution was authored or co-authored

+    by a contractor or affiliate

+    of the U.S. Government. As such, the Government retains a nonexclusive,

+    royalty-free right to publish or reproduce this article,

+    or to allow others to do so, for Government purposes only.}}

+

+\newcommand{\authorpermission}{%

+  \permission{%

+    Copyright is held by the author/owner(s).}

+  \toappear{%

+    \noindent \@permission \par

+    \vspace{2pt}

+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par

+    ACM \@copyrightdata.}}

+

+\newcommand{\Sunpermission}{%

+  \permission{%

+    Copyright is held by Sun Microsystems, Inc.}%

+  \toappear{%

+    \noindent \@permission \par

+    \vspace{2pt}

+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par

+    ACM \@copyrightdata.}}

+

+\newcommand{\USpublicpermission}{%

+  \permission{%

+    This paper is authored by an employee(s) of the United States

+    Government and is in the public domain.}%

+  \toappear{%

+    \noindent \@permission \par

+    \vspace{2pt}

+    \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par

+    ACM \@copyrightdata.}}

+

+%                       Enunciations

+%                       ------------

+

+

+\def \@begintheorem #1#2{%                      {name}{number}

+  \trivlist

+  \item[\hskip \labelsep \textsc{#1 #2.}]%

+  \itshape\selectfont

+  \ignorespaces}

+

+\def \@opargbegintheorem #1#2#3{%               {name}{number}{title}

+  \trivlist

+  \item[%

+    \hskip\labelsep \textsc{#1\ #2}%

+    \if \@notp{\@emptyargp{#3}}\nut (#3).\fi]%

+  \itshape\selectfont

+  \ignorespaces}

+

+%                       Figures

+%                       -------

+

+

+\@setflag \@caprule = \@true

+

+\long\def \@makecaption #1#2{%

+  \addvspace{4pt}

+  \if \@caprule

+    \hrule width \hsize height .33pt

+    \vspace{4pt}

+  \fi

+  \setbox \@tempboxa = \hbox{\@setfigurenumber{#1.}\nut #2}%

+  \if \@dimgtrp{\wd\@tempboxa}{\hsize}%

+    \noindent \@setfigurenumber{#1.}\nut #2\par

+  \else

+    \centerline{\box\@tempboxa}%

+  \fi}

+

+\newcommand{\nocaptionrule}{%

+  \@setflag \@caprule = \@false}

+

+\def \@setfigurenumber #1{%

+  {\rmfamily \bfseries \selectfont #1}}

+

+%                       Hierarchy

+%                       ---------

+

+

+\setcounter{secnumdepth}{\@numheaddepth}

+

+\newskip{\@sectionaboveskip}

+\setvspace{\@sectionaboveskip}{10pt plus 3pt minus 2pt}

+

+\newskip{\@sectionbelowskip}

+\if \@blockstyle

+  \setlength{\@sectionbelowskip}{0.1pt}%

+\else

+  \setlength{\@sectionbelowskip}{4pt}%

+\fi

+

+\renewcommand{\section}{%

+  \@startsection

+    {section}%

+    {1}%

+    {0pt}%

+    {-\@sectionaboveskip}%

+    {\@sectionbelowskip}%

+    {\large \bfseries \raggedright}}

+

+\newskip{\@subsectionaboveskip}

+\setvspace{\@subsectionaboveskip}{8pt plus 2pt minus 2pt}

+

+\newskip{\@subsectionbelowskip}

+\if \@blockstyle

+  \setlength{\@subsectionbelowskip}{0.1pt}%

+\else

+  \setlength{\@subsectionbelowskip}{4pt}%

+\fi

+

+\renewcommand{\subsection}{%

+  \@startsection%

+    {subsection}%

+    {2}%

+    {0pt}%

+    {-\@subsectionaboveskip}%

+    {\@subsectionbelowskip}%

+    {\normalsize \bfseries \raggedright}}

+

+\renewcommand{\subsubsection}{%

+  \@startsection%

+    {subsubsection}%

+    {3}%

+    {0pt}%

+    {-\@subsectionaboveskip}

+    {\@subsectionbelowskip}%

+    {\normalsize \bfseries \raggedright}}

+

+\newskip{\@paragraphaboveskip}

+\setvspace{\@paragraphaboveskip}{6pt plus 2pt minus 2pt}

+

+\renewcommand{\paragraph}{%

+  \@startsection%

+    {paragraph}%

+    {4}%

+    {0pt}%

+    {\@paragraphaboveskip}

+    {-1em}%

+    {\normalsize \bfseries \if \@times \itshape \fi}}

+

+\renewcommand{\subparagraph}{%

+  \@startsection%

+    {subparagraph}%

+    {4}%

+    {0pt}%

+    {\@paragraphaboveskip}

+    {-1em}%

+    {\normalsize \itshape}}

+

+% Standard headings:

+

+\newcommand{\acks}{\section*{Acknowledgments}}

+

+\newcommand{\keywords}{\paragraph*{Keywords}}

+

+\newcommand{\terms}{\paragraph*{General Terms}}

+

+%                       Identification

+%                       --------------

+

+

+\def \@conferencename {}

+\def \@conferenceinfo {}

+\def \@copyrightyear {}

+\def \@copyrightdata {[to be supplied]}

+\def \@proceedings {[Unknown Proceedings]}

+

+

+\newcommand{\conferenceinfo}[2]{%

+  \gdef \@conferencename {#1}%

+  \gdef \@conferenceinfo {#2}}

+

+\newcommand{\copyrightyear}[1]{%

+  \gdef \@copyrightyear {#1}}

+

+\let \CopyrightYear = \copyrightyear

+

+\newcommand{\copyrightdata}[1]{%

+  \gdef \@copyrightdata {#1}}

+

+\let \crdata = \copyrightdata

+

+\newcommand{\proceedings}[1]{%

+  \gdef \@proceedings {#1}}

+

+%                       Lists

+%                       -----

+

+

+\setlength{\leftmargini}{13pt}

+\setlength\leftmarginii{13pt}

+\setlength\leftmarginiii{13pt}

+\setlength\leftmarginiv{13pt}

+\setlength{\labelsep}{3.5pt}

+

+\setlength{\topsep}{\standardvspace}

+\if \@blockstyle

+  \setlength{\itemsep}{1pt}

+  \setlength{\parsep}{3pt}

+\else

+  \setlength{\itemsep}{1pt}

+  \setlength{\parsep}{3pt}

+\fi

+

+\renewcommand{\labelitemi}{{\small \centeroncapheight{\textbullet}}}

+\renewcommand{\labelitemii}{\centeroncapheight{\rule{2.5pt}{2.5pt}}}

+\renewcommand{\labelitemiii}{$-$}

+\renewcommand{\labelitemiv}{{\Large \textperiodcentered}}

+

+\renewcommand{\@listi}{%

+  \leftmargin = \leftmargini

+  \listparindent = 0pt}

+%%%  \itemsep = 1pt

+%%%  \parsep = 3pt}

+%%%  \listparindent = \parindent}

+

+\let \@listI = \@listi

+

+\renewcommand{\@listii}{%

+  \leftmargin = \leftmarginii

+  \topsep = 1pt

+  \labelwidth = \leftmarginii

+  \advance \labelwidth by -\labelsep

+  \listparindent = \parindent}

+

+\renewcommand{\@listiii}{%

+  \leftmargin = \leftmarginiii

+  \labelwidth = \leftmarginiii

+  \advance \labelwidth by -\labelsep

+  \listparindent = \parindent}

+

+\renewcommand{\@listiv}{%

+  \leftmargin = \leftmarginiv

+  \labelwidth = \leftmarginiv

+  \advance \labelwidth by -\labelsep

+  \listparindent = \parindent}

+

+%                       Mathematics

+%                       -----------

+

+

+\def \theequation {\arabic{equation}}

+

+%                       Miscellaneous

+%                       -------------

+

+

+\newcommand{\balancecolumns}{%

+  \vfill\eject

+  \global\@colht = \textheight

+  \global\ht\@cclv = \textheight}

+

+\newcommand{\nut}{\hspace{.5em}}

+

+\newcommand{\softraggedright}{%

+  \let \\ = \@centercr

+  \leftskip = 0pt

+  \rightskip = 0pt plus 10pt}

+

+%                       Program Code

+%                       ------- ----

+

+

+\newcommand{\mono}[1]{%

+  {\@tempdima = \fontdimen2\font

+   \texttt{\spaceskip = 1.1\@tempdima #1}}}

+

+%                       Running Heads and Feet

+%                       ------- ----- --- ----

+

+

+\def \@preprintfooter {}

+

+\newcommand{\preprintfooter}[1]{%

+  \gdef \@preprintfooter {#1}}

+

+\if \@preprint

+

+\def \ps@plain {%

+  \let \@mkboth = \@gobbletwo

+  \let \@evenhead = \@empty

+  \def \@evenfoot {\scriptsize \textit{\@preprintfooter}\hfil \thepage \hfil

+                   \textit{\@formatyear}}%

+  \let \@oddhead = \@empty

+  \let \@oddfoot = \@evenfoot}

+

+\else\if \@reprint

+

+\def \ps@plain {%

+  \let \@mkboth = \@gobbletwo

+  \let \@evenhead = \@empty

+  \def \@evenfoot {\scriptsize \hfil \thepage \hfil}%

+  \let \@oddhead = \@empty

+  \let \@oddfoot = \@evenfoot}

+

+\else

+

+\let \ps@plain = \ps@empty

+\let \ps@headings = \ps@empty

+\let \ps@myheadings = \ps@empty

+

+\fi\fi

+

+\def \@formatyear {%

+  \number\year/\number\month/\number\day}

+

+%                       Special Characters

+%                       ------- ----------

+

+

+\DeclareRobustCommand{\euro}{%

+  \protect{\rlap{=}}{\sf \kern .1em C}}

+

+%                       Title Page

+%                       ----- ----

+

+

+\@setflag \@addauthorsdone = \@false

+

+\def \@titletext {\@latex@error{No title was provided}{}}

+\def \@subtitletext {}

+

+\newcount{\@authorcount}

+

+\newcount{\@titlenotecount}

+\newtoks{\@titlenotetext}

+

+\def \@titlebanner {}

+

+\renewcommand{\title}[1]{%

+  \gdef \@titletext {#1}}

+

+\newcommand{\subtitle}[1]{%

+  \gdef \@subtitletext {#1}}

+

+\newcommand{\authorinfo}[3]{%           {names}{affiliation}{email/URL}

+  \global\@increment \@authorcount

+  \@withname\gdef {\@authorname\romannumeral\@authorcount}{#1}%

+  \@withname\gdef {\@authoraffil\romannumeral\@authorcount}{#2}%

+  \@withname\gdef {\@authoremail\romannumeral\@authorcount}{#3}}

+

+\renewcommand{\author}[1]{%

+  \@latex@error{The \string\author\space command is obsolete;

+                use \string\authorinfo}{}}

+

+\newcommand{\titlebanner}[1]{%

+  \gdef \@titlebanner {#1}}

+

+\renewcommand{\maketitle}{%

+  \pagestyle{plain}%

+  \if \@onecolumn

+    {\hsize = \standardtextwidth

+     \@maketitle}%

+  \else

+    \twocolumn[\@maketitle]%

+  \fi

+  \@placetitlenotes

+  \if \@copyrightwanted \@copyrightspace \fi}

+

+\def \@maketitle {%

+  \begin{center}

+  \@settitlebanner

+  \let \thanks = \titlenote

+  \noindent \LARGE \bfseries \@titletext \par

+  \vskip 6pt

+  \noindent \Large \@subtitletext \par

+  \vskip 12pt

+  \ifcase \@authorcount

+    \@latex@error{No authors were specified for this paper}{}\or

+    \@titleauthors{i}{}{}\or

+    \@titleauthors{i}{ii}{}\or

+    \@titleauthors{i}{ii}{iii}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{viii}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{viii}{ix}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{}\or

+    \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}%

+                  \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{xii}%

+  \else

+    \@latex@error{Cannot handle more than 12 authors}{}%

+  \fi

+  \vspace{1.75pc}

+  \end{center}}

+

+\def \@settitlebanner {%

+  \if \@andp{\@preprint}{\@notp{\@emptydefp{\@titlebanner}}}%

+    \vbox to 0pt{%

+      \vskip -32pt

+      \noindent \textbf{\@titlebanner}\par

+      \vss}%

+    \nointerlineskip

+  \fi}

+

+\def \@titleauthors #1#2#3{%

+  \if \@andp{\@emptyargp{#2}}{\@emptyargp{#3}}%

+    \noindent \@setauthor{40pc}{#1}{\@false}\par

+  \else\if \@emptyargp{#3}%

+    \noindent \@setauthor{17pc}{#1}{\@false}\hspace{3pc}%

+              \@setauthor{17pc}{#2}{\@false}\par

+  \else

+    \noindent \@setauthor{12.5pc}{#1}{\@false}\hspace{2pc}%

+              \@setauthor{12.5pc}{#2}{\@false}\hspace{2pc}%

+              \@setauthor{12.5pc}{#3}{\@true}\par

+    \relax

+  \fi\fi

+  \vspace{20pt}}

+

+\def \@setauthor #1#2#3{%                       {width}{text}{unused}

+  \vtop{%

+    \def \and {%

+      \hspace{16pt}}

+    \hsize = #1

+    \normalfont

+    \centering

+    \large \@name{\@authorname#2}\par

+    \vspace{5pt}

+    \normalsize \@name{\@authoraffil#2}\par

+    \vspace{4pt}

+    \normalsize{\@name{\@authoremail#2}}\par}}

+

+\def \@maybetitlenote #1{%

+  \if \@andp{#1}{\@gtrp{\@authorcount}{3}}%

+    \titlenote{See page~\pageref{@addauthors} for additional authors.}%

+  \fi}

+

+\newtoks{\@fnmark}

+

+\newcommand{\titlenote}[1]{%

+  \global\@increment \@titlenotecount

+  \ifcase \@titlenotecount \relax \or

+    \@fnmark = {\ast}\or

+    \@fnmark = {\dagger}\or

+    \@fnmark = {\ddagger}\or

+    \@fnmark = {\S}\or

+    \@fnmark = {\P}\or

+    \@fnmark = {\ast\ast}%

+  \fi

+  \,$^{\the\@fnmark}$%

+  \edef \reserved@a {\noexpand\@appendtotext{%

+                       \noexpand\@titlefootnote{\the\@fnmark}}}%

+  \reserved@a{#1}}

+

+\def \@appendtotext #1#2{%

+  \global\@titlenotetext = \expandafter{\the\@titlenotetext #1{#2}}}

+

+\newcount{\@authori}

+

+\iffalse

+\def \additionalauthors {%

+  \if \@gtrp{\@authorcount}{3}%

+    \section{Additional Authors}%

+    \label{@addauthors}%

+    \noindent

+    \@authori = 4

+    {\let \\ = ,%

+     \loop 

+       \textbf{\@name{\@authorname\romannumeral\@authori}},

+       \@name{\@authoraffil\romannumeral\@authori},

+       email: \@name{\@authoremail\romannumeral\@authori}.%

+       \@increment \@authori

+     \if \@notp{\@gtrp{\@authori}{\@authorcount}} \repeat}%

+    \par

+  \fi

+  \global\@setflag \@addauthorsdone = \@true}

+\fi

+

+\let \addauthorsection = \additionalauthors

+

+\def \@placetitlenotes {

+  \the\@titlenotetext}

+

+%                       Utilities

+%                       ---------

+

+

+\newcommand{\centeroncapheight}[1]{%

+  {\setbox\@tempboxa = \hbox{#1}%

+   \@measurecapheight{\@tempdima}%         % Calculate ht(CAP) - ht(text)

+   \advance \@tempdima by -\ht\@tempboxa   %           ------------------

+   \divide \@tempdima by 2                 %                   2

+   \raise \@tempdima \box\@tempboxa}}

+

+\newbox{\@measbox}

+

+\def \@measurecapheight #1{%                            {\dimen}

+  \setbox\@measbox = \hbox{ABCDEFGHIJKLMNOPQRSTUVWXYZ}%

+  #1 = \ht\@measbox}

+

+\long\def \@titlefootnote #1#2{%

+  \insert\footins{%

+    \reset@font\footnotesize

+    \interlinepenalty\interfootnotelinepenalty

+    \splittopskip\footnotesep

+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM

+    \hsize\columnwidth \@parboxrestore

+%%%    \protected@edef\@currentlabel{%

+%%%       \csname p@footnote\endcsname\@thefnmark}%

+    \color@begingroup

+      \def \@makefnmark {$^{#1}$}%

+      \@makefntext{%

+        \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}%

+    \color@endgroup}}

+

+%                       LaTeX Modifications

+%                       ----- -------------

+

+\def \@seccntformat #1{%

+  \@name{\the#1}%

+  \@expandaftertwice\@seccntformata \csname the#1\endcsname.\@mark

+  \quad}

+

+\def \@seccntformata #1.#2\@mark{%

+  \if \@emptyargp{#2}.\fi}

+

+%                       Revision History

+%                       -------- -------

+

+

+%  Date         Person  Ver.    Change

+%  ----         ------  ----    ------

+

+%  2004.09.12   PCA     0.1--5  Preliminary development.

+

+%  2004.11.18   PCA     0.5     Start beta testing.

+

+%  2004.11.19   PCA     0.6     Obsolete \author and replace with

+%                               \authorinfo.

+%                               Add 'nocopyrightspace' option.

+%                               Compress article opener spacing.

+%                               Add 'mathtime' option.

+%                               Increase text height by 6 points.

+

+%  2004.11.28   PCA     0.7     Add 'cm/computermodern' options.

+%                               Change default to Times text.

+

+%  2004.12.14   PCA     0.8     Remove use of mathptm.sty; it cannot

+%                               coexist with latexsym or amssymb.

+

+%  2005.01.20   PCA     0.9     Rename class file to sigplanconf.cls.

+

+%  2005.03.05   PCA     0.91    Change default copyright data.

+

+%  2005.03.06   PCA     0.92    Add at-signs to some macro names.

+

+%  2005.03.07   PCA     0.93    The 'onecolumn' option defaults to '11pt',

+%                               and it uses the full type width.

+

+%  2005.03.15   PCA     0.94    Add at-signs to more macro names.

+%                               Allow margin paragraphs during review.

+

+%  2005.03.22   PCA     0.95    Implement \euro.

+%                               Remove proof and newdef environments.

+

+%  2005.05.06   PCA     1.0     Eliminate 'onecolumn' option.

+%                               Change footer to small italic and eliminate

+%                               left portion if no \preprintfooter.

+%                               Eliminate copyright notice if preprint.

+%                               Clean up and shrink copyright box.

+

+%  2005.05.30   PCA     1.1     Add alternate permission statements.

+

+%  2005.06.29   PCA     1.1     Publish final first edition of guide.

+

+%  2005.07.14   PCA     1.2     Add \subparagraph.

+%                               Use block paragraphs in lists, and adjust

+%                               spacing between items and paragraphs.

+

+%  2006.06.22   PCA     1.3     Add 'reprint' option and associated

+%                               commands.

+

+%  2006.08.24   PCA     1.4     Fix bug in \maketitle case command.

+

+%  2007.03.13   PCA     1.5     The title banner only display with the

+%                               'preprint' option.
\ No newline at end of file