You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

582 lines
49 KiB

%% Copyright (c) 2014-2018, Loïc Hoguin <essen@ninenines.eu>
%%
%% Permission to use, copy, modify, and/or distribute this software for any
%% purpose with or without fee is hereby granted, provided that the above
%% copyright notice and this permission notice appear in all copies.
%%
%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-ifndef(COW_INLINE_HRL).
-define(COW_INLINE_HRL, 1).
%% LC(Character)
-define(LC(C), case C of
$A -> $a;
$B -> $b;
$C -> $c;
$D -> $d;
$E -> $e;
$F -> $f;
$G -> $g;
$H -> $h;
$I -> $i;
$J -> $j;
$K -> $k;
$L -> $l;
$M -> $m;
$N -> $n;
$O -> $o;
$P -> $p;
$Q -> $q;
$R -> $r;
$S -> $s;
$T -> $t;
$U -> $u;
$V -> $v;
$W -> $w;
$X -> $x;
$Y -> $y;
$Z -> $z;
_ -> C
end).
%% LOWER(Bin)
%%
%% Lowercase the entire binary string in a binary comprehension.
-define(LOWER(Bin), <<<<?LC(C)>> || <<C>> <= Bin>>).
%% LOWERCASE(Function, Rest, Acc, ...)
%%
%% To be included at the end of a case block.
%% Defined for up to 10 extra arguments.
-define(LOWER(Function, Rest, Acc), case C of
$A -> Function(Rest, <<Acc/binary, $a>>);
$B -> Function(Rest, <<Acc/binary, $b>>);
$C -> Function(Rest, <<Acc/binary, $c>>);
$D -> Function(Rest, <<Acc/binary, $d>>);
$E -> Function(Rest, <<Acc/binary, $e>>);
$F -> Function(Rest, <<Acc/binary, $f>>);
$G -> Function(Rest, <<Acc/binary, $g>>);
$H -> Function(Rest, <<Acc/binary, $h>>);
$I -> Function(Rest, <<Acc/binary, $i>>);
$J -> Function(Rest, <<Acc/binary, $j>>);
$K -> Function(Rest, <<Acc/binary, $k>>);
$L -> Function(Rest, <<Acc/binary, $l>>);
$M -> Function(Rest, <<Acc/binary, $m>>);
$N -> Function(Rest, <<Acc/binary, $n>>);
$O -> Function(Rest, <<Acc/binary, $o>>);
$P -> Function(Rest, <<Acc/binary, $p>>);
$Q -> Function(Rest, <<Acc/binary, $q>>);
$R -> Function(Rest, <<Acc/binary, $r>>);
$S -> Function(Rest, <<Acc/binary, $s>>);
$T -> Function(Rest, <<Acc/binary, $t>>);
$U -> Function(Rest, <<Acc/binary, $u>>);
$V -> Function(Rest, <<Acc/binary, $v>>);
$W -> Function(Rest, <<Acc/binary, $w>>);
$X -> Function(Rest, <<Acc/binary, $x>>);
$Y -> Function(Rest, <<Acc/binary, $y>>);
$Z -> Function(Rest, <<Acc/binary, $z>>);
C -> Function(Rest, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, Acc), case C of
$A -> Function(Rest, A0, <<Acc/binary, $a>>);
$B -> Function(Rest, A0, <<Acc/binary, $b>>);
$C -> Function(Rest, A0, <<Acc/binary, $c>>);
$D -> Function(Rest, A0, <<Acc/binary, $d>>);
$E -> Function(Rest, A0, <<Acc/binary, $e>>);
$F -> Function(Rest, A0, <<Acc/binary, $f>>);
$G -> Function(Rest, A0, <<Acc/binary, $g>>);
$H -> Function(Rest, A0, <<Acc/binary, $h>>);
$I -> Function(Rest, A0, <<Acc/binary, $i>>);
$J -> Function(Rest, A0, <<Acc/binary, $j>>);
$K -> Function(Rest, A0, <<Acc/binary, $k>>);
$L -> Function(Rest, A0, <<Acc/binary, $l>>);
$M -> Function(Rest, A0, <<Acc/binary, $m>>);
$N -> Function(Rest, A0, <<Acc/binary, $n>>);
$O -> Function(Rest, A0, <<Acc/binary, $o>>);
$P -> Function(Rest, A0, <<Acc/binary, $p>>);
$Q -> Function(Rest, A0, <<Acc/binary, $q>>);
$R -> Function(Rest, A0, <<Acc/binary, $r>>);
$S -> Function(Rest, A0, <<Acc/binary, $s>>);
$T -> Function(Rest, A0, <<Acc/binary, $t>>);
$U -> Function(Rest, A0, <<Acc/binary, $u>>);
$V -> Function(Rest, A0, <<Acc/binary, $v>>);
$W -> Function(Rest, A0, <<Acc/binary, $w>>);
$X -> Function(Rest, A0, <<Acc/binary, $x>>);
$Y -> Function(Rest, A0, <<Acc/binary, $y>>);
$Z -> Function(Rest, A0, <<Acc/binary, $z>>);
C -> Function(Rest, A0, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, Acc), case C of
$A -> Function(Rest, A0, A1, <<Acc/binary, $a>>);
$B -> Function(Rest, A0, A1, <<Acc/binary, $b>>);
$C -> Function(Rest, A0, A1, <<Acc/binary, $c>>);
$D -> Function(Rest, A0, A1, <<Acc/binary, $d>>);
$E -> Function(Rest, A0, A1, <<Acc/binary, $e>>);
$F -> Function(Rest, A0, A1, <<Acc/binary, $f>>);
$G -> Function(Rest, A0, A1, <<Acc/binary, $g>>);
$H -> Function(Rest, A0, A1, <<Acc/binary, $h>>);
$I -> Function(Rest, A0, A1, <<Acc/binary, $i>>);
$J -> Function(Rest, A0, A1, <<Acc/binary, $j>>);
$K -> Function(Rest, A0, A1, <<Acc/binary, $k>>);
$L -> Function(Rest, A0, A1, <<Acc/binary, $l>>);
$M -> Function(Rest, A0, A1, <<Acc/binary, $m>>);
$N -> Function(Rest, A0, A1, <<Acc/binary, $n>>);
$O -> Function(Rest, A0, A1, <<Acc/binary, $o>>);
$P -> Function(Rest, A0, A1, <<Acc/binary, $p>>);
$Q -> Function(Rest, A0, A1, <<Acc/binary, $q>>);
$R -> Function(Rest, A0, A1, <<Acc/binary, $r>>);
$S -> Function(Rest, A0, A1, <<Acc/binary, $s>>);
$T -> Function(Rest, A0, A1, <<Acc/binary, $t>>);
$U -> Function(Rest, A0, A1, <<Acc/binary, $u>>);
$V -> Function(Rest, A0, A1, <<Acc/binary, $v>>);
$W -> Function(Rest, A0, A1, <<Acc/binary, $w>>);
$X -> Function(Rest, A0, A1, <<Acc/binary, $x>>);
$Y -> Function(Rest, A0, A1, <<Acc/binary, $y>>);
$Z -> Function(Rest, A0, A1, <<Acc/binary, $z>>);
C -> Function(Rest, A0, A1, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, Acc), case C of
$A -> Function(Rest, A0, A1, A2, <<Acc/binary, $a>>);
$B -> Function(Rest, A0, A1, A2, <<Acc/binary, $b>>);
$C -> Function(Rest, A0, A1, A2, <<Acc/binary, $c>>);
$D -> Function(Rest, A0, A1, A2, <<Acc/binary, $d>>);
$E -> Function(Rest, A0, A1, A2, <<Acc/binary, $e>>);
$F -> Function(Rest, A0, A1, A2, <<Acc/binary, $f>>);
$G -> Function(Rest, A0, A1, A2, <<Acc/binary, $g>>);
$H -> Function(Rest, A0, A1, A2, <<Acc/binary, $h>>);
$I -> Function(Rest, A0, A1, A2, <<Acc/binary, $i>>);
$J -> Function(Rest, A0, A1, A2, <<Acc/binary, $j>>);
$K -> Function(Rest, A0, A1, A2, <<Acc/binary, $k>>);
$L -> Function(Rest, A0, A1, A2, <<Acc/binary, $l>>);
$M -> Function(Rest, A0, A1, A2, <<Acc/binary, $m>>);
$N -> Function(Rest, A0, A1, A2, <<Acc/binary, $n>>);
$O -> Function(Rest, A0, A1, A2, <<Acc/binary, $o>>);
$P -> Function(Rest, A0, A1, A2, <<Acc/binary, $p>>);
$Q -> Function(Rest, A0, A1, A2, <<Acc/binary, $q>>);
$R -> Function(Rest, A0, A1, A2, <<Acc/binary, $r>>);
$S -> Function(Rest, A0, A1, A2, <<Acc/binary, $s>>);
$T -> Function(Rest, A0, A1, A2, <<Acc/binary, $t>>);
$U -> Function(Rest, A0, A1, A2, <<Acc/binary, $u>>);
$V -> Function(Rest, A0, A1, A2, <<Acc/binary, $v>>);
$W -> Function(Rest, A0, A1, A2, <<Acc/binary, $w>>);
$X -> Function(Rest, A0, A1, A2, <<Acc/binary, $x>>);
$Y -> Function(Rest, A0, A1, A2, <<Acc/binary, $y>>);
$Z -> Function(Rest, A0, A1, A2, <<Acc/binary, $z>>);
C -> Function(Rest, A0, A1, A2, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, Acc), case C of
$A -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $a>>);
$B -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $b>>);
$C -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $c>>);
$D -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $d>>);
$E -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $e>>);
$F -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $f>>);
$G -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $g>>);
$H -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $h>>);
$I -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $i>>);
$J -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $j>>);
$K -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $k>>);
$L -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $l>>);
$M -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $m>>);
$N -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $n>>);
$O -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $o>>);
$P -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $p>>);
$Q -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $q>>);
$R -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $r>>);
$S -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $s>>);
$T -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $t>>);
$U -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $u>>);
$V -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $v>>);
$W -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $w>>);
$X -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $x>>);
$Y -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $y>>);
$Z -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, $z>>);
C -> Function(Rest, A0, A1, A2, A3, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, Acc), case C of
$A -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $a>>);
$B -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $b>>);
$C -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $c>>);
$D -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $d>>);
$E -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $e>>);
$F -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $f>>);
$G -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $g>>);
$H -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $h>>);
$I -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $i>>);
$J -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $j>>);
$K -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $k>>);
$L -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $l>>);
$M -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $m>>);
$N -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $n>>);
$O -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $o>>);
$P -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $p>>);
$Q -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $q>>);
$R -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $r>>);
$S -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $s>>);
$T -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $t>>);
$U -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $u>>);
$V -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $v>>);
$W -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $w>>);
$X -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $x>>);
$Y -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $y>>);
$Z -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, $z>>);
C -> Function(Rest, A0, A1, A2, A3, A4, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, Acc), case C of
$A ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $a>>);
$B ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $b>>);
$C ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $c>>);
$D ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $d>>);
$E ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $e>>);
$F ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $f>>);
$G ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $g>>);
$H ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $h>>);
$I ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $i>>);
$J ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $j>>);
$K ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $k>>);
$L ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $l>>);
$M ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $m>>);
$N ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $n>>);
$O ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $o>>);
$P ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $p>>);
$Q ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $q>>);
$R ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $r>>);
$S ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $s>>);
$T ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $t>>);
$U ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $u>>);
$V ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $v>>);
$W ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $w>>);
$X ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $x>>);
$Y ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $y>>);
$Z ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, $z>>);
C ->
Function(Rest, A0, A1, A2, A3, A4, A5, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, Acc), case C of
$A ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $a>>);
$B ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $b>>);
$C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $c>>);
$D ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $d>>);
$E ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $e>>);
$F ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $f>>);
$G ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $g>>);
$H ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $h>>);
$I ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $i>>);
$J ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $j>>);
$K ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $k>>);
$L ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $l>>);
$M ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $m>>);
$N ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $n>>);
$O ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $o>>);
$P ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $p>>);
$Q ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $q>>);
$R ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $r>>);
$S ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $s>>);
$T ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $t>>);
$U ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $u>>);
$V ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $v>>);
$W ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $w>>);
$X ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $x>>);
$Y ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $y>>);
$Z ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, $z>>);
C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, Acc), case C of
$A ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $a>>);
$B ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $b>>);
$C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $c>>);
$D ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $d>>);
$E ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $e>>);
$F ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $f>>);
$G ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $g>>);
$H ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $h>>);
$I ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $i>>);
$J ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $j>>);
$K ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $k>>);
$L ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $l>>);
$M ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $m>>);
$N ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $n>>);
$O ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $o>>);
$P ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $p>>);
$Q ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $q>>);
$R ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $r>>);
$S ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $s>>);
$T ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $t>>);
$U ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $u>>);
$V ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $v>>);
$W ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $w>>);
$X ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $x>>);
$Y ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $y>>);
$Z ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, $z>>);
C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, Acc), case C of
$A ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $a>>);
$B ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $b>>);
$C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $c>>);
$D ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $d>>);
$E ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $e>>);
$F ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $f>>);
$G ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $g>>);
$H ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $h>>);
$I ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $i>>);
$J ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $j>>);
$K ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $k>>);
$L ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $l>>);
$M ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $m>>);
$N ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $n>>);
$O ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $o>>);
$P ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $p>>);
$Q ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $q>>);
$R ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $r>>);
$S ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $s>>);
$T ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $t>>);
$U ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $u>>);
$V ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $v>>);
$W ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $w>>);
$X ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $x>>);
$Y ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $y>>);
$Z ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, $z>>);
C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, <<Acc/binary, C>>)
end).
-define(LOWER(Function, Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Acc), case C of
$A ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $a>>);
$B ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $b>>);
$C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $c>>);
$D ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $d>>);
$E ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $e>>);
$F ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $f>>);
$G ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $g>>);
$H ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $h>>);
$I ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $i>>);
$J ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $j>>);
$K ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $k>>);
$L ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $l>>);
$M ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $m>>);
$N ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $n>>);
$O ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $o>>);
$P ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $p>>);
$Q ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $q>>);
$R ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $r>>);
$S ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $s>>);
$T ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $t>>);
$U ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $u>>);
$V ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $v>>);
$W ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $w>>);
$X ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $x>>);
$Y ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $y>>);
$Z ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, $z>>);
C ->
Function(Rest, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, <<Acc/binary, C>>)
end).
%% HEX(C)
-define(HEX(C), (?HEXHL(C bsr 4)), (?HEXHL(C band 16#0f))).
-define(HEXHL(HL),
case HL of
0 -> $0;
1 -> $1;
2 -> $2;
3 -> $3;
4 -> $4;
5 -> $5;
6 -> $6;
7 -> $7;
8 -> $8;
9 -> $9;
10 -> $A;
11 -> $B;
12 -> $C;
13 -> $D;
14 -> $E;
15 -> $F
end
).
%% UNHEX(H, L)
-define(UNHEX(H, L), (?UNHEX(H) bsl 4 bor ?UNHEX(L))).
-define(UNHEX(C),
case C of
$0 -> 0;
$1 -> 1;
$2 -> 2;
$3 -> 3;
$4 -> 4;
$5 -> 5;
$6 -> 6;
$7 -> 7;
$8 -> 8;
$9 -> 9;
$A -> 10;
$B -> 11;
$C -> 12;
$D -> 13;
$E -> 14;
$F -> 15;
$a -> 10;
$b -> 11;
$c -> 12;
$d -> 13;
$e -> 14;
$f -> 15
end
).
-endif.