Mike Gerwitz

Activist for User Freedom

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Gerwitz <gerwitzm@lovullo.com>2014-05-15 11:46:03 -0400
committerMike Gerwitz <gerwitzm@lovullo.com>2014-05-15 11:46:03 -0400
commit385bdbcd4adf06a668f1c9d98796b81f98122aa5 (patch)
tree2eeb14a2fd4f6f7bc23767edd84c3f12eb94741a
parentda073efbace2b31574e0d58aafee852c8eb88dbd (diff)
parentb9e7b491215f3bcba9c1ac2f0770ffc210a9cff5 (diff)
downloadlvspec-385bdbcd4adf06a668f1c9d98796b81f98122aa5.tar.gz
lvspec-385bdbcd4adf06a668f1c9d98796b81f98122aa5.tar.bz2
lvspec-385bdbcd4adf06a668f1c9d98796b81f98122aa5.zip
raterspec now writes to aux file
-rw-r--r--lvspec.cls2
-rw-r--r--raterspec.cls53
-rw-r--r--raterspec/param.sty31
-rw-r--r--raterspec/sec/input.tex1
4 files changed, 59 insertions, 28 deletions
diff --git a/lvspec.cls b/lvspec.cls
index 23c8178..3307db4 100644
--- a/lvspec.cls
+++ b/lvspec.cls
@@ -20,6 +20,8 @@
% base class, defaulting to 10pt
\LoadClass[10pt]{scrreprt}
+\RequirePackage{xparse}
+
\RequirePackage[top=4.5cm,bottom=5cm,width=\textwidth]{geometry}
\RequirePackage{makeidx}
\RequirePackage{minitoc}
diff --git a/raterspec.cls b/raterspec.cls
index 7a6c9fa..4edbf27 100644
--- a/raterspec.cls
+++ b/raterspec.cls
@@ -69,19 +69,28 @@
% The host environment is the same for all new systems
%
-\def\@raterspec@input@types{
- \PackageWarning{raterspec}{Missing program-specific input parameter types!
- \MessageBreak Define using \protect\inputtypes}
- \todo{No input parameter types have been defined.}
+\let\@@madespec0
+
+\def\@raterspec@mkhook#1#2#3#4{
+ \expandafter\gdef\csname @raterspec@#1\endcsname{
+ \PackageWarning{raterspec}{Missing #2!
+ \MessageBreak Define using \expandafter\protect\csname#1\endcsname}%
+ \todo{No #2 have been defined.}%
+ }%
+ \expandafter\gdef\csname#1\endcsname##1{%
+ \expandafter\gdef\csname @raterspec@#1\endcsname{%
+ #3\input{##1}#4%
+ }%
+ }%
}
-\def\@raterspec@input@params{
- \PackageWarning{raterspec}{Missing input parameters!
- \MessageBreak Define using \protect\inputparams}
- \todo{No input parameters have been defined.}
-}
+\def\makespec{
+ \ifx\@@madespec1%
+ \PackageError{raterspec}{Duplicate call to \protect\makespec}
+ \fi
+
+ \global\let\@@madespec1
-\def\@lvspec@posttitle{
\pnumoff\part{General System}\pnumon
\chapter{Host Environment}
@@ -95,36 +104,38 @@
\section{Program-Specific Parameter Types}
\sectiondept{it/uw}
- \@raterspec@input@types
+ \@raterspec@inputtypes
\index{input data|)}
\chapter{Input Parameters}
\index{input data!parameters|(}
\index{parameter|(}
\input{raterspec/sec/params}
- \@raterspec@input@params
+ \@raterspec@inputparams
\index{input data!parameters|)}
\index{parameter|)}
}
-\def\inputtypes#1{
- \gdef\@raterspec@input@types{
+\@raterspec@mkhook{inputtypes}{input types}
+ {%
% can't really include a sigline here because approvial would be global
\pnumoff
Parameter types in this section are common to the \@title@short\ program.
\pnumon
\index{parameter type|(}
- \input{#1}
- \index{parameter type|)}
}
-}
+ {\index{parameter type|)}}
-\def\inputparams#1{
- \gdef\@raterspec@input@params{
- \input{#1}
- }
+\@raterspec@mkhook{inputparams}{input parameters}
+ {}
+ {}
+
+\AtEndDocument{
+ \ifx\@@madespec0
+ \PackageError{raterspec}{\protect\makespec\space was not called}
+ \fi
}
diff --git a/raterspec/param.sty b/raterspec/param.sty
index 7065cd4..9857a78 100644
--- a/raterspec/param.sty
+++ b/raterspec/param.sty
@@ -24,6 +24,11 @@
\edef\@root{\@ptype@root#1<||}%
\edef\@type{\@ptype@type#1<#1>||}%
\expandafter\gdef\csname ptype@#2\endcsname{#3}%
+ % place definition into aux file; will be available next pass
+ \protected@write\@auxout{}{%
+ \string\expandafter\string\gdef
+ \string\csname\space ptype@#2\string\endcsname{#3}%
+ }%
% typeset definition with link
\item[%
\hypertarget{@ptype:#2}{#2}%
@@ -35,7 +40,7 @@
% ensure that the parent type actually exists
\ifx\@root\@coreptype\else%
\expandafter\ifx\csname ptype@\@type\endcsname\relax%
- \errmessage{unknown parent param type `\@type' for `#2'}
+ \PackageWarning{raterspec}{unknown parent param type `\@type' for `#2'}
\fi%
\fi%
% process any keywords
@@ -76,6 +81,13 @@
% define constant
\expandafter\gdef\csname const@#2\endcsname{#1}%
\expandafter\gdef\csname const@value@#2\endcsname{#3}%
+ % place definition into aux file; will be available next pass
+ \protected@write\@auxout{}{%
+ \string\expandafter\string\gdef
+ \string\csname\space const@#2\string\endcsname{#1}%
+ \string\expandafter\string\gdef
+ \string\csname\space constvalue@#2\string\endcsname{#3}%
+ }%
% typeset
\index{constant!{\tt#2}}%
{\tt\hypertarget{@const:#2}{#2}} & $#3$ & #1 \\
@@ -99,7 +111,7 @@
\def\unionv#1{%
% does this type exist?
\expandafter\ifx\csname ptype@#1\endcsname\relax%
- \errmessage{unknown param type `#1' for union}
+ \PackageWarning{raterspec}{unknown param type `#1' for union}
\fi%
\item{\typeref{#1}}
}
@@ -152,7 +164,7 @@
\def\@type@exists@err#1{{%
\expandafter\let\expandafter\@chk\csname ptype@#1\endcsname
\ifx\@chk\relax
- \errmessage{parameter `#1' is undefined}%
+ \PackageWarning{raterspec}{parameter `#1' is undefined}%
\fi
}}
\def\@const@exists@err#1{{%
@@ -160,7 +172,7 @@
\@ifnumeric{#1}\else
\expandafter\let\expandafter\@chk\csname const@#1\endcsname
\ifx\@chk\relax
- \errmessage{constant `#1' is undefined}%
+ \PackageWarning{raterspec}{constant `#1' is undefined}%
\fi
\fi
}}
@@ -197,10 +209,15 @@
\edef\@root{\@ptype@root#1<||}%
\edef\@type{\@ptype@type#1<#1>||}%
\expandafter\gdef\csname param@#2\endcsname{#3}%
+ % place definition into aux file; will be available next pass
+ \protected@write\@auxout{}{%
+ \string\expandafter\string\gdef
+ \string\csname\space param@#2\string\endcsname{#3}%
+ }%
% does the given type exist (note that this check assumes that the typedef
% appears before the param in the specs, as is currently the case)
\expandafter\ifx\csname ptype@\@type\endcsname\relax%
- \errmessage{unknown param type: \@type}
+ \PackageWarning{raterspec}{unknown param type: \@type}
\fi%
% typeset definition with link
\item[%
@@ -240,7 +257,7 @@
\endlinechar-1\relax
\expandafter\let\expandafter\@@chk\csname param@#1\endcsname
\ifx\@@chk\relax
- \PackageError{dwspec}{unknown param: #1}
+ \PackageWarning{raterspec}{unknown param: #1}
\fi
\index{parameter!#1@\texttt{#1}}%
\hyperlink{@param:#1}%
@@ -252,7 +269,7 @@
\def\paramrefd#1{%
\expandafter\let\expandafter\@@pchk\csname param@#1\endcsname
\ifx\@@pchk\empty
- \PackageError{dwspec}{Unknown parameter: #1}%
+ \PackageWarning{raterspec}{Unknown parameter: #1}%
\else
% output
\@@pchk
diff --git a/raterspec/sec/input.tex b/raterspec/sec/input.tex
index 52a1510..59d2cce 100644
--- a/raterspec/sec/input.tex
+++ b/raterspec/sec/input.tex
@@ -76,6 +76,7 @@ parameter types}.
\typedef core int:
Any signed 32-bit integer
+
\end{description}
\index{parameter type|)}