zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

cow_inline.hrl (22205B)


      1 %% Copyright (c) 2014-2018, Loïc Hoguin <essen@ninenines.eu>
      2 %%
      3 %% Permission to use, copy, modify, and/or distribute this software for any
      4 %% purpose with or without fee is hereby granted, provided that the above
      5 %% copyright notice and this permission notice appear in all copies.
      6 %%
      7 %% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
      8 %% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
      9 %% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     10 %% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     11 %% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     12 %% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     13 %% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     14 
     15 -ifndef(COW_INLINE_HRL).
     16 -define(COW_INLINE_HRL, 1).
     17 
     18 %% LC(Character)
     19 
     20 -define(LC(C), case C of
     21 	$A -> $a;
     22 	$B -> $b;
     23 	$C -> $c;
     24 	$D -> $d;
     25 	$E -> $e;
     26 	$F -> $f;
     27 	$G -> $g;
     28 	$H -> $h;
     29 	$I -> $i;
     30 	$J -> $j;
     31 	$K -> $k;
     32 	$L -> $l;
     33 	$M -> $m;
     34 	$N -> $n;
     35 	$O -> $o;
     36 	$P -> $p;
     37 	$Q -> $q;
     38 	$R -> $r;
     39 	$S -> $s;
     40 	$T -> $t;
     41 	$U -> $u;
     42 	$V -> $v;
     43 	$W -> $w;
     44 	$X -> $x;
     45 	$Y -> $y;
     46 	$Z -> $z;
     47 	_ -> C
     48 end).
     49 
     50 %% LOWER(Bin)
     51 %%
     52 %% Lowercase the entire binary string in a binary comprehension.
     53 
     54 -define(LOWER(Bin), << << ?LC(C) >> || << C >> <= Bin >>).
     55 
     56 %% LOWERCASE(Function, Rest, Acc, ...)
     57 %%
     58 %% To be included at the end of a case block.
     59 %% Defined for up to 10 extra arguments.
     60 
     61 -define(LOWER(Function, Rest, Acc), case C of
     62 	$A -> Function(Rest, << Acc/binary, $a >>);
     63 	$B -> Function(Rest, << Acc/binary, $b >>);
     64 	$C -> Function(Rest, << Acc/binary, $c >>);
     65 	$D -> Function(Rest, << Acc/binary, $d >>);
     66 	$E -> Function(Rest, << Acc/binary, $e >>);
     67 	$F -> Function(Rest, << Acc/binary, $f >>);
     68 	$G -> Function(Rest, << Acc/binary, $g >>);
     69 	$H -> Function(Rest, << Acc/binary, $h >>);
     70 	$I -> Function(Rest, << Acc/binary, $i >>);
     71 	$J -> Function(Rest, << Acc/binary, $j >>);
     72 	$K -> Function(Rest, << Acc/binary, $k >>);
     73 	$L -> Function(Rest, << Acc/binary, $l >>);
     74 	$M -> Function(Rest, << Acc/binary, $m >>);
     75 	$N -> Function(Rest, << Acc/binary, $n >>);
     76 	$O -> Function(Rest, << Acc/binary, $o >>);
     77 	$P -> Function(Rest, << Acc/binary, $p >>);
     78 	$Q -> Function(Rest, << Acc/binary, $q >>);
     79 	$R -> Function(Rest, << Acc/binary, $r >>);
     80 	$S -> Function(Rest, << Acc/binary, $s >>);
     81 	$T -> Function(Rest, << Acc/binary, $t >>);
     82 	$U -> Function(Rest, << Acc/binary, $u >>);
     83 	$V -> Function(Rest, << Acc/binary, $v >>);
     84 	$W -> Function(Rest, << Acc/binary, $w >>);
     85 	$X -> Function(Rest, << Acc/binary, $x >>);
     86 	$Y -> Function(Rest, << Acc/binary, $y >>);
     87 	$Z -> Function(Rest, << Acc/binary, $z >>);
     88 	C -> Function(Rest, << Acc/binary, C >>)
     89 end).
     90 
     91 -define(LOWER(Function, Rest, A0, Acc), case C of
     92 	$A -> Function(Rest, A0, << Acc/binary, $a >>);
     93 	$B -> Function(Rest, A0, << Acc/binary, $b >>);
     94 	$C -> Function(Rest, A0, << Acc/binary, $c >>);
     95 	$D -> Function(Rest, A0, << Acc/binary, $d >>);
     96 	$E -> Function(Rest, A0, << Acc/binary, $e >>);
     97 	$F -> Function(Rest, A0, << Acc/binary, $f >>);
     98 	$G -> Function(Rest, A0, << Acc/binary, $g >>);
     99 	$H -> Function(Rest, A0, << Acc/binary, $h >>);
    100 	$I -> Function(Rest, A0, << Acc/binary, $i >>);
    101 	$J -> Function(Rest, A0, << Acc/binary, $j >>);
    102 	$K -> Function(Rest, A0, << Acc/binary, $k >>);
    103 	$L -> Function(Rest, A0, << Acc/binary, $l >>);
    104 	$M -> Function(Rest, A0, << Acc/binary, $m >>);
    105 	$N -> Function(Rest, A0, << Acc/binary, $n >>);
    106 	$O -> Function(Rest, A0, << Acc/binary, $o >>);
    107 	$P -> Function(Rest, A0, << Acc/binary, $p >>);
    108 	$Q -> Function(Rest, A0, << Acc/binary, $q >>);
    109 	$R -> Function(Rest, A0, << Acc/binary, $r >>);
    110 	$S -> Function(Rest, A0, << Acc/binary, $s >>);
    111 	$T -> Function(Rest, A0, << Acc/binary, $t >>);
    112 	$U -> Function(Rest, A0, << Acc/binary, $u >>);
    113 	$V -> Function(Rest, A0, << Acc/binary, $v >>);
    114 	$W -> Function(Rest, A0, << Acc/binary, $w >>);
    115 	$X -> Function(Rest, A0, << Acc/binary, $x >>);
    116 	$Y -> Function(Rest, A0, << Acc/binary, $y >>);
    117 	$Z -> Function(Rest, A0, << Acc/binary, $z >>);
    118 	C -> Function(Rest, A0, << Acc/binary, C >>)
    119 end).
    120 
    121 -define(LOWER(Function, Rest, A0, A1, Acc), case C of
    122 	$A -> Function(Rest, A0, A1, << Acc/binary, $a >>);
    123 	$B -> Function(Rest, A0, A1, << Acc/binary, $b >>);
    124 	$C -> Function(Rest, A0, A1, << Acc/binary, $c >>);
    125 	$D -> Function(Rest, A0, A1, << Acc/binary, $d >>);
    126 	$E -> Function(Rest, A0, A1, << Acc/binary, $e >>);
    127 	$F -> Function(Rest, A0, A1, << Acc/binary, $f >>);
    128 	$G -> Function(Rest, A0, A1, << Acc/binary, $g >>);
    129 	$H -> Function(Rest, A0, A1, << Acc/binary, $h >>);
    130 	$I -> Function(Rest, A0, A1, << Acc/binary, $i >>);
    131 	$J -> Function(Rest, A0, A1, << Acc/binary, $j >>);
    132 	$K -> Function(Rest, A0, A1, << Acc/binary, $k >>);
    133 	$L -> Function(Rest, A0, A1, << Acc/binary, $l >>);
    134 	$M -> Function(Rest, A0, A1, << Acc/binary, $m >>);
    135 	$N -> Function(Rest, A0, A1, << Acc/binary, $n >>);
    136 	$O -> Function(Rest, A0, A1, << Acc/binary, $o >>);
    137 	$P -> Function(Rest, A0, A1, << Acc/binary, $p >>);
    138 	$Q -> Function(Rest, A0, A1, << Acc/binary, $q >>);
    139 	$R -> Function(Rest, A0, A1, << Acc/binary, $r >>);
    140 	$S -> Function(Rest, A0, A1, << Acc/binary, $s >>);
    141 	$T -> Function(Rest, A0, A1, << Acc/binary, $t >>);
    142 	$U -> Function(Rest, A0, A1, << Acc/binary, $u >>);
    143 	$V -> Function(Rest, A0, A1, << Acc/binary, $v >>);
    144 	$W -> Function(Rest, A0, A1, << Acc/binary, $w >>);
    145 	$X -> Function(Rest, A0, A1, << Acc/binary, $x >>);
    146 	$Y -> Function(Rest, A0, A1, << Acc/binary, $y >>);
    147 	$Z -> Function(Rest, A0, A1, << Acc/binary, $z >>);
    148 	C -> Function(Rest, A0, A1, << Acc/binary, C >>)
    149 end).
    150 
    151 -define(LOWER(Function, Rest, A0, A1, A2, Acc), case C of
    152 	$A -> Function(Rest, A0, A1, A2, << Acc/binary, $a >>);
    153 	$B -> Function(Rest, A0, A1, A2, << Acc/binary, $b >>);
    154 	$C -> Function(Rest, A0, A1, A2, << Acc/binary, $c >>);
    155 	$D -> Function(Rest, A0, A1, A2, << Acc/binary, $d >>);
    156 	$E -> Function(Rest, A0, A1, A2, << Acc/binary, $e >>);
    157 	$F -> Function(Rest, A0, A1, A2, << Acc/binary, $f >>);
    158 	$G -> Function(Rest, A0, A1, A2, << Acc/binary, $g >>);
    159 	$H -> Function(Rest, A0, A1, A2, << Acc/binary, $h >>);
    160 	$I -> Function(Rest, A0, A1, A2, << Acc/binary, $i >>);
    161 	$J -> Function(Rest, A0, A1, A2, << Acc/binary, $j >>);
    162 	$K -> Function(Rest, A0, A1, A2, << Acc/binary, $k >>);
    163 	$L -> Function(Rest, A0, A1, A2, << Acc/binary, $l >>);
    164 	$M -> Function(Rest, A0, A1, A2, << Acc/binary, $m >>);
    165 	$N -> Function(Rest, A0, A1, A2, << Acc/binary, $n >>);
    166 	$O -> Function(Rest, A0, A1, A2, << Acc/binary, $o >>);
    167 	$P -> Function(Rest, A0, A1, A2, << Acc/binary, $p >>);
    168 	$Q -> Function(Rest, A0, A1, A2, << Acc/binary, $q >>);
    169 	$R -> Function(Rest, A0, A1, A2, << Acc/binary, $r >>);
    170 	$S -> Function(Rest, A0, A1, A2, << Acc/binary, $s >>);
    171 	$T -> Function(Rest, A0, A1, A2, << Acc/binary, $t >>);
    172 	$U -> Function(Rest, A0, A1, A2, << Acc/binary, $u >>);
    173 	$V -> Function(Rest, A0, A1, A2, << Acc/binary, $v >>);
    174 	$W -> Function(Rest, A0, A1, A2, << Acc/binary, $w >>);
    175 	$X -> Function(Rest, A0, A1, A2, << Acc/binary, $x >>);
    176 	$Y -> Function(Rest, A0, A1, A2, << Acc/binary, $y >>);
    177 	$Z -> Function(Rest, A0, A1, A2, << Acc/binary, $z >>);
    178 	C -> Function(Rest, A0, A1, A2, << Acc/binary, C >>)
    179 end).
    180 
    181 -define(LOWER(Function, Rest, A0, A1, A2, A3, Acc), case C of
    182 	$A -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $a >>);
    183 	$B -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $b >>);
    184 	$C -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $c >>);
    185 	$D -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $d >>);
    186 	$E -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $e >>);
    187 	$F -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $f >>);
    188 	$G -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $g >>);
    189 	$H -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $h >>);
    190 	$I -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $i >>);
    191 	$J -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $j >>);
    192 	$K -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $k >>);
    193 	$L -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $l >>);
    194 	$M -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $m >>);
    195 	$N -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $n >>);
    196 	$O -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $o >>);
    197 	$P -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $p >>);
    198 	$Q -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $q >>);
    199 	$R -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $r >>);
    200 	$S -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $s >>);
    201 	$T -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $t >>);
    202 	$U -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $u >>);
    203 	$V -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $v >>);
    204 	$W -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $w >>);
    205 	$X -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $x >>);
    206 	$Y -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $y >>);
    207 	$Z -> Function(Rest, A0, A1, A2, A3, << Acc/binary, $z >>);
    208 	C -> Function(Rest, A0, A1, A2, A3, << Acc/binary, C >>)
    209 end).
    210 
    211 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, Acc), case C of
    212 	$A -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $a >>);
    213 	$B -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $b >>);
    214 	$C -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $c >>);
    215 	$D -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $d >>);
    216 	$E -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $e >>);
    217 	$F -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $f >>);
    218 	$G -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $g >>);
    219 	$H -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $h >>);
    220 	$I -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $i >>);
    221 	$J -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $j >>);
    222 	$K -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $k >>);
    223 	$L -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $l >>);
    224 	$M -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $m >>);
    225 	$N -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $n >>);
    226 	$O -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $o >>);
    227 	$P -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $p >>);
    228 	$Q -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $q >>);
    229 	$R -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $r >>);
    230 	$S -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $s >>);
    231 	$T -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $t >>);
    232 	$U -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $u >>);
    233 	$V -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $v >>);
    234 	$W -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $w >>);
    235 	$X -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $x >>);
    236 	$Y -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $y >>);
    237 	$Z -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, $z >>);
    238 	C -> Function(Rest, A0, A1, A2, A3, A4, << Acc/binary, C >>)
    239 end).
    240 
    241 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, Acc), case C of
    242 	$A -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $a >>);
    243 	$B -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $b >>);
    244 	$C -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $c >>);
    245 	$D -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $d >>);
    246 	$E -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $e >>);
    247 	$F -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $f >>);
    248 	$G -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $g >>);
    249 	$H -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $h >>);
    250 	$I -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $i >>);
    251 	$J -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $j >>);
    252 	$K -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $k >>);
    253 	$L -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $l >>);
    254 	$M -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $m >>);
    255 	$N -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $n >>);
    256 	$O -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $o >>);
    257 	$P -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $p >>);
    258 	$Q -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $q >>);
    259 	$R -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $r >>);
    260 	$S -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $s >>);
    261 	$T -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $t >>);
    262 	$U -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $u >>);
    263 	$V -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $v >>);
    264 	$W -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $w >>);
    265 	$X -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $x >>);
    266 	$Y -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $y >>);
    267 	$Z -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, $z >>);
    268 	C -> Function(Rest, A0, A1, A2, A3, A4, A5, << Acc/binary, C >>)
    269 end).
    270 
    271 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, Acc), case C of
    272 	$A -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $a >>);
    273 	$B -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $b >>);
    274 	$C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $c >>);
    275 	$D -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $d >>);
    276 	$E -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $e >>);
    277 	$F -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $f >>);
    278 	$G -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $g >>);
    279 	$H -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $h >>);
    280 	$I -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $i >>);
    281 	$J -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $j >>);
    282 	$K -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $k >>);
    283 	$L -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $l >>);
    284 	$M -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $m >>);
    285 	$N -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $n >>);
    286 	$O -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $o >>);
    287 	$P -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $p >>);
    288 	$Q -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $q >>);
    289 	$R -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $r >>);
    290 	$S -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $s >>);
    291 	$T -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $t >>);
    292 	$U -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $u >>);
    293 	$V -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $v >>);
    294 	$W -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $w >>);
    295 	$X -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $x >>);
    296 	$Y -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $y >>);
    297 	$Z -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, $z >>);
    298 	C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, << Acc/binary, C >>)
    299 end).
    300 
    301 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, Acc), case C of
    302 	$A -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $a >>);
    303 	$B -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $b >>);
    304 	$C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $c >>);
    305 	$D -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $d >>);
    306 	$E -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $e >>);
    307 	$F -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $f >>);
    308 	$G -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $g >>);
    309 	$H -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $h >>);
    310 	$I -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $i >>);
    311 	$J -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $j >>);
    312 	$K -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $k >>);
    313 	$L -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $l >>);
    314 	$M -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $m >>);
    315 	$N -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $n >>);
    316 	$O -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $o >>);
    317 	$P -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $p >>);
    318 	$Q -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $q >>);
    319 	$R -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $r >>);
    320 	$S -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $s >>);
    321 	$T -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $t >>);
    322 	$U -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $u >>);
    323 	$V -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $v >>);
    324 	$W -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $w >>);
    325 	$X -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $x >>);
    326 	$Y -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $y >>);
    327 	$Z -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, $z >>);
    328 	C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, << Acc/binary, C >>)
    329 end).
    330 
    331 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, Acc), case C of
    332 	$A -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $a >>);
    333 	$B -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $b >>);
    334 	$C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $c >>);
    335 	$D -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $d >>);
    336 	$E -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $e >>);
    337 	$F -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $f >>);
    338 	$G -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $g >>);
    339 	$H -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $h >>);
    340 	$I -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $i >>);
    341 	$J -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $j >>);
    342 	$K -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $k >>);
    343 	$L -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $l >>);
    344 	$M -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $m >>);
    345 	$N -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $n >>);
    346 	$O -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $o >>);
    347 	$P -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $p >>);
    348 	$Q -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $q >>);
    349 	$R -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $r >>);
    350 	$S -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $s >>);
    351 	$T -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $t >>);
    352 	$U -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $u >>);
    353 	$V -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $v >>);
    354 	$W -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $w >>);
    355 	$X -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $x >>);
    356 	$Y -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $y >>);
    357 	$Z -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, $z >>);
    358 	C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, << Acc/binary, C >>)
    359 end).
    360 
    361 -define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Acc), case C of
    362 	$A -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $a >>);
    363 	$B -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $b >>);
    364 	$C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $c >>);
    365 	$D -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $d >>);
    366 	$E -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $e >>);
    367 	$F -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $f >>);
    368 	$G -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $g >>);
    369 	$H -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $h >>);
    370 	$I -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $i >>);
    371 	$J -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $j >>);
    372 	$K -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $k >>);
    373 	$L -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $l >>);
    374 	$M -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $m >>);
    375 	$N -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $n >>);
    376 	$O -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $o >>);
    377 	$P -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $p >>);
    378 	$Q -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $q >>);
    379 	$R -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $r >>);
    380 	$S -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $s >>);
    381 	$T -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $t >>);
    382 	$U -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $u >>);
    383 	$V -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $v >>);
    384 	$W -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $w >>);
    385 	$X -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $x >>);
    386 	$Y -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $y >>);
    387 	$Z -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, $z >>);
    388 	C -> Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, << Acc/binary, C >>)
    389 end).
    390 
    391 %% HEX(C)
    392 
    393 -define(HEX(C), (?HEXHL(C bsr 4)), (?HEXHL(C band 16#0f))).
    394 
    395 -define(HEXHL(HL),
    396 	case HL of
    397 		0 -> $0;
    398 		1 -> $1;
    399 		2 -> $2;
    400 		3 -> $3;
    401 		4 -> $4;
    402 		5 -> $5;
    403 		6 -> $6;
    404 		7 -> $7;
    405 		8 -> $8;
    406 		9 -> $9;
    407 		10 -> $A;
    408 		11 -> $B;
    409 		12 -> $C;
    410 		13 -> $D;
    411 		14 -> $E;
    412 		15 -> $F
    413 	end
    414 ).
    415 
    416 %% UNHEX(H, L)
    417 
    418 -define(UNHEX(H, L), (?UNHEX(H) bsl 4 bor ?UNHEX(L))).
    419 
    420 -define(UNHEX(C),
    421 	case C of
    422 		$0 -> 0;
    423 		$1 -> 1;
    424 		$2 -> 2;
    425 		$3 -> 3;
    426 		$4 -> 4;
    427 		$5 -> 5;
    428 		$6 -> 6;
    429 		$7 -> 7;
    430 		$8 -> 8;
    431 		$9 -> 9;
    432 		$A -> 10;
    433 		$B -> 11;
    434 		$C -> 12;
    435 		$D -> 13;
    436 		$E -> 14;
    437 		$F -> 15;
    438 		$a -> 10;
    439 		$b -> 11;
    440 		$c -> 12;
    441 		$d -> 13;
    442 		$e -> 14;
    443 		$f -> 15
    444 	end
    445 ).
    446 
    447 -endif.