cow_parse.hrl 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. %% Copyright (c) 2015, 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. -ifndef(COW_PARSE_HRL).
  15. -define(COW_PARSE_HRL, 1).
  16. -define(IS_ALPHA(C),
  17. C =:= $a orelse C =:= $b orelse C =:= $c orelse C =:= $d orelse C =:= $e orelse
  18. C =:= $f orelse C =:= $g orelse C =:= $h orelse C =:= $i orelse C =:= $j orelse
  19. C =:= $k orelse C =:= $l orelse C =:= $m orelse C =:= $n orelse C =:= $o orelse
  20. C =:= $p orelse C =:= $q orelse C =:= $r orelse C =:= $s orelse C =:= $t orelse
  21. C =:= $u orelse C =:= $v orelse C =:= $w orelse C =:= $x orelse C =:= $y orelse
  22. C =:= $z orelse
  23. C =:= $A orelse C =:= $B orelse C =:= $C orelse C =:= $D orelse C =:= $E orelse
  24. C =:= $F orelse C =:= $G orelse C =:= $H orelse C =:= $I orelse C =:= $J orelse
  25. C =:= $K orelse C =:= $L orelse C =:= $M orelse C =:= $N orelse C =:= $O orelse
  26. C =:= $P orelse C =:= $Q orelse C =:= $R orelse C =:= $S orelse C =:= $T orelse
  27. C =:= $U orelse C =:= $V orelse C =:= $W orelse C =:= $X orelse C =:= $Y orelse
  28. C =:= $Z
  29. ).
  30. -define(IS_ALPHANUM(C), ?IS_ALPHA(C) orelse ?IS_DIGIT(C)).
  31. -define(IS_CHAR(C), C > 0, C < 128).
  32. -define(IS_DIGIT(C),
  33. C =:= $0 orelse C =:= $1 orelse C =:= $2 orelse C =:= $3 orelse C =:= $4 orelse
  34. C =:= $5 orelse C =:= $6 orelse C =:= $7 orelse C =:= $8 orelse C =:= $9).
  35. -define(IS_ETAGC(C), C =:= 16#21; C >= 16#23, C =/= 16#7f).
  36. -define(IS_HEX(C),
  37. ?IS_DIGIT(C) orelse
  38. C =:= $a orelse C =:= $b orelse C =:= $c orelse
  39. C =:= $d orelse C =:= $e orelse C =:= $f orelse
  40. C =:= $A orelse C =:= $B orelse C =:= $C orelse
  41. C =:= $D orelse C =:= $E orelse C =:= $F).
  42. -define(IS_LHEX(C),
  43. ?IS_DIGIT(C) orelse
  44. C =:= $a orelse C =:= $b orelse C =:= $c orelse
  45. C =:= $d orelse C =:= $e orelse C =:= $f).
  46. -define(IS_TOKEN(C),
  47. ?IS_ALPHA(C) orelse ?IS_DIGIT(C)
  48. orelse C =:= $! orelse C =:= $# orelse C =:= $$ orelse C =:= $% orelse C =:= $&
  49. orelse C =:= $' orelse C =:= $* orelse C =:= $+ orelse C =:= $- orelse C =:= $.
  50. orelse C =:= $^ orelse C =:= $_ orelse C =:= $` orelse C =:= $| orelse C =:= $~).
  51. -define(IS_TOKEN68(C),
  52. ?IS_ALPHA(C) orelse ?IS_DIGIT(C) orelse
  53. C =:= $- orelse C =:= $. orelse C =:= $_ orelse
  54. C =:= $~ orelse C =:= $+ orelse C =:= $/).
  55. -define(IS_URI_UNRESERVED(C),
  56. ?IS_ALPHA(C) orelse ?IS_DIGIT(C) orelse
  57. C =:= $- orelse C =:= $. orelse C =:= $_ orelse C =:= $~).
  58. -define(IS_URI_SUB_DELIMS(C),
  59. C =:= $! orelse C =:= $$ orelse C =:= $& orelse C =:= $' orelse
  60. C =:= $( orelse C =:= $) orelse C =:= $* orelse C =:= $+ orelse
  61. C =:= $, orelse C =:= $; orelse C =:= $=).
  62. -define(IS_VCHAR(C), C =:= $\t; C > 31, C < 127).
  63. -define(IS_VCHAR_OBS(C), C =:= $\t; C > 31, C =/= 127).
  64. -define(IS_WS(C), C =:= $\s orelse C =:= $\t).
  65. -define(IS_WS_COMMA(C), ?IS_WS(C) orelse C =:= $,).
  66. -endif.