Triton-commits
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
November 2014
- 2 participants
- 45 discussions
26 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 7bc7b3d90e74dbafc155a0b3a016d2ce41f9ac15 (commit)
from 61ce0411a08e638ee3de1bc0f707bb1b676e6974 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 7bc7b3d90e74dbafc155a0b3a016d2ce41f9ac15
Author: Shane Snyder <ssnyder(a)mcs.anl.gov>
Date: Wed Nov 26 15:03:34 2014 -0600
Add stubbed out membership paper
-----------------------------------------------------------------------
Summary of changes:
.../{io-redirect/draft => membership}/IEEEtran.bst | 0
papers/{vosd-paper => membership}/IEEEtran.cls | 0
.../IEEEtran.bst => membership/IEEEtranN.bst} | 438 +++-
.../IEEEtran.bst => membership/IEEEtranS.bst} | 214 ++-
.../IEEEtran.bst => membership/IEEEtranSA.bst} | 507 +++-
.../IEEEtran.bst => membership/IEEEtranSN.bst} | 579 +++-
papers/{asg-osd => membership}/IEEEtrantools.sty | 0
.../membership}/Makefile | 11 +-
papers/{.dummy => membership/REFERENCES.bib} | 0
papers/membership/acmsmall.bst | 1808 +++++++++++
papers/membership/acmsmall.cls | 3256 ++++++++++++++++++++
papers/{2011/aesop => membership}/algorithm.sty | 0
papers/{2011/aesop => membership}/algorithmic.sty | 13 +-
papers/membership/membership-paper.tex | 186 ++
14 files changed, 6770 insertions(+), 242 deletions(-)
copy papers/{io-redirect/draft => membership}/IEEEtran.bst (100%)
copy papers/{vosd-paper => membership}/IEEEtran.cls (100%)
copy papers/{io-redirect/draft/IEEEtran.bst => membership/IEEEtranN.bst} (89%)
copy papers/{io-redirect/draft/IEEEtran.bst => membership/IEEEtranS.bst} (93%)
copy papers/{io-redirect/draft/IEEEtran.bst => membership/IEEEtranSA.bst} (86%)
copy papers/{io-redirect/draft/IEEEtran.bst => membership/IEEEtranSN.bst} (85%)
copy papers/{asg-osd => membership}/IEEEtrantools.sty (100%)
copy {reports/triton-provenance-report => papers/membership}/Makefile (53%)
copy papers/{.dummy => membership/REFERENCES.bib} (100%)
create mode 100644 papers/membership/acmsmall.bst
create mode 100644 papers/membership/acmsmall.cls
copy papers/{2011/aesop => membership}/algorithm.sty (100%)
copy papers/{2011/aesop => membership}/algorithmic.sty (93%)
create mode 100644 papers/membership/membership-paper.tex
Diff of changes:
diff --git a/papers/io-redirect/draft/IEEEtran.bst b/papers/membership/IEEEtran.bst
similarity index 100%
copy from papers/io-redirect/draft/IEEEtran.bst
copy to papers/membership/IEEEtran.bst
diff --git a/papers/vosd-paper/IEEEtran.cls b/papers/membership/IEEEtran.cls
similarity index 100%
copy from papers/vosd-paper/IEEEtran.cls
copy to papers/membership/IEEEtran.cls
diff --git a/papers/io-redirect/draft/IEEEtran.bst b/papers/membership/IEEEtranN.bst
similarity index 89%
copy from papers/io-redirect/draft/IEEEtran.bst
copy to papers/membership/IEEEtranN.bst
index 53fbc03..46e00f1 100644
--- a/papers/io-redirect/draft/IEEEtran.bst
+++ b/papers/membership/IEEEtranN.bst
@@ -1,6 +1,8 @@
%%
-%% IEEEtran.bst
-%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
+%% IEEEtranN.bst
+%% BibTeX Bibliography Style file
+%% Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
%% Version 1.12 (2007/01/11)
%%
%% Copyright (c) 2003-2007 Michael Shell
@@ -12,6 +14,9 @@
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
%%
+%% Added sorting and natbib code is from Patrick W Daly's unsrtnat.bst
+%%
+%%
%% Support sites:
%% http://www.michaelshell.org/tex/ieeetran/
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
@@ -20,7 +25,7 @@
%%
%% For use with BibTeX version 0.99a or later
%%
-%% This is a numerical citation style.
+%% This is a natbib compatible citation style.
%%
%%*************************************************************************
%% Legal Notice:
@@ -53,41 +58,8 @@
%
% Changelog:
%
-% 1.00 (2002/08/13) Initial release
-%
-% 1.10 (2002/09/27)
-% 1. Corrected minor bug for improperly formed warning message when a
-% book was not given a title. Thanks to Ming Kin Lai for reporting this.
-% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
-% in the BST control entry type.
-%
-% 1.11 (2003/04/02)
-% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
-% to Ming Kin Lai for reporting this.
-%
-% 1.12 (2007/01/11)
-% 1. Fixed bug with unwanted comma before "et al." when an entry contained
-% more than two author names. Thanks to Pallav Gupta for reporting this.
-% 2. Fixed bug with anomalous closing quote in tech reports that have a
-% type, but without a number or address. Thanks to Mehrdad Mirreza for
-% reporting this.
-% 3. Use braces in \providecommand in begin.bib to better support
-% latex2html. TeX style length assignments OK with recent versions
-% of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
-% Use of the language field still causes trouble with latex2html.
-% Thanks to Federico Beffa for reporting this.
-% 4. Added IEEEtran.bst ID and version comment string to .bbl output.
-% 5. Provide a \BIBdecl hook that allows the user to execute commands
-% just prior to the first entry.
-% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
-% better work with a wider variety of bibliography styles.
-% 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
-% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
-% for reporting this.
-% 8. Control entry types should not be considered when calculating longest
-% label width.
-% 9. Added alias www for electronic/online.
-% 10. Added CTLname_url_prefix control entry type.
+% 1.12 (2007/01/11) Initial release
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -195,13 +167,15 @@ FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/"
FUNCTION {banner.message}
{ is.print.banners.to.terminal
- { "-- IEEEtran.bst version" " " * bst.file.version *
+ { "-- IEEEtranN.bst version" " " * bst.file.version *
" (" * bst.file.date * ") " * "by Michael Shell." *
top$
"-- " bst.file.website *
top$
"-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
top$
+ "** Natbib version - not for normal IEEE work."
+ top$
}
{ skip$ }
if$
@@ -336,7 +310,7 @@ ENTRY
CTLname_url_prefix
}
{}
- { label }
+ { label extra.label sort.label short.list}
@@ -1047,9 +1021,89 @@ FUNCTION {convert.edition}
%% LATEX BIBLIOGRAPHY CODE %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
FUNCTION {start.entry}
{ newline$
- "\bibitem{" write$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
cite$ write$
"}" write$
newline$
@@ -1065,12 +1119,14 @@ FUNCTION {start.entry}
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+{ "% Generated by IEEEtranN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
write$ newline$
preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
if$
- "\begin{thebibliography}{" longest.label * "}" *
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{#1}"
write$ newline$
@@ -1093,7 +1149,7 @@ FUNCTION {begin.bib}
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
- "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ "\typeout{** WARNING: IEEEtranN.bst: No hyphenation pattern has been}%"
write$ newline$
"\typeout{** loaded for the language `#1'. Using the pattern for}%"
write$ newline$
@@ -1133,34 +1189,6 @@ FUNCTION {if.url.std.interword.spacing}
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% LONGEST LABEL PASS %%
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ type$ "ieeetranbstctl" =
- { skip$ }
- { number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- { skip$ }
- if$
- }
- if$
-}
-
-
-
-
%%%%%%%%%%%%%%%%%%%%%
%% FORMAT HANDLERS %%
%%%%%%%%%%%%%%%%%%%%%
@@ -2404,8 +2432,272 @@ EXECUTE {initialize.controls}
EXECUTE {initialize.status.constants}
EXECUTE {banner.message}
+
+
+% BEGIN sort code based on unsrtnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+INTEGERS { seq.num }
+
+FUNCTION {init.seq}
+{ #0 'seq.num :=}
+
+
+FUNCTION {int.to.fix}
+{ "000000000" swap$ int.to.str$ *
+ #-1 #10 substring$
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ " "
+ *
+ seq.num int.to.fix
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ seq.num #1 + 'seq.num :=
+ seq.num int.to.fix
+ }
+ if$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on unsrtnat.bst
+
+
+
+EXECUTE {init.seq}
+
+ITERATE {presort}
+
+SORT
+
EXECUTE {initialize.longest.label}
-ITERATE {longest.label.pass}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
EXECUTE {begin.bib}
ITERATE {call.type$}
diff --git a/papers/io-redirect/draft/IEEEtran.bst b/papers/membership/IEEEtranS.bst
similarity index 93%
copy from papers/io-redirect/draft/IEEEtran.bst
copy to papers/membership/IEEEtranS.bst
index 53fbc03..29e5b8c 100644
--- a/papers/io-redirect/draft/IEEEtran.bst
+++ b/papers/membership/IEEEtranS.bst
@@ -1,6 +1,8 @@
%%
-%% IEEEtran.bst
-%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
+%% IEEEtranS.bst
+%% BibTeX Bibliography Style file
+%% Sorting version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
%% Version 1.12 (2007/01/11)
%%
%% Copyright (c) 2003-2007 Michael Shell
@@ -12,6 +14,8 @@
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
%%
+%% Added sorting code is from plain.bst.
+%%
%% Support sites:
%% http://www.michaelshell.org/tex/ieeetran/
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
@@ -53,13 +57,7 @@
%
% Changelog:
%
-% 1.00 (2002/08/13) Initial release
-%
-% 1.10 (2002/09/27)
-% 1. Corrected minor bug for improperly formed warning message when a
-% book was not given a title. Thanks to Ming Kin Lai for reporting this.
-% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
-% in the BST control entry type.
+% 1.10 (2002/09/27) Initial release
%
% 1.11 (2003/04/02)
% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
@@ -195,13 +193,15 @@ FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/"
FUNCTION {banner.message}
{ is.print.banners.to.terminal
- { "-- IEEEtran.bst version" " " * bst.file.version *
+ { "-- IEEEtranS.bst version" " " * bst.file.version *
" (" * bst.file.date * ") " * "by Michael Shell." *
top$
"-- " bst.file.website *
top$
"-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
top$
+ "** Sorting version - not for normal IEEE work."
+ top$
}
{ skip$ }
if$
@@ -1065,7 +1065,7 @@ FUNCTION {start.entry}
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+{ "% Generated by IEEEtranS.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
write$ newline$
preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
@@ -1093,7 +1093,7 @@ FUNCTION {begin.bib}
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
- "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ "\typeout{** WARNING: IEEEtranS.bst: No hyphenation pattern has been}%"
write$ newline$
"\typeout{** loaded for the language `#1'. Using the pattern for}%"
write$ newline$
@@ -2404,6 +2404,196 @@ EXECUTE {initialize.controls}
EXECUTE {initialize.status.constants}
EXECUTE {banner.message}
+
+
+% BEGIN sort code based on that of plain.bst
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ { skip$ }
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 institution chop.word sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ }
+ { type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
+ *
+ " "
+ *
+ title empty.field.to.null.string
+ sort.format.title
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+% END sort code based on that of plain.bst
+
+
+
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
diff --git a/papers/io-redirect/draft/IEEEtran.bst b/papers/membership/IEEEtranSA.bst
similarity index 86%
copy from papers/io-redirect/draft/IEEEtran.bst
copy to papers/membership/IEEEtranSA.bst
index 53fbc03..4d0d8b6 100644
--- a/papers/io-redirect/draft/IEEEtran.bst
+++ b/papers/membership/IEEEtranSA.bst
@@ -1,7 +1,9 @@
%%
-%% IEEEtran.bst
-%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
-%% Version 1.12 (2007/01/11)
+%% IEEEtranSA.bst
+%% BibTeX Bibliography Style file
+%% Sorting alpha version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
+%% Version 1.12 (2006/01/11)
%%
%% Copyright (c) 2003-2007 Michael Shell
%%
@@ -12,6 +14,9 @@
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
%%
+%% Added sorting code is from plain.bst, alpha code is from alpha.bst.
+%%
+%%
%% Support sites:
%% http://www.michaelshell.org/tex/ieeetran/
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
@@ -20,7 +25,7 @@
%%
%% For use with BibTeX version 0.99a or later
%%
-%% This is a numerical citation style.
+%% This is an alpha citation style.
%%
%%*************************************************************************
%% Legal Notice:
@@ -53,41 +58,8 @@
%
% Changelog:
%
-% 1.00 (2002/08/13) Initial release
-%
-% 1.10 (2002/09/27)
-% 1. Corrected minor bug for improperly formed warning message when a
-% book was not given a title. Thanks to Ming Kin Lai for reporting this.
-% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
-% in the BST control entry type.
-%
-% 1.11 (2003/04/02)
-% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
-% to Ming Kin Lai for reporting this.
-%
-% 1.12 (2007/01/11)
-% 1. Fixed bug with unwanted comma before "et al." when an entry contained
-% more than two author names. Thanks to Pallav Gupta for reporting this.
-% 2. Fixed bug with anomalous closing quote in tech reports that have a
-% type, but without a number or address. Thanks to Mehrdad Mirreza for
-% reporting this.
-% 3. Use braces in \providecommand in begin.bib to better support
-% latex2html. TeX style length assignments OK with recent versions
-% of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
-% Use of the language field still causes trouble with latex2html.
-% Thanks to Federico Beffa for reporting this.
-% 4. Added IEEEtran.bst ID and version comment string to .bbl output.
-% 5. Provide a \BIBdecl hook that allows the user to execute commands
-% just prior to the first entry.
-% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
-% better work with a wider variety of bibliography styles.
-% 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
-% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
-% for reporting this.
-% 8. Control entry types should not be considered when calculating longest
-% label width.
-% 9. Added alias www for electronic/online.
-% 10. Added CTLname_url_prefix control entry type.
+% 1.12 (2007/01/11) Initial release
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -195,13 +167,15 @@ FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/"
FUNCTION {banner.message}
{ is.print.banners.to.terminal
- { "-- IEEEtran.bst version" " " * bst.file.version *
+ { "-- IEEEtranSA.bst version" " " * bst.file.version *
" (" * bst.file.date * ") " * "by Michael Shell." *
top$
"-- " bst.file.website *
top$
"-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
top$
+ "** Sorting Alpha version - not for normal IEEE work."
+ top$
}
{ skip$ }
if$
@@ -336,7 +310,7 @@ ENTRY
CTLname_url_prefix
}
{}
- { label }
+ { label extra.label sort.label }
@@ -1049,7 +1023,9 @@ FUNCTION {convert.edition}
FUNCTION {start.entry}
{ newline$
- "\bibitem{" write$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
cite$ write$
"}" write$
newline$
@@ -1065,7 +1041,9 @@ FUNCTION {start.entry}
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+{ "% Generated by IEEEtranSA.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+ write$ newline$
+ "\providecommand{\etalchar}[1]{$^{#1}$}"
write$ newline$
preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
@@ -1093,7 +1071,7 @@ FUNCTION {begin.bib}
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
- "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ "\typeout{** WARNING: IEEEtranSA.bst: No hyphenation pattern has been}%"
write$ newline$
"\typeout{** loaded for the language `#1'. Using the pattern for}%"
write$ newline$
@@ -1133,34 +1111,6 @@ FUNCTION {if.url.std.interword.spacing}
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% LONGEST LABEL PASS %%
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ type$ "ieeetranbstctl" =
- { skip$ }
- { number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- { skip$ }
- if$
- }
- if$
-}
-
-
-
-
%%%%%%%%%%%%%%%%%%%%%
%% FORMAT HANDLERS %%
%%%%%%%%%%%%%%%%%%%%%
@@ -2404,8 +2354,419 @@ EXECUTE {initialize.controls}
EXECUTE {initialize.status.constants}
EXECUTE {banner.message}
+
+
+% BEGIN sort code based on that of plain.bst
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ { skip$ }
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 institution chop.word sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+% END sort code based on that of plain.bst
+
+
+
+% alpha.bst code
+STRINGS { last.sort.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" * }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" * }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #2 substring$
+ *
+ 'label :=
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ }
+ { calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string sortify
+ *
+ " "
+ *
+ title empty.field.to.null.string
+ sort.format.title
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ }
+ if$
+}
+
+% End alpha.bst code
+
+
+ITERATE {presort}
+
+SORT
+
EXECUTE {initialize.longest.label}
-ITERATE {longest.label.pass}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
EXECUTE {begin.bib}
ITERATE {call.type$}
diff --git a/papers/io-redirect/draft/IEEEtran.bst b/papers/membership/IEEEtranSN.bst
similarity index 85%
copy from papers/io-redirect/draft/IEEEtran.bst
copy to papers/membership/IEEEtranSN.bst
index 53fbc03..429bbfa 100644
--- a/papers/io-redirect/draft/IEEEtran.bst
+++ b/papers/membership/IEEEtranSN.bst
@@ -1,6 +1,8 @@
%%
-%% IEEEtran.bst
-%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
+%% IEEEtranSN.bst
+%% BibTeX Bibliography Style file
+%% Sorting Natbib version of IEEEtran.bst
+%% *** Not for normal IEEE work ***
%% Version 1.12 (2007/01/11)
%%
%% Copyright (c) 2003-2007 Michael Shell
@@ -12,6 +14,10 @@
%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988)
%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
%%
+%% Added sorting and natbib code is from Patrick W Daly's plainnat.bst
+%% and Oren Patashnik's plain.bst.
+%%
+%%
%% Support sites:
%% http://www.michaelshell.org/tex/ieeetran/
%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
@@ -20,7 +26,7 @@
%%
%% For use with BibTeX version 0.99a or later
%%
-%% This is a numerical citation style.
+%% This is a natbib compatible citation style.
%%
%%*************************************************************************
%% Legal Notice:
@@ -53,41 +59,8 @@
%
% Changelog:
%
-% 1.00 (2002/08/13) Initial release
-%
-% 1.10 (2002/09/27)
-% 1. Corrected minor bug for improperly formed warning message when a
-% book was not given a title. Thanks to Ming Kin Lai for reporting this.
-% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields
-% in the BST control entry type.
-%
-% 1.11 (2003/04/02)
-% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks
-% to Ming Kin Lai for reporting this.
-%
-% 1.12 (2007/01/11)
-% 1. Fixed bug with unwanted comma before "et al." when an entry contained
-% more than two author names. Thanks to Pallav Gupta for reporting this.
-% 2. Fixed bug with anomalous closing quote in tech reports that have a
-% type, but without a number or address. Thanks to Mehrdad Mirreza for
-% reporting this.
-% 3. Use braces in \providecommand in begin.bib to better support
-% latex2html. TeX style length assignments OK with recent versions
-% of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
-% Use of the language field still causes trouble with latex2html.
-% Thanks to Federico Beffa for reporting this.
-% 4. Added IEEEtran.bst ID and version comment string to .bbl output.
-% 5. Provide a \BIBdecl hook that allows the user to execute commands
-% just prior to the first entry.
-% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to
-% better work with a wider variety of bibliography styles.
-% 7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
-% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
-% for reporting this.
-% 8. Control entry types should not be considered when calculating longest
-% label width.
-% 9. Added alias www for electronic/online.
-% 10. Added CTLname_url_prefix control entry type.
+% 1.12 (2007/01/11) Initial release
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -195,13 +168,15 @@ FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/"
FUNCTION {banner.message}
{ is.print.banners.to.terminal
- { "-- IEEEtran.bst version" " " * bst.file.version *
+ { "-- IEEEtranSN.bst version" " " * bst.file.version *
" (" * bst.file.date * ") " * "by Michael Shell." *
top$
"-- " bst.file.website *
top$
"-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
top$
+ "** Sorting Natbib version - not for normal IEEE work."
+ top$
}
{ skip$ }
if$
@@ -336,7 +311,7 @@ ENTRY
CTLname_url_prefix
}
{}
- { label }
+ { label extra.label sort.label short.list}
@@ -1047,9 +1022,89 @@ FUNCTION {convert.edition}
%% LATEX BIBLIOGRAPHY CODE %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% from plainnat.bst
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.full }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.full }
+ { author.full }
+ if$
+ }
+ if$
+}
+% END from plainnat.bst
+
FUNCTION {start.entry}
{ newline$
- "\bibitem{" write$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
cite$ write$
"}" write$
newline$
@@ -1065,12 +1120,14 @@ FUNCTION {start.entry}
% the other gurus on comp.text.tex for their help and advice on the topic of
% \selectlanguage, Babel and BibTeX.
FUNCTION {begin.bib}
-{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+{ "% Generated by IEEEtranSN.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
write$ newline$
preamble$ empty$ 'skip$
{ preamble$ write$ newline$ }
if$
- "\begin{thebibliography}{" longest.label * "}" *
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{#1}"
write$ newline$
@@ -1093,7 +1150,7 @@ FUNCTION {begin.bib}
write$ newline$
"\expandafter\ifx\csname l@#1\endcsname\relax"
write$ newline$
- "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+ "\typeout{** WARNING: IEEEtranSN.bst: No hyphenation pattern has been}%"
write$ newline$
"\typeout{** loaded for the language `#1'. Using the pattern for}%"
write$ newline$
@@ -1133,34 +1190,6 @@ FUNCTION {if.url.std.interword.spacing}
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% LONGEST LABEL PASS %%
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ type$ "ieeetranbstctl" =
- { skip$ }
- { number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- { skip$ }
- if$
- }
- if$
-}
-
-
-
-
%%%%%%%%%%%%%%%%%%%%%
%% FORMAT HANDLERS %%
%%%%%%%%%%%%%%%%%%%%%
@@ -2404,8 +2433,412 @@ EXECUTE {initialize.controls}
EXECUTE {initialize.status.constants}
EXECUTE {banner.message}
+
+
+% BEGIN sort code based on plainnat.bst
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ { s }
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ empty.field.to.null.string * " " *
+ }
+ { skip$ }
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.institution.sort}
+{ author empty$
+ { organization empty$
+ { institution empty$
+ { key empty$
+ { "to sort, need author, organization, institution or key in " cite$ * warning$ "" }
+ { key sortify }
+ if$
+ }
+ { "The " #4 institution chop.word sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+
+
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.institution.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { institution empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 institution chop.word #3 text.prefix$ }
+ if$
+ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.key.label }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.key.organization.label }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.key.organization.label }
+ { type$ "standard" =
+ { author.key.organization.institution.label }
+ { author.key.label }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ 'short.list :=
+ "("
+ *
+ type$ "patent" =
+ { year empty$
+ { yearfiled }
+ { year }
+ if$
+ }
+ { year }
+ if$
+ duplicate$
+ empty$
+ short.list key empty.field.to.null.string = or
+ { pop$ "" }
+ { skip$ }
+ if$
+ *
+ 'label :=
+}
+
+
+
+FUNCTION {presort}
+{ type$ "ieeetranbstctl" =
+ { key empty$
+ { "_" }
+ { key sortify }
+ if$
+ duplicate$
+ }
+ { calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { author.editor.sort }
+ { type$ "proceedings" =
+ type$ "periodical" =
+ or
+ { editor.organization.sort }
+ { type$ "manual" =
+ type$ "electronic" =
+ type$ "misc" =
+ or or
+ { author.organization.sort }
+ { type$ "standard" =
+ { author.organization.institution.sort }
+ { author.sort }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ type$ "ieeetranbstctl" =
+ { skip$ }
+ { next.extra "b" =
+ { "a" 'extra.label := }
+ { skip$ }
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ { skip$ }
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ }
+ if$
+}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+% END sort code based on plainnat.bst
+
+
+
+
+ITERATE {presort}
+
+SORT
+
EXECUTE {initialize.longest.label}
-ITERATE {longest.label.pass}
+
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+
+ITERATE {bib.sort.order}
+
+SORT
EXECUTE {begin.bib}
ITERATE {call.type$}
diff --git a/papers/asg-osd/IEEEtrantools.sty b/papers/membership/IEEEtrantools.sty
similarity index 100%
copy from papers/asg-osd/IEEEtrantools.sty
copy to papers/membership/IEEEtrantools.sty
diff --git a/reports/triton-provenance-report/Makefile b/papers/membership/Makefile
similarity index 53%
copy from reports/triton-provenance-report/Makefile
copy to papers/membership/Makefile
index a99a40c..550478e 100644
--- a/reports/triton-provenance-report/Makefile
+++ b/papers/membership/Makefile
@@ -1,10 +1,7 @@
-PDFS := provreport.pdf
+PDFS := membership-paper.pdf
all: $(PDFS)
- @ echo REMAINING TODO ITEMS : `grep TODO provreport.tex | wc -l`
-
-figs::
- $(MAKE) -C figs
+ @ echo REMAINING TODO ITEMS : `grep TODO membership-paper.tex | wc -l`
%.pdf: %.eps
epstopdf $<
@@ -14,9 +11,9 @@ figs::
pdflatex $<
pdflatex $<
-provreport.pdf: provreport.tex papers.bib
+membership-paper.pdf: membership-paper.tex REFERENCES.bib
pdflatex $<
- bibtex provreport
+ bibtex membership-paper
pdflatex $<
pdflatex $<
diff --git a/papers/.dummy b/papers/membership/REFERENCES.bib
similarity index 100%
copy from papers/.dummy
copy to papers/membership/REFERENCES.bib
diff --git a/papers/membership/acmsmall.bst b/papers/membership/acmsmall.bst
new file mode 100644
index 0000000..386d7c6
--- /dev/null
+++ b/papers/membership/acmsmall.bst
@@ -0,0 +1,1808 @@
+% "ACM Transactions" BibTeX style, acmtrans.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% Revised 28-JUNE-2010
+% $Header: /home/carns/cvsroot/bgp-io-trace/acmsmall.bst,v 1.1 2011-07-07 15:58:24 carns Exp $
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.jour.vol.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK(a)SCORE.STANFORD.EDU) and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer(a)cgrg.ohio.state.edu or 71160.3141(a)compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t u }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% Use a colon to separate output. Used only for address/publisher
+% combination in book/inbook types, address/institution for manuals,
+% and organization:publisher for proceedings (inproceedings).
+%
+FUNCTION {output.nonnull.colon}
+{ 's :=
+ output.state mid.sentence =
+ { ": " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.colon}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull.colon
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.colon}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.colon
+ if$
+}
+
+FUNCTION {output.year.check}
+{ year empty$
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+%
+% Emphasize the top string on the stack.
+%
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+%
+% Emphasize the top string on the stack, but add a trailing space.
+%
+FUNCTION {emphasize.space}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+%
+% Emphasize the top string on stack, add a trailing comma and space.
+%
+FUNCTION {emphasize.comma}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * ",\/}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+%
+% Format bibliographical entries with the first author last name first,
+% and subsequent authors with initials followed by last name.
+% All names are formatted in this routine.
+%
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { nameptr #1 =
+ {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+ {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {\sc et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {\sc and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION {my.full.label}
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION {format.names.fml}
+%
+% Format names in "familiar" format, with first initial followed by
+% last name. Like format.names, ALL names are formatted.
+% jtb: The names are NOT put in small caps
+%
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { "{" s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+% { " {\&} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+%
+% Format editor names for use in the "in" types: inbook, incollection,
+% inproceedings: first initial, then last names. When editors are the
+% LABEL for an entry, then format.editor is used which lists editors
+% by last name first.
+%
+FUNCTION {format.editors.fml}
+{ editor empty$
+ { "" }
+ { editor format.names.fml
+ editor num.names$ #1 >
+ { ", Eds." * } % jtb: removed parentheses
+ { ", Ed." * } % jtb: removed parentheses
+ if$
+ }
+ if$
+}
+
+%
+% Format editor names for use in labels, last names first.
+%
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", Eds." * } % jtb: removed parentheses
+ { ", Ed." * } % jtb: removed parentheses
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+% Note that the APA style requres case changes
+% in article titles. The following does not
+% change cases. If you perfer it, uncomment the
+% following and comment out the above.
+
+%FUNCTION {format.title}
+%{ title empty$
+% { "" }
+% { title }
+% if$
+%}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.btitle}
+{ edition empty$
+ { title emphasize }
+ { title empty$
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} " * edition * " Ed." * } % aptara: no comma and capial case for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.emphasize.booktitle}
+{ edition empty$
+ { booktitle emphasize }
+ { booktitle empty$
+ { booktitle emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " booktitle * "\/} " * edition * " Ed." * } % aptara: no comma and capial case for ed.
+ if$
+ }
+ if$
+ }
+
+% jtb: if the preceding string (the title of the conference) is non-empty,
+% jtb: append the location, otherwise leave empty (so as to trigger the
+% jtb: error message in output.check
+FUNCTION {format.city}
+{ duplicate$ empty$
+ { }
+ { city empty$
+ { date empty$
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ { date empty$
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+% jtb: If there is a series, this is added and the volume trails after it.
+% jtb: Otherwise, "Vol" is Capitalized.
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { series empty$
+ { "Vol." volume tie.or.space.connect}
+ { series " Series, " * "vol." volume tie.or.space.connect *} % aptara: added "Series" term
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+% By Young (and Spencer)
+% GNP - fixed bugs with missing volume, number, and/or pages
+%
+% Format journal, volume, number, pages for article types.
+%
+FUNCTION {format.jour.vol}
+{ journal empty$
+ { "no journal in " cite$ * warning$
+ "" }
+ { journal emphasize.space }
+ if$
+ number empty$
+ { volume empty$
+ { "no number and no volume in " cite$ * warning$
+ "" * }
+ { "~{\em " * Volume * "}" * }
+ if$
+ }
+ { volume empty$
+ {"no volume for " cite$ * warning$
+ "~" * number * }
+ { "~" *
+ volume emphasize.comma
+ "~" * number * * }
+ if$
+ }
+ if$
+ pages empty$
+ {"page numbers missing in " cite$ * warning$
+ "" * } % gnp - place a null string on the stack for output
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * } % gnp - removed pp. for articles
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.jour.vol.mon}
+{ journal empty$
+ { "no journal in " cite$ * warning$
+ "" }
+ { journal emphasize.space }
+ if$
+ number empty$
+ { volume empty$
+ { "no number and no volume in " cite$ * warning$
+ "" * }
+ { "~{\em " * Volume * "}" * }
+ if$
+ }
+ { volume empty$
+ {"no volume for " cite$ * warning$
+ "~" * number * }
+ { "~" *
+ volume emphasize.comma
+ "~" * number * * }
+ if$
+ month empty$
+ {}
+ {" (" * month * ")" *}
+ if$
+ }
+ if$
+ pages empty$
+ {"page numbers missing in " cite$ * warning$
+ "" * } % gnp - place a null string on the stack for output
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * } % gnp - removed pp. for articles
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% jtb: format for collections or proceedings not appearing in a journal
+FUNCTION {format.in.emphasize.booktitle}
+{ booktitle empty$
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+% jtb: format for proceedings appearing in a journal
+FUNCTION {format.in.booktitle}
+{ booktitle empty$
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+% {pop$
+ {{ "" }
+ type "t" change.case$}
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ "See"
+ "\citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "See"
+ " \citeN{" * crossref * "}" *
+}
+
+% format.lab.names:
+%
+% determines "short" names for the abbreviated author information.
+% "Long" labels are created in calc.label, using the routine my.full.label
+% to format author and editor fields.
+%
+% There are 4 cases for labels. (n=3 in the example)
+% a) one author Foo
+% b) one to n Foo, Bar and Baz
+% c) use of "and others" Foo, Bar et al.
+% d) more than n Foo et al.
+%
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { "no key, editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if author is null.
+%
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if editor is null.
+%
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+%
+% Changed - GNP. See also author.organization.sort, editor.organization.sort
+% Form label for BibTeX entry. The classification of which fields are used
+% for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+% The change here from newapa is to also include organization as a
+% citation label if author or editor is missing.
+%
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ author empty$ % generate the full label citation information.
+ { editor empty$
+ { organization empty$
+ { type$ "misc" =
+ { "" }
+ { "no author, editor, or organization in " cite$ * warning$
+ "??"
+ }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+% leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+% year field.or.null purify$ #-1 #4 substring$ *
+%
+% save the year for sort processing afterwards (adding a, b, c, etc.)
+%
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+
+ "\bibitem[\protect\citeauthoryear{" write$
+ calc.label write$
+ sort.year write$
+ "}]{" write$
+
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { format.jour.vol output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors
+ "author and editor" output.check }
+ { format.authors
+ output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ howpublished output
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle
+ "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.chapter.pages output % gnp - was special.output.nonnull
+% left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ { format.incoll.inproc.crossref
+ output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.pages output % jtb: moved from before publisher
+ }
+ % jtb: new:
+ { format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.jour.vol.mon output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { editor empty$
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ format.thesis.type "Ph.D. thesis" output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+% author format.key output % gnp - removed (should be either
+% editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ month output % jtb: ... to here (no parens)
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."} % jtb: corrected: was "March"
+
+MACRO {apr} {"Apr."} % jtb: corrected: was "April"
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {ai} {"Artificial Intelligence"}
+
+MACRO {al} {"Ada Lett."}
+
+MACRO {acr} {"Adv. Comput. Res."}
+
+MACRO {bit} {"Bit"}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {cj} {"Comput. J."}
+
+MACRO {cn} {"Comput. Netw."}
+
+MACRO {cl} {"Comput. Lang."}
+
+MACRO {ibmjrd} {"IBM J. Res. and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ict} {"Inf. Contr."}
+
+MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+
+MACRO {ieees} {"IEEE Softw."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+
+MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {icp} {"Inf. Comput."}
+
+MACRO {ist} {"Inf. Softw. Tech."}
+
+MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+
+MACRO {ijpp} {"Int. J. Parallel Program."}
+
+MACRO {jlp} {"J. Logic Program."}
+
+MACRO {jfp} {"J. Funct. Program."}
+
+MACRO {jcss} {"J. Comput. Syst. Sci."}
+
+MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+
+MACRO {jss} {"J. Syst. Softw."}
+
+MACRO {jlc} {"J. Logic and Comput."}
+
+MACRO {jlsc} {"J. Lisp Symb. Comput."}
+
+MACRO {lpls} {"Lett. Program. Lang. Syst."}
+
+MACRO {mor} {"Math. Oper. Res."}
+
+MACRO {mscs} {"Math. Struct. Comput. Sci."}
+
+MACRO {mst} {"Math. Syst. Theor."} % jtb: was Math. Syst. Theory
+ % jtb: (if you ask me, I prefer the old way)
+MACRO {ngc} {"New Gen. Comput."}
+
+MACRO {scp} {"Sci. Comput. Program."}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {spe} {"Softw. Pract. Exper."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Graphics"}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Program. Lang. Syst."}
+
+MACRO {tocl} {"ACM Trans. On Comp. Logic"}
+
+MACRO {tcs} {"Theor. Comput. Sci."} % jtb: was Theor. Comp. Sci.
+
+MACRO {tr} {"Tech. Rep."}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { "missing author in " cite$ * warning$
+ editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+%
+% added - GNP. Stack author or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+%
+% added - GNP. Stack editor or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+%
+% Presort creates the bibentry's label via a call to calc.label, and then
+% sorts the entries based on entry type. Chicago.bst adds support for
+% including organizations as the sort key; the following is stolen from
+% alpha.bst.
+%
+{ calc.label sortify % recalculate bibitem label
+ year field.or.null purify$ #-1 #4 substring$ * % add year
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % added for newapa
+ 'sort.label := % added for newapa
+ sort.label % added for newapa
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT % by label, year, author/editor, title
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+%
+% Pass through all entries, comparing current entry to last one.
+% Need to concatenate year to the stack (done by calc.label) to determine
+% if two entries are the same (see presort)
+%
+{ last.label
+ calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ = % are they equal?
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label.year extra.label * 'sort.year :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION {begin.bib}
+
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{}" write$ newline$
+}
+
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/papers/membership/acmsmall.cls b/papers/membership/acmsmall.cls
new file mode 100644
index 0000000..8155279
--- /dev/null
+++ b/papers/membership/acmsmall.cls
@@ -0,0 +1,3256 @@
+%% acmsmall.cls - version 1.1
+%% Aptara Inc., dated 15 July 2010
+%% (c) 2010 Association for Computing Machinery (ACM)
+%% For small trim journals
+%%
+%% Based on ESUB2ACM.CLS V1.2 - November 10th. 1999
+%%
+%% If you face any problem while working with this class file or have any feedback/suggestion,
+%% please contact ACM Support helpline at: "acmtexsupport(a)aptaracorp.com".
+%% Users can also go through the FAQs available on the journal's submission webpage.
+%%
+%% Version 1.1 (History)
+%% ---------------------
+%% 1) All citation formats are also redefined after
+%% checking the loading condition of natbib.sty
+%% 2) Added an option called 'prodmode', which uses New Century School Book
+%% and Helvetica as base and second font respectively after
+%% feedback from Joanne (Dated 28/06/2010) to simulate print output.
+%% 3) Changed running head style (Joanne 02/07/2010)
+%% 4) Added three new transactions (Jono 14/07/2010)
+%%
+%% Steps to compile: latex, bibtex, latex latex
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%% Bibliographic cite forms needed:
+%%
+%% \cite{key}
+%% which produces citations with author list and year.
+%% eg. [Brown 1978; Jarke, et al. 1985]
+%% \citeA{key}
+%% which produces citations with only the author list.
+%% eg. [Brown; Jarke, et al.]
+%% \citeN{key}
+%% which produces citations with the author list and year, but
+%% can be used as nouns in a sentence; no brackets appear around
+%% the author names, but only around the year.
+%% eg. Shneiderman [1978] states that......
+%% \citeN should only be used for a single citation.
+%% \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
+%% \citeyear{key}
+%% which produces the year information only, within brackets.
+%%
+%% Abbreviated author lists use the ``et al.'' construct.
+%%
+%% The above are examples of required ACM bibliographic cite formats needed.
+%% *******************
+%% Here is the complete list of cite forms from the chicago bibliographic style
+%%
+%% \cite{key}
+%% which produces citations with abbreviated author list and year.
+%% \citeNP{key}
+%% which produces citations with abbreviated author list and year.
+%% \citeA{key}
+%% which produces only the abbreviated author list.
+%% \citeANP{key}
+%% which produces only the abbreviated author list.
+%% \citeN{key}
+%% which produces the abbreviated author list and year, with only the
+%% year in parentheses. Use with only one citation.
+%% \citeyear{key}
+%% which produces the year information only, within parentheses.
+%% \citeyearNP{key}
+%% which produces the year information only.
+%%
+%% Abbreviated author lists use the ``et al.'' construct.
+%%
+%% `NP' means `no parentheses'
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmsmall}[2010/07/15, fonts included on 28 June 2010]
+
+\def\fileversion{v1.1}
+\def\filedate{July 15, 2010}
+
+% Metadata Information
+\def\@acmVolume{V} %the volume
+\def\@acmNumber{N} %the number
+\def\@acmArticle{A} %article number
+\def\@articleSeq{1} %article Sequence
+\def\(a)acmPrice{10.00} %article price
+\def\@acmYear{YYYY} %the last two digits of the year,
+\def\@acmMonth{1} %the month
+\def\@journalName{ACM Journal Name} %the name of the ACM journal
+\def\@journalNameShort{ACM} %the acronym of the ACM journal
+\def\@journalCode{jn} %the code of the ACM journal
+\def\@permissionCodeOne{0000-0000} %the permission code of the ACM journal
+\def\(a)doi{0000000.0000000}
+
+\if@compatibility\else
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}%
+ \setlength\voffset {-38.2pt}%
+ \setlength\hoffset {-8.25pt}%
+ \def\special(a)paper{8.5in,11in}
+ % Needed to set PDF page size
+ \special{papersize=8.5in,11in}}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+\fi
+
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+\DeclareOption{10pt}{\def\@ptsize{0}} %needed for amssymbols.sty
+\DeclareOption{11pt}{\ClassError{acmsmall}{11pt style not supported}
+ {ACM transactions/journals documents can be set in 10pt only}}
+\DeclareOption{12pt}{\ClassError{acmtrans}{12pt style not supported}
+ {ACM transactions/journals documents can be set in 10pt only}}
+
+\newif\ifprod@mode\prod@modefalse
+\DeclareOption{prodmode}{\global\prod@modetrue
+\typeout{ACM, Production Font style: 2010/06/28 by Aptara}}
+
+\newif\if@acmjacm
+\newif\if@acmtissec
+\newif\if@acmtocl
+\newif\if@acmtocs
+\newif\if@acmtochi
+\newif\if@acmtodaes
+\newif\if@acmtods
+\newif\if@acmtois
+\newif\if@acmtomacs
+\newif\if@acmtoms
+\newif\if@acmtoplas
+\newif\if@acmtosem
+\newif\if@acmtoit
+\newif\if@acmtecs
+\newif\if@acmtalip
+\newif\if@acmjeric
+\newif\if@acmtaco
+\newif\if@acmjea
+\newif\if@acmtslp
+\newif\if@acmcie
+\newif\if@acmtos
+\newif\if@acmcsur
+\newif\if@acmjetc
+\newif\if@acmtosn
+\newif\if@acmtalg
+\newif\if@acmtaas
+\newif\if@acmtweb
+\newif\if@acmtkdd
+\newif\if@acmtrets
+\newif\if@acmtmis
+\newif\if@acmtiis
+\newif\if@acmtist
+
+% Journal Options
+\DeclareOption{acmjacm}{
+ \typeout{}
+ \typeout{Using ACM, JACM's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmtrue
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{Journal of the ACM}
+ \def\@journalNameShort{J. ACM}
+ \def\@journalCode{jacm}
+ \def\@permissionCodeOne{0004-5411}
+}
+
+\DeclareOption{acmtissec}{
+ \typeout{}
+ \typeout{Using ACM, TISSEC's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissectrue
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Information and System Security}
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}
+ \def\@journalCode{tissec}
+ \def\@permissionCodeOne{1094-9224}
+}
+
+\DeclareOption{acmtocl}{
+ \typeout{}
+ \typeout{Using ACM, TOCL's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtocltrue
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Computational Logic}
+ \def\@journalNameShort{ACM Trans. Comput. Logic}
+ \def\@journalCode{tocl}
+ \def\@permissionCodeOne{1529-3785}
+}
+
+\DeclareOption{acmtocs}{
+ \typeout{}
+ \typeout{Using ACM, TOCS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocstrue
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Computer Systems}
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}
+ \def\@journalCode{tocs}
+ \def\@permissionCodeOne{0734-2071}
+}
+
+\DeclareOption{acmtochi}{
+ \typeout{}
+ \typeout{Using ACM, TOCHI's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochitrue
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}
+ \def\@journalCode{tochi}
+ \def\@permissionCodeOne{1073-0516}
+}
+
+\DeclareOption{acmtodaes}{
+ \typeout{}
+ \typeout{Using ACM, TODAES option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaestrue
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}
+ \def\@journalCode{todaes}
+ \def\@permissionCodeOne{1084-4309}
+}
+
+\DeclareOption{acmtods}{
+ \typeout{}
+ \typeout{Using ACM, TODS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodstrue
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Database Systems}
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}
+ \def\@journalCode{tods}
+ \def\@permissionCodeOne{0362-5915}
+}
+
+\DeclareOption{acmtois}{
+ \typeout{}
+ \typeout{Using ACM, TOIS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoistrue
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Information Systems}
+ \def\@journalNameShort{ACM Trans. Inf. Syst.}
+ \def\@journalCode{tois}
+ \def\@permissionCodeOne{1046-8188}
+}
+
+\DeclareOption{acmtomacs}{
+ \typeout{}
+ \typeout{Using ACM, TOMACS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacstrue
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}
+ \def\@journalCode{tomacs}
+ \def\@permissionCodeOne{1049-3301}
+}
+
+\DeclareOption{acmtoms}{
+ \typeout{}
+ \typeout{Using ACM, TOMS's option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomstrue
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Mathematical Software}
+ \def\@journalNameShort{ACM Trans. Math. Softw.}
+ \def\@journalCode{toms}
+ \def\@permissionCodeOne{0098-3500}
+}
+
+\DeclareOption{acmtoplas}{
+ \typeout{}
+ \typeout{Using ACM, TOPLAS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplastrue
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}
+ \def\@journalCode{toplas}
+ \def\@permissionCodeOne{0164-0925}
+}
+
+\DeclareOption{acmtosem}{
+ \typeout{}
+ \typeout{Using ACM, TOSEM option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemtrue
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}
+ \def\@journalCode{tosem}
+ \def\@permissionCodeOne{1049-331X}
+}
+
+\DeclareOption{acmtoit}{
+ \typeout{}
+ \typeout{Using ACM, TOIT option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoittrue
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Internet Technology}
+ \def\@journalNameShort{ACM Trans. Internet Technol.}
+ \def\@journalCode{toit}
+ \def\@permissionCodeOne{1533-5399}
+}
+
+\DeclareOption{acmtecs}{
+ \typeout{}
+ \typeout{Using ACM, TECS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecstrue
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}
+ \def\@journalCode{tecs}
+ \def\@permissionCodeOne{1539-9087}
+}
+
+\DeclareOption{acmtalip}{
+ \typeout{}
+ \typeout{Using ACM, TALIP option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtaliptrue
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Trans. on Asian Language Information Processing}
+ \def\@journalNameShort{ACM Trans. Asian Language Inform. Process.}
+ \def\@journalCode{talip}
+ \def\@permissionCodeOne{1530-0226}
+}
+
+\DeclareOption{acmjeric}{
+ \typeout{}
+ \typeout{Using ACM, JERIC option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjerictrue
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Journal of Educational Resources in Computing}
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}
+ \def\@journalCode{jeric}
+ \def\@permissionCodeOne{1073-0516}
+}
+
+\DeclareOption{acmtaco}{
+ \typeout{}
+ \typeout{Using ACM, TACO option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacotrue
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}
+ \def\@journalNameShort{ACM Trans. Architec. Code Optim.}
+ \def\@journalCode{taco}
+ \def\@permissionCodeOne{1544-3566}
+}
+
+\DeclareOption{acmjea}{
+ \typeout{}
+ \typeout{Using ACM, JEA option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeatrue
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Journal of Experimental Algorithmics}
+ \def\@journalNameShort{ACM J. Exp. Algor.}
+ \def\@journalCode{jea}
+ \def\@permissionCodeOne{1084-6654}
+}
+
+\DeclareOption{acmtslp}{
+ \typeout{}
+ \typeout{Using ACM, TSLP option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslptrue
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Speech and Language Processing}
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}
+ \def\@journalCode{tslp}
+ \def\@permissionCodeOne{1550-4875}
+}
+
+\DeclareOption{acmcie}{
+ \typeout{}
+ \typeout{Using ACM, CIE option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmcietrue
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Computers in Entertainment}
+ \def\@journalNameShort{ACM Comput. Entertain.}
+ \def\@journalCode{cie}
+ \def\@permissionCodeOne{1544-3574}
+}
+
+\DeclareOption{acmtos}{
+ \typeout{}
+ \typeout{Using ACM, TOS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtostrue
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Storage}
+ \def\@journalNameShort{ACM Trans. Storage}
+ \def\@journalCode{tos}
+ \def\@permissionCodeOne{1553-3077}
+}
+
+\DeclareOption{acmcsur}{
+ \typeout{}
+ \typeout{Using ACM, CSUR option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurtrue
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Computing Surveys}
+ \def\@journalNameShort{ACM Comput. Surv.}
+ \def\@journalCode{csur}
+ \def\@permissionCodeOne{0360-0300}
+}
+
+\DeclareOption{acmjetc}{
+ \typeout{}
+ \typeout{Using ACM, JETC option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetctrue
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}
+ \def\@journalCode{jetc}
+ \def\@permissionCodeOne{1550-4832}
+}
+
+\DeclareOption{acmtosn}{
+ \typeout{}
+ \typeout{Using ACM, TOSN option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosntrue
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Sensor Networks}
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}
+ \def\@journalCode{tosn}
+ \def\@permissionCodeOne{1550-4859}
+}
+
+\DeclareOption{acmtalg}{
+ \typeout{}
+ \typeout{Using ACM, TALG option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgtrue
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Algorithms}
+ \def\@journalNameShort{ACM Trans. Algor.}
+ \def\@journalCode{talg}
+ \def\@permissionCodeOne{1549-6325}
+}
+
+\DeclareOption{acmtaas}{
+ \typeout{}
+ \typeout{Using ACM, TAAS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaastrue
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}
+ \def\@journalCode{taas}
+ \def\@permissionCodeOne{1556-4665}
+}
+
+\DeclareOption{acmtweb}{
+ \typeout{}
+ \typeout{Using ACM, TWEB option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebtrue
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on the Web}
+ \def\@journalNameShort{ACM Trans. Web}
+ \def\@journalCode{tweb}
+ \def\@permissionCodeOne{1559-1131}
+}
+
+\DeclareOption{acmtkdd}{
+ \typeout{}
+ \typeout{Using ACM, TKDD option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddtrue
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}
+ \def\@journalCode{tkdd}
+ \def\@permissionCodeOne{1556-4681}
+}
+
+\DeclareOption{acmtrets}{
+ \typeout{}
+ \typeout{Using ACM, TRETS option: 2010/05/04 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretstrue
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}
+ \def\@journalCode{trets}
+ \def\@permissionCodeOne{1936-7406}
+}
+
+\DeclareOption{acmtmis}{
+ \typeout{}
+ \typeout{Using ACM, TMIS option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmistrue
+ \global\@acmtiisfalse
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Management Information Systems}
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}
+ \def\@journalCode{tmis}
+ \def\@permissionCodeOne{0000-0001}
+}
+
+\DeclareOption{acmtiis}{
+ \typeout{}
+ \typeout{Using ACM, TIIS option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiistrue
+ \global\@acmtistfalse
+ \def\@journalName{ACM Transactions on Transactions on Interactive Intelligent Systems}
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}
+ \def\@journalCode{tiis}
+ \def\@permissionCodeOne{0000-0002}
+}
+
+\DeclareOption{acmtist}{
+ \typeout{}
+ \typeout{Using ACM, TIST option: 2010/07/14 by Aptara}
+ \typeout{}
+ \global\@acmjacmfalse
+ \global\@acmtissecfalse
+ \global\@acmtoclfalse
+ \global\@acmtocsfalse
+ \global\@acmtochifalse
+ \global\@acmtodaesfalse
+ \global\@acmtodsfalse
+ \global\@acmtoisfalse
+ \global\@acmtomacsfalse
+ \global\@acmtomsfalse
+ \global\@acmtoplasfalse
+ \global\@acmtosemfalse
+ \global\@acmtoitfalse
+ \global\@acmtecsfalse
+ \global\@acmtalipfalse
+ \global\@acmjericfalse
+ \global\@acmtacofalse
+ \global\@acmjeafalse
+ \global\@acmtslpfalse
+ \global\@acmciefalse
+ \global\@acmtosfalse
+ \global\@acmcsurfalse
+ \global\@acmjetcfalse
+ \global\@acmtosnfalse
+ \global\@acmtalgfalse
+ \global\@acmtaasfalse
+ \global\@acmtwebfalse
+ \global\@acmtkddfalse
+ \global\@acmtretsfalse
+ \global\@acmtmisfalse
+ \global\@acmtiisfalse
+ \global\@acmtisttrue
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}
+ \def\@journalCode{tist}
+ \def\@permissionCodeOne{0000-0003}
+}
+
+\ExecuteOptions{twoside,final,10pt,letterpaper}
+\ProcessOptions
+
+% Including fonts for Production Mode
+\ifprod@mode
+% New Century Schoolbook as base font
+\renewcommand\rmdefault{pnc}
+% Helvetica as second font
+\renewcommand\sfdefault{phv}
+\fi
+
+% Packages required
+\RequirePackage{latexsym}
+\RequirePackage{color}
+\usepackage{graphicx}
+
+
+\typeout{Document Class `acmsmall' Electronic Submissions
+\fileversion\space <\filedate> (ACM).}
+
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\def\articleSeq#1{\def\@articleSeq{#1}}
+\def\acmPrice#1{\def\@acmPrice{#1}}
+\def\acmYear#1{\def\@acmYear{#1}}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\def\doi#1{\def\@doi{#1}}
+
+
+%To transform the month number in its name in English
+\newcommand{\monthWord}[1]{\ifcase#1\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\else Month\fi}
+
+\newcommand{\monthInf}[1]{\ifcase#1\or
+ 01\or 02\or 03\or 04\or 05\or 06\or
+ 07\or 08\or 09\or 10\or 11\or 12\else 00\fi}
+
+% First and Last page
+\newcount\@firstpg
+\newcount\@lastpg
+\def\lastpage#1{\global\advance\@lastpg#1\relax}
+\AtEndDocument{\ifelec@app\else\immediate\write\@mainaux{\string\lastpage{\the\c@page}}\fi}
+
+\newdimen\trimheight
+\newdimen\trimwidth
+\newdimen\normaltextheight
+\newdimen\tempdimen
+\newbox\tempbox
+\newbox\tbbox
+\newdimen\tabledim
+
+% Extra symbol
+\DeclareSymbolFont{newlargesymbols}{OMX}{cmex}{m}{n}
+\DeclareMathSymbol{\bigsqcup}{\mathop}{newlargesymbols}{"46}
+
+% Bold Math
+\def\boldmath{\mathversion{bold}}
+\def\bm#1{\mathchoice
+ {\mbox{\boldmath$\displaystyle#1$}}%
+ {\mbox{\boldmath$#1$}}%
+ {\mbox{\boldmath$\scriptstyle#1$}}%
+ {\mbox{\boldmath$\scriptscriptstyle#1$}}}
+
+% Font information
+\lineskip1\p@
+\normallineskip1\p@
+\def\baselinestretch{1}
+\def\@ptsize{0} % needed for amssymbols.sty
+
+\@maxdepth\maxdepth
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
+\newcommand{\mit}{\protect\pmit}
+\newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
+\def\cal{\mathcal}
+
+\renewcommand{\@ptsize}{}
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@xpt{11\p@}%
+ \abovedisplayskip .5\baselineskip \@plus2\p@ \@minus\p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 6\p@ \@minus 3\p@
+ \belowdisplayshortskip 6\p@ \@minus 3\p@
+ \let\@listi\@listI
+}
+\newcommand{\small}{%
+ \@setfontsize\small\@ixpt{10\p@}%
+ \abovedisplayskip 5\p@ \@plus 2\p@ \@minus \p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 5\p@ \@minus 2\p@
+ \belowdisplayshortskip 5\p@ \@minus 2\p@
+ \def\@listi{%
+ \leftmargin\leftmargini
+ \topsep 5\p@ \@plus 2\p@ \@minus .2\p@
+ \parsep \z@ \@plus .7\p@
+ \itemsep 1.6\p@ \@plus .8\p@}%
+}%
+
+\newcommand{\footnotesize}{%
+ \@setfontsize\footnotesize\@viiipt{9\p@}%
+ \abovedisplayskip 4\p@ \@plus \p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 4\p@ \@minus \p@
+ \belowdisplayshortskip 4\p@ \@minus \p@
+ \def\@listi{%
+ \leftmargin\leftmargini
+ \topsep 4\p@ \@plus \p@
+ \parsep \z@ \@plus .5\p@
+ \itemsep \p@ \@plus .7\p@}
+}%
+\normalsize
+
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{14}}
+\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+
+\def\rhfont{\fontfamily{\sfdefault}\fontsize{9}{10}\selectfont}
+\def\rfootfont{\fontsize{7}{8}\selectfont}
+\def\foliofont{\fontfamily{\sfdefault}\fontsize{9}{10}\selectfont}
+
+\def\sectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries\raggedright}
+\def\refsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries}
+\def\subsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\bfseries\raggedright}
+\def\subsubsectionfont{\fontfamily{\sfdefault}\fontsize{9}{11}\selectfont\itshape\raggedright}
+\def\paragraphfont{\fontsize{10}{11}\selectfont\itshape}
+
+\def\figcaptionfont{\fontsize{8}{9}\selectfont}%
+\def\figcaptionnumfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\subcaptionfont{\fontsize{8}{10}\selectfont}%
+\def\subcaption#1{{\centering\subcaptionfont#1\par}}
+
+\def\tablefont{\fontsize{8}{9}\selectfont}%
+\def\intexttablefont{\fontsize{8}{9}\selectfont\centering}%
+\def\tablecaptionfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\tablenumfont{\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont}%
+\def\tabnotefont{\fontsize{8}{9}\selectfont}
+\def\ackfont{\fontsize{8}{10}\selectfont}
+
+\setlength\trimheight {10in}
+\setlength\trimwidth {6.75in}
+
+\textheight 48pc
+\advance\textheight-7.3pt
+\setlength\normaltextheight{\textheight}
+
+\textwidth 33pc
+\oddsidemargin .625in
+\evensidemargin\trimwidth
+\advance\evensidemargin-\oddsidemargin
+\advance\evensidemargin-\textwidth
+
+\marginparwidth .5in
+\marginparsep .125in
+\topmargin 36pt
+\headheight 6.5\p@
+\topskip6.2pt
+\headsep 17.5pt
+\parindent10\p@
+\newdimen\normalparindent
+\normalparindent\parindent
+
+\newlength{\footheight}%
+\footheight 10\p@
+\footskip 28\p@
+
+\columnsep 12\p@
+\columnseprule 0\p@
+
+\footnotesep 7\p@
+\skip\footins 15\p@ plus 4\p@ minus 3\p@
+\floatsep 1\baselineskip plus 2\p@ minus 2\p@
+\textfloatsep \floatsep
+\intextsep 1pc plus 1pc
+
+\newlength{\@maxsep}%
+\@maxsep 1pc
+
+\dblfloatsep 1\baselineskip plus 2\p@ minus 2\p@
+\dbltextfloatsep 20\p@ plus 2\p@ minus 4\p@
+
+\newlength{\@dblmaxsep}%
+\@dblmaxsep 20\p@
+
+\@fptop 0\p@ plus 1fil
+\@fpsep 1pc plus 2fil
+\@fpbot 0\p@ plus 1fil
+\@dblfptop 0\p@ plus 1fil
+\@dblfpsep 8\p@ plus 2fil
+\@dblfpbot 0\p@ plus 1fil
+
+\marginparpush 6\p@
+
+\parskip0\p@
+\partopsep 0\p@
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+
+\setcounter{topnumber}{3}
+\def\topfraction{.99}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.5}
+\setcounter{totalnumber}{3}
+\def\textfraction{.01}
+\def\floatpagefraction{.85}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+% Copyright Information
+\def\cpyright#1{\gdef\@cpyright{#1}}
+\cpyright{ACM\ \@permissionCodeOne/\@acmYear/\monthInf{\@acmMonth}-ART\@acmArticle}
+
+% Calculating total pages
+\newcount\@totalpg
+\def\acmPages#1{\def\@acmPages{#1}}
+\acmPages{\@totalpg\@lastpg\global\advance\@totalpg-\@firstpg\global\advance\@totalpg\@ne\ifnum\the\@totalpg<\z@0\else\the\@totalpg\fi\ pages}
+
+% Reference Format
+\gdef\formatline{\@journalNameShort\ \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\monthWord{\@acmMonth}\ \@acmYear), \(a)acmPages.\\
+DOI $=$ 10.1145/\@doi\ http://doi.acm.org/10.1145/\@doi}
+\gdef\copyrightline{\copyright\ \@acmYear\ \@cpyright\ \$\@acmPrice}
+\gdef\doiline{DOI\ 10.1145/\@doi\ \ http://doi.acm.org/10.1145/\@doi}
+
+% Page Style
+\mark{{}{}}
+
+\def\ps@headings{%
+ \let\@mkboth\@gobbletwo
+ \def\@oddhead{{\rhfont\rightmark}\hfill{\foliofont \@acmArticle:\thepage}}%
+ \def\@evenhead{{\foliofont \@acmArticle:\thepage}\hfill{\rhfont\leftmark}}%
+ \def\@evenfoot{\null\hfill{\rfootfont\@runningfoot}}
+ \def\@oddfoot{{\rfootfont\@runningfoot} \hfill\null}%
+ \let\partmark\@gobble
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+}
+
+\def\ps@appheadings{%
+ \let\@mkboth\@gobbletwo
+ \def\@oddhead{{\rhfont\rightmark}\hfill{\foliofont \thepage}}%
+ \def\@evenhead{{\foliofont \thepage}\hfill{\rhfont\leftmark}}%
+ \def\@evenfoot{\null\hfill{\rfootfont\@runningfoot}}
+ \def\@oddfoot{{\rfootfont\@runningfoot} \hfill\null}%
+ \let\partmark\@gobble
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+}
+
+\def\@runningfoot{}
+\def\runningfoot#1{\gdef\@runningfoot{#1}}
+
+\if@acmtodaes
+ \def\pubphrase{Pub. date}
+\else
+\if@acmtosem
+ \def\pubphrase{Pub. date}
+\else
+\if@acmjetc
+ \def\pubphrase{Pub. date}
+\else
+\if@acmtiis
+ \def\pubphrase{Pub. date}
+\else
+ \def\pubphrase{Publication date}
+\fi\fi\fi\fi
+
+\runningfoot{\@journalName, Vol.~\@acmVolume, No.~\@acmNumber, Article~\@acmArticle,\ \pubphrase:\ \monthWord{\@acmMonth}\ \(a)acmYear.}
+
+\def\@firstfoot{}
+\gdef\firstfoot{\@journalName, Vol.~\@acmVolume,\ No.~\@acmNumber,\ Article\ \@acmArticle,\ \pubphrase:\ \monthWord{\@acmMonth}\ \(a)acmYear.}
+
+\def\ps@titlepage{%
+ \let\@mkboth\@gobbletwo
+ \let\@oddhead\@empty
+ \def\@oddfoot{\null\hfill\fontsize{7}{8}\selectfont\firstfoot}
+ \let\@evenhead\@empty
+ \def\@evenfoot{\fontsize{7}{8}\selectfont\firstfoot\hfill\null}%
+}
+
+\def\titlepage{%
+ \@restonecolfalse
+ \if@twocolumn
+ \@restonecoltrue
+ \onecolumn
+ \else
+ \newpage
+ \fi
+ \thispagestyle{empty}%
+ \c@page\z@
+}
+
+\def\endtitlepage{%
+ \if@restonecol
+ \twocolumn
+ \else
+ \newpage
+ \fi
+}
+
+% Author and Affiliation
+\def\author#1{\gdef\@author{#1}}%
+\def\and{{\upshape and }}
+\def\affil#1{\gdef\@affil{#1}\ifx\@affil\@empty\else{\reset@font\affilfont\unskip,\ #1\vphantom{gy}\endgraf}\fi}\affil{}
+
+\def\titlefont{\fontfamily{\sfdefault}\fontsize{12}{12}\selectfont\bfseries}
+\def\authorfont{\fontfamily{\sfdefault}\fontsize{10}{11}\rightskip0pt plus1fill\selectfont}
+\def\affilfont{\fontfamily{\rmdefault}\fontsize{8}{11}\rightskip0pt plus1fill\selectfont}
+\def\abstractfont{\fontsize{8}{10}\selectfont}
+
+% Article Title page
+\def\maketitle{%
+ \newpage
+ \thispagestyle{titlepage}%
+ \global\@topnum\z@
+ \begingroup
+ \lineskip \z@
+ \null
+ \vskip -15.4\p@\relax
+ \parindent\z@
+ \begingroup
+ \raggedright
+ \hyphenpenalty\@M
+ {\titlefont\@title\par}
+ \global\@firstpg\the\c@page
+ \endgroup
+ \vskip 12\p@
+ \begingroup
+
+ {\addtolength{\baselineskip}{2\p@}%
+ {\authorfont\@author\par}
+ \vskip7pt
+ \ifx \@sponsors\@empty
+ \else
+ \hbox{\vrule height .2\p@ width \textwidth}
+ \@sponsors \par
+ \fi
+ }
+\endgroup
+ \par\vskip 22\p@\box\@abstract
+ \par%
+ \ifx\@categories\@empty
+ \else
+ \abstractfont
+ \vskip 4\p@\relax
+ \def\and{\unskip{\rm;} }%
+ \noindent Categories and Subject Descriptors: \@categories\par
+ \fi
+ \ifx\@terms\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent General Terms: \ignorespaces
+ \@terms
+ \par
+ \fi
+ \ifx\@keywords\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent Additional Key Words and Phrases: \ignorespaces
+ \@keywords
+ \par
+ \fi
+ \ifx\@acmformat\@empty\else
+ \abstractfont
+ \vskip 4\p@
+ \noindent {\bf ACM Reference Format:}\\
+ \@acmformat\vskip 0.5\p@
+ \par
+ \fi
+ \par
+ \endgroup
+ \let\maketitle\relax
+ \global\let\@sponsors\@empty
+ \global\let\@categories\@empty
+ \global\let\@terms\@empty
+ \global\let\@keywords\@empty
+ }
+
+% Sponsor
+\def\sponsor#1{\@ifnextchar
+ [{\@sponsor{#1}}{\@xsponsor{#1}}}
+\def\@sponsor#1[#2]{\edef\@tempa{\ifx \@sponsors\@empty
+ \else ; \fi}{\def\protect{\noexpand\protect
+ \noexpand}\def\and{\noexpand\and}\xdef\@sponsors{\@sponsors\@tempa #1 }}}
+\def\@xsponsor#1{\edef\@tempa{\ifx \@sponsors\@empty \else ;
+\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
+ \and}\xdef\@sponsors{\@sponsors\@tempa #1}}}
+\def\@sponsors{}
+
+% Abstract
+\newbox\@abstract
+\def\abstract{
+\global\setbox\@abstract=\vbox\bgroup\everypar{}%
+\abstractfont\noindent\ignorespaces}
+\def\endabstract{\egroup}
+
+% Terms
+\def\terms#1{\gdef\@terms{#1}}
+\let\@terms\@empty
+
+% Keywords
+\def\keywords#1{\gdef\@keywords{#1}}
+\let\@keywords\@empty
+
+% Reference Format
+\def\acmformat#1{\gdef\@acmformat{#1 \formatline\vphantom{y}}}
+\let\@acmformat\@empty
+
+% Category
+\def\category#1#2#3{%
+ \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}}
+\def\@category#1#2#3[#4]{%
+ \edef\@tempa{\ifx \@categories\@empty \else ; \fi}%
+ \begingroup
+ \def\protect{\noexpand\protect\noexpand}%
+ \let\and\relax
+ \xdef\@categories{%
+ \@categories
+ \@tempa
+ #1 [{\bf #2}]%
+ \if!#4!%
+ \if!#3!\else : #3\fi
+ \else
+ :\space
+ \if!#3!\else #3\kern\z@---\hskip\z@\fi
+ {\it #4}%
+ \fi
+ }%
+ \endgroup
+}
+
+% Permission Information
+\newbox\@permissionbox
+\newenvironment{permission}{%
+ \footnotesize
+ \global\setbox\@permissionbox\vbox\bgroup\par\addvspace{3.1pt}\noindent\ignorespaces
+ }{%
+ \par\egroup}
+%
+\let\@categories\@empty
+\def\bottomstuff{%
+ \global\@topnum\z@
+ \global\@botroom \textheight
+ \@float{figure}[b]
+ \footnotesize
+ \parindent\z@
+ \null
+ \vskip -\textfloatsep
+ \vskip 6\p@ plus2pt minus2pt
+ \hrule \@height .5\p@ \@width \textwidth
+ \vskip 6\p@ %7.5
+ \ignorespaces
+}
+\def\endbottomstuff{\par%
+Permission to make digital or hard copies of part or all 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 show this notice on the first page or initial screen of a display
+along with the full citation. Copyrights for components of this work owned by others than ACM
+must be honored. Abstracting with credit is permitted. To copy otherwise, to republish,
+to post on servers, to redistribute to lists, or to use any component of this work in other
+works requires prior specific permission and\hspace*{.5pt}/or a fee.
+Permissions may be requested from Publications Dept., ACM, Inc., 2 Penn Plaza, Suite 701,
+New York, NY 10121-0701 USA, fax $+$1 (212) 869-0481,
+or [email protected].\par\box\@permissionbox
+\copyrightline\par
+\doiline
+\vskip-13pt
+\strut
+\end@float
+}
+
+% Heads
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\def\thepart{\Roman{part}}
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+
+% for checking Uppercase heads
+\newif\if@uchead\@ucheadfalse
+
+\setcounter{secnumdepth}{3}
+\def\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\normalsize\itshape\@ucheadtrue}}
+\def\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\sectionfont\@ucheadtrue}}
+\def\refsection{\@startsection{section}{1}{\z@}%
+ {-1\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.5\baselineskip}%
+ {\refsectionfont\@ucheadtrue}}
+\def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\subsectionfont}}
+\def\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}{\subsubsectionfont}}
+\def\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\paragraphfont}}
+
+\def\@seccntformat#1{\csname the#1\endcsname.\hskip .4em}
+\let\@period=.
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@svsec{\begingroup\csname the#1\endcsname\endgroup\relax .\hskip .4em}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M \if@uchead\MakeUppercase{#8}\else#8\fi\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par
+ \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \global\@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ \clubpenalty\@M
+ \hskip -\parindent
+ \begingroup
+ \@svsechd
+ \@period
+ \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi
+ }%
+ \fi
+ \ignorespaces
+}
+
+% Lists
+\def\@trivlist{%
+ \@topsepadd\topsep
+ \if@noskipsec
+ \global\let\@period\@empty
+ \leavevmode
+ \global\let\(a)period.%
+ \fi
+ \ifvmode
+ \advance\@topsepadd\partopsep
+ \else
+ \unskip
+ \par
+ \fi
+ \if@inlabel
+ \@noparitemtrue
+ \@noparlisttrue
+ \else
+ \@noparlistfalse
+ \@topsep\@topsepadd
+ \fi
+ \advance\@topsep \parskip
+ \leftskip\z@skip
+ \rightskip\@rightskip
+ \parfillskip\@flushglue
+ \@setpar{\if@newlist\else{\@@par}\fi}
+ \global\@newlisttrue
+ \@outerparskip\parskip
+}
+\labelsep 5\p@
+
+\settowidth{\leftmargini}{9.}
+\addtolength\leftmargini\labelsep
+
+\settowidth{\leftmarginii}{(b)}
+\addtolength\leftmarginii\labelsep
+
+\leftmarginiii \leftmarginii
+\leftmarginiv \leftmarginii
+\leftmarginv \leftmarginii
+\leftmarginvi \leftmarginii
+\leftmargin \leftmargini
+
+\labelwidth\leftmargini
+\advance\labelwidth-\labelsep
+\def\@listI{%
+ \leftmargin\leftmargini
+ \parsep \z@
+ \topsep .5\baselineskip \@plus 2\p@%
+ \itemsep\z@%
+}
+
+\let\@listi\@listI
+
+\@listi
+\def\@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \z@
+ \itemsep \parsep
+}
+\def\@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \z@ \@plus \p@
+ \parsep \z@
+ \itemsep \parsep
+}
+\def\@listiv{%
+ \leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep
+}
+\def\@listv{%
+ \leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep
+}
+\def\@listvi{%
+ \leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep
+}
+\newdimen\enumdim
+\def\enummax#1{%
+ \setbox\tempbox\hbox{#1\hskip\labelsep}%
+ \enumdim\wd\tempbox
+ \expandafter\global\csname leftmargin\romannumeral\the\@enumdepth\endcsname
+ \enumdim}
+
+\enummax{1.}
+\def\enumerate{\@ifnextchar[{\@enumerate}{\@enumerate[\csname label\@enumctr\endcsname]}}%%
+\def\@enumerate[#1]{\par\abovedisplayskip .25\baselineskip \@plus2\p@
+ \belowdisplayskip .25\baselineskip \@plus2\p@
+ \ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \setcounter{\@enumctr}{1}\enummax{#1}%
+ \list
+ {\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}%
+ \def\makelabel##1{\hss\llap{##1}}}\fi}
+\def\endenumerate{\endlist}%%
+\def\longenum{%
+ \leftmargin0pt
+ \ifnum \@enumdepth >3
+ \@toodeep
+ \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \list{\csname label\@enumctr\endcsname}{%
+ \usecounter{\@enumctr}%
+ \labelwidth\z@\leftmargin0pt
+ \itemindent\parindent\advance\itemindent\labelsep
+ }%
+ \fi
+}
+\let\endlongenum\endlist
+
+\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\texthyphen}%
+\newcommand\labelitemii{\texthyphen}%
+\newcommand\labelitemiii{\texthyphen}%
+\newcommand\labelitemiv{\texthyphen}%
+\font\lcir = lcircle10 at 8pt
+\newcommand\bulls{\raise1.5pt\hbox{\lcir\char'162}}
+\def\textbullet{\leavevmode\raise2pt\hbox{\bulls}}
+\def\texthyphen{---}
+\newif\ifhyphen\hyphenfalse
+
+\def\itemize{%
+ \ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\advance\leftmargin-5.7pt\labelsep2pt
+ \def\makelabel##1{\hss\llap{##1}}}\fi}%
+\let\enditemize =\endlist
+
+\newenvironment{hyphenlist}{%
+ \hyphentrue
+ \renewcommand\labelitemi{\texthyphen}%
+ \renewcommand\labelitemii{\texthyphen}%
+ \renewcommand\labelitemiii{\texthyphen}%
+ \renewcommand\labelitemiv{\texthyphen}%
+ \begin{itemize}
+}{%
+ \end{itemize}
+ \hyphenfalse}
+%
+\newenvironment{bulletlist}{%
+\leftmargini20pt
+ \renewcommand\labelitemi{\textbullet}%
+ \renewcommand\labelitemii{\textbullet}%
+ \renewcommand\labelitemiii{\textbullet}%
+ \renewcommand\labelitemiv{\textbullet}%
+ \begin{itemize}
+}{%
+ \end{itemize}}
+
+\def\longitem{%
+ \list{---}{%
+ \labelwidth\z@
+ \leftmargin\z@
+ \itemindent\parindent
+ \advance\itemindent\labelsep
+ }%
+}
+\let\endlongitem\endlist
+\def\verse{%
+ \let\\=\@centercr
+ \list{}{%
+ \leftmargin 2pc
+ \itemindent -1.5em
+ \listparindent \itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin 1.5em
+ }%
+ \item[]
+}
+
+\let\endverse\endlist
+\def\quotation{%
+ \list{}{%
+ \leftmargin 2pc
+ \listparindent .5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep \z@ \@plus \p@
+ }%
+ \item[]
+}
+
+\let\endquotation=\endlist
+\def\quote{%
+ \list{}{%
+ \leftmargin 2pc
+ \rightmargin\leftmargin
+ }%
+ \item[]
+}
+
+\let\endquote=\endlist
+%
+\def\extractfont{\fontsize{8}{10}\selectfont\leftskip8pt\rightskip8pt}
+\newenvironment{extract}{\par\addvspace{7pt plus2pt}
+\parindent8pt
+\extractfont
+\noindent\ignorespaces
+}{%
+\par\addvspace{6pt plus2pt}}
+
+\def\descriptionlabel#1{%
+ \hspace\labelsep \normalfont\itshape #1.%
+}%
+\newenvironment{description}{%
+ \list{}{%
+ \labelwidth\z@
+ \let\makelabel\descriptionlabel
+ }
+}{\endlist}%
+
+\def\describe#1{%
+ \list{}{%
+ \listparindent\parindent
+ \settowidth{\labelwidth}{#1}%
+ \leftmargin\labelwidth
+ \addtolength\leftmargin\labelsep
+ \def\makelabel##1{##1\hfil}%
+ }%
+}
+\let\enddescribe\endlist
+
+\def\program{%
+ \ifx\@currsize\normalsize
+ \small
+ \else
+ \rm
+ \fi
+ \tabbing
+}
+\let\endprogram\endtabbing
+
+% Enunciations
+\newif\ifitalicenv\italicenvtrue
+
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{proposition}[theorem]{Proposition}
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{corollary}[theorem]{Corollary}
+%
+\newtheorem{exam}[theorem]{Example}
+\newenvironment{example}{%
+\italicenvfalse
+\begin{exam}}{\end{exam}\italicenvtrue}
+%
+\newtheorem{defi}[theorem]{Definition}
+\newenvironment{definition}{%
+\italicenvfalse
+\begin{defi}}{\end{defi}\italicenvtrue}
+
+\def\@begintheorem#1#2{%
+ \trivlist
+ \item[%
+ \hskip 12\p@
+ \hskip \labelsep
+ {\ifitalicenv\sc\else\itshape\fi #1\hskip 5\p@\relax{\rm #2}.\enspace}]%
+ \ifitalicenv\itshape\else\upshape\fi\hskip-\labelsep%
+}
+\def\@opargbegintheorem#1#2#3{%
+ \trivlist
+ \item[\hskip 12pt
+ \hskip \labelsep
+ {\ifitalicenv{\sc{#1}}\else{\itshape#1}\fi%
+ \savebox\@tempboxa{\ifitalicenv{\scshape#3}\else{\itshape#3}\fi}%
+ \ifdim\wd\@tempboxa>\z@%
+ \ {\rm #2}\unskip\hskip5pt\relax$($\box\@tempboxa$)$%
+ \fi.\unskip\hskip5pt}]
+\ifitalicenv\itshape\else\upshape\fi\hskip-\labelsep}
+
+\newif\if@qeded
+\global\@qededfalse
+\def\proof{%
+ \global\@qededfalse
+ \@ifnextchar[{\@xproof}{\@proof}}
+
+\def\endproof{%
+ \if@qeded\else\qed\fi
+ \endtrivlist
+}
+\def\@proof{%
+ \trivlist
+ \item[%
+ \hskip 12\p@
+ \hskip \labelsep
+ {\sc Proof.\enspace}]\hskip-\labelsep%
+ \ignorespaces
+}
+\def\@xproof[#1]{%
+ \trivlist
+ \item[\hskip 12\p@\hskip \labelsep{\sc Proof #1.}]%
+ \ignorespaces
+}
+\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(5,5){}}
+ \global\@qededtrue
+ }%
+\def\newdef#1#2{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \global\@namedef{#1}{\@defthm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}%
+ }%
+}
+\def\@defthm#1#2{%
+ \refstepcounter{#1}%
+ \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%
+}
+\def\@xdefthm#1#2{%
+ \@begindef{#2}{\csname the#1\endcsname}%
+ \ignorespaces
+}
+\def\@ydefthm#1#2[#3]{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #2%
+ \savebox\@tempboxa{#3}%
+ \ifdim \wd\@tempboxa>\z@
+ \ \box\@tempboxa
+ \fi.%
+ }]%
+ \ignorespaces
+}
+\def\@begindef#1#2{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #1\ \rm #2.}%
+ ]%
+}
+
+% Maths
+\def\theequation{\arabic{equation}}
+
+\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}
+\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil
+ \or \hfil$\relax\displaystyle\@sharp$\fi}}
+\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz
+ \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray}
+\def\endmarray{\crcr\egroup\egroup}
+
+\arraycolsep 2.5\p@
+\tabcolsep 6\p@
+\arrayrulewidth .25\p@
+\doublerulesep 2\p@
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4\p@
+
+% Table of Contents
+\def\(a)pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\(a)dotsep{4.5}
+\setcounter{tocdepth}{3}
+\def\tableofcontents{%
+ \section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}%
+}
+\def\l@part#1#2{%
+ \addpenalty\@secpenalty
+ \addvspace{2.25em \@plus \p@}%
+ \begingroup
+ \@tempdima 3em
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+ \endgroup
+}
+\def\l@section#1#2{%
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus \p@}%
+ \@tempdima 1.5em
+ \begingroup
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+
+% List of figures
+\def\listoffigures{%
+ \section*{List of Figures\@mkboth{LIST OF FIGURES}{LIST OF FIGURES}}
+ \@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+% List of tables
+\def\listoftables{%
+ \section*{List of Tables\@mkboth{LIST OF TABLES}{LIST OF TABLES}}
+ \@starttoc{lot}}
+\let\l@table\l@figure
+
+% Index
+\newif\if@restonecol
+\def\theindex{%
+ \@restonecoltrue
+ \if@twocolumn \@restonecolfalse \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}%
+ \thispagestyle{plain}%
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem
+}
+
+\def\endtheindex{%
+ \if@restonecol
+ \onecolumn
+ \else
+ \clearpage
+ \fi
+}
+\def\@idxitem{\par\hangindent 40\p@}
+\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
+\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+\def\indexspace{\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@\relax}
+
+% Footnote
+\def\footnoterule{%
+ \kern-3\p@
+ \hrule \@width 36\p@ \@height 0.25\p@
+ \kern 3\p@
+}
+\long\def\@makefntext#1{%
+ \parindent 1em
+ \noindent $^{\@thefnmark}$#1%
+}
+
+% Figures and Tables
+\newlength\belowcaptionskip
+\newlength\abovecaptionskip
+\setlength\belowcaptionskip{3.5\p@}
+\setlength\abovecaptionskip{6\p@}
+
+\def\nocaption{\refstepcounter\@captype \par
+ \vskip 1pc \hbox to\hsize{\hfil \figcaptionnumfont Figure \thefigure
+ \hfil}}
+
+\def\FigName{figure}%
+\long\def\@caption#1[#2]#3{\par\begingroup
+ \@parboxrestore
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+\long\def\@makecaption#1#2{%
+ \ifx\FigName\@captype\baselineskip10pt
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{\figcaptionfont{\figcaptionnumfont#1}.\hskip7.3pt\relax #2\par}%
+ \ifdim \wd\@tempboxa >\hsize
+ \figcaptionfont{\figcaptionnumfont#1}.\hskip7.3pt\relax #2\par
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+ \else%
+ \setbox\tbbox=\vbox{\hsize\tempdimen\tablecaptionfont{\tablenumfont #1.\ }{#2\par}}%
+ \setbox\@tempboxa\hbox{\hsize\tempdimen\tablecaptionfont{\tablenumfont #1.}\ {#2\par}}%
+ \ifdim \wd\@tempboxa >\tempdimen
+ \centerline{\box\tbbox}%
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+ \vskip\belowcaptionskip
+ \fi
+}
+%
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%
+\newif\ifcontinued
+\global\continuedfalse
+%
+\def\continued{\global\continuedtrue}
+%
+\def\fnum@figure{\ifcontinued\global\continuedfalse\addtocounter{figure}{-1} Fig.~\thefigure---{\it Continued}\else Fig.~\thefigure\fi}%
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+%
+\newcounter{table}
+\renewcommand\thetable{\Roman{table}}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\tablename{Table}
+\def\fnum@table{\ifcontinued\addtocounter{table}{-1} Table~\thetable---{\it Continued} \else Table~\thetable\fi}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+
+\long\def\tbl#1#2{%
+\setbox\tempbox\hbox{\tablefont #2}%
+\tabledim\hsize\advance\tabledim by -\wd\tempbox
+\tempdimen\wd\tempbox
+\global\divide\tabledim\tw@
+\caption{#1\protect\vphantom{yp}}
+\centerline{\box\tempbox}}%
+
+\newenvironment{intexttable}{\par\addvspace{1.2pt plus2pt}
+\intexttablefont
+}{%
+\par\addvspace{7pt plus2pt}}
+
+\newenvironment{tabnote}{%
+\par\vskip5pt
+\tabnotefont
+\@ifnextchar[{\@tabnote}{\@tabnote[]}}{%
+\par}
+\def\@tabnote[#1]{\def\@Tempa{#1}\leftskip\tabledim\rightskip\leftskip\ifx\@Tempa\@empty\else{\it #1:}\ \fi\ignorespaces}
+
+\def\tabnoteentry#1#2{\parindent0pt\par{#1}{#2}}
+\def\Note#1#2{\parindent0pt\par{\it #1}\ #2}
+
+\newdimen\@narrowfig
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven
+\def\acmtable#1{%
+ \@narrowfig #1\relax
+ \let\caption\@atcap
+ \let\nocaption\@atnocap
+ \@ifnextchar[{\@ntab}{\@ntab[\fps@table]}%
+}
+
+\def\@ntab[#1]{%
+ \expandafter\table\expandafter[#1]%
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig
+ \@parboxrestore
+}
+
+\def\endacmtable{%
+ \hb@xt@\textwidth{%
+ \hfil
+ \vbox{%
+ \hsize \@narrowfig
+ \box\@nfcapbox{%
+ \baselineskip 4\p@
+ \hbox{\vrule \@height .4\p@ \@width \hsize}%
+
+ }%
+ \vskip -\p@
+ \box\@nfigbox
+ \vskip -\p@
+ \begingroup
+ \baselineskip 4\p@
+ \hbox{\vrule \@height .4\p@ \@width \hsize}%
+ \endgroup
+ }%
+ \hfil
+ }%
+ \end@float
+}
+\def\@atmakecap#1#2{%
+ \setbox\(a)tempboxa\hbox{#1.\hskip 1em\relax #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \sloppy #1.\hskip 1em\relax #2 \par
+ \else
+ \centerline{\box\@tempboxa}%
+ \fi
+}
+\def\@atcap{%
+ \par
+ \egroup
+ \refstepcounter\@captype
+ \@dblarg{\@atcapx\@captype}%
+}
+\long\def\@atcapx#1[#2]#3{%
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \setbox\@nfcapbox\vbox{%
+ \hsize \wd\@nfigbox
+ \@parboxrestore
+ \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+ \par
+ }%
+}
+\def\@atnocap{%
+ \egroup
+ \refstepcounter\@captype
+ \setbox\@nfcapbox\vbox{%
+ \hsize \wd\@nfigbox
+ \centerline{\footnotesize \fnum@table}
+ }%
+}
+\def\narrowfig#1{%
+ \@narrowfig #1\relax
+ \let\caption\@nfcap
+ \let\nocaption\@nfnocap
+ \@ifnextchar[{\@nfig}{\@nfig[\fps@figure]}%
+}
+
+\def\@nfig[#1]{%
+ \expandafter\figure\expandafter[#1]%
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize\@narrowfig
+ \@parboxrestore
+}
+
+\def\endnarrowfig{%
+ \hb@xt@\textwidth{%
+ \if@nfeven
+ \box\@nfcapbox \hfil \box\@nfigbox
+ \else
+ \box\@nfigbox \hfil \box\@nfcapbox
+ \fi
+ }%
+ \endfigure
+}
+\def\@nfcap{%
+ \par
+ \egroup
+ \refstepcounter\@captype
+ \@dblarg{\@nfcapx\@captype}%
+}
+\def\@nfmakecap #1#2{%
+ \setbox\(a)tempboxa\hbox{#1.\hskip 1em\relax #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \sloppy #1.\hskip 1em\relax #2 \par
+ \else
+ \@@line{%
+ \if@nfeven\else\hfil\fi
+ \box\@tempboxa
+ \if@nfeven\hfil\fi
+ }%
+ \fi
+}
+\long\def\@nfcapx#1[#2]#3{%
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
+ }%
+ \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
+ \hsize \textwidth
+ \advance\hsize -2pc
+ \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+ \par
+ \vfil
+ }%
+}
+\def\@nfnocap{%
+ \egroup
+ \refstepcounter\@captype
+ \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
+ \hsize \textwidth
+ \advance\hsize -2pc
+ \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \@@line{%
+ \if@nfeven\else\hfil\fi
+ \footnotesize \fnum@figure
+ \if@nfeven\hfil\fi
+ }%
+ \vfil
+ }%
+}
+
+\def\@seteven{%
+ \@nfeventrue
+ \@ifundefined{r@@nf\thefigure}{}{%
+ \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
+ \edef\@tmpnf{\expandafter\@cdr\@tmpnf\@nil}%
+ \ifodd\@tmpnf\relax
+ \@nfevenfalse
+ \fi
+ }%
+ \label{@nf\thefigure}%
+ \edef\@tmpnfx{\if@nfeven e\else o\fi}%
+ \edef\@tmpnf{%
+ \write\@unused{%
+ \noexpand\ifodd \noexpand\c@page
+ \noexpand\if \@tmpnfx e%
+ \noexpand\@nfmsg{\thefigure}
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\if \@tmpnfx o%
+ \noexpand\@nfmsg{\thefigure}%
+ \noexpand\fi
+ \noexpand\fi
+ }%
+ }%
+ \@tmpnf
+}
+
+\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven
+
+% Acknowledgments
+\newenvironment{ack}{%
+\refsection*{ACKNOWLEDGMENT}
+\ackfont
+}{\par}
+
+\newenvironment{acks}{%
+\refsection*{ACKNOWLEDGMENTS}
+\ackfont
+}{\par}
+
+% History Dates
+\def\received#1#2#3{\par\addvspace{14\p@}%
+{\noindent\fontfamily{\sfdefault}\fontsize{8}{9}\selectfont{Received\ #1;\ revised\ #2;\ accepted\ #3}%
+\par}}
+
+% provide both spellings of Acknowledgment(s)
+\let\acknowledgments\acks
+\let\endacknowledgments\endacks
+\let\acknowledgment\ack
+\let\endacknowledgment\endack
+
+\newcommand{\longpage}{\enlargethispage{\baselineskip}}
+\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
+
+% Appendices
+\newfont{\apbf}{cmbx9}
+\def\@withappendix#1{App--\number #1}
+\newcommand{\elecappendix}{
+}
+
+\def\appenheader{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\newfont{\sc}{cmcsc10}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 11pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endappenheader{\end{figure}\gdef\appendixhead{}}
+
+\def\@appsec{}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\@appsec{APPENDIX }
+ \def\thesection{\Alph{section}}
+ \def\theHsection{\Alph{section}}}
+
+% split electronic appendix into two parts:
+
+\def\appendixhead#1{\appendix
+\section*{ELECTRONIC APPENDIX}
+The electronic appendix for this article can be accessed in the ACM Digital Library.}
+
+\newif\ifelec@app\global\elec@appfalse
+\long\def\elecappendix{\immediate\write\@mainaux{\string\lastpage{\the\c@page}}%
+\clearpage
+\makeatletter
+\elec@apptrue
+\pagenumbering{withappendix}
+\pagestyle{appheadings}
+\thispagestyle{titlepage}%
+\makeatother
+\appendix
+{\vbox{\titlefont\parindent0pt\raggedright%
+Online Appendix to:\par\@title\par{}}}\vskip 12\p@
+\vbox{\authorfont\parindent0pt\@author{}}\vskip .5em\noindent
+\vskip 11pt\noindent
+\hrule height .2pt
+\par
+\def\endbottomstuff{%
+\copyrightline\par
+\doiline
+\vskip-13pt
+\strut
+\end@float
+}
+\bottomstuff
+\endbottomstuff
+}
+
+%-----------------------BIBLIOGRAPHY STUFF-------------------------
+% this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
+%
+%%% filename = "chicago.sty",
+%%% version = "4", % MODIFIED!
+%%% date = "31 August 1992",
+%%% time = "09:42:44 199",
+%%% author = "Glenn Paulley",
+%%% address = "Data Structuring Group
+%%% Department of Computer Science
+%%% University of Waterloo
+%%% Waterloo, Ontario, Canada
+%%% N2L 3G1",
+%%% telephone = "(519) 885-1211",
+%%% FAX = "(519) 885-1208",
+%%% email = "gnpaulle(a)bluebox.uwaterloo.ca",
+
+%%% ====================================================================
+%
+% this file: Modification of chicago.sty for new ACM bibliography
+% style, which is similar (but not identical) to the ``Chicago'' style.
+%
+% chicago.sty: Style file for use with bibtex style chicago.bst, for
+% bibliographies formatted according to the 13th Edition of the Chicago
+% Manual of Style.
+%
+% 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+% newapa.sty formed the basis of this style, chicago.sty. Author-date
+% references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
+% supports annotations.
+%
+% Version 4 (August, 1992):
+% - fixed chicago.bst and chicagoa.bst to handle long author lists in
+% sorting
+% - fixed chicago.bst and chicagoa.bst so that missing page numbers in
+% ``article'' entries are handled correctly
+% - modified chicago.sty to format entries with 2nd and subsequent lines
+% indented.
+%
+% Citation format: (author-last-name year)
+% (author-last-name and author-last-name year)
+% (author-last-name et al. year)
+% (author-last-name)
+% author-last-name
+% author-last-name (year)
+% (author-last-name and author-last-name)
+% (author-last-name et al.)
+% (year) or (year,year)
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+%
+% -------------------------------------------------------------------------
+%
+% Citation macros (compatible with natbib package).
+%
+\AtBeginDocument{%
+\@ifpackageloaded{natbib}{% Natbib loaded
+\renewcommand\bibsection{%
+ \refsection*{{\refname}%
+ \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%
+}}%
+\bibpunct[, ]{[}{]}{;}{a}{}{,}
+\let\citeN\cite
+\let\cite\citep
+\let\citeANP\citeauthor
+\let\citeNN\citeyearpar
+\let\citeyearNP\citeyear
+\let\citeyear\citeyearpar
+\let\citeNP\citealt
+\def\shortcite#1{\citeyear{#1}}
+\DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
+\newcommand\newblock{}
+}{% Natbib not loaded
+\let\@internalcite\cite
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeXNP#1#2{%
+ \def\@cite@label{#2}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{\@cite@label}\@internalcite{#1}}
+\def\citeNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
+ \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
+\def\shortcite#1{\citeyear{#1}}
+\def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
+\def\citeNS#1{\citeANP{#1} \citeyear{#1}}
+\def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
+%testing year,year
+\def\citeNN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+\def\citeA{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+\def\citeANP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+
+\def\citeyear{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+\def\citeyearNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+%
+% \@citedata and \@citedatax:
+%
+% Place commas in-between citations in the same \citeyear, \citeyearNP,
+% or \citeN command.
+% Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
+%
+\def\@citedata{%
+ \@ifnextchar [{\@tempswatrue\@citedatax}%
+ {\@tempswafalse\@citedatax[]}%
+}
+
+\def\@citedatax[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% don't box citations, separate with ; and a space
+% also, make the penalty between citations negative: a good place to break.
+%
+\def\@citex[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% Fix cite so it doesn't repeat author lists in citations:
+
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \let\@lastauthor=\@noauthor
+ \let\citeauthoryear=\citeauthoryear@no@repeats\@internalcite}
+ %\def\citeauthoryear##1##2##3{##2 ##3}\@internalcite
+
+\def\@noauthor={\relax}
+\let\@lastauthor=\@noauthor
+\let\@currauthor=\@noauthor
+
+\def\citeauthoryear@no@repeats#1#2#3{%
+ \def\@currauthor{\csname @author #1\endcsname}%
+ \ifx\@lastauthor\@currauthor{#3}\else{#2 #3}\fi%
+ \let\@lastauthor=\@currauthor}
+}}
+
+% Bibliography
+\let\@biblabel\@gobble
+\newdimen\bibindent
+\bibindent=16pt
+\newcommand\refname{REFERENCES}
+\def\thebibliography#1{%
+ \footnotesize
+ \refsection*{{\refname}
+ \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%
+ }
+ \list{}{
+ \settowidth\labelwidth{}
+ \leftmargin0pt
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \itemsep2pt
+ \parsep \z@
+ \usecounter{enumi}%
+ }%
+ \let\newblock\@empty
+ \sloppy
+ \sfcode`\.=1000\relax
+}
+\let\endthebibliography=\endlist
+
+% Blackboard font
+\DeclareFontFamily{OT1}{ams}{}
+\DeclareFontShape{OT1}{ams}{m}{n}{ <-> msam10 }{}
+\DeclareFontShape{OT1}{ams}{m}{it}{ <-> msam10 }{}
+\DeclareFontShape{OT1}{ams}{bx}{n}{ <-> msbm10 }{}
+\DeclareFontShape{OT1}{ams}{bx}{it}{ <-> msbm10 }{}
+
+\def\bb#1{\mathchoice
+ {\mbox{\fontfamily{ams}\fontsize{\tf@size}{\tf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\tf@size}{\tf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\sf@size}{\sf@size}\selectfont\bf#1}}%
+ {\mbox{\fontfamily{ams}\fontsize{\ssf@size}{\ssf@size}\selectfont\bf#1}}}
+
+\DeclareMathAlphabet{\mathbb}{OT1}{ams}{bx}{n}
+\SetMathAlphabet\mathbb{normal}{OT1}{ams}{bx}{n}
+\SetMathAlphabet\mathbb{bold}{OT1}{ams}{bx}{n}
+\def\bb{\mathbb}
+
+\def\text#1{\ifmmode
+ \mathchoice
+ {\hbox{\fontsize{\tf@size}{\tf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\tf@size}{\tf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\sf@size}{\sf@size}\selectfont#1}}%
+ {\hbox{\fontsize{\ssf@size}{\ssf@size}\selectfont#1}}%
+ \else\hbox{\rm#1}\fi}
+%
+% newdef need to take the optional parameters of newtheorem
+\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}}
+\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}}
+\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}}
+\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}}
+\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}}
+%
+\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}}
+%
+\def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm}
+\def\@ystartdef#1{\begin{italic@#1}\rm}
+%
+\newdef{remark}[theorem]{Remark}
+
+% Page number Panel
+\def\openartnum{\vbox to 1.125in{\vskip.125in\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+\def\closeartnum{\vbox to 1.125in{\vskip-.125in\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+\def\artnum{\vbox to 1in{\vfill\hbox to 26pt{\textcolor{white}{\fontfamily{\sfdefault}\fontsize{12}{7}\selectfont\bfseries\@acmArticle}\hfill}\vfill}}
+%
+\def\opentab{\hbox{\vrule width45.75pt depth0pt height1.125in\hspace*{-35.5pt}\openartnum}}
+\def\normtab{\hbox{\vrule width45.75pt depth0pt height1in\hspace*{-35.5pt}\artnum}}
+\def\closetab{\hbox{\vrule width45.75pt depth0pt height1.125in\hspace*{-35.5pt}\closeartnum}}
+%
+\newcommand\tab{\ifcase\@articleSeq\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\or
+\vbox{\vskip-.125in\opentab}\or \vbox{\vskip1in\normtab}\or \vbox{\vskip2in\normtab}\or \vbox{\vskip3in\normtab}\or \vbox{\vskip4in\normtab}\or \vbox{\vskip5in\normtab}\or \vbox{\vskip6in\normtab}\or \vbox{\vskip7in\normtab}\or \vbox{\vskip8in\normtab}\or \vbox{\vskip9in\closetab}\fi}
+
+% Output Routine
+\def\@outputpage{%
+\begingroup % the \endgroup is put in by \aftergroup
+ \let \protect \noexpand
+ \@resetactivechars
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ % correct? or just restore by ending
+ % the group?
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \ifelec@app\else\ifnum\c@page=1\vbox to 0pt{\hbox to \trimwidth{\hfill\tab}}\fi\fi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }% %% 22 Feb 87
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
+%
+\ps@headings
+\pagenumbering{arabic}
+\onecolumn
+
+\frenchspacing
+\sloppy
+\widowpenalty10000
+\clubpenalty10000
+
+\endinput
+
+% End of file `acmsmall.cls' Version 1.1
+
diff --git a/papers/2011/aesop/algorithm.sty b/papers/membership/algorithm.sty
similarity index 100%
copy from papers/2011/aesop/algorithm.sty
copy to papers/membership/algorithm.sty
diff --git a/papers/2011/aesop/algorithmic.sty b/papers/membership/algorithmic.sty
similarity index 93%
copy from papers/2011/aesop/algorithmic.sty
copy to papers/membership/algorithmic.sty
index 16a5fc3..a8ea254 100644
--- a/papers/2011/aesop/algorithmic.sty
+++ b/papers/membership/algorithmic.sty
@@ -16,7 +16,7 @@
% Boston, MA 02111-1307, USA.
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{algorithmic}[2005/07/05]
+\ProvidesPackage{algorithmic}[2006/06/02]
\typeout{Document Style `algorithmic' - environment}
%
\RequirePackage{ifthen}
@@ -75,6 +75,8 @@
\newcommand{\algorithmicuntil}{\textbf{until}}
\newcommand{\algorithmicprint}{\textbf{print}}
\newcommand{\algorithmicreturn}{\textbf{return}}
+\newcommand{\algorithmictrue}{\textbf{true}}
+\newcommand{\algorithmicfalse}{\textbf{false}}
\def\ALC@setref{%
\def\@currentlabel{\theALC@line}%
}
@@ -106,7 +108,7 @@
\newenvironment{algorithmic}[1][0]{
\setcounter{ALC@depth}{\@listdepth}%
\let\@listdepth\c@ALC@depth%
-\let\@item\ALC@item
+\let\@item\ALC@item%
\newcommand{\ALC@lno}{%
\ifthenelse{\equal{\arabic{ALC@rem}}{0}}
{{\ALC@linenosize \arabic{ALC@line}\ALC@linenodelimiter}}{}%
@@ -126,14 +128,17 @@
}
}
{\end{list}}
- \newcommand{\ALC@it}{\refstepcounter{ALC@line}\refstepcounter{ALC@rem}\ifthenelse{\equal{\arabic{ALC@rem}}{#1}}{\setcounter{ALC@rem}{0}}{}\item\ALC@setref}
+ \newcommand{\ALC@it}{\refstepcounter{ALC@rem}\refstepcounter{ALC@line}\ifthenelse{\equal{\arabic{ALC@rem}}{#1}}{\setcounter{ALC@rem}{0}}{}\item\ALC@setref}
\newcommand{\ALC@com}[1]{\ifthenelse{\equal{##1}{default}}%
{}{\ \algorithmiccomment{##1}}}
\newcommand{\REQUIRE}{\item[\algorithmicrequire]}
\newcommand{\ENSURE}{\item[\algorithmicensure]}
\newcommand{\PRINT}{\ALC@it\algorithmicprint{}\ \ }
\newcommand{\RETURN}{\ALC@it\algorithmicreturn{}\ \ }
+ \newcommand{\TRUE}{\algorithmictrue{}}
+ \newcommand{\FALSE}{\algorithmicfalse{}}
\newcommand{\STATE}{\ALC@it}
+ \newcommand{\STMT}{\ALC@it}
\newcommand{\COMMENT}[1]{\algorithmiccomment{##1}}
\newenvironment{ALC@if}{\begin{ALC@g}}{\end{ALC@g}}
\newenvironment{ALC@for}{\begin{ALC@g}}{\end{ALC@g}}
@@ -173,7 +178,7 @@
\newcommand{\ENDLOOP}{\end{ALC@loop}\ALC@it\algorithmicendloop}
}
\renewcommand{\@toodeep}{}
- \begin{list}{\ALC@lno}{\setcounter{ALC@line}{0}\setcounter{ALC@rem}{0}%
+ \begin{list}{\ALC@lno}{\setcounter{ALC@rem}{0}\setcounter{ALC@line}{0}%
\itemsep\z@ \itemindent\z@ \listparindent\z@%
\partopsep\z@ \parskip\z@ \parsep\z@%
\labelsep 0.5em \topsep 0.2em%
diff --git a/papers/membership/membership-paper.tex b/papers/membership/membership-paper.tex
new file mode 100644
index 0000000..b6620a4
--- /dev/null
+++ b/papers/membership/membership-paper.tex
@@ -0,0 +1,186 @@
+
+\documentclass[conference,10pt,compsocconf]{IEEEtran}
+%\documentclass{acm_proc_article-sp}
+%\documentclass{sig-alternate}
+% Add the compsoc option for Computer Society conferences.
+%
+% If IEEEtran.cls has not been installed into the LaTeX system files,
+% manually specify the path to it like:
+% \documentclass[conference]{../sty/IEEEtran}
+
+% *** CITATION PACKAGES ***
+%
+\usepackage{cite}
+% cite.sty was written by Donald Arseneau
+% V1.6 and later of IEEEtran pre-defines the format of the cite.sty package
+% \cite{} output to follow that of IEEE. Loading the cite package will
+% result in citation numbers being automatically sorted and properly
+% "compressed/ranged". e.g., [1], [9], [2], [7], [5], [6] without using
+% cite.sty will become [1], [2], [5]--[7], [9] using cite.sty. cite.sty's
+% \cite will automatically add leading space, if needed. Use cite.sty's
+% noadjust option (cite.sty V3.8 and later) if you want to turn this off.
+% cite.sty is already installed on most LaTeX systems. Be sure and use
+% version 4.0 (2003-05-27) and later if using hyperref.sty. cite.sty does
+% not currently provide for hyperlinked citations.
+% The latest version can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/cite/
+% The documentation is contained in the cite.sty file itself.
+%
+\usepackage{setspace}
+\usepackage{wrapfig}
+\usepackage{color}
+
+\usepackage[pdftex]{graphicx}
+%\usepackage{graphicx}
+% declare the path(s) where your graphic files are
+\graphicspath{{./}{data/beagle/}}
+% and their extensions so you won't have to specify these with
+% every instance of \includegraphics
+\DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+
+% *** GRAPHICS RELATED PACKAGES ***
+%
+\ifCLASSINFOpdf
+ % \usepackage[pdftex]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../pdf/}{../jpeg/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+\else
+ % or other class option (dvipsone, dvipdf, if not using dvips). graphicx
+ % will default to the driver specified in the system graphics.cfg if no
+ % driver is specified.
+ % \usepackage[dvips]{graphicx}
+ % declare the path(s) where your graphic files are
+ % \graphicspath{{../eps/}}
+ % and their extensions so you won't have to specify these with
+ % every instance of \includegraphics
+ % \DeclareGraphicsExtensions{.eps}
+\fi
+
+% *** ALIGNMENT PACKAGES ***
+%
+%\usepackage{array}
+% Frank Mittelbach's and David Carlisle's array.sty patches and improves
+% the standard LaTeX2e array and tabular environments to provide better
+% appearance and additional user controls. As the default LaTeX2e table
+% generation code is lacking to the point of almost being broken with
+% respect to the quality of the end results, all users are strongly
+% advised to use an enhanced (at the very least that provided by array.sty)
+% set of table tools. array.sty is already installed on most systems. The
+% latest version and documentation can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/required/tools/
+
+%\usepackage{eqparbox}
+% Also of notable interest is Scott Pakin's eqparbox package for creating
+% (automatically sized) equal width boxes - aka "natural width parboxes".
+% Available at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/
+
+\usepackage{algorithm}
+\usepackage[noend]{algorithmic}
+
+% *** SUBFIGURE PACKAGES ***
+\usepackage[tight,footnotesize]{subfigure}
+% \usepackage{subfigure}
+% subfigure.sty was written by Steven Douglas Cochran. This package makes it
+% easy to put subfigures in your figures. e.g., "Figure 1a and 1b". For IEEE
+% work, it is a good idea to load it with the tight package option to reduce
+% the amount of white space around the subfigures. subfigure.sty is already
+% installed on most LaTeX systems. The latest version and documentation can
+% be obtained at:
+% http://www.ctan.org/tex-archive/obsolete/macros/latex/contrib/subfigure/
+% subfigure.sty has been superceeded by subfig.sty.
+
+%\usepackage[caption=false]{caption}
+%\usepackage[font=footnotesize]{subfig}
+% subfig.sty, also written by Steven Douglas Cochran, is the modern
+% replacement for subfigure.sty. However, subfig.sty requires and
+% automatically loads Axel Sommerfeldt's caption.sty which will override
+% IEEEtran.cls handling of captions and this will result in nonIEEE style
+% figure/table captions. To prevent this problem, be sure and preload
+% caption.sty with its "caption=false" package option. This is will preserve
+% IEEEtran.cls handing of captions. Version 1.3 (2005/06/28) and later
+% (recommended due to many improvements over 1.2) of subfig.sty supports
+% the caption=false option directly:
+%\usepackage[caption=false,font=footnotesize]{subfig}
+%
+% The latest version and documentation can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/subfig/
+% The latest version and documentation of caption.sty can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/caption/
+
+% *** PDF, URL AND HYPERLINK PACKAGES ***
+%
+\usepackage{url}
+% url.sty was written by Donald Arseneau. It provides better support for
+% handling and breaking URLs. url.sty is already installed on most LaTeX
+% systems. The latest version can be obtained at:
+% http://www.ctan.org/tex-archive/macros/latex/contrib/misc/
+% Read the url.sty source comments for usage information. Basically,
+% \url{my_url_here}.
+
+% *** Do not adjust lengths that control margins, column widths, etc. ***
+% *** Do not use packages that alter fonts (such as pslatex). ***
+% There should be no need to do such things with IEEEtran.cls V1.6 and later.
+% (Unless specifically asked to do so by the journal or conference you plan
+% to submit to, of course. )
+
+% correct bad hyphenation here
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+\begin{document}
+\title{On epidemics and quorums: Maintaining group membership at large scale}
+
+%\numberofauthors{6} % in this sample file, there are a *total*
+
+
+% use for special paper notices
+%\IEEEspecialpapernotice{(Invited Paper)}
+
+% use arabic rather than roman numerals for table references
+\renewcommand{\thetable}{\arabic{table}}
+
+% make the title area
+\maketitle
+
+\begin{abstract}
+\textcolor{red}{TODO: fill this in.}
+\end{abstract}
+
+\section{Introduction}
+\label{sec:intro}
+
+\section{Background}
+\label{sec:background}
+
+\section{Related work}
+\label{sec:related-work}
+
+\section{Conclusions}
+\label{sec:conclusions}
+
+\section*{Acknowledgments}
+
+This work is supported by the Department of Energy (DOE) Office of Advanced
+Scientific Computer Research (ASCR) under contract DE-AC02-06CH11357. The
+research used resources from Argonne Leadership Computing Facility (ALCF).
+
+%\IEEEtriggeratref{4}
+\bibliographystyle{IEEEtran}
+%\bibliographystyle{abbrv}
+\bibliography{REFERENCES}
+%\balancecolumns
+
+\newpage
+The submitted manuscript has been created by UChicago Argonne, LLC, Operator
+of Argonne National Laboratory ("Argonne"). Argonne, a U.S. Department of
+Energy Office of Science laboratory, is operated under Contract No.
+DE-AC02-06CH11357. The U.S. Government retains for itself, and others
+acting on its behalf, a paid-up nonexclusive, irrevocable worldwide license
+in said article to reproduce, prepare derivative works, distribute copies to
+the public, and perform publicly and display publicly, by or on behalf of
+the Government.
+
+\end{document}
hooks/post-receive
--
1
0
See <https://jenkins-ci.mcs.anl.gov/job/triton/95/>
------------------------------------------
Started by an SCM change
[EnvInject] - Loading node environment variables.
Building remotely on thrash.mcs.anl.gov in workspace <https://jenkins-ci.mcs.anl.gov/job/triton/ws/>
Deleting project workspace...
done
Checkout:triton / <https://jenkins-ci.mcs.anl.gov/job/triton/ws/> - hudson.remoting.Channel@4da20a70:thrash.mcs.anl.gov
Using strategy: Default
Last Built Revision: Revision 70e737adccf462bc31b56026e98d45ebbd9b583a (origin/master)
Cloning the remote Git repository
Cloning repository [email protected]:triton
git --version
git version 1.7.9.5
Fetching upstream changes from origin
Commencing build of Revision 70e737adccf462bc31b56026e98d45ebbd9b583a (origin/master)
Checking out Revision 70e737adccf462bc31b56026e98d45ebbd9b583a (origin/master)
[triton] $ /bin/sh -xe /tmp/hudson2870624538271105412.sh
+ code/scripts/jenkins/build-jenkins.sh
code
misc
sim
=======================================================================
= Build 95 2014-11-19_00-01-56
= on thrash.mcs.anl.gov [mcs thrash.mcs.anl.gov]
=======================================================================
Triton source in <https://jenkins-ci.mcs.anl.gov/job/triton/ws/>
Building in <https://jenkins-ci.mcs.anl.gov/job/triton/ws/build>
====================================================================
===== INFO =========================================================
====================================================================
Triton Source tree : <https://jenkins-ci.mcs.anl.gov/job/triton/ws/>
Workspace : <https://jenkins-ci.mcs.anl.gov/job/triton/ws/build>
Cachedir : /tmp/triton-cache
=======================================================================
==== STEP 1: Fetch build dependencies =================================
=======================================================================
openpa.tar.gz: (found in cache) OK (3ad998bb26ac84ee7de262db94dd7656)
bmi.tar.gz: (found in cache) OK (82a8efe604a80c80d18dab76dfc13c38)
boost.tar.bz2: (found in cache) OK (d6eef4b4cacb2183f2bf265a5a03a354)
c-utils.tar.gz: (found in cache) OK (2466f8d782b534a179d75cabab1ebd01)
confuse.tar.gz: (found in cache) OK (45932fdeeccbb9ef4228f1c1a25e9c8f)
libev.tar.gz: (found in cache) OK (3a73f247e790e2590c01f3492136ed31)
aesop.tar.gz: (found in cache) OK (b8bf772e5403bdc884622b69affb1dcf)
mercury: (fetching) Cloning into '/tmp/triton-cache/mercury'...
Submodule 'Testing/driver/kwsys' (git://public.kitware.com/KWSys.git) registered for path 'Testing/driver/kwsys'
Submodule 'src/mchecksum' (git://git.mcs.anl.gov/radix/mchecksum) registered for path 'src/mchecksum'
Cloning into 'Testing/driver/kwsys'...
Submodule path 'Testing/driver/kwsys': checked out 'b3db597b537f12212f9effac784e00e39144326d'
Cloning into 'src/mchecksum'...
Submodule path 'src/mchecksum': checked out '797989a7995919cc4a3ef349bb69aefea9e45913'
error: pathspec 'topic_callback' did not match any file(s) known to git.
Error: failed to checkout "topic_callback"
Build step 'Execute shell' marked build as failure
TAP Reports Processing: START
Looking for TAP results report in workspace using pattern: build/tritonbuild/tests/results.tap
Did not find any matching files.
1
1
19 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via ba94250fcc2c3422624fc4b1333f8da9a2575fb9 (commit)
from 70e737adccf462bc31b56026e98d45ebbd9b583a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit ba94250fcc2c3422624fc4b1333f8da9a2575fb9
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Wed Nov 19 09:35:08 2014 -0600
point jenkins to the right mercury branch
-----------------------------------------------------------------------
Summary of changes:
code/scripts/jenkins/repos.fetch | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Diff of changes:
diff --git a/code/scripts/jenkins/repos.fetch b/code/scripts/jenkins/repos.fetch
index f29dca1..f156f66 100644
--- a/code/scripts/jenkins/repos.fetch
+++ b/code/scripts/jenkins/repos.fetch
@@ -7,4 +7,4 @@
# tag is ok here too).
# mercury
-git git://git.mcs.anl.gov/radix/mercury mercury branch topic_callback
+git git://git.mcs.anl.gov/radix/mercury mercury branch next
hooks/post-receive
--
1
0
branch, trac-323-sos, updated. c3fb9fb9f17d0c038810ccfce240743aa797e4d5
by noreply@mcs.anl.gov 18 Nov '14
by noreply@mcs.anl.gov 18 Nov '14
18 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, trac-323-sos has been updated
via c3fb9fb9f17d0c038810ccfce240743aa797e4d5 (commit)
via 77fafb20391b143681dfffdc6acc652763329207 (commit)
via e3af12fbb187b5c954f5f6697fc1516b16f24f2a (commit)
via b04af209da7387ec23e280b65c04bef42e5da5e9 (commit)
from 0a2d88b60c8a97c9b8b1b7ab9e89299b10b4a4e4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c3fb9fb9f17d0c038810ccfce240743aa797e4d5
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Tue Nov 18 11:02:49 2014 -0600
stubs for sos-based *probe (not yet rpc'd)
for the rpc, need to know what sos will be providing in terms of api
commit 77fafb20391b143681dfffdc6acc652763329207
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Tue Nov 18 10:52:50 2014 -0600
stub for sos-based asg_reset (not yet rpc'd)
for the rpc, need to know what sos will be providign in terms of api
commit e3af12fbb187b5c954f5f6697fc1516b16f24f2a
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Tue Nov 18 10:43:30 2014 -0600
stub for sos-based asg_punch (not yet rpc'd)
for the rpc, need to know what sos will be providing in terms of api
commit b04af209da7387ec23e280b65c04bef42e5da5e9
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Tue Nov 18 10:37:47 2014 -0600
re-disable read call, expected to fail
-----------------------------------------------------------------------
Summary of changes:
code/include/asg.h | 67 +++++++
code/src/asg/asg-internal.ae | 90 +++++++++
code/src/asg/asg-internal.hae | 68 +++++++
code/src/asg/asg.c | 329 ++++++++++++++++++++++++++++++++++
code/tests/asg/test-asg-simple-sos.c | 2 +-
5 files changed, 555 insertions(+), 1 deletions(-)
Diff of changes:
diff --git a/code/include/asg.h b/code/include/asg.h
index 05cb94f..8538b09 100644
--- a/code/include/asg.h
+++ b/code/include/asg.h
@@ -196,6 +196,19 @@ int asg_write (
*
* Transferred indicates the number of records updated.
*/
+int asg_punch_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ asg_update_id_t * new_update_id,
+ asg_size_t * transferred);
+
int asg_punch (
asg_instance_t instance,
asg_location_t location,
@@ -218,6 +231,19 @@ int asg_punch (
* Passing ASG_OBJECT_NULL resets all objects in the container.
* Passing ASG_CONTAINER_NULL resets all containers in the storage system.
*/
+int asg_reset_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_size_t recordlen,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ asg_size_t * reset_count);
+
int asg_reset (
asg_instance_t instance,
asg_location_t location,
@@ -267,6 +293,15 @@ typedef struct
asg_size_t object_count; /* objects per container in the seq. */
} asg_container_info_t;
+int asg_probe_system_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t start,
+ asg_container_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred, /* number of container structures returned */
+ asg_container_id_t * next);
+
int asg_probe_system (
asg_instance_t instance,
asg_location_t location,
@@ -284,6 +319,16 @@ typedef struct
asg_size_t fork_count;
} asg_object_info_t;
+int asg_probe_container_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t start,
+ asg_object_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_object_id_t * next);
+
int asg_probe_container (
asg_instance_t instance,
asg_location_t location,
@@ -302,6 +347,17 @@ typedef struct
asg_size_t record_count;
} asg_fork_info_t;
+int asg_probe_object_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t start,
+ asg_fork_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_fork_id_t * next);
+
int asg_probe_object (
asg_instance_t instance,
asg_location_t location,
@@ -313,6 +369,17 @@ int asg_probe_object (
asg_size_t * transferred,
asg_fork_id_t * next);
+int asg_probe_fork_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start,
+ asg_record_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_record_id_t * next);
int asg_probe_fork (
asg_instance_t instance,
diff --git a/code/src/asg/asg-internal.ae b/code/src/asg/asg-internal.ae
index f672aa6..c8185a0 100644
--- a/code/src/asg/asg-internal.ae
+++ b/code/src/asg/asg-internal.ae
@@ -303,6 +303,23 @@ __blocking int asg_i_read (
return(ASG_SUCCESS);
}
+__blocking int asg_i_punch_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ asg_update_id_t * new_version,
+ asg_size_t * transferred)
+{
+ triton_error_msg("asg_punch_sos not yet supported\n");
+ return(ASG_ERR_OTHER);
+}
+
__blocking int asg_i_punch (
asg_instance_t instance,
asg_location_t location,
@@ -341,6 +358,23 @@ __blocking int asg_i_punch (
return(ASG_SUCCESS);
}
+__blocking int asg_i_reset_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_size_t recordlen,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ asg_size_t * reset_count)
+{
+ triton_error_msg("asg_reset_sos not yet supported\n");
+ return ASG_ERR_OTHER;
+}
+
__blocking int asg_i_reset (
asg_instance_t instance,
asg_location_t location,
@@ -406,6 +440,18 @@ __blocking int asg_i_finalize(asg_instance_t instance)
return(ASG_SUCCESS);
}
+__blocking int asg_i_probe_system_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t start,
+ asg_container_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_container_id_t * next)
+{
+ return(ASG_SUCCESS);
+}
+
__blocking int asg_i_probe_system (
asg_instance_t instance,
asg_location_t location,
@@ -418,6 +464,19 @@ __blocking int asg_i_probe_system (
return(ASG_SUCCESS);
}
+__blocking int asg_i_probe_container_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t start,
+ asg_object_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_object_id_t * next)
+{
+ return(ASG_SUCCESS);
+}
+
__blocking int asg_i_probe_container (
asg_instance_t instance,
asg_location_t location,
@@ -431,6 +490,21 @@ __blocking int asg_i_probe_container (
return(ASG_SUCCESS);
}
+__blocking int asg_i_probe_object_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t start,
+ asg_fork_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_fork_id_t * next)
+{
+ triton_error_msg("asg_probe_object_sos not yet supported\n");
+ return ASG_ERR_OTHER;
+}
+
__blocking int asg_i_probe_object (
asg_instance_t instance,
asg_location_t location,
@@ -502,6 +576,22 @@ __blocking int asg_i_probe_object (
return(rc);
}
+__blocking int asg_i_probe_fork_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start,
+ asg_record_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_record_id_t * next)
+{
+ triton_error_msg("asg_probe_fork_sos not yet supported\n");
+ return ASG_ERR_OTHER;
+}
+
__blocking int asg_i_probe_fork (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/asg/asg-internal.hae b/code/src/asg/asg-internal.hae
index f1b26c5..21d8670 100644
--- a/code/src/asg/asg-internal.hae
+++ b/code/src/asg/asg-internal.hae
@@ -83,6 +83,19 @@ __blocking int asg_i_read (
*
* Transferred indicates the number of records updated.
*/
+__blocking int asg_i_punch_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ asg_update_id_t * new_version,
+ asg_size_t * transferred);
+
__blocking int asg_i_punch (
asg_instance_t instance,
asg_location_t location,
@@ -96,6 +109,19 @@ __blocking int asg_i_punch (
asg_update_id_t * new_version,
asg_size_t * transferred);
+__blocking int asg_i_reset_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_size_t recordlen,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ asg_size_t * reset_count);
+
__blocking int asg_i_reset (
asg_instance_t instance,
asg_location_t location,
@@ -109,6 +135,15 @@ __blocking int asg_i_reset (
asg_update_id_t update_id_condition,
asg_size_t * reset_count);
+__blocking int asg_i_probe_system_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t start,
+ asg_container_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_container_id_t * next);
+
__blocking int asg_i_probe_system (
asg_instance_t instance,
asg_location_t location,
@@ -118,6 +153,16 @@ __blocking int asg_i_probe_system (
asg_size_t * transferred,
asg_container_id_t * next);
+__blocking int asg_i_probe_container_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t start,
+ asg_object_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_object_id_t * next);
+
__blocking int asg_i_probe_container (
asg_instance_t instance,
asg_location_t location,
@@ -128,6 +173,17 @@ __blocking int asg_i_probe_container (
asg_size_t * transferred,
asg_object_id_t * next);
+__blocking int asg_i_probe_object_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t start,
+ asg_fork_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_fork_id_t * next);
+
__blocking int asg_i_probe_object (
asg_instance_t instance,
asg_location_t location,
@@ -139,6 +195,18 @@ __blocking int asg_i_probe_object (
asg_size_t * transferred,
asg_fork_id_t * next);
+__blocking int asg_i_probe_fork_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start,
+ asg_record_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_record_id_t * next);
+
__blocking int asg_i_probe_fork (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/asg/asg.c b/code/src/asg/asg.c
index f445f0b..da3968f 100644
--- a/code/src/asg/asg.c
+++ b/code/src/asg/asg.c
@@ -365,6 +365,65 @@ int asg_write (
return c.ret;
}
+int asg_punch_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ asg_update_id_t * new_version,
+ asg_size_t * transferred)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_punch_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ object,
+ fork,
+ start_record,
+ recordcount,
+ flags,
+ version_condition,
+ new_version,
+ transferred);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
+
int asg_punch (
asg_instance_t instance,
asg_location_t location,
@@ -424,6 +483,64 @@ int asg_punch (
return c.ret;
}
+int asg_reset_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_size_t recordlen,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ asg_size_t * reset_count)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_reset_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ object,
+ fork,
+ start_record,
+ recordcount,
+ recordlen,
+ flags,
+ update_id_condition,
+ reset_count);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
int asg_reset (
asg_instance_t instance,
@@ -484,6 +601,56 @@ int asg_reset (
return c.ret;
}
+int asg_probe_system_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t start,
+ asg_container_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred, /* number of container structures returned */
+ asg_container_id_t * next)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_probe_system_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ start,
+ buf,
+ maxitems,
+ transferred,
+ next);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
int asg_probe_system (
asg_instance_t instance,
@@ -536,6 +703,58 @@ int asg_probe_system (
return c.ret;
}
+int asg_probe_container_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t start,
+ asg_object_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_object_id_t * next)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_probe_container_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ start,
+ buf,
+ maxitems,
+ transferred,
+ next);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
int asg_probe_container (
asg_instance_t instance,
@@ -590,6 +809,60 @@ int asg_probe_container (
return c.ret;
}
+int asg_probe_object_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t start,
+ asg_fork_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_fork_id_t * next)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_probe_object_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ object,
+ start,
+ buf,
+ maxitems,
+ transferred,
+ next);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
int asg_probe_object (
asg_instance_t instance,
@@ -646,6 +919,62 @@ int asg_probe_object (
return c.ret;
}
+int asg_probe_fork_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start,
+ asg_record_info_t * buf,
+ asg_size_t maxitems,
+ asg_size_t * transferred,
+ asg_record_id_t * next)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_probe_fork_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ object,
+ fork,
+ start,
+ buf,
+ maxitems,
+ transferred,
+ next);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
int asg_probe_fork (
asg_instance_t instance,
diff --git a/code/tests/asg/test-asg-simple-sos.c b/code/tests/asg/test-asg-simple-sos.c
index 2226e60..55c1236 100644
--- a/code/tests/asg/test-asg-simple-sos.c
+++ b/code/tests/asg/test-asg-simple-sos.c
@@ -97,6 +97,7 @@ int main(int argc, char **argv)
return(-1);
}
+#if 0
/* reset buffer */
memset(buffer, 0, buffer_sz);
@@ -137,7 +138,6 @@ int main(int argc, char **argv)
free(buffer);
-#if 0
ret = asg_probe_object(ait,
ASG_LOCATION_AUTO,
cid,
hooks/post-receive
--
1
0
branch, trac-323-sos, updated. 0a2d88b60c8a97c9b8b1b7ab9e89299b10b4a4e4
by noreply@mcs.anl.gov 14 Nov '14
by noreply@mcs.anl.gov 14 Nov '14
14 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, trac-323-sos has been updated
via 0a2d88b60c8a97c9b8b1b7ab9e89299b10b4a4e4 (commit)
via 7136fb5ccddd866a08486525875ce88a5ae567e5 (commit)
from 2cc132aac6c1c78629c1e10b91c9c53d3c0f5948 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0a2d88b60c8a97c9b8b1b7ab9e89299b10b4a4e4
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Fri Nov 14 17:40:08 2014 -0600
more read stubbing - server-side rpc
commit 7136fb5ccddd866a08486525875ce88a5ae567e5
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Fri Nov 14 15:36:55 2014 -0600
asg_read_sos stub
-----------------------------------------------------------------------
Summary of changes:
code/include/asg.h | 17 +++
code/src/asg/asg-internal.ae | 48 ++++++++
code/src/asg/asg-internal.hae | 17 +++
code/src/asg/asg.c | 68 +++++++++++
code/src/replicated-osd/Makefile.subdir | 3 +-
code/src/replicated-osd/rosd-internal.hae | 1 +
code/src/replicated-osd/rosd.ae | 1 +
code/src/replicated-osd/rosd.hae | 12 ++
.../replicated-osd/{rosd-read.ae => rsos-read.ae} | 121 +++++++++++---------
code/tests/asg/test-asg-simple-sos.c | 4 +-
10 files changed, 237 insertions(+), 55 deletions(-)
copy code/src/replicated-osd/{rosd-read.ae => rsos-read.ae} (76%)
Diff of changes:
diff --git a/code/include/asg.h b/code/include/asg.h
index 977865c..05cb94f 100644
--- a/code/include/asg.h
+++ b/code/include/asg.h
@@ -126,6 +126,23 @@ int asg_finalize (asg_instance_t instance);
* are present in the range -- ASG_UPDATE_ID_MIXED
*
* */
+int asg_read_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t update_id_condition,
+ void * buf,
+ size_t bufsize,
+ asg_size_t * transferred,
+ asg_record_info_t * record_buf,
+ asg_size_t * record_buf_transferred,
+ asg_update_id_t * update_id_info);
+
int asg_read (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/asg/asg-internal.ae b/code/src/asg/asg-internal.ae
index 94cc04c..f672aa6 100644
--- a/code/src/asg/asg-internal.ae
+++ b/code/src/asg/asg-internal.ae
@@ -207,6 +207,54 @@ __blocking int asg_i_write_sos (
return(ASG_SUCCESS);
}
+__blocking int asg_i_read_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ void * buf,
+ size_t bufsize,
+ asg_size_t * transferred,
+ asg_record_info_t * record_buf,
+ asg_size_t * record_buf_transferred,
+ asg_update_id_t * version_info)
+{
+ triton_ret_t tret;
+ int64_t size;
+ int ret = ASG_SUCCESS;
+
+ if (instance!=1) return ASG_ERR_OTHER;
+
+ size = MIN(bufsize, recordcount);
+
+ tret = remote_triton_rpc_rsos_read(
+ (uint64_t)container,
+ (uint64_t)object,
+ (uint64_t)fork,
+ (uint64_t)start_record,
+ (uint64_t)recordcount,
+ (uint32_t) flags,
+ buf,
+ (uint64_t)bufsize,
+ (uint64_t*)version_info,
+ (uint64_t*)transferred);
+
+ if (triton_is_error(tret)) {
+ triton_error_print(tret, "remote_triton_rpc_rsos_read ");
+ ret = ASG_ERR_OTHER;
+ goto fini;
+ }
+
+fini:
+ triton_error_destroy(tret);
+ return ret;
+}
+
__blocking int asg_i_read (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/asg/asg-internal.hae b/code/src/asg/asg-internal.hae
index 1249cfa..f1b26c5 100644
--- a/code/src/asg/asg-internal.hae
+++ b/code/src/asg/asg-internal.hae
@@ -44,6 +44,23 @@ __blocking int asg_i_write (
const void * data,
asg_size_t * transferred);
+__blocking int asg_i_read_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ void * buf,
+ size_t bufsize,
+ asg_size_t * transferred,
+ asg_record_info_t * record_buf,
+ asg_size_t * record_buf_transferred,
+ asg_update_id_t * version_info);
+
__blocking int asg_i_read (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/asg/asg.c b/code/src/asg/asg.c
index 38ac1cd..f445f0b 100644
--- a/code/src/asg/asg.c
+++ b/code/src/asg/asg.c
@@ -104,6 +104,74 @@ int asg_finalize (asg_instance_t instance)
return c.ret;
}
+int asg_read_sos (
+ asg_instance_t instance,
+ asg_location_t location,
+ asg_container_id_t container,
+ asg_object_id_t object,
+ asg_fork_id_t fork,
+ asg_record_id_t start_record,
+ asg_size_t recordcount,
+ asg_flags_t flags,
+ asg_update_id_t version_condition,
+ void * buf,
+ size_t bufsize,
+ asg_size_t * transferred,
+ asg_record_info_t * record_buf,
+ asg_size_t * record_buf_transferred,
+ asg_update_id_t * version_info)
+{
+ asg_completion_t c;
+ ae_hints_t hints;
+ ae_op_id_t op_id;
+ int r;
+
+ c.done = 0;
+ ae_hints_init(&hints);
+
+ r = ext_post_blocking(asg_i_read_sos,
+ asg_callback,
+ &c,
+ &hints,
+ &op_id,
+ &c.ret,
+ instance,
+ location,
+ container,
+ object,
+ fork,
+ start_record,
+ recordcount,
+ flags,
+ version_condition,
+ buf,
+ bufsize,
+ transferred,
+ record_buf,
+ record_buf_transferred,
+ version_info);
+ if (r == AE_SUCCESS)
+ {
+ while(!c.done)
+ {
+ ae_poll(AE_POLL_TIMEOUT);
+ }
+ }
+ else if (r == AE_IMMEDIATE_COMPLETION)
+ {
+ // nothing to do here
+ }
+ else
+ {
+ c.ret = ASG_ERR_OTHER;
+ }
+
+ ae_hints_destroy(&hints);
+
+ return c.ret;
+}
+
+
int asg_read (
asg_instance_t instance,
asg_location_t location,
diff --git a/code/src/replicated-osd/Makefile.subdir b/code/src/replicated-osd/Makefile.subdir
index 208f8dc..703cd31 100644
--- a/code/src/replicated-osd/Makefile.subdir
+++ b/code/src/replicated-osd/Makefile.subdir
@@ -16,7 +16,8 @@ src_libtriton_a_SOURCES += \
src/replicated-osd/rosd-reset.ae \
src/replicated-osd/rosd-read.ae \
src/replicated-osd/rosd-write.ae \
- src/replicated-osd/rsos-write.ae
+ src/replicated-osd/rsos-write.ae \
+ src/replicated-osd/rsos-read.ae
AE_SRC += \
src/replicated-osd/rosd-util.ae \
diff --git a/code/src/replicated-osd/rosd-internal.hae b/code/src/replicated-osd/rosd-internal.hae
index 02696b9..d0303f2 100644
--- a/code/src/replicated-osd/rosd-internal.hae
+++ b/code/src/replicated-osd/rosd-internal.hae
@@ -44,6 +44,7 @@ void triton_rpc_rosd_remove_register(void);
void triton_rpc_rosd_write_register(void);
void triton_rpc_rsos_write_register(void);
void triton_rpc_rosd_read_register(void);
+void triton_rpc_rsos_read_register(void);
void triton_rpc_rosd_probe_fork_register(void);
void triton_rpc_rosd_probe_object_register(void);
void triton_rpc_rosd_reset_register(void);
diff --git a/code/src/replicated-osd/rosd.ae b/code/src/replicated-osd/rosd.ae
index cb18072..5279550 100644
--- a/code/src/replicated-osd/rosd.ae
+++ b/code/src/replicated-osd/rosd.ae
@@ -170,6 +170,7 @@ void triton_rpc_rosd_register(void)
triton_rpc_rosd_remove_register();
triton_rpc_rosd_write_register();
triton_rpc_rosd_read_register();
+ triton_rpc_rsos_read_register();
triton_rpc_rosd_probe_fork_register();
triton_rpc_rosd_probe_object_register();
triton_rpc_rosd_reset_register();
diff --git a/code/src/replicated-osd/rosd.hae b/code/src/replicated-osd/rosd.hae
index 0b43dfe..567e799 100644
--- a/code/src/replicated-osd/rosd.hae
+++ b/code/src/replicated-osd/rosd.hae
@@ -85,6 +85,18 @@ __blocking triton_ret_t remote_triton_rpc_rosd_read(
int64_t* out_size,
uint32_t flags);
+__blocking triton_ret_t remote_triton_rpc_rsos_read(
+ uint64_t container,
+ uint64_t object,
+ uint64_t fork,
+ uint64_t start_record,
+ uint64_t recordcount,
+ int flags,
+ void * buf,
+ uint64_t buf_size,
+ uint64_t * version_info,
+ uint64_t * transferred);
+
__blocking triton_ret_t rosd_pipeline_setup_one_buffer(
struct buffer_mgmt_instance* buffer_instance,
aesop_sem_t *sem,
diff --git a/code/src/replicated-osd/rosd-read.ae b/code/src/replicated-osd/rsos-read.ae
similarity index 76%
copy from code/src/replicated-osd/rosd-read.ae
copy to code/src/replicated-osd/rsos-read.ae
index 3f414d6..a828365 100644
--- a/code/src/replicated-osd/rosd-read.ae
+++ b/code/src/replicated-osd/rsos-read.ae
@@ -25,36 +25,41 @@
extern int64_t rosd_read_xfer_pipeline_depth;
/* Mercury RPC structures for rosd_read */
-MERCURY_GEN_PROC(triton_rpc_rosd_read_in_t,
- ((uint128_t)(oid))\
- ((uint64_t)(oid_fork))\
- ((int64_t)(size))\
- ((int64_t)(offset))\
+MERCURY_GEN_PROC(triton_rpc_rsos_read_in_t,
+ ((uint64_t)(container))\
+ ((uint64_t)(object))\
+ ((uint64_t)(fork))\
+ ((uint64_t)(start_record))\
+ ((uint64_t)(recordcount))\
((uint32_t)(flags))\
- ((hg_bulk_t)(bulk_handle)))
-MERCURY_GEN_PROC(triton_rpc_rosd_read_out_t,
+ ((hg_bulk_t)(bulk_handle))\
+ ((uint64_t)(buf_size)))
+
+MERCURY_GEN_PROC(triton_rpc_rsos_read_out_t,
((triton_ret_t)(tret))\
((int64_t)(out_size))\
((uint64_t)(txn_number)))
-static hg_id_t rpc_rosd_read_id;
-static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle);
-static hg_return_t triton_rpc_rosd_read_handler(hg_handle_t handle);
+static hg_id_t rpc_rsos_read_id;
+static __blocking triton_ret_t triton_rpc_rsos_read(hg_handle_t handle);
+static hg_return_t triton_rpc_rsos_read_handler(hg_handle_t handle);
extern struct buffer_mgmt_instance* rosd_read_buffers;
-__blocking triton_ret_t remote_triton_rpc_rosd_read(
- uint128_t oid,
- uint64_t fork,
- char* buffer,
- int64_t size,
- int64_t offset,
- uint64_t* out_txn_number,
- int64_t* out_size,
- uint32_t flags)
+__blocking triton_ret_t remote_triton_rpc_rsos_read(
+ uint64_t container,
+ uint64_t object,
+ uint64_t fork,
+ uint64_t start_record,
+ uint64_t recordcount,
+ int flags,
+ void * buf,
+ uint64_t buf_size,
+ uint64_t * version_info,
+ uint64_t * transferred)
{
- triton_rpc_rosd_read_out_t out;
- triton_rpc_rosd_read_in_t in;
+ triton_rpc_rsos_read_out_t out;
+ triton_rpc_rsos_read_in_t in;
int ret;
triton_ret_t tret;
na_addr_t addr;
@@ -64,35 +69,38 @@ __blocking triton_ret_t remote_triton_rpc_rosd_read(
/* TODO: ability read from replicas as well */
/* we contact the first server (master) for oid */
- tret = triton_oid_to_addrs(oid, 1, &position, &addr);
+ tret = asg_oid_to_addrs(object, 1, &position, &addr);
if(triton_is_error(tret))
{
return(tret);
}
- in.oid = oid;
- in.oid_fork = fork;
- in.size = size;
- in.offset = offset;
+ in.container = container;
+ in.object = object;
+ in.fork = fork;
+ in.start_record = start_record;
+ in.recordcount = recordcount;
+ in.flags = flags;
+ in.buf_size = buf_size;
in.flags = flags;
in.bulk_handle = HG_BULK_NULL;
- bulk_size = (size_t) size;
+ bulk_size = (size_t) buf_size;
- triton_mercury_run_rpc_with_bulk(addr, rpc_rosd_read_id, handle,
- &in, &out, in.bulk_handle, buffer, bulk_size, HG_BULK_WRITE_ONLY);
+ triton_mercury_run_rpc_with_bulk(addr, rpc_rsos_read_id, handle,
+ &in, &out, in.bulk_handle, buf, bulk_size, HG_BULK_WRITE_ONLY);
triton_mercury_addr_free(addr);
tret = triton_error_dup(out.tret);
if(!triton_is_error(tret))
{
- *out_size = out.out_size;
- *out_txn_number = out.txn_number;
+ *transferred = out.out_size;
+ *version_info = out.txn_number;
}
else
{
- *out_size = 0;
- *out_txn_number = 0;
+ *transferred = 0;
+ *version_info = 0;
}
HG_Free_output(handle, &out);
@@ -103,6 +111,8 @@ __blocking triton_ret_t remote_triton_rpc_rosd_read(
}
+#if 0
+/* TODO: convert me to rsos */
static __blocking triton_ret_t rosd_read_xfer_one_buffer(
struct hg_info *hg_info,
char* tmp_buffer,
@@ -164,11 +174,12 @@ static __blocking triton_ret_t rosd_read_xfer_one_buffer(
return(tret);
}
+#endif
-static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
+static __blocking triton_ret_t triton_rpc_rsos_read(hg_handle_t handle)
{
- triton_rpc_rosd_read_out_t out;
- triton_rpc_rosd_read_in_t in;
+ triton_rpc_rsos_read_out_t out;
+ triton_rpc_rsos_read_in_t in;
na_addr_t next_addr;
int my_position;
int ret;
@@ -179,7 +190,7 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
triton_mutex_t output_mutex;
struct hg_info *hg_info = NULL;
- //triton_debug(triton_dbg_rosd, "Called triton_rpc_rosd_read()\n");
+ triton_debug(triton_dbg_rosd, "Called triton_rpc_rsos_read()\n");
hg_info = HG_Get_info(handle);
@@ -189,7 +200,7 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
/* check our position assuming a replication factor of 1 to make
* sure that we are the master for this object
*/
- out.tret = triton_oid_to_addrs(in.oid, 1, &my_position, &next_addr);
+ out.tret = asg_oid_to_addrs(in.object, 1, &my_position, &next_addr);
if(triton_is_error(out.tret))
{
triton_mercury_respond(handle, &out);
@@ -205,10 +216,15 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
return(TRITON_SUCCESS);
}
- out.tret = TRITON_SUCCESS;
+ out.tret = TRITON_ERR_UNKNOWN;
out.out_size = 0;
out.txn_number = 0;
+ triton_mercury_respond(handle, &out);
+ HG_Destroy(handle);
+ return(TRITON_SUCCESS);
+#if 0
+ /* TODO: convert to rsos */
size_remaining = in.size;
local_offset = in.offset;
remote_offset = 0;
@@ -227,7 +243,7 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
pprivate triton_ret_t tret;
pprivate uint64_t this_txn_number = 0;
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() in pwait, size_remaining: %d.\n", size_remaining);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() in pwait, size_remaining: %d.\n", size_remaining);
for(i=0; i<rosd_read_xfer_pipeline_depth; i++)
{
pbranch
@@ -238,7 +254,7 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
/* note that this function protects shared variables
* using a semaphore
*/
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() pbranch %d calling setup_one_buffer().\n", i);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() pbranch %d calling setup_one_buffer().\n", i);
tret = rosd_pipeline_setup_one_buffer(
rosd_read_buffers,
&sem,
@@ -262,12 +278,12 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
}
triton_mutex_unlock(&output_mutex);
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() pbranch %d finished setup_one_buffer(), size_remaining: %d.\n", i, size_remaining);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() pbranch %d finished setup_one_buffer(), size_remaining: %d.\n", i, size_remaining);
if(this_size > 0)
{
/* perform buffer transfer */
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() pbranch %d calling xfer_one_buffer().\n", i);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() pbranch %d calling xfer_one_buffer().\n", i);
tret = rosd_read_xfer_one_buffer(
hg_info,
buffer,
@@ -280,7 +296,7 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
&this_out_size,
&this_txn_number);
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() pbranch %d finished xfer_one_buffer().\n", i);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() pbranch %d finished xfer_one_buffer().\n", i);
/* accumulate results in rpc response */
triton_mutex_lock(&output_mutex);
if(triton_is_error(tret) && !triton_is_error(out.tret))
@@ -316,11 +332,11 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
{
buffer_mgmt_free(token);
}
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() done with pbranch %d.\n", i);
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() done with pbranch %d.\n", i);
}
}
}
- //triton_debug(triton_dbg_rosd, "triton_rpc_rosd_read() done with pwait.\n");
+ //triton_debug(triton_dbg_rosd, "triton_rpc_rsos_read() done with pwait.\n");
aesop_sem_destroy(&sem);
triton_mutex_destroy(&output_mutex);
@@ -329,19 +345,20 @@ static __blocking triton_ret_t triton_rpc_rosd_read(hg_handle_t handle)
HG_Destroy(handle);
return(TRITON_SUCCESS);
+#endif
}
-TRITON_DEFINE_RPC_HANDLER(triton_rpc_rosd_read)
+TRITON_DEFINE_RPC_HANDLER(triton_rpc_rsos_read)
-void triton_rpc_rosd_read_register(void)
+void triton_rpc_rsos_read_register(void)
{
hg_class_t* hg_class = NULL;
hg_class = triton_mercury_engine_get_class();
- rpc_rosd_read_id = MERCURY_REGISTER(hg_class, "triton_rpc_rosd_read",
- triton_rpc_rosd_read_in_t,
- triton_rpc_rosd_read_out_t,
- triton_rpc_rosd_read_handler);
+ rpc_rsos_read_id = MERCURY_REGISTER(hg_class, "triton_rpc_rsos_read",
+ triton_rpc_rsos_read_in_t,
+ triton_rpc_rsos_read_out_t,
+ triton_rpc_rsos_read_handler);
return;
}
diff --git a/code/tests/asg/test-asg-simple-sos.c b/code/tests/asg/test-asg-simple-sos.c
index 57c93f8..2226e60 100644
--- a/code/tests/asg/test-asg-simple-sos.c
+++ b/code/tests/asg/test-asg-simple-sos.c
@@ -100,9 +100,8 @@ int main(int argc, char **argv)
/* reset buffer */
memset(buffer, 0, buffer_sz);
-#if 0
/* read data back out */
- ret = asg_read(
+ ret = asg_read_sos(
ait,
ASG_LOCATION_AUTO,
cid, /* container */
@@ -138,6 +137,7 @@ int main(int argc, char **argv)
free(buffer);
+#if 0
ret = asg_probe_object(ait,
ASG_LOCATION_AUTO,
cid,
hooks/post-receive
--
1
0
branch, trac-323-sos, updated. 2cc132aac6c1c78629c1e10b91c9c53d3c0f5948
by noreply@mcs.anl.gov 14 Nov '14
by noreply@mcs.anl.gov 14 Nov '14
14 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, trac-323-sos has been updated
via 2cc132aac6c1c78629c1e10b91c9c53d3c0f5948 (commit)
from 0feab1fe67af0550dc82dce50b1608a953ce20cc (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 2cc132aac6c1c78629c1e10b91c9c53d3c0f5948
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Fri Nov 14 15:14:38 2014 -0600
left out argument
-----------------------------------------------------------------------
Summary of changes:
code/tests/asg/test-asg-simple-sos.sh | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Diff of changes:
diff --git a/code/tests/asg/test-asg-simple-sos.sh b/code/tests/asg/test-asg-simple-sos.sh
index 896589a..43214f5 100755
--- a/code/tests/asg/test-asg-simple-sos.sh
+++ b/code/tests/asg/test-asg-simple-sos.sh
@@ -11,7 +11,7 @@ test_start_servers 1 5 60 1
# actual test case
#####################
-run_to 60 tests/asg/test-asg-simple-sos $svr1 777
+run_to 60 tests/asg/test-asg-simple-sos $svr1 777 1024
if [ $? -ne 0 ]; then
run_to 60 src/admin-tools/triton-shutdown-all-servers $svr1 &> /dev/null
wait
hooks/post-receive
--
1
0
branch, trac-323-sos, updated. 0feab1fe67af0550dc82dce50b1608a953ce20cc
by noreply@mcs.anl.gov 14 Nov '14
by noreply@mcs.anl.gov 14 Nov '14
14 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, trac-323-sos has been updated
via 0feab1fe67af0550dc82dce50b1608a953ce20cc (commit)
from 3dcc5600aa9a4ca32c9458103371bcff38c8853f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0feab1fe67af0550dc82dce50b1608a953ce20cc
Author: John Jenkins <jenkins(a)mcs.anl.gov>
Date: Fri Nov 14 14:56:59 2014 -0600
sos basedir config support
-----------------------------------------------------------------------
Summary of changes:
code/src/server/triton-server.ae | 14 ++++++++++++--
code/src/zeroconf/zeroconf.c | 6 ++++++
code/tests/test-util.sh | 1 +
3 files changed, 19 insertions(+), 2 deletions(-)
Diff of changes:
diff --git a/code/src/server/triton-server.ae b/code/src/server/triton-server.ae
index 38af94f..023fff9 100644
--- a/code/src/server/triton-server.ae
+++ b/code/src/server/triton-server.ae
@@ -107,6 +107,7 @@ __blocking int aesop_main(int argc, char **argv)
triton_ret_t tret;
char* listen_addr;
char* conffile;
+ const char * sos_path;
char logname[PATH_MAX];
int daemonize;
struct sos_ctx *sos_ctx;
@@ -184,8 +185,17 @@ __blocking int aesop_main(int argc, char **argv)
return(-1);
}
- /* TODO: read path from config file */
- ret = sos_init(&sos_ctx, "/tmp/sos");
+ /* TODO: better encapsulate this */
+ sos_path = triton_zeroconf_get("triton_sos_base_path");
+ if (sos_path == NULL){
+ triton_error_msg("config variable triton_sos_base_path "
+ "not present, exiting...\n");
+ tosd_finalize();
+ triton_place_finalize();
+ triton_debug_finalize();
+ return(-1);
+ }
+ ret = sos_init(&sos_ctx, sos_path);
if(ret != 0)
{
triton_error_msg_ret(tret, "sos_init()");
diff --git a/code/src/zeroconf/zeroconf.c b/code/src/zeroconf/zeroconf.c
index f49abd0..c81d473 100644
--- a/code/src/zeroconf/zeroconf.c
+++ b/code/src/zeroconf/zeroconf.c
@@ -89,6 +89,12 @@ struct zeroconf_entry zeroconf_array[] =
"Rate at which to inject storage errors, from 0.0 to 100.0",
NULL,
},
+ /* sos configuration parameters (TODO: grow) */
+ {
+ CFG_STR("triton_sos_base_path", 0, CFGF_NONE),
+ "SOS data/metadata path",
+ NULL
+ },
/* object placement */
{
CFG_STR("triton_placement_method", "multiring", CFGF_NONE),
diff --git a/code/tests/test-util.sh b/code/tests/test-util.sh
index 280df95..1a6b172 100644
--- a/code/tests/test-util.sh
+++ b/code/tests/test-util.sh
@@ -42,6 +42,7 @@ function test_gen_conf ()
echo "triton_debug_file = ${TMPBASE}/triton-server-%TRITON_SERVER_NAME%.log" >> ${TMPBASE}/triton-$pid.conf
echo "triton_tosd_db_path = ${TMPBASE}/triton-server-%TRITON_SERVER_NAME%-meta" >> ${TMPBASE}/triton-$pid.conf
echo "triton_tosd_data_path = ${TMPBASE}/triton-server-%TRITON_SERVER_NAME%-data" >> ${TMPBASE}/triton-$pid.conf
+ echo "triton_sos_base_path = ${TMPBASE}/triton-server-%TRITON_SERVER_NAME%-sos" >> ${TMPBASE}/triton-$pid.conf
echo "triton_debug_masks = \"all\"" >> ${TMPBASE}/triton-$pid.conf
echo "triton_tosd_flags = \"DATA_SYNC\"" >> ${TMPBASE}/triton-$pid.conf
if [[ $repfactor -gt 0 ]] ; then
hooks/post-receive
--
1
0
14 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 61ce0411a08e638ee3de1bc0f707bb1b676e6974 (commit)
from acda52ada9e6e6b2ed456e8540baf905d56072e5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 61ce0411a08e638ee3de1bc0f707bb1b676e6974
Author: Phil Carns <carns(a)mcs.anl.gov>
Date: Fri Nov 14 11:05:09 2014 -0500
added pptx copy of presentation
-----------------------------------------------------------------------
Summary of changes:
papers/swim/presentation/README.txt | 3 +++
papers/swim/presentation/swim_pmbs.pptx | Bin 0 -> 217437 bytes
2 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 papers/swim/presentation/README.txt
create mode 100644 papers/swim/presentation/swim_pmbs.pptx
Diff of changes:
diff --git a/papers/swim/presentation/README.txt b/papers/swim/presentation/README.txt
new file mode 100644
index 0000000..a6ac3ad
--- /dev/null
+++ b/papers/swim/presentation/README.txt
@@ -0,0 +1,3 @@
+NOTE: master copy is in google docs:
+
+https://docs.google.com/presentation/d/1YKJ4ot5JnX5OW-uQgkLnr6XRTCryYKAsPA7wvMTPvPQ/edit
diff --git a/papers/swim/presentation/swim_pmbs.pptx b/papers/swim/presentation/swim_pmbs.pptx
new file mode 100644
index 0000000..14e2738
Binary files /dev/null and b/papers/swim/presentation/swim_pmbs.pptx differ
hooks/post-receive
--
1
0
12 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via acda52ada9e6e6b2ed456e8540baf905d56072e5 (commit)
from 2b9d1fe99bc7cdbd5e9c695f0dcfcc2f2c57e560 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit acda52ada9e6e6b2ed456e8540baf905d56072e5
Author: Phil Carns <carns(a)mcs.anl.gov>
Date: Wed Nov 12 21:39:54 2014 -0500
add figure variant for presentation use
-----------------------------------------------------------------------
Summary of changes:
.../{msg-loss-4.plt => msg-loss-4-pres.plt} | 28 ++++++++++----------
1 files changed, 14 insertions(+), 14 deletions(-)
copy papers/swim/sim_results/msg-loss/{msg-loss-4.plt => msg-loss-4-pres.plt} (73%)
Diff of changes:
diff --git a/papers/swim/sim_results/msg-loss/msg-loss-4.plt b/papers/swim/sim_results/msg-loss/msg-loss-4-pres.plt
similarity index 73%
copy from papers/swim/sim_results/msg-loss/msg-loss-4.plt
copy to papers/swim/sim_results/msg-loss/msg-loss-4-pres.plt
index d4ed897..3c53fb4 100644
--- a/papers/swim/sim_results/msg-loss/msg-loss-4.plt
+++ b/papers/swim/sim_results/msg-loss/msg-loss-4-pres.plt
@@ -1,6 +1,6 @@
#set term po eps color solid "NimbusSanL-Regu" 16 fontfile "/usr/share/texmf-texlive/fonts/type1/urw/helvetic/uhvr8a.pfb"
#set term po eps color solid 16 size 10in,3.5in
-set term po eps color solid 16 size 4in,5.5in
+set term po eps color solid 17 size 4in,5.5in
# color blindness work around
set style line 2 lc 3
@@ -9,7 +9,7 @@ set style line 4 lc 5
set style line 5 lc 2
set style increment user
-set output "msg-loss-4.eps"
+set output "msg-loss-4-pres.eps"
set key top right
#set grid
@@ -27,9 +27,9 @@ set tmargin at screen 0.98
set bmargin at screen 0.78
set ylabel "unique false positives" offset 2
-plot '5p-msg-loss.dat' using 1:4 title "5% msg loss" w linespoints lt 1 pt 7 linecolor rgb "blue", \
-'1p-msg-loss.dat' using 1:4 title "1% msg loss" w linespoints lt 1 pt 9 linecolor rgb "red", \
-'0.2p-msg-loss.dat' using 1:4 title "0.2% msg loss" w linespoints lt 1 pt 5 linecolor rgb "black"
+plot '5p-msg-loss.dat' using 1:4 title "5% msg loss" w linespoints lt 1 lw 4 pt 7 linecolor rgb "blue", \
+'1p-msg-loss.dat' using 1:4 title "1% msg loss" w linespoints lt 1 lw 4 pt 9 linecolor rgb "red", \
+'0.2p-msg-loss.dat' using 1:4 title "0.2% msg loss" w linespoints lt 1 lw 4 pt 5 linecolor rgb "black"
###########
@@ -40,9 +40,9 @@ set bmargin at screen 0.54
unset key
set yrange [0:]
set ylabel "unique suspected"
-plot '5p-msg-loss.dat' using 1:3 notitle w linespoints lt 1 pt 7 linecolor rgb "blue", \
-'1p-msg-loss.dat' using 1:3 title "1% msg loss" w linespoints lt 1 pt 9 linecolor rgb "red", \
-'0.2p-msg-loss.dat' using 1:3 title "0.2% msg loss" w linespoints lt 1 pt 5 linecolor rgb "black"
+plot '5p-msg-loss.dat' using 1:3 notitle w linespoints lt 1 lw 4 pt 7 linecolor rgb "blue", \
+'1p-msg-loss.dat' using 1:3 title "1% msg loss" w linespoints lt 1 lw 4 pt 9 linecolor rgb "red", \
+'0.2p-msg-loss.dat' using 1:3 title "0.2% msg loss" w linespoints lt 1 lw 4 pt 5 linecolor rgb "black"
###########
@@ -53,9 +53,9 @@ set tmargin at screen 0.51
set bmargin at screen 0.30
set yrange [0:]
set ylabel "msg/node/s"
-plot '5p-msg-loss.dat' using 1:5 notitle w linespoints lt 1 pt 7 linecolor rgb "blue", \
-'1p-msg-loss.dat' using 1:5 title "1% msg loss" w linespoints lt 1 pt 9 linecolor rgb "red", \
-'0.2p-msg-loss.dat' using 1:5 title "0.2% msg loss" w linespoints lt 1 pt 5 linecolor rgb "black"
+plot '5p-msg-loss.dat' using 1:5 notitle w linespoints lt 1 lw 4 pt 7 linecolor rgb "blue", \
+'1p-msg-loss.dat' using 1:5 title "1% msg loss" w linespoints lt 1 lw 4 pt 9 linecolor rgb "red", \
+'0.2p-msg-loss.dat' using 1:5 title "0.2% msg loss" w linespoints lt 1 lw 4 pt 5 linecolor rgb "black"
###########
@@ -68,8 +68,8 @@ set bmargin at screen 0.06
set yrange [0:]
set ylabel "piggyback payload\n(updates/msg)"
set xlabel "k (subgroup size)" offset 0,0.3
-plot '5p-msg-loss.dat' using 1:($6/$5) notitle w linespoints lt 1 pt 7 linecolor rgb "blue", \
-'1p-msg-loss.dat' using 1:($6/$5) title "1% msg loss" w linespoints lt 1 pt 9 linecolor rgb "red", \
-'0.2p-msg-loss.dat' using 1:($6/$5) title "0.2% msg loss" w linespoints lt 1 pt 5 linecolor rgb "black"
+plot '5p-msg-loss.dat' using 1:($6/$5) notitle w linespoints lt 1 lw 4 pt 7 linecolor rgb "blue", \
+'1p-msg-loss.dat' using 1:($6/$5) title "1% msg loss" w linespoints lt 1 lw 4 pt 9 linecolor rgb "red", \
+'0.2p-msg-loss.dat' using 1:($6/$5) title "0.2% msg loss" w linespoints lt 1 lw 4 pt 5 linecolor rgb "black"
unset multiplot
hooks/post-receive
--
1
0
12 Nov '14
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 2b9d1fe99bc7cdbd5e9c695f0dcfcc2f2c57e560 (commit)
from 6f6961e42d03fcf8c65e2ee913d3ad5e8abb6274 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 2b9d1fe99bc7cdbd5e9c695f0dcfcc2f2c57e560
Author: Phil Carns <carns(a)mcs.anl.gov>
Date: Wed Nov 12 21:27:38 2014 -0500
variant of graph for presentation use
-----------------------------------------------------------------------
Summary of changes:
...{validate-graph.plt => validate-graph-pres.plt} | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)
copy papers/swim/sim_results/validate-graph-data/{validate-graph.plt => validate-graph-pres.plt} (76%)
Diff of changes:
diff --git a/papers/swim/sim_results/validate-graph-data/validate-graph.plt b/papers/swim/sim_results/validate-graph-data/validate-graph-pres.plt
similarity index 76%
copy from papers/swim/sim_results/validate-graph-data/validate-graph.plt
copy to papers/swim/sim_results/validate-graph-data/validate-graph-pres.plt
index 53f7397..48b4a93 100644
--- a/papers/swim/sim_results/validate-graph-data/validate-graph.plt
+++ b/papers/swim/sim_results/validate-graph-data/validate-graph-pres.plt
@@ -1,6 +1,6 @@
#set term po eps color solid "NimbusSanL-Regu" 16 fontfile "/usr/share/texmf-texlive/fonts/type1/urw/helvetic/uhvr8a.pfb"
#set term po eps color solid 16 size 10in,3.5in
-set term po eps color solid 16 size 4in,2.66in
+set term po eps color solid 18 size 4in,3.5in
# color blindness work around
set style line 2 lc 3
@@ -9,7 +9,7 @@ set style line 4 lc 5
set style line 5 lc 2
set style increment user
-set output "validate-graph.eps"
+set output "validate-graph-pres.eps"
set key top left
#unset key
@@ -26,15 +26,15 @@ set multiplot layout 2,1
set xtics format " "
set boxwidth 0.05
-set lmargin at screen 0.12
+set lmargin at screen 0.14
set rmargin at screen 0.97
set bmargin at screen 0.58
set tmargin at screen 0.98
set ylabel "t_detect (s)" offset 1
-plot 't_detect.box.dat' using 1:3:2:7:6 with candlesticks lw 2 linecolor rgb "black" notitle whiskerbars, \
-'' using 1:4:4:4:4 with candlesticks lw 2 linecolor rgb "black" notitle, \
-'analytic.dat' using 1:2 title "expected (analytical model)" w linespoints lt 1 pt 7 linecolor rgb "blue"
+plot 't_detect.box.dat' using 1:3:2:7:6 with candlesticks lw 3 linecolor rgb "black" notitle whiskerbars, \
+'' using 1:4:4:4:4 with candlesticks lw 3 linecolor rgb "black" notitle, \
+'analytic.dat' using 1:2 title "expected (analytical model)" w linespoints lt 1 pt 7 linecolor rgb "blue" lw 3
#'' using 1:4 with lines lw 1 linecolor rgb "grey" title "median"
#set xtics format "%g"
@@ -45,16 +45,16 @@ plot 't_detect.box.dat' using 1:3:2:7:6 with candlesticks lw 2 linecolor rgb "bl
set xtics format "%g"
set ylabel "t_dissem (s)"
-set lmargin at screen 0.12
+set lmargin at screen 0.14
set rmargin at screen 0.97
set bmargin at screen 0.15
set tmargin at screen 0.53
set yrange [0:2]
set xlabel "number of servers" offset 0,0.3
-plot 't_dissem.box.dat' using 1:3:2:7:6 with candlesticks lw 2 linecolor rgb "black" notitle whiskerbars, \
-'' using 1:4:4:4:4 with candlesticks lw 2 linecolor rgb "black" notitle, \
-'analytic.dat' using 1:3 notitle w linespoints lt 1 pt 7 linecolor rgb "blue"
+plot 't_dissem.box.dat' using 1:3:2:7:6 with candlesticks lw 3 linecolor rgb "black" notitle whiskerbars, \
+'' using 1:4:4:4:4 with candlesticks lw 3 linecolor rgb "black" notitle, \
+'analytic.dat' using 1:3 notitle w linespoints lt 1 pt 7 linecolor rgb "blue" lw 3
# '' using 1:4 with lines lw 1 linecolor rgb "grey" title "median"
unset multiplot
hooks/post-receive
--
1
0