summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/oberdiek/flags.sty
blob: d27d287ff7d7e966a12a3b3550fc02bf519cf8b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
%%
%% This is file `flags.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% flags.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 of this license or (at your option) any later
%% version. The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% This Current Maintainer of this work is Heiko Oberdiek.
%% 
%% This work consists of the main source file flags.dtx
%% and the derived files
%%    flags.sty, flags.pdf, flags.ins, flags.drv.
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{flags}%
  [2007/02/18 v0.1 Flag setting in bit fields (HO)]
\newcommand*{\resetflags}[1]{%
  \expandafter\let\csname flags@#1\endcsname\@empty
}
\newcommand*{\printflags}[1]{%
  \expandafter\@printflags\csname flags@#1\endcsname
}
\def\@printflags#1{%
  \expandafter\@firstofone\expandafter{%
    \number\numexpr
    \ifx#1\@empty
      0%
    \else
      \expandafter\@@printflags#1%
    \fi
  }%
}
\def\@@printflags#1#2\fi{%
  \fi
  #1%
  \ifx\\#2\\%
  \else
    +2*\numexpr\expandafter\@@printflags#2%
  \fi
}
\newcommand*{\setflag}[2]{%
  \expandafter\@setflag\csname flags@#1\expandafter\endcsname
    \expandafter{\romannumeral\number\numexpr#2-1\relax000}%
}
\def\@setflag#1#2{%
  \edef#1{%
    \expandafter\@@setflag\expandafter{#1}{#2}%
  }%
}
\def\@@setflag#1#2{%
  \ifx\\#1\\%
    \FLAGS@zero#2\relax
    1%
  \else
    \ifx\\#2\\%
      1\@gobble#1%
    \else
      \@car#1\@nil
      \expandafter\@@@setflag\expandafter{\@gobble#2}{#1}%
    \fi
  \fi
}
\def\@@@setflag#1#2\fi\fi{%
  \fi\fi
  \expandafter\@@setflag\expandafter{\@cdr#2\@nil}{#1}%
}
\newcommand*{\clearflag}[2]{%
  \expandafter\@clearflag\csname flags@#1\expandafter\endcsname
    \expandafter{\romannumeral\number\numexpr#2-1\relax000}%
}
\def\@clearflag#1#2{%
  \edef#1{%
    \expandafter\@@clearflag\expandafter{#1}{#2}%
  }%
}
\def\@@clearflag#1#2{%
  \ifx\\#1\\%
  \else
    \ifx\\#2\\%
      0\@gobble#1%
    \else
      \@car#1\@nil
      \expandafter\@@@clearflag\expandafter{\@gobble#2}{#1}%
    \fi
  \fi
}
\def\@@@clearflag#1#2\fi\fi{%
  \fi\fi
  \expandafter\@@clearflag\expandafter{\@cdr#2\@nil}{#1}%
}
\def\FLAGS@zero#1{%
  \ifx#1\relax
  \else
    0%
    \expandafter\FLAGS@zero
  \fi
}
\endinput
%%
%% End of file `flags.sty'.